diff --git a/DEPS b/DEPS
index f40d845..d8fc42e 100644
--- a/DEPS
+++ b/DEPS
@@ -120,7 +120,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'b5f94ce7aa67bf9ddae71fa2f9bc04ea0bc4cd29',
+  'v8_revision': '041083534e527dca939286b06d6b2e82ffbb954a',
   # 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.
@@ -128,7 +128,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': '99d0463cd940a1b6c10faf90e28f2eb7703c9951',
+  'angle_revision': '6ba22ee1376836e2bae478448770882b72be4b06',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling build tools
   # and whatever else without interference from each other.
@@ -140,7 +140,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '86e5fbf71b88effd31db89b116c14fe82bbf8001',
+  'pdfium_revision': '0e8346b53d7a5c81a53bb9832dd2168bde991a17',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -176,7 +176,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': 'a6ef719b69f40c9fa53185c757ff742d91c08260',
+  'catapult_revision': '468ff3e5a03038c57a1a300e373f88e47dea2692',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -224,7 +224,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': '9e6f5134d1aa2ff2f09d1880c1e7a0324f0cec54',
+  'spv_tools_revision': 'f2cc71e5cbeaac27a5c7e6d339a4fbe2e3acf362',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -261,7 +261,7 @@
 
 deps = {
   'src/chrome/browser/resources/media_router/extension/src':
-    Var('chromium_git') + '/media_router.git' + '@' + '475baa8b2eb0a7a9dd1c96c9c7a6a8d9035cc8d7',
+    Var('chromium_git') + '/media_router.git' + '@' + '29324b698ccd8920bc81c71d42dadc6310f0ad0f',
 
   'src/android_webview/tools/cts_archive': {
       'packages': [
@@ -1009,7 +1009,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '5d27da308ea51e734a34526b5707822944f75096',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '5af3a96bfa9fd7fa77b2209115b3ec4e600e121e',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78',
@@ -1161,7 +1161,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '0d55c887e92b645f6effe753528323ab2ffd94c2',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '42e7d9c929efeba364a455639baa5e41c52ffef3',
+    Var('webrtc_git') + '/src.git' + '@' + '0367d1a1fb0a74ddb0e256625c48107648675885',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1192,7 +1192,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b49154954d1dfdd23156880ac9ed8f590d8126f4',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@48a5c18d49cebc9d1690149df5d11ce7c98446c2',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/aw_settings.cc b/android_webview/browser/aw_settings.cc
index e9aa707..93031b3 100644
--- a/android_webview/browser/aw_settings.cc
+++ b/android_webview/browser/aw_settings.cc
@@ -24,6 +24,7 @@
 #include "content/public/common/renderer_preferences.h"
 #include "content/public/common/web_preferences.h"
 #include "jni/AwSettings_jni.h"
+#include "net/http/http_util.h"
 #include "services/network/public/cpp/features.h"
 #include "ui/gfx/font_render_params.h"
 
@@ -256,7 +257,7 @@
     content::StoragePartition* storage_partition =
         content::BrowserContext::GetDefaultStoragePartition(aw_browser_context);
     storage_partition->GetNetworkContext()->SetAcceptLanguage(
-        prefs->accept_languages);
+        net::HttpUtil::ExpandLanguageList(prefs->accept_languages));
   }
 }
 
diff --git a/android_webview/tools/system_webview_shell/apk/AndroidManifest.xml b/android_webview/tools/system_webview_shell/apk/AndroidManifest.xml
index d414b04..3d7157b 100644
--- a/android_webview/tools/system_webview_shell/apk/AndroidManifest.xml
+++ b/android_webview/tools/system_webview_shell/apk/AndroidManifest.xml
@@ -10,7 +10,7 @@
     android:versionCode="1"
     android:versionName="1.0" >
 
-    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
 
     <!-- "Normal" permissions which do not require user prompt -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -32,6 +32,7 @@
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@android:style/Theme.Light"
+        android:networkSecurityConfig="@xml/network_security_config"
         android:debuggable="true" >
         <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
             android:value="true" />
diff --git a/android_webview/tools/system_webview_shell/apk/res/xml/network_security_config.xml b/android_webview/tools/system_webview_shell/apk/res/xml/network_security_config.xml
new file mode 100644
index 0000000..4669e3b
--- /dev/null
+++ b/android_webview/tools/system_webview_shell/apk/res/xml/network_security_config.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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. -->
+
+<network-security-config>
+    <!-- Starting with Android P (API level 28), the default value of
+    isCleartextTrafficPermitted() is false. For the SystemWebViewShell
+    test browser we explicitly set cleartextTrafficPermitted here to
+    preserve functionality. (crbug.com/898190) -->
+    <base-config cleartextTrafficPermitted="true">
+        <trust-anchors>
+            <certificates src="user"/>
+            <certificates src="system"/>
+        </trust-anchors>
+    </base-config>
+</network-security-config>
\ No newline at end of file
diff --git a/ash/app_list/presenter/app_list_presenter_impl.cc b/ash/app_list/presenter/app_list_presenter_impl.cc
index 8f8adf55..e012041 100644
--- a/ash/app_list/presenter/app_list_presenter_impl.cc
+++ b/ash/app_list/presenter/app_list_presenter_impl.cc
@@ -243,6 +243,9 @@
   }
   layer->SetOpacity(opacity);
   layer->SetTransform(translation);
+
+  // Update child views' y positions to target state to avoid stale positions.
+  view_->app_list_main_view()->contents_view()->UpdateYPositionAndOpacity();
 }
 
 void AppListPresenterImpl::ScheduleOverviewModeAnimation(bool start,
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc
index 88ff037..261ffb0d 100644
--- a/ash/app_list/views/app_list_view.cc
+++ b/ash/app_list/views/app_list_view.cc
@@ -1260,9 +1260,9 @@
   layer->SetTransform(gfx::Transform());
 
   // In transition animation, layout is only performed after it is complete,
-  // which makes the child views jump. So layout in advance here to avoid that.
-  GetAppsContainerView()->InvalidateLayout();
-  Layout();
+  // which makes the child views jump. So update y positions in advance here to
+  // avoid that.
+  app_list_main_view_->contents_view()->UpdateYPositionAndOpacity();
 }
 
 void AppListView::StartCloseAnimation(base::TimeDelta animation_duration) {
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 34243e8..747864c 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -1945,9 +1945,11 @@
   // changes from 0.f to 1.0f.
   const float peeking_to_fullscreen_height =
       app_list_view->GetFullscreenStateHeight() - peeking_height;
-  DCHECK_GT(peeking_to_fullscreen_height, 0);
   const float drag_amount = current_height - peeking_height;
-  fraction = std::max(drag_amount / peeking_to_fullscreen_height, 0.f);
+  fraction = std::max(peeking_to_fullscreen_height > 0
+                          ? drag_amount / peeking_to_fullscreen_height
+                          : 1.0f,
+                      0.f);
   opacity = std::min(std::max((fraction + kAllAppsIndicatorOpacityEndFraction -
                                kAllAppsIndicatorOpacityStartFraction - 1.0f) /
                                   (kAllAppsIndicatorOpacityEndFraction -
diff --git a/ash/assistant/assistant_interaction_controller.cc b/ash/assistant/assistant_interaction_controller.cc
index c82f1c7..96f6c24a 100644
--- a/ash/assistant/assistant_interaction_controller.cc
+++ b/ash/assistant/assistant_interaction_controller.cc
@@ -95,6 +95,9 @@
   using assistant::util::DeepLinkType;
 
   if (type == DeepLinkType::kWhatsOnMyScreen) {
+    // Explicitly call ShowUi() to set the correct Assistant entry point.
+    // ShowUi() will no-op if UI is already shown.
+    assistant_controller_->ui_controller()->ShowUi(AssistantSource::kDeepLink);
     StartScreenContextInteraction();
     return;
   }
@@ -116,6 +119,7 @@
     return;
   }
 
+  assistant_controller_->ui_controller()->ShowUi(AssistantSource::kDeepLink);
   StartTextInteraction(query.value());
 }
 
diff --git a/ash/assistant/assistant_ui_controller.cc b/ash/assistant/assistant_ui_controller.cc
index 61a1faad..67560e3 100644
--- a/ash/assistant/assistant_ui_controller.cc
+++ b/ash/assistant/assistant_ui_controller.cc
@@ -10,6 +10,7 @@
 #include "ash/assistant/ui/assistant_container_view.h"
 #include "ash/assistant/ui/assistant_ui_constants.h"
 #include "ash/assistant/util/deep_link_util.h"
+#include "ash/assistant/util/histogram_util.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/toast/toast_data.h"
@@ -304,6 +305,8 @@
     return;
   }
 
+  assistant::util::RecordAssistantEntryPoint(source);
+
   if (!container_view_)
     CreateContainerView();
 
diff --git a/ash/assistant/util/histogram_util.cc b/ash/assistant/util/histogram_util.cc
index 6830c48e..1633d0b 100644
--- a/ash/assistant/util/histogram_util.cc
+++ b/ash/assistant/util/histogram_util.cc
@@ -15,6 +15,10 @@
   UMA_HISTOGRAM_ENUMERATION("Assistant.QueryCountPerEntryPoint", entry_point);
 }
 
+void RecordAssistantEntryPoint(AssistantSource entry_point) {
+  UMA_HISTOGRAM_ENUMERATION("Assistant.EntryPoint", entry_point);
+}
+
 }  // namespace util
 }  // namespace assistant
 }  // namespace ash
diff --git a/ash/assistant/util/histogram_util.h b/ash/assistant/util/histogram_util.h
index 8381284a..4a46814e 100644
--- a/ash/assistant/util/histogram_util.h
+++ b/ash/assistant/util/histogram_util.h
@@ -15,6 +15,9 @@
 // Increment number of queries fired for each entry point.
 void IncrementAssistantQueryCountForEntryPoint(AssistantSource entry_point);
 
+// Record the entry point where Assistant UI becomes visible.
+void RecordAssistantEntryPoint(AssistantSource entry_point);
+
 }  // namespace util
 }  // namespace assistant
 }  // namespace ash
diff --git a/ash/components/strings/ash_components_strings_am.xtb b/ash/components/strings/ash_components_strings_am.xtb
index 8e6133b8..12f4de30 100644
--- a/ash/components/strings/ash_components_strings_am.xtb
+++ b/ash/components/strings/ash_components_strings_am.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">አሁን ያለውን ገጽዎን ያትሙ</translation>
 <translation id="1383876407941801731">ፍለጋ </translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ወይም <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">ወደ የመስመር መጨረሻ ይሂዱ</translation>
 <translation id="1510238584712386396">ማስጀመሪያ</translation>
 <translation id="152892567002884378">ድምጽ ጨምር</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />፣ ከዚያ <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">ይዘትን ከቅንጥብ ሰሌዳው ይለጥፉ</translation>
 <translation id="9052808072970550123">ወደ ቀጣዩ ተጠቃሚ ቀይር</translation>
 <translation id="906458777597946297">መስኮቱን ያስፉት</translation>
+<translation id="9091855755813503076">ወደ የመስመር መጀመሪያ ይሂዱ</translation>
 <translation id="9106898733795143799">ገጽ እና ድር አሳሽ</translation>
 <translation id="9162942292291287644">ለ<ph name="QUERY" /> ምንም የፍለጋ ውጤቶች የሉም</translation>
 <translation id="9179672198516322668">ታዋቂ አቋራጮች</translation>
diff --git a/ash/components/strings/ash_components_strings_ar.xtb b/ash/components/strings/ash_components_strings_ar.xtb
index 8e13edc..0af844a 100644
--- a/ash/components/strings/ash_components_strings_ar.xtb
+++ b/ash/components/strings/ash_components_strings_ar.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">طباعة الصفحة الحالية</translation>
 <translation id="1383876407941801731">البحث</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> أو <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">الانتقال إلى نهاية السطر</translation>
 <translation id="1510238584712386396">المشغّل</translation>
 <translation id="152892567002884378">رفع مستوى الصوت</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />، ثم <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">لصق المحتوى من الحافظة</translation>
 <translation id="9052808072970550123">التبديل إلى المستخدم التالي</translation>
 <translation id="906458777597946297">تكبير النافذة</translation>
+<translation id="9091855755813503076">الانتقال إلى بداية السطر</translation>
 <translation id="9106898733795143799">الصفحة ومتصفّح الويب</translation>
 <translation id="9162942292291287644">لم يتم العثور على أي نتائج بحث <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">الاختصارات الشائعة</translation>
diff --git a/ash/components/strings/ash_components_strings_bg.xtb b/ash/components/strings/ash_components_strings_bg.xtb
index e8916f0..8d678e0 100644
--- a/ash/components/strings/ash_components_strings_bg.xtb
+++ b/ash/components/strings/ash_components_strings_bg.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Отпечатване на текущата страница</translation>
 <translation id="1383876407941801731">Търсене</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> или <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Преминаване в края на реда</translation>
 <translation id="1510238584712386396">Стартов панел</translation>
 <translation id="152892567002884378">Увеличаване на силата на звука</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> и след това <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Поставяне на съдържанието от буферната памет</translation>
 <translation id="9052808072970550123">Превключване към следващия потребител</translation>
 <translation id="906458777597946297">Увеличаване на прозореца</translation>
+<translation id="9091855755813503076">Преминаване в началото на реда</translation>
 <translation id="9106898733795143799">Страница и уеб браузър</translation>
 <translation id="9162942292291287644">Няма резултати от търсенето на „<ph name="QUERY" />“</translation>
 <translation id="9179672198516322668">Популярни комбинации</translation>
diff --git a/ash/components/strings/ash_components_strings_bn.xtb b/ash/components/strings/ash_components_strings_bn.xtb
index d0fa6e2..7f58eac 100644
--- a/ash/components/strings/ash_components_strings_bn.xtb
+++ b/ash/components/strings/ash_components_strings_bn.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">আপনার বর্তমান পৃষ্ঠাটি প্রিন্ট করুন</translation>
 <translation id="1383876407941801731">সার্চ করুন</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> অথবা <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">লাইনের শেষে যান</translation>
 <translation id="1510238584712386396">লঞ্চার</translation>
 <translation id="152892567002884378">ভলিউম বাড়ান</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, তারপর <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">ক্লিপবোর্ড থেকে কন্টেন্ট পেস্ট করুন</translation>
 <translation id="9052808072970550123">পরের ব্যবহারকারী বেছে নিন</translation>
 <translation id="906458777597946297">উইন্ডো বৃহদায়ন করুন</translation>
+<translation id="9091855755813503076">লাইনের শুরুতে যান</translation>
 <translation id="9106898733795143799">পৃষ্ঠা এবং ওয়েব ব্রাউজার</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> এর কোনও ফলাফল পাওয়া যায়নি</translation>
 <translation id="9179672198516322668">জনপ্রিয় শর্টকাট</translation>
diff --git a/ash/components/strings/ash_components_strings_cs.xtb b/ash/components/strings/ash_components_strings_cs.xtb
index 8d8ab0d..76b0a2c 100644
--- a/ash/components/strings/ash_components_strings_cs.xtb
+++ b/ash/components/strings/ash_components_strings_cs.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Vytisknout aktuální stránku</translation>
 <translation id="1383876407941801731">Vyhledávání</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> nebo <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Přejít na konec řádku</translation>
 <translation id="1510238584712386396">Spouštěč</translation>
 <translation id="152892567002884378">Zvýšit hlasitost</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> a poté <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Vložit obsah ze schránky</translation>
 <translation id="9052808072970550123">Přepnout na dalšího uživatele</translation>
 <translation id="906458777597946297">Maximalizovat okno</translation>
+<translation id="9091855755813503076">Přejít na začátek řádku</translation>
 <translation id="9106898733795143799">Stránka a webový prohlížeč</translation>
 <translation id="9162942292291287644">Žádné výsledky vyhledávání na téma <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Oblíbené klávesové zkratky</translation>
diff --git a/ash/components/strings/ash_components_strings_es-419.xtb b/ash/components/strings/ash_components_strings_es-419.xtb
index 1a41609..c946541 100644
--- a/ash/components/strings/ash_components_strings_es-419.xtb
+++ b/ash/components/strings/ash_components_strings_es-419.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Imprimir la página actual</translation>
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Ir al final de la línea</translation>
 <translation id="1510238584712386396">Selector</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, luego <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Pegar el contenido del portapapeles</translation>
 <translation id="9052808072970550123">Cambiar al usuario siguiente</translation>
 <translation id="906458777597946297">Maximizar ventana</translation>
+<translation id="9091855755813503076">Ir al comienzo de la línea</translation>
 <translation id="9106898733795143799">Página y navegador web</translation>
 <translation id="9162942292291287644">No se encontraron resultados de búsqueda para <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Combinaciones de teclas populares</translation>
diff --git a/ash/components/strings/ash_components_strings_es.xtb b/ash/components/strings/ash_components_strings_es.xtb
index 086ca29..60fea88 100644
--- a/ash/components/strings/ash_components_strings_es.xtb
+++ b/ash/components/strings/ash_components_strings_es.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Imprimir la página actual</translation>
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Ir al final de la línea</translation>
 <translation id="1510238584712386396">Menú de aplicaciones</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> y <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Pegar el contenido del portapapeles</translation>
 <translation id="9052808072970550123">Cambiar al usuario siguiente</translation>
 <translation id="906458777597946297">Maximizar ventana</translation>
+<translation id="9091855755813503076">Ir al principio de la línea</translation>
 <translation id="9106898733795143799">Página y navegador web</translation>
 <translation id="9162942292291287644">No se ha encontrado ningún resultado de búsqueda de <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Combinaciones de teclas populares</translation>
diff --git a/ash/components/strings/ash_components_strings_fa.xtb b/ash/components/strings/ash_components_strings_fa.xtb
index 592376c4..0508ae8f 100644
--- a/ash/components/strings/ash_components_strings_fa.xtb
+++ b/ash/components/strings/ash_components_strings_fa.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">چاپ صفحه کنونی</translation>
 <translation id="1383876407941801731">جستجو</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> یا <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">رفتن به انتهای خط</translation>
 <translation id="1510238584712386396">راه‌انداز</translation>
 <translation id="152892567002884378">افزایش صدا</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> و سپس <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">جای‌گذاری محتوا از کلیپ‌بورد</translation>
 <translation id="9052808072970550123">جابه‌جا شدن به کاربر بعدی</translation>
 <translation id="906458777597946297">بازکردن پنجره در حداکثر اندازه</translation>
+<translation id="9091855755813503076">رفتن به ابتدای خط</translation>
 <translation id="9106898733795143799">صفحه و مرورگر وب</translation>
 <translation id="9162942292291287644">هیچ نتیجه جستجویی برای <ph name="QUERY" /> وجود ندارد</translation>
 <translation id="9179672198516322668">میان‌برهای پرطرفدار</translation>
diff --git a/ash/components/strings/ash_components_strings_fil.xtb b/ash/components/strings/ash_components_strings_fil.xtb
index 868eb71..6a2149b6 100644
--- a/ash/components/strings/ash_components_strings_fil.xtb
+++ b/ash/components/strings/ash_components_strings_fil.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">I-print ang iyong kasalukuyang page</translation>
 <translation id="1383876407941801731">Hanapin</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Pumunta sa dulo ng linya</translation>
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="152892567002884378">Lakasan ang volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pagkatapos ay <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">I-paste ang content mula sa clipboard</translation>
 <translation id="9052808072970550123">Lumipat sa susunod na user</translation>
 <translation id="906458777597946297">I-maximize ang window</translation>
+<translation id="9091855755813503076">Pumunta sa simula ng linya</translation>
 <translation id="9106898733795143799">Page at Web Browser</translation>
 <translation id="9162942292291287644">Walang resulta ng paghahanap para sa <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Mga Sikat na Shortcut</translation>
diff --git a/ash/components/strings/ash_components_strings_gu.xtb b/ash/components/strings/ash_components_strings_gu.xtb
index 3a5d2874..e4772b1 100644
--- a/ash/components/strings/ash_components_strings_gu.xtb
+++ b/ash/components/strings/ash_components_strings_gu.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">તમારું વર્તમાન પેજ પ્રિન્ટ કરો</translation>
 <translation id="1383876407941801731">શોધો</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> અથવા <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">રેખાના અંત પર જાઓ</translation>
 <translation id="1510238584712386396">લૉન્ચર</translation>
 <translation id="152892567002884378">વૉલ્યૂમ વધારો</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, પછી <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">ક્લિપબોર્ડ પરનું કન્ટેન્ટ પેસ્ટ કરો</translation>
 <translation id="9052808072970550123">આગલા વપરાશકર્તા પર સ્વિચ કરો</translation>
 <translation id="906458777597946297">વિંડો મોટી કરો</translation>
+<translation id="9091855755813503076">રેખાની શરૂઆત પર જાઓ</translation>
 <translation id="9106898733795143799">પેજ અને વેબ બ્રાઉઝર</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> માટે કોઈ શોધ પરિણામ નથી</translation>
 <translation id="9179672198516322668">લોકપ્રિય શૉર્ટકટ</translation>
diff --git a/ash/components/strings/ash_components_strings_hi.xtb b/ash/components/strings/ash_components_strings_hi.xtb
index e43fe30..43d4a6c6 100644
--- a/ash/components/strings/ash_components_strings_hi.xtb
+++ b/ash/components/strings/ash_components_strings_hi.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">अपना अभी वाला पेज प्रिंट करें</translation>
 <translation id="1383876407941801731">खोज</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> या <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">लाइन के आखिर में जाएं</translation>
 <translation id="1510238584712386396">लॉन्चर</translation>
 <translation id="152892567002884378">वॉल्यूम बढ़ाएं</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, फिर <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">क्लिपबोर्ड से सामग्री चिपकाएं</translation>
 <translation id="9052808072970550123">अगले उपयोगकर्ता पर जाएं</translation>
 <translation id="906458777597946297">विंडो को बड़ा करें</translation>
+<translation id="9091855755813503076">लाइन के शुरू में जाएं</translation>
 <translation id="9106898733795143799">पेज और वेब ब्राउज़र</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> के लिए कोई सर्च नतीजा नहीं</translation>
 <translation id="9179672198516322668">लोकप्रिय शॉर्टकट</translation>
diff --git a/ash/components/strings/ash_components_strings_id.xtb b/ash/components/strings/ash_components_strings_id.xtb
index cf0972b..ba08276 100644
--- a/ash/components/strings/ash_components_strings_id.xtb
+++ b/ash/components/strings/ash_components_strings_id.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Mencetak halaman aktif</translation>
 <translation id="1383876407941801731">Telusuri</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> atau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Ke akhir baris</translation>
 <translation id="1510238584712386396">Peluncur</translation>
 <translation id="152892567002884378">Mengeraskan volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, lalu <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Menempelkan konten dari papan klip</translation>
 <translation id="9052808072970550123">Beralih ke pengguna berikutnya</translation>
 <translation id="906458777597946297">Memaksimalkan jendela</translation>
+<translation id="9091855755813503076">Ke awal baris</translation>
 <translation id="9106898733795143799">Halaman &amp; Browser Web</translation>
 <translation id="9162942292291287644">Tidak ditemukan hasil penelusuran untuk <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Pintasan Populer</translation>
diff --git a/ash/components/strings/ash_components_strings_ja.xtb b/ash/components/strings/ash_components_strings_ja.xtb
index 4b43726b..b13b50f 100644
--- a/ash/components/strings/ash_components_strings_ja.xtb
+++ b/ash/components/strings/ash_components_strings_ja.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">現在のページを印刷する</translation>
 <translation id="1383876407941801731">検索</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> キーまたは <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /> キーを押す</translation>
+<translation id="1477442857810932985">行の末尾に移動します</translation>
 <translation id="1510238584712386396">ランチャー</translation>
 <translation id="152892567002884378">音量を上げる</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> キーを押した状態で <ph name="ESC" /> キーを押す</translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">クリップボードの内容を貼り付けます</translation>
 <translation id="9052808072970550123">次のユーザーに切り替えます</translation>
 <translation id="906458777597946297">ウィンドウを最大化</translation>
+<translation id="9091855755813503076">行の先頭に移動します</translation>
 <translation id="9106898733795143799">ページとウェブブラウザ</translation>
 <translation id="9162942292291287644">「<ph name="QUERY" />」の検索結果はありません</translation>
 <translation id="9179672198516322668">定番のショートカット</translation>
diff --git a/ash/components/strings/ash_components_strings_kn.xtb b/ash/components/strings/ash_components_strings_kn.xtb
index a8ae4085..95fcd0e 100644
--- a/ash/components/strings/ash_components_strings_kn.xtb
+++ b/ash/components/strings/ash_components_strings_kn.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪುಟವನ್ನು ಮುದ್ರಿಸಿ</translation>
 <translation id="1383876407941801731">ಹುಡುಕಾಟ</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ಅಥವಾ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">ಸಾಲಿನ ಅಂತ್ಯಕ್ಕೆ ಹೋಗಿ</translation>
 <translation id="1510238584712386396">ಲಾಂಚರ್</translation>
 <translation id="152892567002884378">ವಾಲ್ಯೂಮ್ ಹೆಚ್ಚು ಮಾಡಿ</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ನಂತರ <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ನಿಂದ ವಿಷಯವನ್ನು ಅಂಟಿಸಿ</translation>
 <translation id="9052808072970550123">ಮುಂದಿನ ಬಳಕೆದಾರರಿಗೆ ಬದಲಿಸಿ</translation>
 <translation id="906458777597946297">ವಿಂಡೋ ಹಿರಿದಾಗಿಸಿ</translation>
+<translation id="9091855755813503076">ಸಾಲಿನ ಪ್ರಾರಂಭಕ್ಕೆ ಹೋಗಿ</translation>
 <translation id="9106898733795143799">ಪುಟ ಮತ್ತು ವೆಬ್ ಬ್ರೌಸರ್</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> ಗಾಗಿ ಯಾವುದೇ ಫಲಿತಾಂಶಗಳಿಲ್ಲ</translation>
 <translation id="9179672198516322668">ಜನಪ್ರಿಯ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು</translation>
diff --git a/ash/components/strings/ash_components_strings_ko.xtb b/ash/components/strings/ash_components_strings_ko.xtb
index 39210055..4a4d633 100644
--- a/ash/components/strings/ash_components_strings_ko.xtb
+++ b/ash/components/strings/ash_components_strings_ko.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">현재 페이지를 인쇄</translation>
 <translation id="1383876407941801731">검색</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 또는 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">행의 끝으로 이동</translation>
 <translation id="1510238584712386396">런처</translation>
 <translation id="152892567002884378">볼륨 크게</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />을 누르고 <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">클립보드에서 콘텐츠 붙여넣기</translation>
 <translation id="9052808072970550123">다음 사용자로 전환</translation>
 <translation id="906458777597946297">창 최대화</translation>
+<translation id="9091855755813503076">행의 처음으로 이동</translation>
 <translation id="9106898733795143799">페이지 및 웹브라우저</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> 검색결과 없음</translation>
 <translation id="9179672198516322668">자주 쓰는 단축키</translation>
diff --git a/ash/components/strings/ash_components_strings_ml.xtb b/ash/components/strings/ash_components_strings_ml.xtb
index db98226..a5038f0d 100644
--- a/ash/components/strings/ash_components_strings_ml.xtb
+++ b/ash/components/strings/ash_components_strings_ml.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">നിങ്ങളുടെ നിലവിലെ പേജ് പ്രിന്റ് ചെയ്യുക</translation>
 <translation id="1383876407941801731">തിരയൂ</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> അല്ലെങ്കിൽ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">വരിയുടെ അവസാനത്തിലേക്ക് പോകുക</translation>
 <translation id="1510238584712386396">ലോഞ്ചർ</translation>
 <translation id="152892567002884378">ശബ്ദം കൂട്ടുക</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, തുടർന്ന് <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">ക്ലിപ്‌ബോർഡിൽ നിന്നുള്ള ഉള്ളടക്കം ഒട്ടിക്കുക</translation>
 <translation id="9052808072970550123">അടുത്ത ഉപയോക്താവിലേക്ക് മാറുക</translation>
 <translation id="906458777597946297">വിൻഡോ വലുതാക്കുക</translation>
+<translation id="9091855755813503076">വരിയുടെ തുടക്കത്തിലേക്ക് പോകുക</translation>
 <translation id="9106898733795143799">പേജും വെബ് ബ്രൗസറും</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> എന്നതിനായി തിരയൽ ഫലമൊന്നുമില്ല</translation>
 <translation id="9179672198516322668">ജനപ്രിയ കുറുക്കുവഴികൾ</translation>
diff --git a/ash/components/strings/ash_components_strings_mr.xtb b/ash/components/strings/ash_components_strings_mr.xtb
index d26b34c..91499f64 100644
--- a/ash/components/strings/ash_components_strings_mr.xtb
+++ b/ash/components/strings/ash_components_strings_mr.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">तुमचे हे पेज प्रिंट करा</translation>
 <translation id="1383876407941801731">शोधा</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> किंवा <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">ओळीच्या शेवटी जा</translation>
 <translation id="1510238584712386396">लाँचर</translation>
 <translation id="152892567002884378">आवाज मोठा करा</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, नंतर <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">क्लिपबोर्डवरून आशय पेस्ट करा</translation>
 <translation id="9052808072970550123">पुढील वापरकर्त्यावर स्विच करा</translation>
 <translation id="906458777597946297">विंडो वाढवा</translation>
+<translation id="9091855755813503076">ओळीच्या सुरवातीला जा</translation>
 <translation id="9106898733795143799">पेज आणि वेब ब्राउझर</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> साठी शोध परिणाम नाहीत</translation>
 <translation id="9179672198516322668">लोकप्रिय शॉर्टकट</translation>
diff --git a/ash/components/strings/ash_components_strings_ms.xtb b/ash/components/strings/ash_components_strings_ms.xtb
index a57ff46..c043f1f 100644
--- a/ash/components/strings/ash_components_strings_ms.xtb
+++ b/ash/components/strings/ash_components_strings_ms.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Cetak halaman semasa anda</translation>
 <translation id="1383876407941801731">Carian</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> atau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Pergi ke hujung baris</translation>
 <translation id="1510238584712386396">Pelancar</translation>
 <translation id="152892567002884378">Tambah kelantangan</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, kemudian <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Tampal kandungan daripada papan keratan</translation>
 <translation id="9052808072970550123">Beralih kepada pengguna seterusnya</translation>
 <translation id="906458777597946297">Maksimumkan tetingkap</translation>
+<translation id="9091855755813503076">Pergi ke permulaan baris</translation>
 <translation id="9106898733795143799">Halaman &amp; Penyemak Imbas Web</translation>
 <translation id="9162942292291287644">Tiada hasil carian untuk <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Pintasan Popular</translation>
diff --git a/ash/components/strings/ash_components_strings_no.xtb b/ash/components/strings/ash_components_strings_no.xtb
index d65a4bc4..80e300a 100644
--- a/ash/components/strings/ash_components_strings_no.xtb
+++ b/ash/components/strings/ash_components_strings_no.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Skriv ut den aktive siden</translation>
 <translation id="1383876407941801731">Søk</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> eller <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Gå til slutten av linjen</translation>
 <translation id="1510238584712386396">Appvelger</translation>
 <translation id="152892567002884378">Volum opp</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> og så <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Lim inn innholdet fra utklippstavlen</translation>
 <translation id="9052808072970550123">Bytt til den neste brukeren</translation>
 <translation id="906458777597946297">Maksimerer vinduet</translation>
+<translation id="9091855755813503076">Gå til begynnelsen av linjen</translation>
 <translation id="9106898733795143799">Side og nettleser</translation>
 <translation id="9162942292291287644">Ingen søkeresultater for <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Populære hurtigtaster</translation>
diff --git a/ash/components/strings/ash_components_strings_pl.xtb b/ash/components/strings/ash_components_strings_pl.xtb
index afd21151..5505a07 100644
--- a/ash/components/strings/ash_components_strings_pl.xtb
+++ b/ash/components/strings/ash_components_strings_pl.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Wydrukuj bieżącą stronę</translation>
 <translation id="1383876407941801731">Szukaj</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> lub <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Przejdź na koniec wiersza</translation>
 <translation id="1510238584712386396">Menu z aplikacjami</translation>
 <translation id="152892567002884378">Zwiększ głośność</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, a następnie <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Wklej zawartość schowka</translation>
 <translation id="9052808072970550123">Przełącz do następnego użytkownika</translation>
 <translation id="906458777597946297">Maksymalizuj okno</translation>
+<translation id="9091855755813503076">Przejdź na początek wiersza</translation>
 <translation id="9106898733795143799">Przeglądarka stron i internetu</translation>
 <translation id="9162942292291287644">Brak wyników wyszukiwania dla: <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Popularne skróty</translation>
diff --git a/ash/components/strings/ash_components_strings_ro.xtb b/ash/components/strings/ash_components_strings_ro.xtb
index 46b4193..0c2df1d 100644
--- a/ash/components/strings/ash_components_strings_ro.xtb
+++ b/ash/components/strings/ash_components_strings_ro.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Printează pagina curentă</translation>
 <translation id="1383876407941801731">Caută</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> sau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Treci la sfârșitul rândului</translation>
 <translation id="1510238584712386396">Lansator</translation>
 <translation id="152892567002884378">Mărește volumul</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, apoi <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Inserează conținutul din clipboard</translation>
 <translation id="9052808072970550123">Comută la următorul utilizator</translation>
 <translation id="906458777597946297">Maximizați fereastra</translation>
+<translation id="9091855755813503076">Treci la începutul rândului</translation>
 <translation id="9106898733795143799">Pagina și browserul web</translation>
 <translation id="9162942292291287644">Niciun rezultat al căutării pentru <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Comenzi rapide populare</translation>
diff --git a/ash/components/strings/ash_components_strings_sk.xtb b/ash/components/strings/ash_components_strings_sk.xtb
index ce66e61..127fb5b 100644
--- a/ash/components/strings/ash_components_strings_sk.xtb
+++ b/ash/components/strings/ash_components_strings_sk.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Tlač aktuálnej stránky</translation>
 <translation id="1383876407941801731">Vyhľadávanie</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> alebo <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Prejsť na koniec riadka</translation>
 <translation id="1510238584712386396">Spúšťač</translation>
 <translation id="152892567002884378">Zvýšenie hlasitosti</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, potom <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Prilepenie obsahu zo schránky</translation>
 <translation id="9052808072970550123">Prepnutie na ďalšieho používateľa</translation>
 <translation id="906458777597946297">Maximalizovať okno</translation>
+<translation id="9091855755813503076">Prejsť na začiatok riadka</translation>
 <translation id="9106898733795143799">Stránka a webový prehliadač</translation>
 <translation id="9162942292291287644">Žiadne výsledky vyhľadávania na tému <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Obľúbené skratky</translation>
diff --git a/ash/components/strings/ash_components_strings_ta.xtb b/ash/components/strings/ash_components_strings_ta.xtb
index b770336..01a1b813b 100644
--- a/ash/components/strings/ash_components_strings_ta.xtb
+++ b/ash/components/strings/ash_components_strings_ta.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">உங்கள் தற்போதைய பக்கத்தை அச்சிடும்</translation>
 <translation id="1383876407941801731">தேடல்</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> அல்லது <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">வரியின் இறுதிக்குச் செல்லும்</translation>
 <translation id="1510238584712386396">துவக்கி</translation>
 <translation id="152892567002884378">ஒலியளவை அதிகரிக்கும்</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, பின்னர் <ph name="ESC" />ஐ அழுத்தவும்</translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">கிளிப்போர்டிலிருந்து உள்ளடக்கத்தை ஒட்டும்</translation>
 <translation id="9052808072970550123">அடுத்த பயனருக்குச் செல்லும்</translation>
 <translation id="906458777597946297">சாளரத்தை பெரிதாக்கு</translation>
+<translation id="9091855755813503076">வரியின் தொடக்கத்திற்குச் செல்லும்</translation>
 <translation id="9106898733795143799">பக்கம் &amp; இணைய உலாவி</translation>
 <translation id="9162942292291287644"><ph name="QUERY" />க்குத் தேடல் முடிவு எதுவுமில்லை</translation>
 <translation id="9179672198516322668">பிரபல ஷார்ட்கட்கள்</translation>
diff --git a/ash/components/strings/ash_components_strings_te.xtb b/ash/components/strings/ash_components_strings_te.xtb
index 29f1b4b8..ef15290 100644
--- a/ash/components/strings/ash_components_strings_te.xtb
+++ b/ash/components/strings/ash_components_strings_te.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">మీ ప్రస్తుత పేజీని ముద్రించండి</translation>
 <translation id="1383876407941801731">శోధించు</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> లేదా <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">పంక్తి చివరికి వెళ్లు</translation>
 <translation id="1510238584712386396">లాంచర్</translation>
 <translation id="152892567002884378">వాల్యూమ్ పెంచండి</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ఆపై <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">క్లిప్‌బోర్డ్ నుండి కంటెంట్‌ను అతికించండి</translation>
 <translation id="9052808072970550123">తదుపరి వినియోగదారుకు మారండి</translation>
 <translation id="906458777597946297">విండోను గరిష్టీకరించు</translation>
+<translation id="9091855755813503076">పంక్తి ప్రారంభానికి వెళ్లు</translation>
 <translation id="9106898733795143799">పేజీ &amp; వెబ్ బ్రౌజర్</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> కోసం శోధన ఫలితం లేదు</translation>
 <translation id="9179672198516322668">జనాదరణ పొందిన షార్ట్‌కట్‌లు</translation>
diff --git a/ash/components/strings/ash_components_strings_th.xtb b/ash/components/strings/ash_components_strings_th.xtb
index 7ae4fdd..a1eabbc 100644
--- a/ash/components/strings/ash_components_strings_th.xtb
+++ b/ash/components/strings/ash_components_strings_th.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">พิมพ์หน้าเว็บปัจจุบัน</translation>
 <translation id="1383876407941801731">ค้นหา</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> หรือ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">ไปที่ท้ายบรรทัด</translation>
 <translation id="1510238584712386396">ตัวเรียกใช้งาน</translation>
 <translation id="152892567002884378">เพิ่มระดับเสียง</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> แล้วกด <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">วางเนื้อหาจากคลิปบอร์ด</translation>
 <translation id="9052808072970550123">เปลี่ยนเป็นผู้ใช้ถัดไป</translation>
 <translation id="906458777597946297">ขยายหน้าต่างเต็มหน้าจอ</translation>
+<translation id="9091855755813503076">ไปที่จุดเริ่มต้นของบรรทัด</translation>
 <translation id="9106898733795143799">หน้าและเว็บเบราว์เซอร์</translation>
 <translation id="9162942292291287644">ไม่พบผลการค้นหา <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">แป้นพิมพ์ลัดยอดนิยม</translation>
diff --git a/ash/components/strings/ash_components_strings_tr.xtb b/ash/components/strings/ash_components_strings_tr.xtb
index cdf4a0e..10fefb0 100644
--- a/ash/components/strings/ash_components_strings_tr.xtb
+++ b/ash/components/strings/ash_components_strings_tr.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">Geçerli sayfanızı yazdırır</translation>
 <translation id="1383876407941801731">Ara</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> veya <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Satırın sonuna gider</translation>
 <translation id="1510238584712386396">Başlatıcı</translation>
 <translation id="152892567002884378">Sesi açar</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, daha sonra <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Panodaki içeriği yapıştırır</translation>
 <translation id="9052808072970550123">Sonraki kullanıcıya geçer</translation>
 <translation id="906458777597946297">Pencereyi ekranı kaplayacak şekilde büyüt</translation>
+<translation id="9091855755813503076">Satırın başına gider</translation>
 <translation id="9106898733795143799">Sayfa ve Web Tarayıcısı</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> için arama sonucu yok</translation>
 <translation id="9179672198516322668">Popüler Kısayollar</translation>
diff --git a/ash/components/strings/ash_components_strings_vi.xtb b/ash/components/strings/ash_components_strings_vi.xtb
index 73e0c086..5e26541 100644
--- a/ash/components/strings/ash_components_strings_vi.xtb
+++ b/ash/components/strings/ash_components_strings_vi.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">In trang hiện tại</translation>
 <translation id="1383876407941801731">Tìm kiếm</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> hoặc <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">Chuyển đến cuối dòng</translation>
 <translation id="1510238584712386396">Trình chạy</translation>
 <translation id="152892567002884378">Tăng âm lượng</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, rồi đến <ph name="ESC" /></translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">Dán nội dung từ khay nhớ tạm</translation>
 <translation id="9052808072970550123">Chuyển sang người dùng tiếp theo</translation>
 <translation id="906458777597946297">Phóng to cửa sổ</translation>
+<translation id="9091855755813503076">Chuyển đến đầu dòng</translation>
 <translation id="9106898733795143799">Trang và trình duyệt web</translation>
 <translation id="9162942292291287644">Không có kết quả tìm kiếm nào cho <ph name="QUERY" /></translation>
 <translation id="9179672198516322668">Các phím tắt thông dụng</translation>
diff --git a/ash/components/strings/ash_components_strings_zh-CN.xtb b/ash/components/strings/ash_components_strings_zh-CN.xtb
index 09f215c7..e81dc46c 100644
--- a/ash/components/strings/ash_components_strings_zh-CN.xtb
+++ b/ash/components/strings/ash_components_strings_zh-CN.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">打印当前网页</translation>
 <translation id="1383876407941801731">搜索</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 或 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
+<translation id="1477442857810932985">转至行末</translation>
 <translation id="1510238584712386396">启动器</translation>
 <translation id="152892567002884378">调高音量</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />,然后按 <ph name="ESC" /> 键</translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">粘贴剪贴板中的内容</translation>
 <translation id="9052808072970550123">切换到下一位用户</translation>
 <translation id="906458777597946297">最大化窗口</translation>
+<translation id="9091855755813503076">转至行首</translation>
 <translation id="9106898733795143799">网页和网络浏览器</translation>
 <translation id="9162942292291287644">找不到与“<ph name="QUERY" />”相符的搜索结果</translation>
 <translation id="9179672198516322668">常用快捷键</translation>
diff --git a/ash/components/strings/ash_components_strings_zh-TW.xtb b/ash/components/strings/ash_components_strings_zh-TW.xtb
index 337ecbb..b1abcaf11 100644
--- a/ash/components/strings/ash_components_strings_zh-TW.xtb
+++ b/ash/components/strings/ash_components_strings_zh-TW.xtb
@@ -11,6 +11,7 @@
 <translation id="1299858300159559687">列印目前網頁</translation>
 <translation id="1383876407941801731">搜尋</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 鍵或 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /> 鍵</translation>
+<translation id="1477442857810932985">移到行尾</translation>
 <translation id="1510238584712386396">啟動器</translation>
 <translation id="152892567002884378">調高音量</translation>
 <translation id="1560480564179555003">按下 <ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> 鍵,然後按下 <ph name="ESC" /> 鍵</translation>
@@ -191,6 +192,7 @@
 <translation id="9041599225465145264">貼上剪貼簿中的內容</translation>
 <translation id="9052808072970550123">切換至下一個使用者</translation>
 <translation id="906458777597946297">將視窗放到最大</translation>
+<translation id="9091855755813503076">移到行首</translation>
 <translation id="9106898733795143799">網頁與網路瀏覽器</translation>
 <translation id="9162942292291287644">找不到與「<ph name="QUERY" />」相符的搜尋結果</translation>
 <translation id="9179672198516322668">常用快速鍵</translation>
diff --git a/ash/multi_device_setup/multi_device_notification_presenter.cc b/ash/multi_device_setup/multi_device_notification_presenter.cc
index 7e2939d..9df2913 100644
--- a/ash/multi_device_setup/multi_device_notification_presenter.cc
+++ b/ash/multi_device_setup/multi_device_notification_presenter.cc
@@ -203,9 +203,9 @@
 
 void MultiDeviceNotificationPresenter::OnNotificationClicked() {
   DCHECK(notification_status_ != Status::kNoNotificationVisible);
-  PA_LOG(INFO) << "User clicked "
-               << GetNotificationDescriptionForLogging(notification_status_)
-               << ".";
+  PA_LOG(VERBOSE) << "User clicked "
+                  << GetNotificationDescriptionForLogging(notification_status_)
+                  << ".";
   UMA_HISTOGRAM_ENUMERATION("MultiDeviceSetup_NotificationClicked",
                             GetMetricValueForNotification(notification_status_),
                             kNotificationTypeMax);
@@ -230,9 +230,9 @@
     const Status notification_status,
     const base::string16& title,
     const base::string16& message) {
-  PA_LOG(INFO) << "Showing "
-               << GetNotificationDescriptionForLogging(notification_status)
-               << ".";
+  PA_LOG(VERBOSE) << "Showing "
+                  << GetNotificationDescriptionForLogging(notification_status)
+                  << ".";
   UMA_HISTOGRAM_ENUMERATION("MultiDeviceSetup_NotificationShown",
                             GetMetricValueForNotification(notification_status),
                             kNotificationTypeMax);
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 09b5a1b..e7317ae 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -487,13 +487,12 @@
   MaybeUpdateShelfBackground(AnimationChangeType::IMMEDIATE);
 }
 
-void ShelfLayoutManager::OnOverviewModeStartingAnimationComplete(
-    bool canceled) {
+void ShelfLayoutManager::OnOverviewModeStarting() {
   UpdateVisibilityState();
   MaybeUpdateShelfBackground(AnimationChangeType::ANIMATE);
 }
 
-void ShelfLayoutManager::OnOverviewModeEndingAnimationComplete(bool canceled) {
+void ShelfLayoutManager::OnOverviewModeEnded() {
   UpdateVisibilityState();
   MaybeUpdateShelfBackground(AnimationChangeType::ANIMATE);
 }
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h
index 3fdb91c..327d873 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -164,8 +164,8 @@
   void OnPinnedStateChanged(aura::Window* pinned_window) override;
   void OnAppListVisibilityChanged(bool shown,
                                   aura::Window* root_window) override;
-  void OnOverviewModeStartingAnimationComplete(bool canceled) override;
-  void OnOverviewModeEndingAnimationComplete(bool canceled) override;
+  void OnOverviewModeStarting() override;
+  void OnOverviewModeEnded() override;
   void OnSplitViewModeStarted() override;
   void OnSplitViewModeEnded() override;
 
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index c63ef06c..17f411b1 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">መደርደሪያ</translation>
 <translation id="2844169650293029770">USB-C መሣሪያ (የግራ ጎን የፊት ወደብ)</translation>
 <translation id="2865888419503095837">የአውታረ መረብ መረጃ</translation>
+<translation id="287224423103674444">ለማያ ገጽ ማሽከርከር አቋራጩን ተጭነውታል። ማያ ገጹን ማሽከርከር ይፈልጋሉ?</translation>
 <translation id="2872961005593481000">ዝጋ</translation>
 <translation id="2878884018241093801">ምንም የቅርብ ጊዜ ንጥሎች የሉም</translation>
 <translation id="2903844815300039659">ከ<ph name="NAME" /> ጋር ተገናኝቷል፣ <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">በማግበር ላይ</translation>
 <translation id="5673434351075758678">ከ«<ph name="FROM_LOCALE" />» ወደ «<ph name="TO_LOCALE" />» የእርስዎን ቅንብሮች ከማመሳሰል በኋላ።</translation>
 <translation id="5691772641933328258">የጣት አሻራ አልታወቀም</translation>
+<translation id="5710450975648804523">አትረብሽ በርቷል</translation>
 <translation id="574392208103952083">መካከለኛ</translation>
 <translation id="5744083938413354016">መታ አድርጎ መጎተት</translation>
 <translation id="5750765938512549687">ብሉቱዝ ጠፍቷል</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">የሚነገር ግብረመልስን ለማሰናከል ለአምስት ሰከንዶች ሁለቱንም የድምፅ ቁልፎች ተጭነው ያይዙ።</translation>
 <translation id="7692480393933218409">የተገናኙ የUSB-C መሣሪያዎችን ኃይል በመሙላት ላይ</translation>
 <translation id="7705524343798198388">ቪ ፒ ኤን</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ማሳወቂያ}one{# ማሳወቂያዎች}other{# ማሳወቂያዎች}}</translation>
 <translation id="776344839111254542">የዝማኔ ዝርዝሮችን ለማየት ጠቅ ያድርጉ</translation>
+<translation id="7780159184141939021">ማያ ገጹን አሽከርክር</translation>
 <translation id="7796353162336583443">ማስታወሻ ለመያዝ፣ ቅጽበታዊ ገጽ እይታን ለማንሳት፣ Google ረዳቱን፣ ሌዘር ጠቋሚውን ወይም ማጉያ መነጽሩን ለመጠቀም በመደርደሪያው ላይ ያለውን የስታይለስ አዝራሩን መታ ያድርጉ።</translation>
 <translation id="7798302898096527229">ለመሰረዝ Search ወይም Shift ይጫኑ።</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> እና <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 71baa5e..05c46ae 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">الرف</translation>
 <translation id="2844169650293029770">‏جهاز USB-C (المنفذ الأمامي الأيسر)</translation>
 <translation id="2865888419503095837">معلومات الشبكة</translation>
+<translation id="287224423103674444">لقد ضغطت على اختصار تدوير الشاشة. هل تريد تدوير الشاشة؟</translation>
 <translation id="2872961005593481000">إيقاف التشغيل</translation>
 <translation id="2878884018241093801">ليست هناك عناصر تم استخدامها مؤخرًا</translation>
 <translation id="2903844815300039659">تم الاتصال بشبكة <ph name="NAME" />، <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">تفعيل</translation>
 <translation id="5673434351075758678">من "<ph name="FROM_LOCALE" />" إلى "<ph name="TO_LOCALE" />" بعد مزامنة الإعدادات.</translation>
 <translation id="5691772641933328258">لم يتمّ التعرُّف على البصمة</translation>
+<translation id="5710450975648804523">تمّ تفعيل وضع "عدم الإزعاج"</translation>
 <translation id="574392208103952083">متوسط</translation>
 <translation id="5744083938413354016">السحب بعد النقر</translation>
 <translation id="5750765938512549687">تم إيقاف البلوتوث</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">اضغط مع الاستمرار على مفتاحي مستوى الصوت لمدة خمس ثوانٍ لإيقاف التعليقات والملاحظات المنطوقة.</translation>
 <translation id="7692480393933218409">‏جارٍ شحن أجهزة USB-C المتصلة</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{إشعار واحد}zero{# إشعار}two{إشعاران (#)}few{# إشعارات}many{# إشعارًا}other{# إشعار}}</translation>
 <translation id="776344839111254542">النقر لعرض تفاصيل التحديث</translation>
+<translation id="7780159184141939021">تدوير الشاشة</translation>
 <translation id="7796353162336583443">‏انقر على زر قلم الشاشة على الرف لتدوين ملاحظة أو الحصول على لقطة شاشة أو استخدام مساعد Google أو مؤشر الليزر أو العدسة المكبرة.</translation>
 <translation id="7798302898096527229">‏اضغط على مفتاح البحث أو المفتاح Shift للإلغاء.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> و<ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 0ee13bd..e79656da 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Лавица</translation>
 <translation id="2844169650293029770">Устройство с USB-C (предният ляв порт)</translation>
 <translation id="2865888419503095837">Информация за мрежата</translation>
+<translation id="287224423103674444">Използвахте клавишната комбинация за завъртане на екрана. Искате ли да промените ориентацията му?</translation>
 <translation id="2872961005593481000">Изключване</translation>
 <translation id="2878884018241093801">Няма скорошни елементи</translation>
 <translation id="2903844815300039659">Установена е връзка с мрежата „<ph name="NAME" />“, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Активира се</translation>
 <translation id="5673434351075758678">От <ph name="FROM_LOCALE" /> към <ph name="TO_LOCALE" /> след синхронизиране на настройките ви.</translation>
 <translation id="5691772641933328258">Отпечатъкът не бе разпознат</translation>
+<translation id="5710450975648804523">Режимът „Не безпокойте“ е включен</translation>
 <translation id="574392208103952083">Среден</translation>
 <translation id="5744083938413354016">Преместване чрез докосване</translation>
 <translation id="5750765938512549687">Функцията за Bluetooth е изключена</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Натиснете и двата бутона за силата на звука и ги задръжте за пет секунди, за да деактивирате обратната връзка с говор.</translation>
 <translation id="7692480393933218409">Свързаните устройства с USB-C се зареждат</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известие}other{# известия}}</translation>
 <translation id="776344839111254542">Кликнете, за да видите подробности за актуализацията</translation>
+<translation id="7780159184141939021">Завъртане на екрана</translation>
 <translation id="7796353162336583443">Докоснете бутона с икона на писалка в лавицата, за да създадете бележка, да направите екранна снимка или да използвате Google Асистент, лазерната показалка или лупата.</translation>
 <translation id="7798302898096527229">Натиснете клавиша „търсене“ или Shift, за да анулирате.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> и <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 7b06bc1..0538a918 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">তাক</translation>
 <translation id="2844169650293029770">USB-C ডিভাইস (বাঁ দিকের সামনের পোর্ট)</translation>
 <translation id="2865888419503095837">নেটওয়ার্ক তথ্য</translation>
+<translation id="287224423103674444">স্ক্রিন ঘোরানোর জন্য আপনি শর্টকাট প্রেস করেছেন। আপনি কি স্ক্রিন ঘোরাতে চান?</translation>
 <translation id="2872961005593481000">বন্ধ করুন</translation>
 <translation id="2878884018241093801">কোনও সাম্প্রতিক আইটেম নেই</translation>
 <translation id="2903844815300039659"><ph name="NAME" /> এর সাথে সংযুক্ত আছে, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">সক্রিয় করা হচ্ছে</translation>
 <translation id="5673434351075758678">সেটিংস সিঙ্ক করার পরে "<ph name="FROM_LOCALE" />" থেকে "<ph name="TO_LOCALE" />" সেট করা হয়েছে।</translation>
 <translation id="5691772641933328258">আঙ্গুলের ছাপ শনাক্ত করা যায়নি</translation>
+<translation id="5710450975648804523">'বিরক্ত করবেন না' মোড চালু আছে</translation>
 <translation id="574392208103952083">মাঝারি</translation>
 <translation id="5744083938413354016">ট্যাপ করে টেনে আনা</translation>
 <translation id="5750765938512549687">ব্লুটুথ বন্ধ আছে</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">পড়ে শোনানো বিকল্প চালু করতে পাঁচ সেকেন্ডের জন্য ভলিউম কীগুলি প্রেস করে ধরে রাখুন।</translation>
 <translation id="7692480393933218409">সংযুক্ত USB-C ডিভাইসগুলি চার্জ হচ্ছে</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টি বিজ্ঞপ্তি}one{#টি বিজ্ঞপ্তি}other{#টি বিজ্ঞপ্তি}}</translation>
 <translation id="776344839111254542">আপডেটের বিশদ বিবরণ জানার জন্য ক্লিক করুন</translation>
+<translation id="7780159184141939021">স্ক্রিন ঘোরান</translation>
 <translation id="7796353162336583443">একটি নোট, স্ক্রিনশট নিতে, Google সহায়ক, লেজার পয়েন্টার, বা ম্যাগনিফিকেশনের কাচ ব্যবহার করার জন্য শেলফের স্টাইলাস বোতামটি ট্যাপ করুন।</translation>
 <translation id="7798302898096527229">Search টিপুন বা বাতিল করতে Shift টিপুন</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> এবং <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index bf681a7..75c1574f 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Polička</translation>
 <translation id="2844169650293029770">Zařízení USB Type-C (levý přední port)</translation>
 <translation id="2865888419503095837">Informace o síti</translation>
+<translation id="287224423103674444">Stiskli jste klávesovou zkratku pro otočení obrazovky. Chcete otočit obrazovku?</translation>
 <translation id="2872961005593481000">Vypnout</translation>
 <translation id="2878884018241093801">Žádné nedávné položky</translation>
 <translation id="2903844815300039659">Jste připojeni k síti <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Probíhá aktivace</translation>
 <translation id="5673434351075758678">Po synchronizaci nastavení se oznámení změní z jazyka <ph name="FROM_LOCALE" /> na jazyk <ph name="TO_LOCALE" />.</translation>
 <translation id="5691772641933328258">Otisk prstu nebyl rozpoznán</translation>
+<translation id="5710450975648804523">Režim Nerušit je zapnutý</translation>
 <translation id="574392208103952083">Střední</translation>
 <translation id="5744083938413354016">Přetažení klepnutím</translation>
 <translation id="5750765938512549687">Rozhraní Bluetooth je vypnuté</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Hlasovou odezvu vypnete podržením obou tlačítek hlasitosti po dobu pěti sekund.</translation>
 <translation id="7692480393933218409">Nabíjení připojených zařízení USB Type-C</translation>
 <translation id="7705524343798198388">Síť VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 oznámení}few{# oznámení}many{# oznámení}other{# oznámení}}</translation>
 <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizaci</translation>
+<translation id="7780159184141939021">Otočit obrazovku</translation>
 <translation id="7796353162336583443">Klepnutím na tlačítko dotykového pera na poličce můžete pořídit poznámku nebo snímek obrazovky, případně použít Asistenta Google, laserové ukazovátko nebo lupu.</translation>
 <translation id="7798302898096527229">Vypnete jej stisknutím klávesy Hledat nebo Shift.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> a <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index e4c3930..8941d42 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Biblioteca</translation>
 <translation id="2844169650293029770">Dispositivo USB-C (puerto lateral izquierdo delantero)</translation>
 <translation id="2865888419503095837">Información de red</translation>
+<translation id="287224423103674444">Presionaste la combinación de teclas para girar la pantalla. ¿Quieres llevar a cabo esta acción?</translation>
 <translation id="2872961005593481000">Cerrar</translation>
 <translation id="2878884018241093801">No hay elementos recientes</translation>
 <translation id="2903844815300039659">Conectado a <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5673434351075758678">De "<ph name="FROM_LOCALE" />" a "<ph name="TO_LOCALE" />" después de sincronizar tu configuración</translation>
 <translation id="5691772641933328258">No se reconoció la huella digital</translation>
+<translation id="5710450975648804523">"No interrumpir" activado</translation>
 <translation id="574392208103952083">Mediano</translation>
 <translation id="5744083938413354016">Función tocar y arrastrar</translation>
 <translation id="5750765938512549687">Se activó la conexión Bluetooth</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Mantén presionadas las teclas de volumen durante cinco segundos para inhabilitar los comentarios por voz.</translation>
 <translation id="7692480393933218409">Cargando dispositivos USB-C conectados</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
 <translation id="776344839111254542">Haz clic para ver los detalles de la actualización</translation>
+<translation id="7780159184141939021">Girar pantalla</translation>
 <translation id="7796353162336583443">Presiona el botón de la pluma stylus en la biblioteca para tomar notas o capturas de pantalla, usar el Asistente de Google y activar las funciones de puntero láser o lupa.</translation>
 <translation id="7798302898096527229">Presiona mayúscula o la tecla de búsqueda para cancelarlo.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> y <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 78b3f732..8c179b70 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Estantería</translation>
 <translation id="2844169650293029770">Dispositivo USB tipo C (puerto frontal izquierdo)</translation>
 <translation id="2865888419503095837">Información de red</translation>
+<translation id="287224423103674444">Has pulsado el acceso directo de la rotación de pantalla. ¿Quieres girar la pantalla?</translation>
 <translation id="2872961005593481000">Apagar</translation>
 <translation id="2878884018241093801">No hay elementos recientes</translation>
 <translation id="2903844815300039659">Conectado a <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5673434351075758678">De "<ph name="FROM_LOCALE" />" a "<ph name="TO_LOCALE" />" después de sincronizar tu configuración.</translation>
 <translation id="5691772641933328258">Huella digital no reconocida</translation>
+<translation id="5710450975648804523">Modo No molestar activado</translation>
 <translation id="574392208103952083">Mediano</translation>
 <translation id="5744083938413354016">Tocar y arrastrar</translation>
 <translation id="5750765938512549687">El Bluetooth está desactivado</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Mantén pulsadas ambas teclas de volumen durante cinco segundos para inhabilitar los mensajes de voz.</translation>
 <translation id="7692480393933218409">Cargando los dispositivos USB tipo C conectados</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
 <translation id="776344839111254542">Haz clic para ver los detalles de la actualización</translation>
+<translation id="7780159184141939021">Girar pantalla</translation>
 <translation id="7796353162336583443">Toca el botón del lápiz óptico situado en la estantería para tomar una nota, hacer una captura de pantalla o utilizar el Asistente de Google, el puntero láser o la lupa.</translation>
 <translation id="7798302898096527229">Pulsa la tecla de búsqueda o Mayús para cancelarlo.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> y <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index c572c806..8ef1f9c1 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">قفسه</translation>
 <translation id="2844169650293029770">‏دستگاه USB-C (درگاه جلوی سمت چپ)</translation>
 <translation id="2865888419503095837">اطلاعات شبکه</translation>
+<translation id="287224423103674444">میان‌بر را برای چرخش صفحه فشار دادید. آیا می‌خواهید صفحه را بچرخانید؟</translation>
 <translation id="2872961005593481000">خاموش کردن</translation>
 <translation id="2878884018241093801">بدون موارد اخیر</translation>
 <translation id="2903844815300039659">متصل به <ph name="NAME" /> با <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">فعالسازی</translation>
 <translation id="5673434351075758678">از «<ph name="FROM_LOCALE" />» به «<ph name="TO_LOCALE" />» بعد از همگام‌سازی تنظیمات.</translation>
 <translation id="5691772641933328258">اثر انگشت تشخیص داده نشد</translation>
+<translation id="5710450975648804523">«مزاحم نشوید» روشن است</translation>
 <translation id="574392208103952083">متوسط</translation>
 <translation id="5744083938413354016">کشیدن با ضربه زدن</translation>
 <translation id="5750765938512549687">بلوتوث خاموش است</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">برای غیرفعال کردن بازخورد گفتاری، هردو کلید تنظیم صدا را پنج ثانیه فشار دهید و نگه‌دارید.</translation>
 <translation id="7692480393933218409">‏در حال شارژ کردن دستگاه‌های USB-C متصل</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{۱ اعلان}one{# اعلان}other{# اعلان}}</translation>
 <translation id="776344839111254542">برای مشاهده جزئیات به‌روزرسانی کلیک کنید</translation>
+<translation id="7780159184141939021">چرخش صفحه</translation>
 <translation id="7796353162336583443">‏برای یادداشت‌برداری، گرفتن عکس صفحه‌نمایش، استفاده از «دستیار Google»، نشانگر لیزری یا ذره‌بین، روی دکمه قلم در قفسه ضربه بزنید.</translation>
 <translation id="7798302898096527229">‏برای لغو کردن، Search یا Shift را فشار دهید.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> و <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index a3718d0..24ea6b12 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Shelf</translation>
 <translation id="2844169650293029770">USB-C device (port sa kaliwang bahagi sa harap)</translation>
 <translation id="2865888419503095837">Impormasyon ng network</translation>
+<translation id="287224423103674444">Napindot mo ang shortcut para sa pag-rotate ng screen. Gusto mo bang i-rotate ang screen?</translation>
 <translation id="2872961005593481000">Shut down</translation>
 <translation id="2878884018241093801">Walang kamakailang item</translation>
 <translation id="2903844815300039659">Nakakonekta sa <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Ina-activate</translation>
 <translation id="5673434351075758678">Gagawing "<ph name="TO_LOCALE" />" mula "<ph name="FROM_LOCALE" />" pagkatapos i-sync ang iyong mga setting.</translation>
 <translation id="5691772641933328258">Hindi nakilala ang fingerprint</translation>
+<translation id="5710450975648804523">Naka-on ang Huwag Istorbohin</translation>
 <translation id="574392208103952083">Katamtaman</translation>
 <translation id="5744083938413354016">Pag-tap upang mag-drag</translation>
 <translation id="5750765938512549687">Naka-off ang Bluetooth</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Pindutin nang matagal ang parehong volume key sa loob ng limang segundo para i-disable ang pasalitang feedback.</translation>
 <translation id="7692480393933218409">China-charge ang mga nakakonektang USB-C device</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# na notification}}</translation>
 <translation id="776344839111254542">I-click upang tingnan ang mga detalye ng update</translation>
+<translation id="7780159184141939021">I-rotate ang Screen</translation>
 <translation id="7796353162336583443">I-tap ang button ng stylus sa shelf upang magsulat ng tala, mag-screenshot, gamitin ang Google Assistant, laser pointer, o magnifying glass.</translation>
 <translation id="7798302898096527229">Pindutin ang Search o Shift upang kanselahin.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> at <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 3b5246f..005af9b 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">શેલ્ફ</translation>
 <translation id="2844169650293029770">USB-C ઉપકરણ (ડાબી બાજુનું આગળનું પોર્ટ)</translation>
 <translation id="2865888419503095837">નેટવર્ક માહિતી</translation>
+<translation id="287224423103674444">તમે સ્ક્રીનને ફેરવવા માટે શૉર્ટકટ દબાવેલ છે. શું તમે સ્ક્રીનને ફેરવવા માગો છો?</translation>
 <translation id="2872961005593481000">શટ ડાઉન કરો</translation>
 <translation id="2878884018241093801">કોઈ તાજેતરની આઇટમ નથી</translation>
 <translation id="2903844815300039659"><ph name="NAME" />, <ph name="STRENGTH" /> સાથે કનેક્ટ થયેલ</translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">સક્રિય કરી રહ્યું છે</translation>
 <translation id="5673434351075758678">તમારી સેટિંગને સિંક કર્યા પછી "<ph name="FROM_LOCALE" />" થી "<ph name="TO_LOCALE" />"માં ફેરવો.</translation>
 <translation id="5691772641933328258">ફિંગરપ્રિન્ટ ઓળખી શકાઈ નથી</translation>
+<translation id="5710450975648804523">ખલેલ પાડશો નહીં ચાલુ છે</translation>
 <translation id="574392208103952083">મધ્યમ</translation>
 <translation id="5744083938413354016">ખેંચવાને ટૅપ કરો</translation>
 <translation id="5750765938512549687">બ્લૂટૂથ બંધ છે</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">બોલાયેલ પ્રતિસાદ બંધ કરવા પાંચ સેકન્ડ માટે બન્ને વૉલ્યૂમ કીને દબાવી રાખો.</translation>
 <translation id="7692480393933218409">કનેક્ટ કરેલા USB-C ઉપકરણોને ચાર્જ કરી રહ્યાં છે</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 નોટિફિકેશન}one{# નોટિફિકેશન}other{# નોટિફિકેશન}}</translation>
 <translation id="776344839111254542">અપડેટની વિગતો જોવા માટે ક્લિક કરો</translation>
+<translation id="7780159184141939021">સ્ક્રીનને ફેરવો</translation>
 <translation id="7796353162336583443">એક નોંધ અથવા સ્ક્રીનશૉટ લેવા, Google સહાયક, લૅઝર પૉઇન્ટર અથવા બૃહદદર્શક કાચનો ઉપયોગ કરવા માટે શેલ્ફ પરના સ્ટાઇલસ બટનને ટૅપ કરો.</translation>
 <translation id="7798302898096527229">રદ કરવા માટે શોધો અથવા Shift દબાવો.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> અને <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 304f78b0..8f852523 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">अलमारी</translation>
 <translation id="2844169650293029770">USB-C डिवाइस (बायां सामने वाला पोर्ट)</translation>
 <translation id="2865888419503095837">नेटवर्क जानकारी</translation>
+<translation id="287224423103674444">आपने स्क्रीन घुमाने का शॉर्टकट दबाया है. क्या आप स्क्रीन को घुमाना चाहते हैं?</translation>
 <translation id="2872961005593481000">शट डाउन करें</translation>
 <translation id="2878884018241093801">हाल का कोई आइटम नहीं</translation>
 <translation id="2903844815300039659"><ph name="NAME" /> से जुड़ गया है, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">सक्रिय कर रहा है</translation>
 <translation id="5673434351075758678">अपनी सेटिंग सिंक करने के बाद "<ph name="FROM_LOCALE" />" से "<ph name="TO_LOCALE" />".</translation>
 <translation id="5691772641933328258">फ़िंगरप्रिंट नहीं पहचाना गया</translation>
+<translation id="5710450975648804523">'परेशान न करें' मोड चालू है</translation>
 <translation id="574392208103952083">मध्यम</translation>
 <translation id="5744083938413354016">टैप करके खींचना</translation>
 <translation id="5750765938512549687">ब्लूटूथ बंद है</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">कंप्यूटर का बोलकर दिया गया जवाब बंद करने के लिए दोनों वॉल्यूम बटन को पांच सेकंड तक दबाकर रखें.</translation>
 <translation id="7692480393933218409">कनेक्ट किए गए USB-C डिवाइस चार्ज कर रहा है</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{एक सूचना}one{# सूचनाएं}other{# सूचनाएं}}</translation>
 <translation id="776344839111254542">अपडेट के विवरण देखने के लिए क्लिक करें</translation>
+<translation id="7780159184141939021">स्क्रीन घुमाएं</translation>
 <translation id="7796353162336583443">नोट लेने, स्क्रीनशॉट लेने और Google Assistant, लेज़र पॉइंटर या आवर्धक ग्लास का इस्तेमाल करने के लिए अलमारी में मौजूद स्टाइलस बटन पर टैप करें.</translation>
 <translation id="7798302898096527229">रद्द करने के लिए Search या Shift दबाएं.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> और <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 7b0b421..2d69924c 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Rak</translation>
 <translation id="2844169650293029770">Perangkat USB-C (port depan sebelah kiri)</translation>
 <translation id="2865888419503095837">Info jaringan</translation>
+<translation id="287224423103674444">Anda menekan pintasan untuk rotasi layar. Apakah Anda ingin memutar layar?</translation>
 <translation id="2872961005593481000">Matikan</translation>
 <translation id="2878884018241093801">Tidak ada item baru-baru ini</translation>
 <translation id="2903844815300039659">Terhubung ke <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5673434351075758678">Dari "<ph name="FROM_LOCALE" />" ke "<ph name="TO_LOCALE" />" setelah menyinkronkan setelan Anda.</translation>
 <translation id="5691772641933328258">Sidik jari tidak dikenali</translation>
+<translation id="5710450975648804523">Mode Jangan Ganggu aktif</translation>
 <translation id="574392208103952083">Sedang</translation>
 <translation id="5744083938413354016">Tap tarik</translation>
 <translation id="5750765938512549687">Bluetooth nonaktif</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Tekan dan tahan kedua tombol volume selama 5 detik untuk menonaktifkan masukan lisan.</translation>
 <translation id="7692480393933218409">Mengisi daya perangkat USB-C yang tersambung</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikasi}other{# notifikasi}}</translation>
 <translation id="776344839111254542">Klik untuk melihat detail update</translation>
+<translation id="7780159184141939021">Memutar Layar</translation>
 <translation id="7796353162336583443">Tap tombol stilus di rak untuk mencatat, mengambil screenshot, menggunakan asisten, penunjuk laser, atau kaca pembesar.</translation>
 <translation id="7798302898096527229">Tekan Search atau Shift untuk membatalkan.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> dan <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 95575da..e4ae044 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">シェルフ</translation>
 <translation id="2844169650293029770">USB-C デバイス(左手前のポート)</translation>
 <translation id="2865888419503095837">ネットワーク情報</translation>
+<translation id="287224423103674444">画面回転のショートカットを押しました。画面を回転しますか?</translation>
 <translation id="2872961005593481000">終了</translation>
 <translation id="2878884018241093801">最近使用されたアイテムはありません</translation>
 <translation id="2903844815300039659"><ph name="NAME" /> に接続されています(<ph name="STRENGTH" />)</translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">有効にしています</translation>
 <translation id="5673434351075758678">設定の同期後に「<ph name="FROM_LOCALE" />」から「<ph name="TO_LOCALE" />」に変更されました。</translation>
 <translation id="5691772641933328258">指紋を認識できません</translation>
+<translation id="5710450975648804523">マナーモードがオンになっています</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">タップによるドラッグ</translation>
 <translation id="5750765938512549687">Bluetooth がオフです</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">音声フィードバックを無効にするには、音量大と音量小の両方のボタンを 5 秒間押し続けてください。</translation>
 <translation id="7692480393933218409">接続された USB-C デバイスを充電しています</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 件の通知}other{# 件の通知}}</translation>
 <translation id="776344839111254542">クリックしてアップデートの詳細を表示する</translation>
+<translation id="7780159184141939021">画面の回転</translation>
 <translation id="7796353162336583443">シェルフにあるタッチペン ボタンをタップして、メモやスクリーンショットをとったり、Google アシスタント、レーザー ポインタ、虫メガネを使用したりすることができます。</translation>
 <translation id="7798302898096527229">キャンセルするには検索キーまたは Shift キーを押します。</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index dd6a484..b310f2f 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">ಶೆಲ್ಫ್</translation>
 <translation id="2844169650293029770">USB-C ಸಾಧನ (ಎಡ ಭಾಗದ ಮುಂದಿನ ಪೋರ್ಟ್‌)</translation>
 <translation id="2865888419503095837">ನೆಟ್‌ವರ್ಕ್ ಮಾಹಿತಿ</translation>
+<translation id="287224423103674444">ನೀವು ಪರದೆ ತಿರುಗಿಸುವಿಕೆಯ ಶಾರ್ಟ್‌ಕಟ್ ಅನ್ನು ಒತ್ತಿದ್ದೀರಿ. ನೀವು ಪರದೆಯನ್ನು ತಿರುಗಿಸಲು ಬಯಸುವಿರಾ?</translation>
 <translation id="2872961005593481000">ಮುಚ್ಚಿಬಿಡಿ </translation>
 <translation id="2878884018241093801">ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ</translation>
 <translation id="2903844815300039659"><ph name="NAME" />, <ph name="STRENGTH" /> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ</translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="5673434351075758678">ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿದ ಬಳಿಕ "<ph name="FROM_LOCALE" />" ನಿಂದ "<ph name="TO_LOCALE" />" ಗೆ.</translation>
 <translation id="5691772641933328258">ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
+<translation id="5710450975648804523">ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಆಗಿದೆ</translation>
 <translation id="574392208103952083">ಮಧ್ಯಮ</translation>
 <translation id="5744083938413354016">ಟ್ಯಾಪ್ ಎಳೆಯುವಿಕೆ</translation>
 <translation id="5750765938512549687">ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿದೆ</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">ಮಾತಿನ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಐದು ಸೆಕೆಂಡ್‌ಗಳ ಕಾಲ ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ.</translation>
 <translation id="7692480393933218409">ಸಂಪರ್ಕಿತ USB-C ಸಾಧನಗಳನ್ನು ಚಾರ್ಜ್ ಮಾಡುತ್ತಿದೆ</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ಅಧಿಸೂಚನೆ}one{# ಅಧಿಸೂಚನೆಗಳು}other{# ಅಧಿಸೂಚನೆಗಳು}}</translation>
 <translation id="776344839111254542">ಅಪ್‌ಡೇಟ್‌ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
+<translation id="7780159184141939021">ಪರದೆಯನ್ನು ತಿರುಗಿಸಿ</translation>
 <translation id="7796353162336583443">ಟಿಪ್ಪಣಿ, ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳುವಾಗ, Google ಸಹಾಯಕ, ಲೇಸರ್‌ ಪಾಯಿಂಟರ್ ಅಥವಾ ಭೂತಗನ್ನಡಿ ಬಳಸಲು ಶೆಲ್ಫ್‌ನಲ್ಲಿ ಸ್ಟೈಲಸ್ ಬಟನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="7798302898096527229">ರದ್ದುಗೊಳಿಸಲು 'ಹುಡುಕಾಟ' ಅಥವಾ Shift ಅನ್ನು ಒತ್ತಿರಿ.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> ಮತ್ತು <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index b753383..1083d6d 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">임시보관함</translation>
 <translation id="2844169650293029770">USB-C 기기(좌측 전면 포트)</translation>
 <translation id="2865888419503095837">네트워크 정보</translation>
+<translation id="287224423103674444">화면 회전 단축키를 누르셨습니다. 화면을 회전하시겠습니까?</translation>
 <translation id="2872961005593481000">종료</translation>
 <translation id="2878884018241093801">최근 항목이 없습니다.</translation>
 <translation id="2903844815300039659"><ph name="NAME" />에 연결됨, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">활성화 중</translation>
 <translation id="5673434351075758678">설정 동기화 후 ‘<ph name="FROM_LOCALE" />’에서 ‘<ph name="TO_LOCALE" />’(으)로 변경합니다.</translation>
 <translation id="5691772641933328258">지문을 인식할 수 없음</translation>
+<translation id="5710450975648804523">알림 일시중지 사용 중</translation>
 <translation id="574392208103952083">보통</translation>
 <translation id="5744083938413354016">탭 드래그</translation>
 <translation id="5750765938512549687">블루투스가 사용 중지됨</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">음성 피드백을 사용 중지하려면 두 볼륨 키를 5초 동안 길게 누르세요.</translation>
 <translation id="7692480393933218409">연결된 USB-C 기기 충전 중</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{알림 1개}other{알림 #개}}</translation>
 <translation id="776344839111254542">업데이트 세부정보를 보려면 클릭하세요.</translation>
+<translation id="7780159184141939021">화면 회전</translation>
 <translation id="7796353162336583443">실행기에서 스타일러스 버튼을 탭하여 메모를 작성하거나, 스크린샷을 찍거나, Google 어시스턴트, 레이저 포인터, 돋보기를 활용할 수 있습니다.</translation>
 <translation id="7798302898096527229">취소하려면 검색 또는 Shift 키를 누르세요.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" />시간 <ph name="MINUTE" />분</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index 980e9f0..6dcfe4c 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">ഷെൽഫ്</translation>
 <translation id="2844169650293029770">USB-C ഉപകരണം (ഇടത് വശത്ത് മുൻഭാഗത്തെ പോർട്ട്)</translation>
 <translation id="2865888419503095837">നെറ്റ്‌വർക്ക് വിവരം</translation>
+<translation id="287224423103674444">നിങ്ങള്‍ സ്ക്രീന്‍ തിരിക്കുന്നതിനുള്ള കുറുക്കുവഴി അമര്‍ത്തി. സ്ക്രീന്‍ തിരിക്കണോ?</translation>
 <translation id="2872961005593481000">അടയ്ക്കുക</translation>
 <translation id="2878884018241093801">സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല</translation>
 <translation id="2903844815300039659"><ph name="NAME" />-ലേക്ക് കണക്റ്റ് ചെയ്‌‌തു, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">സജീവമാക്കുന്നു</translation>
 <translation id="5673434351075758678">നിങ്ങളുടെ ക്രമീകരണം സമന്വയിപ്പിച്ചതിന് ശേഷം, "<ph name="FROM_LOCALE" />" എന്നതിൽ നിന്ന്"<ph name="TO_LOCALE" />" എന്നതിലേക്ക്.</translation>
 <translation id="5691772641933328258">വിരലടയാളം തിരിച്ചറിഞ്ഞില്ല</translation>
+<translation id="5710450975648804523">'ശല്യപ്പെടുത്തരുത്' ഓണാണ്</translation>
 <translation id="574392208103952083">ഇടത്തരം</translation>
 <translation id="5744083938413354016">ടാപ്പുചെയ്‌ത് വലിച്ചിടൽ</translation>
 <translation id="5750765938512549687">Bluetooth ഓഫാണ്</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">സംഭാഷണ ഫീഡ്‌ബാക്ക് പ്രവർത്തനരഹിതമാക്കാൻ രണ്ട് വോളിയം കീകളും രണ്ട് സെക്കൻഡ് നേരത്തേക്ക് അമർത്തിപ്പിടിക്കുക.</translation>
 <translation id="7692480393933218409">കണക്‌റ്റുചെയ്‌ത USB-C ഉപകരണങ്ങൾ ചാർജ്ജുചെയ്യുന്നു</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ഒരു അറിയിപ്പ്}other{# അറിയിപ്പുകൾ}}</translation>
 <translation id="776344839111254542">അപ്‌ഡേറ്റുചെയ്‌ത വിശദാംശങ്ങൾ കാണാൻ ‌ക്ലിക്കുചെയ്യുക</translation>
+<translation id="7780159184141939021">സ്‌ക്രീൻ തിരിക്കുക</translation>
 <translation id="7796353162336583443">കുറിപ്പോ സ്‌ക്രീന്‍ഷോട്ടോ എടുക്കാനും Google സഹായിയോ ലേസർ പോയിന്‍ററോ ഭൂതക്കണ്ണാടിയോ ഉപയോഗിക്കാനും ഷെൽഫിലെ സ്‌റ്റൈലസ് ബട്ടൺ ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="7798302898096527229">റദ്ദാക്കാൻ 'തിരയൽ' അല്ലെങ്കിൽ Shift അമർത്തുക.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" />, <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 7d6d911..891419e 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">शेल्फ</translation>
 <translation id="2844169650293029770">USB-C डिव्‍हाइस (डाव्‍या बाजूचे पुढील पोर्ट)</translation>
 <translation id="2865888419503095837">नेटवर्क माहिती</translation>
+<translation id="287224423103674444">तुम्ही स्क्रीन रोटेशनसाठी शॉर्टकट दाबले. तुम्हाला स्क्रीन फिरवायची आहे?</translation>
 <translation id="2872961005593481000">बंद करा</translation>
 <translation id="2878884018241093801">अलीकडील कोणतेही आयटम नाहीत</translation>
 <translation id="2903844815300039659"><ph name="NAME" />, <ph name="STRENGTH" /> शी कनेक्ट केलेले</translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">सक्रिय करीत आहे </translation>
 <translation id="5673434351075758678">तुमच्या सेटिंग्ज सिंक केल्यानंतर "<ph name="FROM_LOCALE" />" पासून "<ph name="TO_LOCALE" />" पर्यंत.</translation>
 <translation id="5691772641933328258">फिंगरप्रिंट ओळखले नाही</translation>
+<translation id="5710450975648804523">व्यत्यय आणू नका सुरू आहे</translation>
 <translation id="574392208103952083">मध्यम</translation>
 <translation id="5744083938413354016">टॅप ड्रॅगिंग</translation>
 <translation id="5750765938512549687">ब्लूटूथ बंद आहे</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">वाचिक फीडबॅक बंद करण्यासाठी दोन्ही व्हॉल्युम की पाच सेकंदांसाठी दाबा आणि धरून ठेवा.</translation>
 <translation id="7692480393933218409">कनेक्ट केलेले USB-C डिव्‍हाइसेस चार्ज करीत आहे</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{एक सूचना}one{# सूचना}other{# सूचना}}</translation>
 <translation id="776344839111254542">अपडेट तपशील पाहण्यासाठी क्लिक करा</translation>
+<translation id="7780159184141939021">स्क्रीन फिरवा</translation>
 <translation id="7796353162336583443">नोंद करून घेण्यासाठी, स्क्रीनशॉट घेण्यासाठी, Google Assistant, लेझर पॉइंटर किंवा भिंग वापरण्यासाठी शेल्फवरील स्टायलस बटणावर टॅप करा.</translation>
 <translation id="7798302898096527229">रद्द करण्यासाठी Search किंवा Shift दाबा.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> आणि <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 4a3f0df8..ad056b90 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Rak</translation>
 <translation id="2844169650293029770">Peranti USB-C (port depan sebelah kiri)</translation>
 <translation id="2865888419503095837">Maklumat rangkaian</translation>
+<translation id="287224423103674444">Anda menekan pintasan untuk putaran skrin. Adakah anda ingin memutarkan skrin?</translation>
 <translation id="2872961005593481000">Mematikan</translation>
 <translation id="2878884018241093801">Tiada item terbaharu</translation>
 <translation id="2903844815300039659">Disambungkan ke <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5673434351075758678">Daripada "<ph name="FROM_LOCALE" />" kepada "<ph name="TO_LOCALE" />" selepas menyegerakkan tetapan anda.</translation>
 <translation id="5691772641933328258">Cap jari tidak dikenali</translation>
+<translation id="5710450975648804523">Jangan Ganggu dihidupkan</translation>
 <translation id="574392208103952083">Sederhana</translation>
 <translation id="5744083938413354016">Penyeretan ketik</translation>
 <translation id="5750765938512549687">Bluetooth dimatikan</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Tekan dan tahan kedua-dua kekunci kelantangan selama lima saat untuk melumpuhkan maklum balas yang dituturkan.</translation>
 <translation id="7692480393933218409">Mengecas peranti USB-C yang disambungkan</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pemberitahuan}other{# pemberitahuan}}</translation>
 <translation id="776344839111254542">Klik untuk melihat butiran kemas kini</translation>
+<translation id="7780159184141939021">Putarkan Skrin</translation>
 <translation id="7796353162336583443">Ketik butang stilus pada rak untuk mencatat nota, mengambil tangkapan skrin, menggunakan Google Assistant, penuding laser atau kanta pembesar.</translation>
 <translation id="7798302898096527229">Tekan Search atau Shift untuk membatalkan.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> dan <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 8f37bbfe..6c077fa9 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Hylle</translation>
 <translation id="2844169650293029770">USB-C-enhet (porten foran på venstre side)</translation>
 <translation id="2865888419503095837">Nettverksinformasjon</translation>
+<translation id="287224423103674444">Du har trykket på snarveien for skjermrotasjon. Vil du rotere skjermen?</translation>
 <translation id="2872961005593481000">Slå av</translation>
 <translation id="2878884018241093801">Ingen nylige elementer</translation>
 <translation id="2903844815300039659">Koble til <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Aktiverer</translation>
 <translation id="5673434351075758678">Fra «<ph name="FROM_LOCALE" />» til «<ph name="TO_LOCALE" />» etter at innstillingene dine ble synkronisert.</translation>
 <translation id="5691772641933328258">Gjenkjenner ikke fingeravtrykket</translation>
+<translation id="5710450975648804523">Ikke forstyrr er på</translation>
 <translation id="574392208103952083">Medium</translation>
 <translation id="5744083938413354016">Trykk-og-dra</translation>
 <translation id="5750765938512549687">Bluetooth er av</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Trykk og hold på begge volumknappene i fem sekunder for å slå av taletilbakemelding.</translation>
 <translation id="7692480393933218409">Lader de tilkoblede USB-C-enhetene</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 varsel}other{# varsler}}</translation>
 <translation id="776344839111254542">Klikk for å se oppdateringsdetaljene</translation>
+<translation id="7780159184141939021">Rotér skjermen</translation>
 <translation id="7796353162336583443">Trykk på pekepenn-knappen på hyllen for å gjøre et notat, ta en skjermdump eller bruke Google-assistenten, laserpekeren eller forstørrelsesglasset.</translation>
 <translation id="7798302898096527229">Trykk på Søk eller Shift for å avbryte</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> og <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 84a3cd0e..78dc262e 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Półka</translation>
 <translation id="2844169650293029770">Urządzenie USB-C (przedni port na lewym boku)</translation>
 <translation id="2865888419503095837">Informacje o sieci</translation>
+<translation id="287224423103674444">Naciśnięto skrót obrotu ekranu. Czy chcesz obrócić ekran?</translation>
 <translation id="2872961005593481000">Wyłącz</translation>
 <translation id="2878884018241093801">Brak ostatnich elementów</translation>
 <translation id="2903844815300039659">Połączono z siecią <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">Aktywowanie</translation>
 <translation id="5673434351075758678">Z języka: „<ph name="FROM_LOCALE" />” na „<ph name="TO_LOCALE" />” po zsynchronizowaniu ustawień.</translation>
 <translation id="5691772641933328258">Nie rozpoznano odcisku palca</translation>
+<translation id="5710450975648804523">Tryb Nie przeszkadzać włączony</translation>
 <translation id="574392208103952083">Średni</translation>
 <translation id="5744083938413354016">Przeciąganie dotykiem</translation>
 <translation id="5750765938512549687">Bluetooth jest wyłączony</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Naciśnij i przytrzymaj przez pięć sekund oba klawisze głośności, by wyłączyć komunikaty głosowe.</translation>
 <translation id="7692480393933218409">Ładowanie urządzeń podłączonych do portu USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 powiadomienie}few{# powiadomienia}many{# powiadomień}other{# powiadomienia}}</translation>
 <translation id="776344839111254542">Kliknij, by wyświetlić szczegóły aktualizacji</translation>
+<translation id="7780159184141939021">Obróć ekran</translation>
 <translation id="7796353162336583443">Kliknij przycisk rysika na półce, by zrobić notatkę lub zrzut ekranu, skorzystać z Asystenta Google albo użyć wskaźnika laserowego lub lupy.</translation>
 <translation id="7798302898096527229">Aby anulować, naciśnij Szukaj lub Shift.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> i <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 7dc6fce7..b14f45f 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Raft</translation>
 <translation id="2844169650293029770">Dispozitiv USB-C (portul din stânga față)</translation>
 <translation id="2865888419503095837">Informații despre rețea</translation>
+<translation id="287224423103674444">Ai apăsat comanda rapidă pentru rotirea ecranului. Vrei să rotești ecranul?</translation>
 <translation id="2872961005593481000">Închide</translation>
 <translation id="2878884018241093801">Niciun element recent</translation>
 <translation id="2903844815300039659">Conectat la <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Se activează</translation>
 <translation id="5673434351075758678">Din „<ph name="FROM_LOCALE" />” în „<ph name="TO_LOCALE" />” după sincronizarea setărilor.</translation>
 <translation id="5691772641933328258">Amprenta nu a fost recunoscută</translation>
+<translation id="5710450975648804523">Funcția Nu deranja este activată</translation>
 <translation id="574392208103952083">Medie</translation>
 <translation id="5744083938413354016">Tragere prin atingere</translation>
 <translation id="5750765938512549687">Bluetooth este dezactivat</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Apasă lung ambele taste de volum timp de cinci secunde ca să dezactivezi feedbackul rostit.</translation>
 <translation id="7692480393933218409">Se încarcă dispozitivele USB-C conectate</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{O notificare}few{# notificări}other{# de notificări}}</translation>
 <translation id="776344839111254542">Dă clic pentru a vedea detaliile actualizării</translation>
+<translation id="7780159184141939021">Rotește ecranul</translation>
 <translation id="7796353162336583443">Atinge butonul creion de pe raft ca să creezi note și capturi de ecran, să folosești Asistentul Google, indicatorul laser sau lupa.</translation>
 <translation id="7798302898096527229">Apasă pe tasta de căutare sau pe Shift pentru a anula.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" />:<ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index da1e385..fde88af 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Polička</translation>
 <translation id="2844169650293029770">Zariadenie USB-C (port vľavo vpredu)</translation>
 <translation id="2865888419503095837">Informácie o sieti</translation>
+<translation id="287224423103674444">Stlačili ste skratku pre otáčanie obrazovky. Chcete otáčať obrazovku?</translation>
 <translation id="2872961005593481000">Vypnúť</translation>
 <translation id="2878884018241093801">Žiadne nedávne položky</translation>
 <translation id="2903844815300039659">Pripojené k sieti <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Prebieha aktivácia</translation>
 <translation id="5673434351075758678">Po synchronizácii nastavení bol zmenený z možnosti <ph name="FROM_LOCALE" /> na <ph name="TO_LOCALE" />.</translation>
 <translation id="5691772641933328258">Odtlačok prsta nebol rozpoznaný</translation>
+<translation id="5710450975648804523">Režim Nerušiť je zapnutý</translation>
 <translation id="574392208103952083">Stredné</translation>
 <translation id="5744083938413354016">Presunutie klepnutím</translation>
 <translation id="5750765938512549687">Rozhranie Bluetooth je vypnuté</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">Ak chcete deaktivovať hovorenú spätnú väzbu, pridržte päť sekúnd obidva klávesy hlasitosti.</translation>
 <translation id="7692480393933218409">Nabíjajú sa pripojené zariadenia USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 upozornenie}few{# upozornenia}many{# notifications}other{# upozornení}}</translation>
 <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizácii</translation>
+<translation id="7780159184141939021">Otáčanie obrazovky</translation>
 <translation id="7796353162336583443">Klepnite na tlačidlo dotykového pera na poličke a vytvorte poznámku, snímku obrazovky, použite Asistenta Google, laserové ukazovadlo alebo lupu.</translation>
 <translation id="7798302898096527229">Ak to chcete zrušiť, stlačte kláves Hľadať alebo Shift.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> a <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index cfe6cf5..67f2af4 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">அடுக்கு</translation>
 <translation id="2844169650293029770">USB-C சாதனம் (இடது பக்கம் முன்னே இருக்கும் போர்ட்)</translation>
 <translation id="2865888419503095837">நெட்வொர்க் தகவல்</translation>
+<translation id="287224423103674444">திரைச் சுழற்சிக்கான ஷார்ட்கட்டை அழுத்தியுள்ளீர்கள். திரையைச் சுழற்ற விரும்புகிறீர்களா?</translation>
 <translation id="2872961005593481000">நிறுத்து</translation>
 <translation id="2878884018241093801">சமீபத்திய உருப்படிகள் எதுவுமில்லை</translation>
 <translation id="2903844815300039659"><ph name="NAME" /> உடன் இணைக்கப்பட்டுள்ளீர்கள், <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">செயலாக்குகிறது</translation>
 <translation id="5673434351075758678">அமைப்புகளை ஒத்திசைத்த பின்னர், "<ph name="FROM_LOCALE" />" இலிருந்து "<ph name="TO_LOCALE" />"க்கு மாற்றப்பட்டது.</translation>
 <translation id="5691772641933328258">கைரேகை அங்கீகரிக்கப்படவில்லை</translation>
+<translation id="5710450975648804523">தொந்தரவு செய்ய வேண்டாம்: ஆன்</translation>
 <translation id="574392208103952083">நடுநிலை</translation>
 <translation id="5744083938413354016">தட்டி நகர்த்துதல்</translation>
 <translation id="5750765938512549687">புளூடூத் முடக்கப்பட்டுள்ளது</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">பேச்சுவடிவ கருத்தை முடக்க, ஐந்து வினாடிகளுக்கு இரண்டு ஒலியளவு விசைகளையும் அழுத்திப் பிடித்திருக்கவும்.</translation>
 <translation id="7692480393933218409">இணைக்கப்பட்ட USB-C சாதனங்களுக்குச் சார்ஜ் ஏற்றப்படுகிறது</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 அறிவிப்பு}other{# அறிவிப்புகள்}}</translation>
 <translation id="776344839111254542">புதுப்பிப்பு விவரங்களைப் பார்க்க, கிளிக் செய்யவும்</translation>
+<translation id="7780159184141939021">திரைச் சுழற்சி</translation>
 <translation id="7796353162336583443">குறிப்பெடுக்க, ஸ்கிரீன்ஷாட்டை எடுக்க, Google அசிஸ்டண்ட், லேசர் பாயிண்டர் அல்லது உருப்பெருக்கியைப் பயன்படுத்த, ஷெல்ஃபில் உள்ள ஸ்டைலஸ் பொத்தானைத் தட்டவும்.</translation>
 <translation id="7798302898096527229">ரத்துசெய்ய, தேடல் அல்லது Shift விசையை அழுத்தவும்.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> மற்றும் <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index ccfc2606..f8105a5 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">అర</translation>
 <translation id="2844169650293029770">USB-C పరికరం (ఎడమవైపు ముందు పోర్ట్)</translation>
 <translation id="2865888419503095837">నెట్‌వర్క్ సమాచారం</translation>
+<translation id="287224423103674444">మీరు స్క్రీన్ భ్రమణం కోసం షార్ట్‌కట్‌ని నొక్కారు. స్క్రీన్‌ని తిప్పాలా?</translation>
 <translation id="2872961005593481000">షట్ డౌన్ చెయ్యండి</translation>
 <translation id="2878884018241093801">ఇటీవలి అంశాలు ఏవీ లేవు</translation>
 <translation id="2903844815300039659"><ph name="NAME" />కి కనెక్ట్ చేయబడింది, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">సక్రియం చేస్తోంది</translation>
 <translation id="5673434351075758678">మీ సెట్టింగులను సమకాలీకరించిన తర్వాత "<ph name="FROM_LOCALE" />" నుండి "<ph name="TO_LOCALE" />"కి.</translation>
 <translation id="5691772641933328258">వేలిముద్ర గుర్తించబడలేదు</translation>
+<translation id="5710450975648804523">'అంతరాయం కలిగించవద్దు' మోడ్ ఆన్‌లో ఉంది</translation>
 <translation id="574392208103952083">మధ్యస్థం</translation>
 <translation id="5744083938413354016">నొక్కి లాగండి</translation>
 <translation id="5750765938512549687">బ్లూటూత్ ఆఫ్ చేయబడింది</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">ప్రసంగ రూప ప్రతిస్పందనను నిలిపివేయడానికి ఒకేసారి రెండు వాల్యూమ్ కీలను ఐదు సెకన్ల పాటు నొక్కి, పట్టుకోండి.</translation>
 <translation id="7692480393933218409">కనెక్ట్ చేసిన USB-C పరికరాలను ఛార్జ్ చేస్తోంది</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 నోటిఫికేషన్‌}other{# నోటిఫికేషన్‌లు}}</translation>
 <translation id="776344839111254542">అప్‌డేట్ వివరాలను వీక్షించడం కోసం క్లిక్ చేయండి</translation>
+<translation id="7780159184141939021">స్క్రీన్‌ను తిప్పండి</translation>
 <translation id="7796353162336583443">గమనికను రాయడానికి, స్క్రీన్‌షాట్‌ను తీయడానికి, సహాయకం, లేజర్ పాయింటర్ లేదా భూతద్దాన్ని ఉపయోగించడానికి అరలో స్టైలస్ బటన్‌ను నొక్కండి.</translation>
 <translation id="7798302898096527229">రద్దు చేయడానికి Search లేదా Shiftని నొక్కండి.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> మరియు <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 28272bf..d51d78e 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">ชั้นวาง</translation>
 <translation id="2844169650293029770">อุปกรณ์ USB-C (พอร์ตด้านหน้าซ้าย)</translation>
 <translation id="2865888419503095837">ข้อมูลเครือข่าย</translation>
+<translation id="287224423103674444">คุณกดแป้นพิมพ์ลัดสำหรับการหมุนหน้าจอ จะหมุนหน้าจอไหม</translation>
 <translation id="2872961005593481000">ปิด</translation>
 <translation id="2878884018241093801">ไม่มีรายการล่าสุด</translation>
 <translation id="2903844815300039659">เชื่อมต่อกับ <ph name="NAME" /> <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">กำลังเปิดการใช้งาน</translation>
 <translation id="5673434351075758678">เปลี่ยนจาก "<ph name="FROM_LOCALE" />" เป็น "<ph name="TO_LOCALE" />" หลังการซิงก์การตั้งค่า</translation>
 <translation id="5691772641933328258">ระบบไม่รู้จักลายนิ้วมือนี้</translation>
+<translation id="5710450975648804523">โหมดห้ามรบกวนเปิดอยู่</translation>
 <translation id="574392208103952083">ขนาดกลาง</translation>
 <translation id="5744083938413354016">การแตะลาก</translation>
 <translation id="5750765938512549687">ปิดบลูทูธแล้ว</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">กดแป้นปรับระดับเสียงค้างไว้ 5 วินาทีเพื่อปิดใช้การอธิบายและอ่านออกเสียง</translation>
 <translation id="7692480393933218409">กำลังชาร์จอุปกรณ์ USB-C ที่เชื่อมต่ออยู่</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{การแจ้งเตือน 1 รายการ}other{การแจ้งเตือน # รายการ}}</translation>
 <translation id="776344839111254542">คลิกเพื่อดูรายละเอียดการอัปเดต</translation>
+<translation id="7780159184141939021">หมุนหน้าจอ</translation>
 <translation id="7796353162336583443">แตะปุ่มสไตลัสในชั้นวางเพื่อจดโน้ต บันทึกภาพหน้าจอ ตลอดจนใช้ Google Assistant ตัวชี้เลเซอร์ หรือแว่นขยาย</translation>
 <translation id="7798302898096527229">กด Search หรือ Shift เพื่อยกเลิก</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> กับ <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index e6d0328..ad65327 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Raf</translation>
 <translation id="2844169650293029770">USB-C cihaz (sol ön bağlantı noktası)</translation>
 <translation id="2865888419503095837">Ağ bilgisi</translation>
+<translation id="287224423103674444">Ekran döndürme kısayoluna bastınız. Ekranı döndürmek istiyor musunuz?</translation>
 <translation id="2872961005593481000">Kapat</translation>
 <translation id="2878884018241093801">Yeni öğe yok</translation>
 <translation id="2903844815300039659"><ph name="NAME" /> ağına bağlı, <ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">Etkinleştiriliyor</translation>
 <translation id="5673434351075758678">Ayarlarınız senkronize edildikten sonra "<ph name="FROM_LOCALE" />" olan dil "<ph name="TO_LOCALE" />" olarak değiştirildi.</translation>
 <translation id="5691772641933328258">Parmak izi tanınmadı</translation>
+<translation id="5710450975648804523">Rahatsız Etmeyin modu açık</translation>
 <translation id="574392208103952083">Orta</translation>
 <translation id="5744083938413354016">Dokunarak sürükleme</translation>
 <translation id="5750765938512549687">Bluetooth kapalı</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Sesli geri bildirimi beş saniyeliğine devre dışı bırakmak için her iki ses ayarı tuşunu basılı tutun.</translation>
 <translation id="7692480393933218409">Bağlı USB-C cihazlar şarj ediliyor</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildirim}other{# bildirim}}</translation>
 <translation id="776344839111254542">Güncelleme ayrıntılarını görüntülemek için tıklayın</translation>
+<translation id="7780159184141939021">Ekranı Döndür</translation>
 <translation id="7796353162336583443">Not veya ekran görüntüsü almak, Google Asistan, lazer işaretçi veya büyüteç işlevlerini kullanmak için raftaki ekran kalemi düğmesine dokunun.</translation>
 <translation id="7798302898096527229">İptal etmek için Ara veya Üst Karakter tuşuna basın.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> ve <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 243c4a6..85f777d 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">Giá</translation>
 <translation id="2844169650293029770">Thiết bị USB-C (cổng phía trước, bên trái)</translation>
 <translation id="2865888419503095837">Thông tin mạng</translation>
+<translation id="287224423103674444">Bạn đã nhấn phím tắt để xoay màn hình. Bạn có muốn xoay màn hình không?</translation>
 <translation id="2872961005593481000">Tắt</translation>
 <translation id="2878884018241093801">Không có mục nào gần đây</translation>
 <translation id="2903844815300039659">Đã kết nối tới <ph name="NAME" />, <ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">Đang kích hoạt</translation>
 <translation id="5673434351075758678">Từ "<ph name="FROM_LOCALE" />" sang "<ph name="TO_LOCALE" />" sau khi đồng bộ hóa cài đặt của bạn.</translation>
 <translation id="5691772641933328258">Không nhận dạng được vân tay</translation>
+<translation id="5710450975648804523">Chế độ Không làm phiền đang bật</translation>
 <translation id="574392208103952083">Trung bình</translation>
 <translation id="5744083938413354016">Kéo nhấn</translation>
 <translation id="5750765938512549687">Bluetooth đang tắt</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">Nhấn và giữ cả hai phím âm lượng trong 5 giây để tắt tính năng phản hồi bằng giọng nói.</translation>
 <translation id="7692480393933218409">Đang sạc thiết bị USB-C được kết nối</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 thông báo}other{# thông báo}}</translation>
 <translation id="776344839111254542">Nhấp để xem chi tiết cập nhật</translation>
+<translation id="7780159184141939021">Xoay màn hình</translation>
 <translation id="7796353162336583443">Hãy nhấn vào nút bút cảm ứng trên giá để ghi chú, chụp ảnh màn hình, sử dụng Trợ lý Google, chế độ con trỏ laser hoặc kính lúp.</translation>
 <translation id="7798302898096527229">Nhấn phím Search hoặc Shift để hủy.</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> và <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 93eba3d..04c9c0c 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">任务栏</translation>
 <translation id="2844169650293029770">USB-C 设备(左侧前端端口)</translation>
 <translation id="2865888419503095837">网络信息</translation>
+<translation id="287224423103674444">您按了屏幕旋转快捷键。要旋转屏幕吗?</translation>
 <translation id="2872961005593481000">关机</translation>
 <translation id="2878884018241093801">近期没有任何内容</translation>
 <translation id="2903844815300039659">已连接到网络“<ph name="NAME" />”,<ph name="STRENGTH" /></translation>
@@ -260,6 +261,7 @@
 <translation id="5669267381087807207">正在激活</translation>
 <translation id="5673434351075758678">当系统同步完您的设置后,“<ph name="FROM_LOCALE" />”即会改为“<ph name="TO_LOCALE" />”。</translation>
 <translation id="5691772641933328258">无法识别指纹</translation>
+<translation id="5710450975648804523">“请勿打扰”模式已开启</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">点按拖动</translation>
 <translation id="5750765938512549687">蓝牙已关闭</translation>
@@ -378,7 +380,9 @@
 <translation id="7654687942625752712">同时按住两个音量键 5 秒钟,即可停用语音反馈。</translation>
 <translation id="7692480393933218409">正在为已连接的 USB-C 设备充电</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 条通知}other{# 条通知}}</translation>
 <translation id="776344839111254542">点击即可查看相关更新的详情</translation>
+<translation id="7780159184141939021">旋转屏幕</translation>
 <translation id="7796353162336583443">点按任务栏中的触控笔按钮可开始记事、截取屏幕截图,以及使用 Google 智能助理、激光笔或放大镜。</translation>
 <translation id="7798302898096527229">按搜索键或按 Shift 键可取消。</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> <ph name="MINUTE" /></translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 88ceb655..4adef53 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -117,6 +117,7 @@
 <translation id="2825619548187458965">檔案櫃</translation>
 <translation id="2844169650293029770">USB-C 裝置 (左前方連接埠)</translation>
 <translation id="2865888419503095837">網路資訊</translation>
+<translation id="287224423103674444">你按下了旋轉螢幕的快速鍵。確定要旋轉螢幕嗎?</translation>
 <translation id="2872961005593481000">關閉</translation>
 <translation id="2878884018241093801">最近沒有任何項目</translation>
 <translation id="2903844815300039659">已連上 <ph name="NAME" />,<ph name="STRENGTH" /></translation>
@@ -259,6 +260,7 @@
 <translation id="5669267381087807207">啟用中</translation>
 <translation id="5673434351075758678">同步處理設定後,「<ph name="FROM_LOCALE" />」已變更為「<ph name="TO_LOCALE" />」。</translation>
 <translation id="5691772641933328258">指紋辨識失敗</translation>
+<translation id="5710450975648804523">「零打擾」模式已開啟</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">輕觸拖曳</translation>
 <translation id="5750765938512549687">藍牙已關閉</translation>
@@ -377,7 +379,9 @@
 <translation id="7654687942625752712">同時按住音量調高和調低鍵五秒,即可停用互動朗讀。</translation>
 <translation id="7692480393933218409">正在為連接的 USB-C 裝置充電</translation>
 <translation id="7705524343798198388">VPN</translation>
+<translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation>
 <translation id="776344839111254542">按一下即可查看更新詳細資料</translation>
+<translation id="7780159184141939021">旋轉螢幕</translation>
 <translation id="7796353162336583443">輕觸檔案櫃的觸控筆圖示即可寫筆記、擷取螢幕畫面,以及使用 Google 助理、雷射筆和放大鏡。</translation>
 <translation id="7798302898096527229">按下搜尋鍵或 Shift 鍵即可取消。</translation>
 <translation id="7814236020522506259"><ph name="HOUR" /> 小時 <ph name="MINUTE" /> 分鐘</translation>
diff --git a/ash/wm/overview/overview_utils.cc b/ash/wm/overview/overview_utils.cc
index 24ada41..98c24877 100644
--- a/ash/wm/overview/overview_utils.cc
+++ b/ash/wm/overview/overview_utils.cc
@@ -13,7 +13,6 @@
 #include "ash/shell.h"
 #include "ash/wm/overview/cleanup_animation_observer.h"
 #include "ash/wm/overview/scoped_overview_animation_settings.h"
-#include "ash/wm/overview/start_animation_observer.h"
 #include "ash/wm/overview/window_selector_controller.h"
 #include "ash/wm/splitview/split_view_controller.h"
 #include "ash/wm/window_state.h"
@@ -140,14 +139,8 @@
   ScopedOverviewAnimationSettings scoped_overview_animation_settings(
       animation_type, window);
   window->layer()->SetOpacity(1.0f);
-  if (slide) {
+  if (slide)
     window->SetTransform(original_transform);
-
-    auto start_observer = std::make_unique<StartAnimationObserver>();
-    scoped_overview_animation_settings.AddObserver(start_observer.get());
-    Shell::Get()->window_selector_controller()->AddStartAnimationObserver(
-        std::move(start_observer));
-  }
 }
 
 void FadeOutWidgetAndMaybeSlideOnExit(std::unique_ptr<views::Widget> widget,
diff --git a/ash/wm/overview/window_grid.cc b/ash/wm/overview/window_grid.cc
index 8165c59..981e284 100644
--- a/ash/wm/overview/window_grid.cc
+++ b/ash/wm/overview/window_grid.cc
@@ -1101,6 +1101,7 @@
   aura::Window* parent_window = widget_window->parent();
   const gfx::Rect bounds = ash::screen_util::SnapBoundsToDisplayEdge(
       parent_window->bounds(), parent_window);
+  parent_window->SetBounds(bounds);
   widget_window->SetBounds(bounds);
   widget_window->SetName("OverviewModeShield");
 
diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc
index 01b9d25..d372b73 100644
--- a/ash/wm/overview/window_selector.cc
+++ b/ash/wm/overview/window_selector.cc
@@ -50,7 +50,6 @@
 #include "ui/views/controls/image_view.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/layout/box_layout.h"
-#include "ui/views/widget/widget_delegate.h"
 #include "ui/wm/core/coordinate_conversion.h"
 #include "ui/wm/core/window_util.h"
 #include "ui/wm/public/activation_client.h"
@@ -105,27 +104,6 @@
   const aura::Window* root_window;
 };
 
-// A WidgetDelegate to specify the initialy focused view.
-class TextFilterWidgetDelegate : public views::WidgetDelegate {
- public:
-  TextFilterWidgetDelegate(views::Widget* widget, views::View* initial_focus)
-      : widget_(widget), initial_focus_(initial_focus) {}
-  ~TextFilterWidgetDelegate() override = default;
-
-  // WidgetDelegate:
-  void DeleteDelegate() override { delete this; }
-  views::Widget* GetWidget() override { return widget_; }
-  const views::Widget* GetWidget() const override { return widget_; }
-  bool ShouldAdvanceFocusToTopLevelWidget() const override { return true; }
-  views::View* GetInitiallyFocusedView() override { return initial_focus_; }
-
- private:
-  views::Widget* widget_;
-  views::View* initial_focus_;
-
-  DISALLOW_COPY_AND_ASSIGN(TextFilterWidgetDelegate);
-};
-
 // Triggers a shelf visibility update on all root window controllers.
 void UpdateShelfVisibility() {
   for (aura::Window* root : Shell::GetAllRootWindows())
@@ -218,9 +196,6 @@
   params.name = "OverviewModeTextFilter";
   *text_filter_bottom = params.bounds.bottom() + kTextFieldBottomMargin;
   params.parent = root_window->GetChildById(kShellWindowId_StatusContainer);
-
-  views::Textfield* textfield = new views::Textfield();
-  params.delegate = new TextFilterWidgetDelegate(widget, textfield);
   widget->Init(params);
 
   // Use |container| to specify the padding surrounding the text and to give
@@ -240,6 +215,7 @@
                   vertical_padding, kTextFilterCornerRadius),
       kTextFilterHorizontalPadding));
 
+  views::Textfield* textfield = new views::Textfield();
   textfield->set_controller(controller);
   textfield->SetBorder(views::NullBorder());
   textfield->SetBackgroundColor(kTextFilterBackgroundColor);
@@ -263,6 +239,8 @@
   aura::Window* text_filter_widget_window = widget->GetNativeWindow();
   text_filter_widget_window->layer()->SetOpacity(0);
   text_filter_widget_window->SetTransform(transform);
+  widget->Show();
+  textfield->RequestFocus();
 
   return widget;
 }
@@ -744,14 +722,6 @@
   }
 }
 
-void WindowSelector::OnStartingAnimationComplete(bool canceled) {
-  if (!canceled) {
-    UpdateMaskAndShadow(!canceled);
-    if (text_filter_widget_)
-      text_filter_widget_->Show();
-  }
-}
-
 void WindowSelector::OnDisplayRemoved(const display::Display& display) {
   // TODO(flackr): Keep window selection active on remaining displays.
   CancelSelection();
diff --git a/ash/wm/overview/window_selector.h b/ash/wm/overview/window_selector.h
index a29253a..30807b6 100644
--- a/ash/wm/overview/window_selector.h
+++ b/ash/wm/overview/window_selector.h
@@ -217,9 +217,6 @@
   // Shows or hides all the window selector items' mask and shadow.
   void UpdateMaskAndShadow(bool show);
 
-  // Called when the overview mode starting animation completes.
-  void OnStartingAnimationComplete(bool canceled);
-
   WindowSelectorDelegate* delegate() { return delegate_; }
 
   SplitViewDragIndicators* split_view_drag_indicators() {
diff --git a/ash/wm/overview/window_selector_controller.cc b/ash/wm/overview/window_selector_controller.cc
index 963b07e..8125ca6 100644
--- a/ash/wm/overview/window_selector_controller.cc
+++ b/ash/wm/overview/window_selector_controller.cc
@@ -42,15 +42,6 @@
 
 constexpr int kBlurSlideDurationMs = 250;
 
-// It can take up to two frames until the frame created in the UI thread that
-// triggered animation observer is drawn. Wait 50ms in attemp to
-// let its draw and swap finish.
-constexpr int kOcclusionPauseDurationForStartMs = 50;
-
-// Wait longer when exiting overview mode in case when a user
-// may re-enter overview mode immediately, contents are ready.
-constexpr int kOcclusionPauseDurationForEndMs = 5000;
-
 // Returns true if |window| should be hidden when entering overview.
 bool ShouldHideWindowInOverview(const aura::Window* window) {
   return window->GetProperty(ash::kHideInOverviewKey);
@@ -119,21 +110,28 @@
 // prior to entering overview mode (covered by a window), otherwise animates
 // the blur.
 class WindowSelectorController::OverviewBlurController
-    : public ui::CompositorAnimationObserver,
+    : public gfx::AnimationDelegate,
       public aura::WindowObserver {
  public:
-  OverviewBlurController() = default;
+  OverviewBlurController() : animation_(this) {
+    animation_.SetSlideDuration(kBlurSlideDurationMs);
+  }
 
   ~OverviewBlurController() override {
-    if (compositor_)
-      compositor_->RemoveAnimationObserver(this);
+    animation_.Stop();
     for (aura::Window* root : roots_to_animate_)
       root->RemoveObserver(this);
   }
 
-  void Blur() { OnBlurChange(WallpaperAnimationState::kAddingBlur); }
+  void Blur() {
+    state_ = WallpaperAnimationState::kAddingBlur;
+    OnBlurChange();
+  }
 
-  void Unblur() { OnBlurChange(WallpaperAnimationState::kRemovingBlur); }
+  void Unblur() {
+    state_ = WallpaperAnimationState::kRemovingBlur;
+    OnBlurChange();
+  }
 
  private:
   enum class WallpaperAnimationState {
@@ -142,47 +140,30 @@
     kNormal,
   };
 
-  void OnAnimationStep(base::TimeTicks timestamp) override {
-    if (start_time_ == base::TimeTicks()) {
-      start_time_ = timestamp;
+  // gfx::AnimationDelegate:
+  void AnimationEnded(const gfx::Animation* animation) override {
+    if (state_ == WallpaperAnimationState::kNormal)
       return;
-    }
-    const float progress = (timestamp - start_time_).InMilliseconds() /
-                           static_cast<float>(kBlurSlideDurationMs);
-    const bool adding = state_ == WallpaperAnimationState::kAddingBlur;
-    if (progress > 1.0f) {
-      AnimationProgressed(adding ? 1.0f : 0.f);
-      Stop();
-    } else {
-      AnimationProgressed(adding ? progress : 1.f - progress);
-    }
-  }
 
-  void OnCompositingShuttingDown(ui::Compositor* compositor) override {
-    if (compositor_ == compositor)
-      Stop();
-  }
-
-  void Stop() {
-    if (compositor_) {
-      compositor_->RemoveAnimationObserver(this);
-      compositor_ = nullptr;
-    }
+    float value = state_ == WallpaperAnimationState::kAddingBlur
+                      ? kWallpaperBlurSigma
+                      : kWallpaperClearBlurSigma;
+    for (aura::Window* root : roots_to_animate_)
+      ApplyBlur(root, value);
     state_ = WallpaperAnimationState::kNormal;
   }
 
-  void Start() {
-    DCHECK(!compositor_);
-    compositor_ = Shell::GetPrimaryRootWindow()->GetHost()->compositor();
-    compositor_->AddAnimationObserver(this);
-    start_time_ = base::TimeTicks();
+  void AnimationProgressed(const gfx::Animation* animation) override {
+    float value = animation_.CurrentValueBetween(kWallpaperClearBlurSigma,
+                                                 kWallpaperBlurSigma);
+    for (aura::Window* root : roots_to_animate_)
+      ApplyBlur(root, value);
   }
 
-  void AnimationProgressed(float value) {
-    // Animate only to even numbers to reduce the load.
-    int ivalue = static_cast<int>(value * kWallpaperBlurSigma) / 2 * 2;
+  void AnimationCanceled(const gfx::Animation* animation) override {
     for (aura::Window* root : roots_to_animate_)
-      ApplyBlur(root, ivalue);
+      ApplyBlur(root, kWallpaperClearBlurSigma);
+    state_ = WallpaperAnimationState::kNormal;
   }
 
   // aura::WindowObserver:
@@ -204,16 +185,13 @@
   // windows should have their wallpaper blurs animated and fills
   // |roots_to_animate_| accordingly. Applys blur or unblur immediately if
   // the wallpaper does not need blur animation.
-  void OnBlurChange(WallpaperAnimationState state) {
-    Stop();
-    for (aura::Window* root : roots_to_animate_)
-      root->RemoveObserver(this);
-    roots_to_animate_.clear();
-
-    state_ = state;
+  void OnBlurChange() {
     const bool should_blur = state_ == WallpaperAnimationState::kAddingBlur;
     const float value =
         should_blur ? kWallpaperBlurSigma : kWallpaperClearBlurSigma;
+    for (aura::Window* root : roots_to_animate_)
+      root->RemoveObserver(this);
+    roots_to_animate_.clear();
 
     WindowSelector* window_selector =
         Shell::Get()->window_selector_controller()->window_selector();
@@ -228,20 +206,23 @@
           continue;
         }
       }
+
+      animation_.Reset(should_blur ? 1.0 : 0.0);
       ApplyBlur(root, value);
     }
 
     // Run the animation if one of the roots needs to be animated.
-    if (roots_to_animate_.empty())
+    if (roots_to_animate_.empty()) {
       state_ = WallpaperAnimationState::kNormal;
-    else
-      Start();
+    } else if (should_blur) {
+      animation_.Show();
+    } else {
+      animation_.Hide();
+    }
   }
 
-  ui::Compositor* compositor_ = nullptr;
-  base::TimeTicks start_time_;
-
   WallpaperAnimationState state_ = WallpaperAnimationState::kNormal;
+  gfx::SlideAnimation animation_;
   // Vector which contains the root windows, if any, whose wallpaper should have
   // blur animated after Blur or Unblur is called.
   std::vector<aura::Window*> roots_to_animate_;
@@ -250,8 +231,7 @@
 };
 
 WindowSelectorController::WindowSelectorController()
-    : overview_blur_controller_(std::make_unique<OverviewBlurController>()),
-      weak_ptr_factory_(this) {}
+    : overview_blur_controller_(std::make_unique<OverviewBlurController>()) {}
 
 WindowSelectorController::~WindowSelectorController() {
   overview_blur_controller_.reset();
@@ -318,12 +298,6 @@
       return true;
     }
 
-    // Suspend occlusion tracker until the enter animation is complete.
-    reset_pauser_task_.Cancel();
-    occlusion_tracker_pauser_ =
-        std::make_unique<aura::WindowOcclusionTracker::ScopedPause>(
-            Shell::Get()->aura_env());
-
     window_selector_->set_enter_exit_overview_type(new_type);
     if (type == WindowSelector::EnterExitOverviewType::kWindowsMinimized ||
         type == WindowSelector::EnterExitOverviewType::kSwipeFromShelf) {
@@ -351,53 +325,23 @@
     // Clear any animations that may be running from last overview end.
     for (const auto& animation : delayed_animations_)
       animation->Shutdown();
-    if (!delayed_animations_.empty())
-      OnStartingAnimationComplete(/*canceled=*/true);
+    if (!delayed_animations_.empty()) {
+      Shell::Get()->NotifyOverviewModeStartingAnimationComplete(
+          /*canceled=*/true);
+    }
     delayed_animations_.clear();
 
-    // Suspend occlusion tracker until the exit animation is complete.
-    reset_pauser_task_.Cancel();
-    occlusion_tracker_pauser_ =
-        std::make_unique<aura::WindowOcclusionTracker::ScopedPause>(
-            Shell::Get()->aura_env());
-
     window_selector_ = std::make_unique<WindowSelector>(this);
     window_selector_->set_enter_exit_overview_type(new_type);
     Shell::Get()->NotifyOverviewModeStarting();
     window_selector_->Init(windows, hide_windows);
     if (IsBlurAllowed())
       overview_blur_controller_->Blur();
-    if (start_animations_.empty())
-      OnStartingAnimationComplete(/*canceled=*/false);
     OnSelectionStarted();
   }
   return true;
 }
 
-void WindowSelectorController::OnStartingAnimationComplete(bool canceled) {
-  Shell::Get()->NotifyOverviewModeStartingAnimationComplete(canceled);
-  if (window_selector_)
-    window_selector_->OnStartingAnimationComplete(canceled);
-  reset_pauser_task_.Reset(base::BindOnce(
-      &WindowSelectorController::ResetPauser, weak_ptr_factory_.GetWeakPtr()));
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE, reset_pauser_task_.callback(),
-      base::TimeDelta::FromMilliseconds(kOcclusionPauseDurationForStartMs));
-}
-
-void WindowSelectorController::OnEndingAnimationComplete(bool canceled) {
-  Shell::Get()->NotifyOverviewModeEndingAnimationComplete(canceled);
-  reset_pauser_task_.Reset(base::BindOnce(
-      &WindowSelectorController::ResetPauser, weak_ptr_factory_.GetWeakPtr()));
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE, reset_pauser_task_.callback(),
-      base::TimeDelta::FromMilliseconds(kOcclusionPauseDurationForEndMs));
-}
-
-void WindowSelectorController::ResetPauser() {
-  occlusion_tracker_pauser_.reset();
-}
-
 bool WindowSelectorController::IsSelecting() const {
   return window_selector_ != nullptr;
 }
@@ -536,14 +480,15 @@
   if (is_shutting_down_)
     return;
 
-  if (!start_animations_.empty())
-    OnEndingAnimationComplete(/*canceled=*/true);
+  if (!start_animations_.empty()) {
+    Shell::Get()->NotifyOverviewModeEndingAnimationComplete(
+        /*canceled=*/true);
+  }
   start_animations_.clear();
-
-  window_selector_->UpdateMaskAndShadow(/*show=*/false);
   is_shutting_down_ = true;
   Shell::Get()->NotifyOverviewModeEnding();
   auto* window_selector = window_selector_.release();
+  window_selector->UpdateMaskAndShadow(/*show=*/false);
   window_selector->Shutdown();
   // There may be no delayed animations in tests, so unblur right away.
   if (delayed_animations_.empty() && IsBlurAllowed())
@@ -574,8 +519,7 @@
   if (!window_selector_ && !previous_empty && delayed_animations_.empty()) {
     if (IsBlurAllowed())
       overview_blur_controller_->Unblur();
-
-    OnEndingAnimationComplete(/*canceled=*/false);
+    Shell::Get()->NotifyOverviewModeEndingAnimationComplete(/*canceled=*/false);
   }
 }
 
@@ -590,8 +534,11 @@
   const bool previous_empty = start_animations_.empty();
   base::EraseIf(start_animations_, base::MatchesUniquePtr(animation_observer));
 
-  if (!previous_empty && start_animations_.empty())
-    OnStartingAnimationComplete(/*canceled=*/false);
+  if (!previous_empty && start_animations_.empty()) {
+    Shell::Get()->NotifyOverviewModeStartingAnimationComplete(
+        /*canceled=*/false);
+    window_selector_->UpdateMaskAndShadow(/*show=*/true);
+  }
 }
 
 // static
diff --git a/ash/wm/overview/window_selector_controller.h b/ash/wm/overview/window_selector_controller.h
index e3a96636..72491bd 100644
--- a/ash/wm/overview/window_selector_controller.h
+++ b/ash/wm/overview/window_selector_controller.h
@@ -12,9 +12,7 @@
 #include "ash/wm/overview/window_selector.h"
 #include "ash/wm/overview/window_selector_delegate.h"
 #include "base/macros.h"
-#include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
-#include "ui/aura/window_occlusion_tracker.h"
 
 namespace ash {
 class WindowSelector;
@@ -99,10 +97,6 @@
   // Dispatched when window selection begins.
   void OnSelectionStarted();
 
-  void OnStartingAnimationComplete(bool canceled);
-  void OnEndingAnimationComplete(bool canceled);
-  void ResetPauser();
-
   // Collection of DelayedAnimationObserver objects that own widgets that may be
   // still animating after overview mode ends. If shell needs to shut down while
   // those animations are in progress, the animations are shut down and the
@@ -112,9 +106,6 @@
   // notify shell that the starting animations have been completed.
   std::vector<std::unique_ptr<DelayedAnimationObserver>> start_animations_;
 
-  std::unique_ptr<aura::WindowOcclusionTracker::ScopedPause>
-      occlusion_tracker_pauser_;
-
   std::unique_ptr<WindowSelector> window_selector_;
   base::Time last_selection_time_;
 
@@ -125,10 +116,6 @@
   // Animates the blurring if necessary.
   std::unique_ptr<OverviewBlurController> overview_blur_controller_;
 
-  base::CancelableOnceClosure reset_pauser_task_;
-
-  base::WeakPtrFactory<WindowSelectorController> weak_ptr_factory_;
-
   DISALLOW_COPY_AND_ASSIGN(WindowSelectorController);
 };
 
diff --git a/ash/wm/overview/window_selector_item.cc b/ash/wm/overview/window_selector_item.cc
index fe4e5be..e2f9ae00 100644
--- a/ash/wm/overview/window_selector_item.cc
+++ b/ash/wm/overview/window_selector_item.cc
@@ -586,6 +586,7 @@
   // called if we see the home launcher on enter (all windows are minimized).
   DCHECK(item_widget_);
   DCHECK(transform_window_.minimized_widget());
+
   FadeInWidgetAndMaybeSlideOnEnter(item_widget_.get(),
                                    OVERVIEW_ANIMATION_ENTER_FROM_HOME_LAUNCHER,
                                    /*slide=*/true);
@@ -1176,6 +1177,7 @@
   caption_container_view_ = new CaptionContainerView(
       this, image_view, label_view_, cannot_snap_label_view_, close_button_);
   UpdateCannotSnapWarningVisibility();
+
   item_widget_->SetContentsView(caption_container_view_);
   item_widget_->Show();
   item_widget_->SetOpacity(0);
diff --git a/ash/wm/workspace/backdrop_controller.cc b/ash/wm/workspace/backdrop_controller.cc
index 3835b58..a4b4166 100644
--- a/ash/wm/workspace/backdrop_controller.cc
+++ b/ash/wm/workspace/backdrop_controller.cc
@@ -15,11 +15,9 @@
 #include "ash/public/cpp/app_types.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
-#include "ash/screen_util.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller.h"
 #include "ash/wm/overview/window_selector_controller.h"
-#include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
 #include "ash/wm/workspace/backdrop_delegate.h"
 #include "base/auto_reset.h"
@@ -70,7 +68,7 @@
 }  // namespace
 
 BackdropController::BackdropController(aura::Window* container)
-    : container_(container) {
+    : container_(container), in_restacking_(false) {
   DCHECK(container_);
   Shell::Get()->AddShellObserver(this);
   Shell::Get()->accessibility_controller()->AddObserver(this);
@@ -103,10 +101,6 @@
   UpdateBackdrop();
 }
 
-void BackdropController::OnDisplayMetricsChanged() {
-  UpdateBackdrop();
-}
-
 void BackdropController::OnPostWindowStateTypeChange(
     wm::WindowState* window_state,
     mojom::WindowStateType old_type) {
@@ -123,8 +117,8 @@
   // No need to continue update for recursive calls or in overview mode.
   WindowSelectorController* window_selector_controller =
       Shell::Get()->window_selector_controller();
-  if (pause_update_ || (window_selector_controller &&
-                        window_selector_controller->IsSelecting())) {
+  if (in_restacking_ || (window_selector_controller &&
+                         window_selector_controller->IsSelecting())) {
     return;
   }
 
@@ -135,14 +129,12 @@
     return;
   }
   // We are changing the order of windows which will cause recursion.
-  base::AutoReset<bool> lock(&pause_update_, true);
+  base::AutoReset<bool> lock(&in_restacking_, true);
   EnsureBackdropWidget();
   UpdateAccessibilityMode();
 
-  if (window == backdrop_window_ && backdrop_->IsVisible()) {
-    Layout();
+  if (window == backdrop_window_ && backdrop_->IsVisible())
     return;
-  }
   if (window->GetRootWindow() != backdrop_window_->GetRootWindow())
     return;
 
@@ -156,20 +148,11 @@
 }
 
 void BackdropController::OnOverviewModeStarting() {
-  if (backdrop_window_)
-    backdrop_window_->SetProperty(aura::client::kAnimationsDisabledKey, true);
   Hide();
 }
 
-void BackdropController::OnOverviewModeEnding() {
-  pause_update_ = true;
-}
-
-void BackdropController::OnOverviewModeEndingAnimationComplete(bool canceled) {
-  pause_update_ = false;
+void BackdropController::OnOverviewModeEnded() {
   UpdateBackdrop();
-  if (backdrop_window_)
-    backdrop_window_->ClearProperty(aura::client::kAnimationsDisabledKey);
 }
 
 void BackdropController::OnAppListVisibilityChanged(bool shown,
@@ -226,8 +209,6 @@
   ::wm::SetWindowVisibilityAnimationType(
       backdrop_window_, ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_FADE);
   backdrop_window_->layer()->SetColor(SK_ColorBLACK);
-
-  wm::GetWindowState(backdrop_window_)->set_allow_set_bounds_direct(true);
 }
 
 void BackdropController::UpdateAccessibilityMode() {
@@ -284,7 +265,11 @@
 }
 
 void BackdropController::Show() {
-  Layout();
+  // Makes sure that the backdrop has the correct bounds if it should not be
+  // fullscreen size.
+  backdrop_->SetFullscreen(BackdropShouldFullscreen());
+  if (!BackdropShouldFullscreen())
+    backdrop_->SetBounds(GetBackdropBounds());
   backdrop_->Show();
 }
 
@@ -330,21 +315,4 @@
       snapped_window, snap_position);
 }
 
-void BackdropController::Layout() {
-  // Makes sure that the backdrop has the correct bounds if it should not be
-  // fullscreen size.
-  backdrop_->SetFullscreen(BackdropShouldFullscreen());
-  if (backdrop_->IsFullscreen()) {
-    // TODO(oshima): The size of solid color layer can be smaller than texture's
-    // layer with fractional scale (crbug.com/9000220). Use adjusted bounds so
-    // that it can cover texture layer. Fix the bug and remove this.
-    auto* window = backdrop_window_;
-    gfx::Rect bounds = screen_util::GetDisplayBoundsInParent(window);
-    backdrop_window_->SetBounds(
-        screen_util::SnapBoundsToDisplayEdge(bounds, window));
-  } else {
-    backdrop_->SetBounds(GetBackdropBounds());
-  }
-}
-
 }  // namespace ash
diff --git a/ash/wm/workspace/backdrop_controller.h b/ash/wm/workspace/backdrop_controller.h
index 150f709..e7562c3 100644
--- a/ash/wm/workspace/backdrop_controller.h
+++ b/ash/wm/workspace/backdrop_controller.h
@@ -57,7 +57,6 @@
   void OnWindowStackingChanged(aura::Window* window);
   void OnPostWindowStateTypeChange(wm::WindowState* window_state,
                                    mojom::WindowStateType old_type);
-  void OnDisplayMetricsChanged();
 
   void SetBackdropDelegate(std::unique_ptr<BackdropDelegate> delegate);
 
@@ -69,8 +68,7 @@
 
   // ShellObserver:
   void OnOverviewModeStarting() override;
-  void OnOverviewModeEnding() override;
-  void OnOverviewModeEndingAnimationComplete(bool canceled) override;
+  void OnOverviewModeEnded() override;
   void OnAppListVisibilityChanged(bool shown,
                                   aura::Window* root_window) override;
   void OnSplitViewModeStarting() override;
@@ -94,8 +92,6 @@
 
   void UpdateAccessibilityMode();
 
-  void Layout();
-
   // Returns the current visible top level window in the container.
   aura::Window* GetTopmostWindowWithBackdrop();
 
@@ -134,10 +130,8 @@
   std::unique_ptr<ui::EventHandler> backdrop_event_handler_;
   ui::EventHandler* original_event_handler_ = nullptr;
 
-  // If true, skip updating background. Used to avoid recursive update
-  // when updating the window stack, or delay hiding the backdrop
-  // in overview mode.
-  bool pause_update_ = false;
+  // If true, the |RestackOrHideWindow| might recurse.
+  bool in_restacking_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(BackdropController);
 };
diff --git a/ash/wm/workspace/workspace_layout_manager.cc b/ash/wm/workspace/workspace_layout_manager.cc
index 744d2da..e5e0739 100644
--- a/ash/wm/workspace/workspace_layout_manager.cc
+++ b/ash/wm/workspace/workspace_layout_manager.cc
@@ -387,7 +387,6 @@
     const wm::WMEvent event(wm::WM_EVENT_WORKAREA_BOUNDS_CHANGED);
     AdjustAllWindowsBoundsForWorkAreaChange(&event);
   }
-  backdrop_controller_->OnDisplayMetricsChanged();
 }
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/base/BUILD.gn b/base/BUILD.gn
index 44938e0..44a141755 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -1671,6 +1671,7 @@
   # Desktop Mac.
   if (is_mac) {
     sources -= [
+      "process/launch_posix.cc",
       "profiler/native_stack_sampler_posix.cc",
       "sampling_heap_profiler/module_cache_posix.cc",
     ]
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc
index a316c9f..0988b5ad 100644
--- a/base/memory/shared_memory_posix.cc
+++ b/base/memory/shared_memory_posix.cc
@@ -147,7 +147,6 @@
            sb.st_uid != effective_uid)) {
         LOG(ERROR) <<
             "Invalid owner when opening existing shared memory file.";
-        close(fd.get());
         return false;
       }
 
@@ -160,7 +159,6 @@
       readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
       if (!readonly_fd.is_valid()) {
         DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
-        close(fd.get());
         return false;
       }
     }
diff --git a/base/process/launch.h b/base/process/launch.h
index 821e17ea..ebe1043 100644
--- a/base/process/launch.h
+++ b/base/process/launch.h
@@ -297,10 +297,12 @@
 BASE_EXPORT Process LaunchProcess(const std::vector<std::string>& argv,
                                   const LaunchOptions& options);
 
+#if !defined(OS_MACOSX)
 // Close all file descriptors, except those which are a destination in the
 // given multimap. Only call this function in a child process where you know
 // that there aren't any other threads.
 BASE_EXPORT void CloseSuperfluousFds(const InjectiveMultimap& saved_map);
+#endif  // defined(OS_MACOSX)
 #endif  // defined(OS_WIN)
 
 #if defined(OS_WIN)
@@ -352,23 +354,6 @@
 // the current process's scheduling priority to a high priority.
 BASE_EXPORT void RaiseProcessToHighPriority();
 
-#if defined(OS_MACOSX)
-// An implementation of LaunchProcess() that uses posix_spawn() instead of
-// fork()+exec(). This does not support the |pre_exec_delegate| and
-// |current_directory| options.
-Process LaunchProcessPosixSpawn(const std::vector<std::string>& argv,
-                                const LaunchOptions& options);
-
-// Restore the default exception handler, setting it to Apple Crash Reporter
-// (ReportCrash).  When forking and execing a new process, the child will
-// inherit the parent's exception ports, which may be set to the Breakpad
-// instance running inside the parent.  The parent's Breakpad instance should
-// not handle the child's exceptions.  Calling RestoreDefaultExceptionHandler
-// in the child after forking will restore the standard exception handler.
-// See http://crbug.com/20371/ for more details.
-void RestoreDefaultExceptionHandler();
-#endif  // defined(OS_MACOSX)
-
 // Creates a LaunchOptions object suitable for launching processes in a test
 // binary. This should not be called in production/released code.
 BASE_EXPORT LaunchOptions LaunchOptionsForTest();
diff --git a/base/process/launch_mac.cc b/base/process/launch_mac.cc
index ab372d0..6c0e14f 100644
--- a/base/process/launch_mac.cc
+++ b/base/process/launch_mac.cc
@@ -11,10 +11,14 @@
 #include <sys/syscall.h>
 #include <sys/wait.h>
 
+#include "base/command_line.h"
+#include "base/files/scoped_file.h"
 #include "base/logging.h"
 #include "base/mac/availability.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/threading/scoped_blocking_call.h"
+#include "base/threading/thread_restrictions.h"
+#include "base/trace_event/trace_event.h"
 
 // Changes the current thread's directory to a path or directory file
 // descriptor. libpthread only exposes a syscall wrapper starting in
@@ -27,6 +31,13 @@
 
 namespace base {
 
+// Friend and derived class of ScopedAllowBaseSyncPrimitives which allows
+// GetAppOutputInternal() to join a process. GetAppOutputInternal() can't itself
+// be a friend of ScopedAllowBaseSyncPrimitives because it is in the anonymous
+// namespace.
+class GetAppOutputScopedAllowBaseSyncPrimitives
+    : public base::ScopedAllowBaseSyncPrimitives {};
+
 namespace {
 
 // DPSXCHECK is a Debug Posix Spawn Check macro. The posix_spawn* family of
@@ -100,27 +111,78 @@
   }
 }
 
-}  // namespace
+struct GetAppOutputOptions {
+  // Whether to pipe stderr to stdout in |output|.
+  bool include_stderr = false;
+  // Caller-supplied string poiter for the output.
+  std::string* output = nullptr;
+  // Result exit code of Process::Wait().
+  int exit_code = 0;
+};
 
-void RestoreDefaultExceptionHandler() {
-  // This function is tailored to remove the Breakpad exception handler.
-  // exception_mask matches s_exception_mask in
-  // third_party/breakpad/breakpad/src/client/mac/handler/exception_handler.cc
-  const exception_mask_t exception_mask = EXC_MASK_BAD_ACCESS |
-                                          EXC_MASK_BAD_INSTRUCTION |
-                                          EXC_MASK_ARITHMETIC |
-                                          EXC_MASK_BREAKPOINT;
+bool GetAppOutputInternal(const std::vector<std::string>& argv,
+                          GetAppOutputOptions* gao_options) {
+  ScopedFD read_fd, write_fd;
+  {
+    int pipefds[2];
+    if (pipe(pipefds) != 0) {
+      DPLOG(ERROR) << "pipe";
+      return false;
+    }
+    read_fd.reset(pipefds[0]);
+    write_fd.reset(pipefds[1]);
+  }
 
-  // Setting the exception port to MACH_PORT_NULL may not be entirely
-  // kosher to restore the default exception handler, but in practice,
-  // it results in the exception port being set to Apple Crash Reporter,
-  // the desired behavior.
-  task_set_exception_ports(mach_task_self(), exception_mask, MACH_PORT_NULL,
-                           EXCEPTION_DEFAULT, THREAD_STATE_NONE);
+  LaunchOptions launch_options;
+  launch_options.fds_to_remap.emplace_back(write_fd.get(), STDOUT_FILENO);
+  if (gao_options->include_stderr) {
+    launch_options.fds_to_remap.emplace_back(write_fd.get(), STDERR_FILENO);
+  }
+
+  Process process = LaunchProcess(argv, launch_options);
+
+  // Close the parent process' write descriptor, so that EOF is generated in
+  // read loop below.
+  write_fd.reset();
+
+  // Read the child's output before waiting for its exit, otherwise the pipe
+  // buffer may fill up if the process is producing a lot of output.
+  std::string* output = gao_options->output;
+  output->clear();
+
+  const size_t kBufferSize = 1024;
+  size_t total_bytes_read = 0;
+  ssize_t read_this_pass = 0;
+  do {
+    output->resize(output->size() + kBufferSize);
+    read_this_pass = HANDLE_EINTR(
+        read(read_fd.get(), &(*output)[total_bytes_read], kBufferSize));
+    if (read_this_pass >= 0) {
+      total_bytes_read += read_this_pass;
+      output->resize(total_bytes_read);
+    }
+  } while (read_this_pass > 0);
+
+  // Reap the child process.
+  GetAppOutputScopedAllowBaseSyncPrimitives allow_wait;
+  if (!process.WaitForExit(&gao_options->exit_code)) {
+    return false;
+  }
+
+  return read_this_pass == 0;
 }
 
-Process LaunchProcessPosixSpawn(const std::vector<std::string>& argv,
-                                const LaunchOptions& options) {
+}  // namespace
+
+Process LaunchProcess(const CommandLine& cmdline,
+                      const LaunchOptions& options) {
+  return LaunchProcess(cmdline.argv(), options);
+}
+
+Process LaunchProcess(const std::vector<std::string>& argv,
+                      const LaunchOptions& options) {
+  TRACE_EVENT0("base", "LaunchProcess");
+
   PosixSpawnAttr attr;
 
   short flags = POSIX_SPAWN_CLOEXEC_DEFAULT;
@@ -217,4 +279,43 @@
   return Process(pid);
 }
 
+bool GetAppOutput(const CommandLine& cl, std::string* output) {
+  return GetAppOutput(cl.argv(), output);
+}
+
+bool GetAppOutputAndError(const CommandLine& cl, std::string* output) {
+  return GetAppOutputAndError(cl.argv(), output);
+}
+
+bool GetAppOutputWithExitCode(const CommandLine& cl,
+                              std::string* output,
+                              int* exit_code) {
+  GetAppOutputOptions options;
+  options.output = output;
+  bool rv = GetAppOutputInternal(cl.argv(), &options);
+  *exit_code = options.exit_code;
+  return rv;
+}
+
+bool GetAppOutput(const std::vector<std::string>& argv, std::string* output) {
+  GetAppOutputOptions options;
+  options.output = output;
+  return GetAppOutputInternal(argv, &options) &&
+         options.exit_code == EXIT_SUCCESS;
+}
+
+bool GetAppOutputAndError(const std::vector<std::string>& argv,
+                          std::string* output) {
+  GetAppOutputOptions options;
+  options.include_stderr = true;
+  options.output = output;
+  return GetAppOutputInternal(argv, &options) &&
+         options.exit_code == EXIT_SUCCESS;
+}
+
+void RaiseProcessToHighPriority() {
+  // Historically this has not been implemented on POSIX and macOS. This could
+  // influence the Mach task policy in the future.
+}
+
 }  // namespace base
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
index e60b4dd..a68565c 100644
--- a/base/process/launch_posix.cc
+++ b/base/process/launch_posix.cc
@@ -60,14 +60,11 @@
 #endif
 
 #if defined(OS_MACOSX)
-#include <crt_externs.h>
-#include <sys/event.h>
-
-#include "base/feature_list.h"
-#else
-extern char** environ;
+#error "macOS should use launch_mac.cc"
 #endif
 
+extern char** environ;
+
 namespace base {
 
 // Friend and derived class of ScopedAllowBaseSyncPrimitives which allows
@@ -81,29 +78,16 @@
 
 namespace {
 
-#if defined(OS_MACOSX)
-const Feature kMacLaunchProcessPosixSpawn{"MacLaunchProcessPosixSpawn",
-                                          FEATURE_ENABLED_BY_DEFAULT};
-#endif
-
 // Get the process's "environment" (i.e. the thing that setenv/getenv
 // work with).
 char** GetEnvironment() {
-#if defined(OS_MACOSX)
-  return *_NSGetEnviron();
-#else
   return environ;
-#endif
 }
 
 // Set the process's "environment" (i.e. the thing that setenv/getenv
 // work with).
 void SetEnvironment(char** env) {
-#if defined(OS_MACOSX)
-  *_NSGetEnviron() = env;
-#else
   environ = env;
-#endif
 }
 
 // Set the calling thread's signal mask to new_sigmask and return
@@ -222,8 +206,6 @@
 
 #if defined(OS_LINUX) || defined(OS_AIX)
 static const char kFDDir[] = "/proc/self/fd";
-#elif defined(OS_MACOSX)
-static const char kFDDir[] = "/dev/fd";
 #elif defined(OS_SOLARIS)
 static const char kFDDir[] = "/dev/fd";
 #elif defined(OS_FREEBSD)
@@ -302,12 +284,6 @@
 Process LaunchProcess(const std::vector<std::string>& argv,
                       const LaunchOptions& options) {
   TRACE_EVENT0("base", "LaunchProcess");
-#if defined(OS_MACOSX)
-  // TODO(rsesek): Remove this feature. https://crbug.com/179923.
-  if (FeatureList::IsEnabled(kMacLaunchProcessPosixSpawn)) {
-    return LaunchProcessPosixSpawn(argv, options);
-  }
-#endif
 
   InjectiveMultimap fd_shuffle1;
   InjectiveMultimap fd_shuffle2;
@@ -427,10 +403,6 @@
       }
     }
 
-#if defined(OS_MACOSX)
-    RestoreDefaultExceptionHandler();
-#endif  // defined(OS_MACOSX)
-
     ResetChildSignalHandlersToDefaults();
     SetSignalMask(orig_sigmask);
 
@@ -497,11 +469,9 @@
       RAW_CHECK(chdir(current_directory) == 0);
     }
 
-#if !defined(OS_MACOSX)
     if (options.pre_exec_delegate != nullptr) {
       options.pre_exec_delegate->RunAsyncSafe();
     }
-#endif
 
     const char* executable_path = !options.real_path.empty() ?
         options.real_path.value().c_str() : argv_cstr[0];
@@ -583,10 +553,6 @@
       // DANGER: no calls to malloc or locks are allowed from now on:
       // http://crbug.com/36678
 
-#if defined(OS_MACOSX)
-      RestoreDefaultExceptionHandler();
-#endif
-
       // Obscure fork() rule: in the child, if you don't end up doing exec*(),
       // you call _exit() instead of exit(). This is because _exit() does not
       // call any previously-registered (in the parent) exit handlers, which
diff --git a/base/task/sequence_manager/lazily_deallocated_deque.h b/base/task/sequence_manager/lazily_deallocated_deque.h
index 5ac0883..7a895eb 100644
--- a/base/task/sequence_manager/lazily_deallocated_deque.h
+++ b/base/task/sequence_manager/lazily_deallocated_deque.h
@@ -105,7 +105,10 @@
 
     // Grow if needed.
     if (!tail_->CanPush()) {
-      tail_->next_ = std::make_unique<Ring>(tail_->capacity() * 2);
+      // Doubling the size is a common strategy, but one which can be wasteful
+      // so we use a (somewhat) slower growth curve.
+      tail_->next_ = std::make_unique<Ring>(2 + tail_->capacity() +
+                                            (tail_->capacity() / 2));
       tail_ = tail_->next_.get();
     }
 
diff --git a/base/task/sequence_manager/lazily_deallocated_deque_unittest.cc b/base/task/sequence_manager/lazily_deallocated_deque_unittest.cc
index 4a85061..bfb9472 100644
--- a/base/task/sequence_manager/lazily_deallocated_deque_unittest.cc
+++ b/base/task/sequence_manager/lazily_deallocated_deque_unittest.cc
@@ -95,7 +95,7 @@
     d.push_back(i);
   }
   EXPECT_EQ(1000u, d.size());
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
   EXPECT_EQ(1000u, d.max_size());
 
   // Drop most elements.
@@ -103,13 +103,13 @@
     d.pop_front();
   }
   EXPECT_EQ(10u, d.size());
-  EXPECT_EQ(512u, d.capacity());
+  EXPECT_EQ(450u, d.capacity());
   EXPECT_EQ(1000u, d.max_size());
 
   // This won't do anything since the max size is greater than the current
   // capacity.
   d.MaybeShrinkQueue();
-  EXPECT_EQ(512u, d.capacity());
+  EXPECT_EQ(450u, d.capacity());
   EXPECT_EQ(10u, d.max_size());
 
   // This will shrink because the max size is now much less than the current
@@ -125,25 +125,25 @@
     d.push_back(i);
   }
   EXPECT_EQ(1010u, d.size());
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
   EXPECT_EQ(1010u, d.max_size());
 
   // Drop a couple of elements.
   d.pop_front();
   d.pop_front();
   EXPECT_EQ(1008u, d.size());
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
   EXPECT_EQ(1010u, d.max_size());
 
   // This won't do anything since the max size is only slightly lower than the
   // capacity.
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
   EXPECT_EQ(1010u, d.max_size());
 
   // Ditto. Nothing changed so no point shrinking.
   d.MaybeShrinkQueue();
   EXPECT_EQ(1008u, d.max_size());
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1011u, d.capacity());
 }
 
 TEST_F(LazilyDeallocatedDequeTest, MaybeShrinkQueueToEmpty) {
@@ -170,52 +170,52 @@
     d.push_back(i);
   }
   EXPECT_EQ(1000u, d.size());
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
   EXPECT_EQ(1000u, d.max_size());
 
   // Drop some elements.
-  for (int i = 0; i < 100; i++) {
+  for (int i = 0; i < 400; i++) {
     d.pop_front();
   }
-  EXPECT_EQ(900u, d.size());
-  EXPECT_EQ(960u, d.capacity());
+  EXPECT_EQ(600u, d.size());
+  EXPECT_EQ(947u, d.capacity());
   EXPECT_EQ(1000u, d.max_size());
 
   // This won't do anything since the max size is greater than the current
   // capacity.
   d.MaybeShrinkQueue();
-  EXPECT_EQ(960u, d.capacity());
-  EXPECT_EQ(900u, d.max_size());
+  EXPECT_EQ(947u, d.capacity());
+  EXPECT_EQ(600u, d.max_size());
 
   // This will shrink to fit.
   d.MaybeShrinkQueue();
-  EXPECT_EQ(901u, d.capacity());
-  EXPECT_EQ(900u, d.max_size());
+  EXPECT_EQ(601u, d.capacity());
+  EXPECT_EQ(600u, d.max_size());
 
   // Drop some more elements.
   for (int i = 0; i < 100; i++) {
     d.pop_front();
   }
-  EXPECT_EQ(800u, d.size());
-  EXPECT_EQ(901u, d.capacity());
-  EXPECT_EQ(900u, d.max_size());
+  EXPECT_EQ(500u, d.size());
+  EXPECT_EQ(601u, d.capacity());
+  EXPECT_EQ(600u, d.max_size());
 
   // Not enough time has passed so max_size is untouched and not shrunk.
   d.MaybeShrinkQueue();
-  EXPECT_EQ(900u, d.max_size());
-  EXPECT_EQ(901u, d.capacity());
+  EXPECT_EQ(601u, d.capacity());
+  EXPECT_EQ(600u, d.max_size());
 
   // After time passes we re-sample max_size.
   clock.Advance(TimeDelta::FromSeconds(
       LazilyDeallocatedDeque<int>::kMinimumShrinkIntervalInSeconds));
   d.MaybeShrinkQueue();
-  EXPECT_EQ(800u, d.max_size());
-  EXPECT_EQ(901u, d.capacity());
+  EXPECT_EQ(601u, d.capacity());
+  EXPECT_EQ(500u, d.max_size());
 
   // And The next call to MaybeShrinkQueue actually shrinks the queue.
   d.MaybeShrinkQueue();
-  EXPECT_EQ(800u, d.max_size());
-  EXPECT_EQ(801u, d.capacity());
+  EXPECT_EQ(501u, d.capacity());
+  EXPECT_EQ(500u, d.max_size());
 }
 
 TEST_F(LazilyDeallocatedDequeTest, Iterators) {
@@ -260,7 +260,7 @@
     d.push_back(i);
   }
 
-  EXPECT_EQ(1020u, d.capacity());
+  EXPECT_EQ(1305u, d.capacity());
 
   // We need 1 more spot than the size due to the way the Ring works.
   d.SetCapacity(1001);
diff --git a/base/task/sequence_manager/task_queue_impl.cc b/base/task/sequence_manager/task_queue_impl.cc
index 285dc26b..ff27999 100644
--- a/base/task/sequence_manager/task_queue_impl.cc
+++ b/base/task/sequence_manager/task_queue_impl.cc
@@ -164,14 +164,16 @@
   return PlatformThread::CurrentId() == associated_thread_->thread_id;
 }
 
-void TaskQueueImpl::PostTask(PostedTask task) {
+void TaskQueueImpl::PostTask(PostedTask task, CurrentThread current_thread) {
+  DCHECK_EQ(current_thread == CurrentThread::kMainThread,
+            RunsTasksInCurrentSequence());
   // This method can only be called if task queue is able to accept tasks,
   // i.e. has a sequence manager and not being unregistered. This is enforced
   // by |proxy_| which is detached if this condition not met.
   if (task.delay.is_zero()) {
     PostImmediateTaskImpl(std::move(task));
   } else {
-    PostDelayedTaskImpl(std::move(task));
+    PostDelayedTaskImpl(std::move(task), current_thread);
   }
 }
 
@@ -191,7 +193,8 @@
       sequence_number, sequence_number));
 }
 
-void TaskQueueImpl::PostDelayedTaskImpl(PostedTask task) {
+void TaskQueueImpl::PostDelayedTaskImpl(PostedTask task,
+                                        CurrentThread current_thread) {
   // Use CHECK instead of DCHECK to crash earlier. See http://crbug.com/711167
   // for details.
   CHECK(task.callback);
@@ -207,7 +210,7 @@
     resolution = WakeUpResolution::kHigh;
 #endif  // defined(OS_WIN)
 
-  if (PlatformThread::CurrentId() == associated_thread_->thread_id) {
+  if (current_thread == CurrentThread::kMainThread) {
     // Lock-free fast path for delayed tasks posted from the main thread.
     DCHECK(main_thread_only().sequence_manager);
 
diff --git a/base/task/sequence_manager/task_queue_impl.h b/base/task/sequence_manager/task_queue_impl.h
index 6012295..eff885e5 100644
--- a/base/task/sequence_manager/task_queue_impl.h
+++ b/base/task/sequence_manager/task_queue_impl.h
@@ -82,6 +82,9 @@
   // Types of queues TaskQueueImpl is maintaining internally.
   enum class WorkQueueType { kImmediate, kDelayed };
 
+  // Some methods have fast paths when on the main thread.
+  enum class CurrentThread { kMainThread, kNotMainThread };
+
   // Non-nestable tasks may get deferred but such queue is being maintained on
   // SequenceManager side, so we need to keep information how to requeue it.
   struct DeferredNonNestableTask {
@@ -102,8 +105,7 @@
   // TaskQueue implementation.
   const char* GetName() const;
   bool RunsTasksInCurrentSequence() const;
-  void PostTask(PostedTask task);
-  // Require a reference to enclosing task queue for lifetime control.
+  void PostTask(PostedTask task, CurrentThread current_thread);
   std::unique_ptr<TaskQueue::QueueEnabledVoter> CreateQueueEnabledVoter(
       scoped_refptr<TaskQueue> owning_task_queue);
   bool IsQueueEnabled() const;
@@ -328,7 +330,7 @@
   };
 
   void PostImmediateTaskImpl(PostedTask task);
-  void PostDelayedTaskImpl(PostedTask task);
+  void PostDelayedTaskImpl(PostedTask task, CurrentThread current_thread);
 
   // Push the task onto the |delayed_incoming_queue|. Lock-free main thread
   // only fast path.
diff --git a/base/task/sequence_manager/task_queue_proxy.cc b/base/task/sequence_manager/task_queue_proxy.cc
index 3a2abf0a..89d6884 100644
--- a/base/task/sequence_manager/task_queue_proxy.cc
+++ b/base/task/sequence_manager/task_queue_proxy.cc
@@ -23,23 +23,28 @@
 bool TaskQueueProxy::PostTask(PostedTask task) const {
   // NOTE: Task's destructor might attempt to post another task,
   // so ensure it never happens inside this lock.
-  Optional<MoveableAutoLock> lock(AcquireLockIfNeeded());
-  if (!task_queue_impl_)
-    return false;
-  task_queue_impl_->PostTask(std::move(task));
-  return true;
+  if (RunsTasksInCurrentSequence()) {
+    if (!task_queue_impl_)
+      return false;
+
+    task_queue_impl_->PostTask(std::move(task),
+                               TaskQueueImpl::CurrentThread::kMainThread);
+    return true;
+  } else {
+    AutoLock lock(lock_);
+    if (!task_queue_impl_)
+      return false;
+
+    task_queue_impl_->PostTask(std::move(task),
+                               TaskQueueImpl::CurrentThread::kNotMainThread);
+    return true;
+  }
 }
 
 bool TaskQueueProxy::RunsTasksInCurrentSequence() const {
   return associated_thread_->thread_id == PlatformThread::CurrentId();
 }
 
-Optional<MoveableAutoLock> TaskQueueProxy::AcquireLockIfNeeded() const {
-  if (RunsTasksInCurrentSequence())
-    return nullopt;
-  return MoveableAutoLock(lock_);
-}
-
 void TaskQueueProxy::DetachFromTaskQueueImpl() {
   DCHECK_CALLED_ON_VALID_THREAD(associated_thread_->thread_checker);
   // |task_queue_impl_| can be read from the main thread without a lock,
diff --git a/base/task/sequence_manager/task_queue_proxy.h b/base/task/sequence_manager/task_queue_proxy.h
index 3c68eec..c84c2c4 100644
--- a/base/task/sequence_manager/task_queue_proxy.h
+++ b/base/task/sequence_manager/task_queue_proxy.h
@@ -42,9 +42,6 @@
   friend class RefCountedThreadSafe<TaskQueueProxy>;
   ~TaskQueueProxy();
 
-  // Doesn't acquire lock on main thread.
-  Optional<MoveableAutoLock> AcquireLockIfNeeded() const;
-
   mutable Lock lock_;
   TaskQueueImpl* task_queue_impl_;  // Not owned.
   const scoped_refptr<AssociatedThreadId> associated_thread_;
diff --git a/base/task/task_scheduler/scheduler_worker.cc b/base/task/task_scheduler/scheduler_worker.cc
index 93b35f1..0f9cb2d 100644
--- a/base/task/task_scheduler/scheduler_worker.cc
+++ b/base/task/task_scheduler/scheduler_worker.cc
@@ -283,8 +283,8 @@
 
 void SchedulerWorker::RunWorker() {
   DCHECK_EQ(self_, this);
-  TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("task_scheduler_diagnostics"),
-                     "SchedulerWorkerThread alive");
+  TRACE_EVENT_INSTANT0("task_scheduler", "SchedulerWorkerThread born",
+                       TRACE_EVENT_SCOPE_THREAD);
   TRACE_EVENT_BEGIN0("task_scheduler", "SchedulerWorkerThread active");
 
   if (scheduler_worker_observer_)
@@ -358,8 +358,8 @@
   self_ = nullptr;
 
   TRACE_EVENT_END0("task_scheduler", "SchedulerWorkerThread active");
-  TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("task_scheduler_diagnostics"),
-                   "SchedulerWorkerThread alive");
+  TRACE_EVENT_INSTANT0("task_scheduler", "SchedulerWorkerThread dead",
+                       TRACE_EVENT_SCOPE_THREAD);
 }
 
 }  // namespace internal
diff --git a/build/android/gyp/create_app_bundle.py b/build/android/gyp/create_app_bundle.py
index 8f24717..f3224ba 100755
--- a/build/android/gyp/create_app_bundle.py
+++ b/build/android/gyp/create_app_bundle.py
@@ -171,9 +171,12 @@
   This will rewrite paths that look like locales/<locale>.pak into
   locales#<language>/<locale>.pak, where <language> is the language code
   from the locale.
+
+  Returns a list of paths. The language split should be duplicated at all the
+  returned paths.
   """
   if not src_path.startswith(_LOCALES_SUBDIR) or not src_path.endswith('.pak'):
-    return src_path
+    return [src_path]
 
   locale = src_path[len(_LOCALES_SUBDIR):-4]
   android_locale = resource_utils.CHROME_TO_ANDROID_LOCALE_MAP.get(
@@ -186,10 +189,11 @@
   else:
     android_language = android_locale
 
+  result_paths = ['assets/locales#lang_%s/%s.pak' % (android_language, locale)]
   if android_language == _FALLBACK_LANGUAGE:
-    return 'assets/locales/%s.pak' % locale
+    result_paths.append('assets/locales/%s.pak' % locale)
 
-  return 'assets/locales#lang_%s/%s.pak' % (android_language, locale)
+  return result_paths
 
 
 def _SplitModuleForAssetTargeting(src_module_zip, tmp_dir, split_dimensions):
@@ -226,13 +230,16 @@
         src_path = info.filename
         is_compressed = info.compress_type != zipfile.ZIP_STORED
 
-        dst_path = src_path
+        dst_paths = [src_path]
         if src_path in language_files:
-          dst_path = _RewriteLanguageAssetPath(src_path)
+          dst_paths = _RewriteLanguageAssetPath(src_path)
 
-        build_utils.AddToZipHermetic(dst_zip, dst_path,
-                                     data=src_zip.read(src_path),
-                                     compress=is_compressed)
+        for dst_path in dst_paths:
+          build_utils.AddToZipHermetic(
+              dst_zip,
+              dst_path,
+              data=src_zip.read(src_path),
+              compress=is_compressed)
 
     return tmp_zip
 
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 6186f451..5e7636ae 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -1418,7 +1418,7 @@
     _enable_bytecode_rewriter =
         _enable_assert || _enable_custom_resources || _enable_thread_annotations
     _is_prebuilt = defined(invoker.is_prebuilt) && invoker.is_prebuilt
-    _enable_bytecode_checks = defined(invoker.enable_bytecode_checks) &&
+    _enable_bytecode_checks = !defined(invoker.enable_bytecode_checks) ||
                               invoker.enable_bytecode_checks
 
     # Release builds don't have asserts enabled, so they often will not run the
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 5ae4ed7..ce099f9d 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-29579aebaa751c5fa23cbdb179754f53051d3e20
\ No newline at end of file
+c0d51348a7550c98fb67ac696880c8e7f44009d9
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 53533d7..9212cd7 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-06c708b92fde419f40f6b34d0e48b303108ed829
\ No newline at end of file
+e5b13896d17bfc29328293f63aecee8c5f88739d
\ No newline at end of file
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 fa73b8362..2224ba1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -82,6 +82,7 @@
 import org.chromium.chrome.browser.download.DownloadManagerService;
 import org.chromium.chrome.browser.download.DownloadUtils;
 import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotificationBridgeUiFactory;
+import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
 import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor;
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
 import org.chromium.chrome.browser.gsa.ContextReporter;
@@ -150,6 +151,8 @@
 import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager;
 import org.chromium.chrome.browser.widget.textbubble.TextBubble;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.feature_engagement.EventConstants;
+import org.chromium.components.feature_engagement.Tracker;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.SelectionPopupController;
 import org.chromium.content_public.browser.WebContents;
@@ -399,6 +402,12 @@
         try (TraceEvent te = TraceEvent.scoped("ChromeActivity.postInflationStartup")) {
             super.postInflationStartup();
 
+            ViewGroup coordinator = findViewById(R.id.coordinator);
+            mScrimView = new ScrimView(this, (fraction) -> {
+                mStatusBarScrimFraction = fraction;
+                setStatusBarColor(null, mBaseStatusBarColor);
+            }, coordinator);
+
             Intent intent = getIntent();
             if (intent != null && getSavedInstanceState() == null) {
                 VrModuleProvider.getDelegate().maybeHandleVrIntentPreNative(this, intent);
@@ -1434,11 +1443,6 @@
         super.finishNativeInitialization();
 
         ViewGroup coordinator = findViewById(R.id.coordinator);
-        mScrimView = new ScrimView(this, (fraction) -> {
-            mStatusBarScrimFraction = fraction;
-            setStatusBarColor(null, mBaseStatusBarColor);
-        }, coordinator);
-
         ViewStub accessoryBarStub = findViewById(R.id.keyboard_accessory_stub);
         ViewStub accessorySheetStub = findViewById(R.id.keyboard_accessory_sheet_stub);
         if (accessoryBarStub != null && accessorySheetStub != null) {
@@ -1453,10 +1457,6 @@
         // to setup.
         mPageViewTimer = createPageViewTimer();
 
-        if (mToolbarManager != null && mToolbarManager.getToolbar() != null) {
-            mToolbarManager.getToolbar().setScrim(mScrimView);
-        }
-
         if (supportsContextualSuggestionsBottomSheet()
                 && FeatureUtilities.areContextualSuggestionsEnabled(this)) {
             getLayoutInflater().inflate(R.layout.bottom_sheet, coordinator);
@@ -2159,6 +2159,8 @@
             HistoryManagerUtils.showHistoryManager(this, currentTab);
         } else if (id == R.id.translate_id) {
             RecordUserAction.record("MobileMenuTranslate");
+            Tracker tracker = TrackerFactory.getTrackerForProfile(getActivityTab().getProfile());
+            tracker.notifyEvent(EventConstants.TRANSLATE_MENU_BUTTON_CLICKED);
             TranslateBridge.translateTab(getActivityTab());
         } else if (id == R.id.share_menu_id || id == R.id.direct_share_menu_id) {
             onShareMenuItemSelected(id == R.id.direct_share_menu_id,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
index 8b76d38..dbfa524b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -178,19 +178,7 @@
                     !currentTab.isNativePage() && currentTab.getWebContents() != null);
 
             // Prepare translate menu button.
-            boolean isTranslateVisible = !isChromeScheme && !isFileScheme && !isContentScheme
-                    && !TextUtils.isEmpty(url) && currentTab.getWebContents() != null
-                    && ChromeFeatureList.isInitialized()
-                    && ChromeFeatureList.isEnabled(
-                               ChromeFeatureList.TRANSLATE_ANDROID_MANUAL_TRIGGER)
-                    && TranslateBridge.canManuallyTranslate(currentTab);
-            if (ChromeFeatureList.isInitialized()
-                    && ChromeFeatureList.isEnabled(
-                               ChromeFeatureList.TRANSLATE_ANDROID_MANUAL_TRIGGER)) {
-                RecordHistogram.recordBooleanHistogram(
-                        "Translate.MobileMenuTranslate.Shown", isTranslateVisible);
-            }
-            menu.findItem(R.id.translate_id).setVisible(isTranslateVisible);
+            prepareTranslateMenuItem(menu, currentTab);
 
             // Hide 'Add to homescreen' for the following:
             // * chrome:// pages - Android doesn't know how to direct those URLs.
@@ -300,6 +288,20 @@
     }
 
     /**
+     * Sets the visibility of the "Translate" menu item.
+     */
+    private void prepareTranslateMenuItem(Menu menu, Tab currentTab) {
+        boolean isTranslateVisible = isTranslateMenuItemVisible(currentTab);
+        if (ChromeFeatureList.isInitialized()
+                && ChromeFeatureList.isEnabled(
+                           ChromeFeatureList.TRANSLATE_ANDROID_MANUAL_TRIGGER)) {
+            RecordHistogram.recordBooleanHistogram(
+                    "Translate.MobileMenuTranslate.Shown", isTranslateVisible);
+        }
+        menu.findItem(R.id.translate_id).setVisible(isTranslateVisible);
+    }
+
+    /**
      * Notify the delegate that the load state changed.
      * @param isLoading Whether the page is currently loading.
      */
@@ -460,4 +462,20 @@
      * @param appMenu The menu the view is inside of.
      */
     public void onFooterViewInflated(AppMenu appMenu, View view) {}
+
+    /**
+     * Returns true iff the translate menu item should be visible.
+     * @param tab Tab being displayed.
+     */
+    public boolean isTranslateMenuItemVisible(Tab tab) {
+        String url = tab.getUrl();
+        boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
+                || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
+        boolean isFileScheme = url.startsWith(UrlConstants.FILE_URL_PREFIX);
+        boolean isContentScheme = url.startsWith(UrlConstants.CONTENT_URL_PREFIX);
+        return !isChromeScheme && !isFileScheme && !isContentScheme && !TextUtils.isEmpty(url)
+                && tab.getWebContents() != null && ChromeFeatureList.isInitialized()
+                && ChromeFeatureList.isEnabled(ChromeFeatureList.TRANSLATE_ANDROID_MANUAL_TRIGGER)
+                && TranslateBridge.canManuallyTranslate(tab);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
index 3d4f170c..53496b3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
@@ -259,12 +259,7 @@
 
         Bundle extras = new Bundle();
         extras.putInt(EXTRA_NOTIFICATION_BUNDLE_ICON_ID, iconId);
-
-        if (downloadUpdate.getIsOffTheRecord()) {
-            builder.setSmallIcon(R.drawable.offline_pin).addExtras(extras);
-        } else {
-            builder.setSmallIcon(iconId).addExtras(extras);
-        }
+        builder.setSmallIcon(iconId).addExtras(extras);
 
         // Context text is shown as title in incognito mode as the file name is not shown.
         if (downloadUpdate.getIsOffTheRecord()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java
index a40b2292..2608bedb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java
@@ -17,7 +17,6 @@
 import org.chromium.chrome.browser.toolbar.Toolbar;
 import org.chromium.chrome.browser.toolbar.ToolbarActionModeCallback;
 import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
-import org.chromium.chrome.browser.widget.ScrimView;
 import org.chromium.ui.base.WindowAndroid;
 
 /**
@@ -168,11 +167,6 @@
     int getUrlContainerMarginEnd();
 
     /**
-     * @param scrim The scrim for this location bar to use.
-     */
-    void setScrim(ScrimView scrim);
-
-    /**
      * Called to set the width of the location bar when the url bar is not focused.
      *
      * Immediately after the animation to transition the URL bar from focused to unfocused finishes,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
index a90029d..436b726f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.browser.omnibox;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.Configuration;
@@ -32,7 +31,6 @@
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.WindowDelegate;
@@ -58,8 +56,6 @@
 import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
 import org.chromium.chrome.browser.toolbar.ToolbarManager;
 import org.chromium.chrome.browser.util.ColorUtils;
-import org.chromium.chrome.browser.widget.ScrimView;
-import org.chromium.chrome.browser.widget.ScrimView.ScrimParams;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.base.PageTransition;
@@ -74,15 +70,9 @@
  */
 public class LocationBarLayout extends FrameLayout
         implements OnClickListener, LocationBar, AutocompleteDelegate, FakeboxDelegate,
-                   ScrimView.ScrimObserver, LocationBarVoiceRecognitionHandler.Delegate,
-                   StatusViewCoordinator.Delegate {
+                   LocationBarVoiceRecognitionHandler.Delegate, StatusViewCoordinator.Delegate {
     private static final String TAG = "cr_LocationBar";
 
-    private final int mLightScrimColor;
-
-    /** Params that control how the location bar interacts with the scrim. */
-    private ScrimParams mScrimParams;
-
     protected AppCompatImageButton mDeleteButton;
     protected AppCompatImageButton mMicButton;
     protected View mUrlBar;
@@ -105,8 +95,6 @@
     private WindowAndroid mWindowAndroid;
     private WindowDelegate mWindowDelegate;
 
-    private ScrimView mScrim;
-
     private boolean mUrlHasFocus;
     protected boolean mUrlFocusChangeInProgress;
     private boolean mUrlFocusedFromFakebox;
@@ -163,8 +151,6 @@
 
         LayoutInflater.from(context).inflate(layoutId, this, true);
 
-        mLightScrimColor = ApiCompatibilityUtils.getColor(
-                context.getResources(), R.color.omnibox_focused_fading_background_color_light);
         mIsTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(context);
 
         mDeleteButton = (AppCompatImageButton) findViewById(R.id.delete_button);
@@ -481,8 +467,6 @@
         for (UrlFocusChangeListener listener : mUrlFocusChangeListeners) {
             listener.onUrlFocusChange(hasFocus);
         }
-
-        updateFadingBackgroundView(hasFocus, false);
     }
 
     @Override
@@ -983,67 +967,6 @@
     }
 
     @Override
-    public void onScrimClick() {
-        setUrlBarFocus(false);
-        updateFadingBackgroundView(false, false);
-    }
-
-    @Override
-    public void onScrimVisibilityChanged(boolean visible) {
-        Activity activity = mWindowAndroid.getActivity().get();
-        if (!(activity instanceof ChromeActivity)) return;
-        ChromeActivity chromeActivity = (ChromeActivity) activity;
-
-        if (visible) {
-            chromeActivity.addViewObscuringAllTabs(mScrim);
-        } else {
-            chromeActivity.removeViewObscuringAllTabs(mScrim);
-        }
-    }
-
-    @Override
-    public void setScrim(ScrimView scrim) {
-        mScrim = scrim;
-
-        // In some cases, users can start chrome and immediately start tapping the omnibox. In that
-        // case, the omnibox will focus, but there is no scrim. This checks if the scrim needs to
-        // be visible and updates it accordingly.
-        updateFadingBackgroundView(isUrlBarFocused(), true);
-    }
-
-    /**
-     * Update the fading background view that shows when the omnibox is focused. If Chrome Home is
-     * enabled, this method is a no-op.
-     * @param visible Whether the background should be made visible.
-     * @param ignoreNtpChecks Whether the checks for the ntp should be considered when updating the
-     *                        scrim.
-     */
-    protected void updateFadingBackgroundView(boolean visible, boolean ignoreNtpChecks) {
-        if (mScrim == null) return;
-        NewTabPage ntp = mToolbarDataProvider.getNewTabPageForCurrentTab();
-        boolean locationBarShownInNTP = ntp != null && ntp.isLocationBarShownInNTP();
-
-        if (visible && (!locationBarShownInNTP || ignoreNtpChecks)) {
-            if (mScrimParams == null) {
-                int topMargin = getResources().getDimensionPixelSize(R.dimen.tab_strip_height);
-                View omniboxSuggestionsContainer =
-                        mAutocompleteCoordinator.getSuggestionContainerView();
-                if (omniboxSuggestionsContainer == null) return;
-                mScrimParams =
-                        new ScrimParams(omniboxSuggestionsContainer, false, false, topMargin, this);
-            }
-            mScrimParams.backgroundColor =
-                    !mIsTablet && !mToolbarDataProvider.isIncognito() ? mLightScrimColor : null;
-
-            // If the location bar is shown in the NTP, the toolbar will eventually trigger a
-            // fade in.
-            mScrim.showScrim(mScrimParams);
-        } else {
-            mScrim.hideScrim(!locationBarShownInNTP);
-        }
-    }
-
-    @Override
     public void setUnfocusedWidth(float unfocusedWidth) {
         mStatusViewCoordinator.setUnfocusedLocationBarWidth(unfocusedWidth);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
index f23db07..dcd46abe 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
@@ -14,7 +14,6 @@
 
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.WindowDelegate;
-import org.chromium.chrome.browser.ntp.NewTabPage;
 
 /**
  * A location bar implementation specific for smaller/phone screens.
@@ -137,11 +136,6 @@
             getWindowAndroid().getKeyboardDelegate().showKeyboard(mUrlBar);
         }
         setUrlFocusChangeInProgress(false);
-
-        NewTabPage ntp = getToolbarDataProvider().getNewTabPageForCurrentTab();
-        if (hasFocus && ntp != null && ntp.isLocationBarShownInNTP()) {
-            updateFadingBackgroundView(true, true);
-        }
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
index 6d24935..4f50b4d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
@@ -181,8 +181,6 @@
     @Override
     public void onUrlFocusChange(boolean hasFocus) {
         if (hasFocus) {
-            // TODO(mdjones): Move init into visibility update method as it's only caller.
-            initOmniboxResultsContainer();
             if (mNativeInitialized) {
                 startZeroSuggest();
             } else {
@@ -290,13 +288,6 @@
     }
 
     /**
-     * @return The view containing the suggestions list.
-     */
-    public View getSuggestionContainerView() {
-        return mOmniboxResultsContainer;
-    }
-
-    /**
      * @see AutocompleteController#onVoiceResults(List)
      */
     public void onVoiceResults(
@@ -468,7 +459,8 @@
      * Update whether the omnibox suggestions are visible.
      */
     private void updateOmniboxSuggestionsVisibility() {
-        if (mOmniboxResultsContainer == null || mSuggestionList == null) return;
+        initOmniboxResultsContainer();
+        if (mSuggestionList == null) return;
 
         boolean isContainerVisible = mOmniboxResultsContainer.getVisibility() == View.VISIBLE;
         boolean shouldBeVisible = mCanShowSuggestions && getSuggestionCount() > 0;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
index 1f95261..aee5e8cb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
@@ -59,7 +59,6 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.util.AccessibilityUtil;
 import org.chromium.chrome.browser.util.ColorUtils;
-import org.chromium.chrome.browser.widget.ScrimView;
 import org.chromium.chrome.browser.widget.TintedDrawable;
 import org.chromium.components.url_formatter.UrlFormatter;
 import org.chromium.content_public.common.ContentUrlConstants;
@@ -830,8 +829,5 @@
     }
 
     @Override
-    public void setScrim(ScrimView scrim) {}
-
-    @Override
     public void setUnfocusedWidth(float unfocusedWidth) {}
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
index c021eb4..3dc71674 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
@@ -8,7 +8,6 @@
 import android.view.View;
 
 import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
-import org.chromium.chrome.browser.widget.ScrimView;
 
 /**
  * An interface for outside packages to interact with ToolbarLayout. Other than for testing purposes
@@ -104,9 +103,4 @@
      * @return height of the tab strip in px.
      */
     int getTabStripHeight();
-
-    /**
-     * @param scrim The scrim for this location bar to use.
-     */
-    void setScrim(ScrimView scrim);
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
index a2595ae..03f5dfa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
@@ -44,7 +44,6 @@
 import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.chrome.browser.util.ViewUtils;
 import org.chromium.chrome.browser.widget.PulseDrawable;
-import org.chromium.chrome.browser.widget.ScrimView;
 import org.chromium.chrome.browser.widget.ToolbarProgressBar;
 import org.chromium.components.security_state.ConnectionSecurityLevel;
 import org.chromium.ui.UiUtils;
@@ -987,9 +986,4 @@
         if (FeatureUtilities.isNewTabPageButtonEnabled())
             ntpButton.setImageResource(R.drawable.ic_home);
     }
-
-    @Override
-    public void setScrim(ScrimView scrim) {
-        getLocationBar().setScrim(scrim);
-    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 83cb5232..dadf73e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.toolbar;
 
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.os.Handler;
 import android.os.Looper;
@@ -90,8 +91,12 @@
 import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
 import org.chromium.chrome.browser.toolbar.ActionModeController.ActionBarDelegate;
 import org.chromium.chrome.browser.toolbar.ToolbarButtonSlotData.ToolbarButtonData;
+import org.chromium.chrome.browser.translate.TranslateBridge;
 import org.chromium.chrome.browser.util.ColorUtils;
 import org.chromium.chrome.browser.util.FeatureUtilities;
+import org.chromium.chrome.browser.widget.ScrimView;
+import org.chromium.chrome.browser.widget.ScrimView.ScrimObserver;
+import org.chromium.chrome.browser.widget.ScrimView.ScrimParams;
 import org.chromium.chrome.browser.widget.ViewHighlighter;
 import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager;
 import org.chromium.chrome.browser.widget.findinpage.FindToolbarObserver;
@@ -105,6 +110,7 @@
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.AsyncViewProvider;
 import org.chromium.ui.UiUtils;
+import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.base.PageTransition;
 import org.chromium.ui.widget.ViewRectProvider;
 
@@ -117,8 +123,7 @@
  * Contains logic for managing the toolbar visual component.  This class manages the interactions
  * with the rest of the application to ensure the toolbar is always visually up to date.
  */
-public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListener {
-
+public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlFocusChangeListener {
     /**
      * Handle UI updates of menu icons. Only applicable for phones.
      */
@@ -195,6 +200,7 @@
     private final Callback<Boolean> mUrlFocusChangedCallback;
     private final Handler mHandler = new Handler();
     private final ChromeActivity mActivity;
+    private UrlFocusChangeListener mLocationBarFocusObserver;
 
     private BrowserStateBrowserControlsVisibilityDelegate mControlsVisibilityDelegate;
     private int mFullscreenFocusToken = FullscreenManager.INVALID_TOKEN;
@@ -249,12 +255,73 @@
 
         mToolbarActionModeCallback = new ToolbarActionModeCallback();
 
+        mLocationBarFocusObserver = new UrlFocusChangeListener() {
+            /** The params used to control how the scrim behaves when shown for the omnibox. */
+            private ScrimParams mScrimParams;
+
+            /** The light color to use for the scrim on the NTP. */
+            private int mLightScrimColor;
+
+            @Override
+            public void onUrlFocusChange(boolean hasFocus) {
+                if (mScrimParams == null) {
+                    Resources res = mActivity.getResources();
+                    int topMargin = res.getDimensionPixelSize(R.dimen.tab_strip_height);
+                    mLightScrimColor = ApiCompatibilityUtils.getColor(
+                            res, R.color.omnibox_focused_fading_background_color_light);
+                    View scrimTarget = mActivity.getCompositorViewHolder();
+                    mScrimParams = new ScrimView.ScrimParams(
+                            scrimTarget, true, false, topMargin, ToolbarManager.this);
+                }
+
+                boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity);
+                mScrimParams.backgroundColor =
+                        !isTablet && !mLocationBarModel.isIncognito() ? mLightScrimColor : null;
+
+                if (hasFocus && !showScrimAfterAnimationCompletes()) {
+                    mActivity.getScrim().showScrim(mScrimParams);
+                } else if (!hasFocus) {
+                    mActivity.getScrim().hideScrim(true);
+                }
+            }
+
+            @Override
+            public void onUrlAnimationFinished(boolean hasFocus) {
+                if (hasFocus && showScrimAfterAnimationCompletes()) {
+                    mActivity.getScrim().showScrim(mScrimParams);
+                }
+            }
+
+            /**
+             * @return Whether the scrim should wait to be shown until after the omnibox is done
+             *         animating.
+             */
+            private boolean showScrimAfterAnimationCompletes() {
+                if (mLocationBarModel.getNewTabPageForCurrentTab() == null) return false;
+                return mLocationBarModel.getNewTabPageForCurrentTab().isLocationBarShownInNTP();
+            }
+        };
+
         mToolbarProvider = AsyncViewProvider.of(controlContainer, R.id.toolbar_stub, R.id.toolbar);
         mToolbarProvider.whenLoaded((toolbar)
                                             -> onToolbarInflationComplete(toolbar, menuHandler,
                                                     appMenuPropertiesDelegate, invalidator));
     }
 
+    @Override
+    public void onScrimClick() {
+        setUrlBarFocus(false);
+    }
+
+    @Override
+    public void onScrimVisibilityChanged(boolean visible) {
+        if (visible) {
+            mActivity.addViewObscuringAllTabs(mActivity.getScrim());
+        } else {
+            mActivity.removeViewObscuringAllTabs(mActivity.getScrim());
+        }
+    }
+
     private void onToolbarInflationComplete(ToolbarLayout toolbar, final AppMenuHandler menuHandler,
             AppMenuPropertiesDelegate appMenuPropertiesDelegate, Invalidator invalidator) {
         mToolbar = toolbar;
@@ -281,6 +348,7 @@
                 mActionModeController.getActionModeCallback());
         mLocationBar.initializeControls(
                 new WindowDelegate(mActivity.getWindow()), mActivity.getWindowAndroid());
+        mLocationBar.addUrlFocusChangeListener(mLocationBarFocusObserver);
 
         setMenuHandler(menuHandler);
         toolbar.initialize(mLocationBarModel, this, mAppMenuButtonHelper);
@@ -595,6 +663,8 @@
                 }
 
                 showDownloadPageTextBubble(tab, FeatureConstants.DOWNLOAD_PAGE_FEATURE);
+                showTranslateMenuButtonTextBubble(
+                        tab, FeatureConstants.TRANSLATE_MENU_BUTTON_FEATURE);
             }
 
             private void handleIPHForErrorPageShown(Tab tab) {
@@ -815,6 +885,26 @@
         return mBottomToolbarCoordinator;
     }
 
+    private void showMenuIPHTextBubble(ChromeActivity activity, Tracker tracker, String featureName,
+            @StringRes int stringId, @StringRes int accessibilityStringId,
+            Integer highlightItemId) {
+        ViewRectProvider rectProvider = new ViewRectProvider(getMenuButton());
+        int yInsetPx = mToolbar.getContext().getResources().getDimensionPixelOffset(
+                R.dimen.text_bubble_menu_anchor_y_inset);
+        rectProvider.setInsetPx(0, 0, 0, yInsetPx);
+        mTextBubble = new TextBubble(mToolbar.getContext(), getMenuButton(), stringId,
+                accessibilityStringId, rectProvider);
+        mTextBubble.setDismissOnTouchInteraction(true);
+        mTextBubble.addOnDismissListener(() -> {
+            mHandler.postDelayed(() -> {
+                tracker.dismissed(featureName);
+                activity.getAppMenuHandler().setMenuHighlight(null);
+            }, ViewHighlighter.IPH_MIN_DELAY_BETWEEN_TWO_HIGHLIGHTS);
+        });
+        activity.getAppMenuHandler().setMenuHighlight(highlightItemId);
+        mTextBubble.show();
+    }
+
     /**
      * Show the download page in-product-help bubble. Also used by download page screenshot IPH.
      * @param tab The current tab.
@@ -831,25 +921,12 @@
         }
 
         final Tracker tracker = TrackerFactory.getTrackerForProfile(tab.getProfile());
-
         if (!tracker.shouldTriggerHelpUI(featureName)) return;
 
-        ViewRectProvider rectProvider = new ViewRectProvider(getMenuButton());
-        int yInsetPx = mToolbar.getContext().getResources().getDimensionPixelOffset(
-                R.dimen.text_bubble_menu_anchor_y_inset);
-        rectProvider.setInsetPx(0, 0, 0, yInsetPx);
-        mTextBubble = new TextBubble(mToolbar.getContext(), getMenuButton(),
+        showMenuIPHTextBubble(activity, tracker, featureName,
                 R.string.iph_download_page_for_offline_usage_text,
-                R.string.iph_download_page_for_offline_usage_accessibility_text, rectProvider);
-        mTextBubble.setDismissOnTouchInteraction(true);
-        mTextBubble.addOnDismissListener(() -> {
-            mHandler.postDelayed(() -> {
-                tracker.dismissed(featureName);
-                activity.getAppMenuHandler().setMenuHighlight(null);
-            }, ViewHighlighter.IPH_MIN_DELAY_BETWEEN_TWO_HIGHLIGHTS);
-        });
-        activity.getAppMenuHandler().setMenuHighlight(R.id.offline_page_id);
-        mTextBubble.show();
+                R.string.iph_download_page_for_offline_usage_accessibility_text,
+                R.id.offline_page_id);
 
         // Record metrics if we show Download IPH after a screenshot of the page.
         ChromeTabbedActivity chromeActivity = ((ChromeTabbedActivity) activity);
@@ -862,6 +939,27 @@
     }
 
     /**
+     * Show the translate manual trigger in-product-help bubble.
+     * @param tab The current tab.
+     * @param featureName The associated feature name.
+     */
+    public void showTranslateMenuButtonTextBubble(final Tab tab, String featureName) {
+        if (tab == null || mToolbar == null) return;
+        ChromeActivity activity = tab.getActivity();
+
+        if (!mAppMenuPropertiesDelegate.isTranslateMenuItemVisible(tab)) return;
+        if (!TranslateBridge.shouldShowManualTranslateIPH(tab)) return;
+
+        // Find out if the help UI should appear.
+        final Tracker tracker = TrackerFactory.getTrackerForProfile(tab.getProfile());
+        if (!tracker.shouldTriggerHelpUI(featureName)) return;
+
+        showMenuIPHTextBubble(activity, tracker, featureName,
+                R.string.iph_translate_menu_button_text,
+                R.string.iph_translate_menu_button_accessibility_text, R.id.translate_id);
+    }
+
+    /**
      * Initialize the manager with the components that had native initialization dependencies.
      * <p>
      * Calling this must occur after the native library have completely loaded.
@@ -1169,6 +1267,10 @@
         }
         mLocationBarModel.destroy();
         mHandler.removeCallbacksAndMessages(null); // Cancel delayed tasks.
+        if (mLocationBar != null) {
+            mLocationBar.removeUrlFocusChangeListener(mLocationBarFocusObserver);
+            mLocationBarFocusObserver = null;
+        }
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java
index 38c8cdd..9f1d0f9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java
@@ -25,6 +25,14 @@
         return nativeCanManuallyTranslate(tab.getWebContents());
     }
 
+    /**
+     * Returns true iff we're in a state where the manual translate IPH could be shown.
+     */
+    public static boolean shouldShowManualTranslateIPH(Tab tab) {
+        return nativeShouldShowManualTranslateIPH(tab.getWebContents());
+    }
+
     private static native void nativeTranslate(WebContents webContents);
-    private static native boolean nativeCanManuallyTranslate(WebContents webConcents);
+    private static native boolean nativeCanManuallyTranslate(WebContents webContents);
+    private static native boolean nativeShouldShowManualTranslateIPH(WebContents webContents);
 }
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index 30b4d32..df67a3ba 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3796,6 +3796,12 @@
       <message name="IDS_IPH_PREVIEWS_OMNIBOX_UI_ACCESSIBILITY_TEXT" desc="The in-product-help text informing the user that the displayed page was modified to make it load faster or use less data. Prompts the user to tap the message and load the original, unaltered, page if they would like. The 'Lite page provided by Google.' sentence should match TC ID 373879247902731825">
         Lite page provided by Google. Tap the load original button to load the original page.
       </message>
+      <message name="IDS_IPH_TRANSLATE_MENU_BUTTON_TEXT" desc="The in-product-help message after a successful navigation prompting user to translate current page.">
+        Translate this page to any language
+      </message>
+      <message name="IDS_IPH_TRANSLATE_MENU_BUTTON_ACCESSIBILITY_TEXT" desc="The in-product-help accessibility text after a successful navigation prompting user to translate current page.">
+        Translate this page to any language from the More options button
+      </message>
 
 
       <!-- Search Widget strings -->
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_IPH_TRANSLATE_MANUAL_BUTTON_TEXT.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_IPH_TRANSLATE_MANUAL_BUTTON_TEXT.png.sha1
new file mode 100644
index 0000000..f150371e
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_IPH_TRANSLATE_MANUAL_BUTTON_TEXT.png.sha1
@@ -0,0 +1 @@
+4ab078b45cc7683686b36275e81091e9b6bdfaf3
\ No newline at end of file
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
index d36fc48..9514bcc 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">ብርሃን</translation>
 <translation id="1821253160463689938">የእርስዎን ምርጫዎች ለማስታወስ ኩኪዎችን ይጠቀማል፣ እነዚያን ገጾች ባይጎበኙም እንኳ</translation>
 <translation id="1829244130665387512">በዚህ ገጽ ውስጥ የተገኘ</translation>
-<translation id="1832521218263067499">የደህንነት ክስተቶች</translation>
 <translation id="1853692000353488670">አዲስ ማንነት የማያሳውቅ ትር</translation>
 <translation id="1868024384445905608">Chrome አሁን ፋይሎችን በበለጠ ፍጥነት ያወርዳል</translation>
+<translation id="187628348035757895">የገንቢ አማራጮች</translation>
 <translation id="1878302395768190018">ይህን በማንኛውም ጊዜ በChrome ቅንብሮች ውስጥ ማበጀት ይችላሉ</translation>
 <translation id="1880072593381090678">ታዋቂ ገጾች ከChrome</translation>
 <translation id="1883903952484604915">የእኔ ፋይሎች</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">ተደራሽነት</translation>
 <translation id="6985347914332179298">እዚህ ምንም ውርዶች የሉም</translation>
 <translation id="6990079615885386641">መተግበሪያውን ከGoogle Play መደብር ያግኙ፦ <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">የደህንነት ሊሆኑ የሚችሉ የክስተቶች ዝርዝር በራስ-ሰር ለGoogle ሪፖርት አድርግ</translation>
 <translation id="6992289844737586249">ጣቢያዎች ማይክሮፎንዎን እንዲጠቀሙ ከመፍቀድዎ በፊት ይጠይቅ (የሚመከር)</translation>
 <translation id="7016516562562142042">ለአሁኑ የፍለጋ ፕሮግራም ተፈቅዷል</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ወርዷል</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">ምስሉን በአዲስ ትር ውስጥ ክፈት</translation>
 <translation id="8084114998886531721">የተቀመጠ ይለፍ ቃል</translation>
 <translation id="8087000398470557479">ይህ ይዘት ከ<ph name="DOMAIN_NAME" /> የመጣ ነው፣ የተላከው በGoogle ነው።</translation>
+<translation id="8087980556724996220">ራስ-ሙላ በ<ph name="DURATION_SECONDS" /> ሴ ውስጥ ይቆማል…</translation>
 <translation id="8103578431304235997">ማንነት የማያሳውቅ ትር</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">ተዛማጅ ገጾችን ይጠቁሙ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
index 822a5895..c3b1a72 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">فاتح</translation>
 <translation id="1821253160463689938">يستخدم ملفات تعريف الارتباط لتذكّر الإعدادات المُفضّلة حتى إذا لم تزُر تلك الصفحات.</translation>
 <translation id="1829244130665387512">البحث في الصفحة</translation>
-<translation id="1832521218263067499">حوادث تتعلق بالأمن</translation>
 <translation id="1853692000353488670">علامة تبويب جديدة للتصفح المتخفي</translation>
 <translation id="1868024384445905608">‏يُنزِّل Chrome الآن الملفات بشكلٍ أسرع.</translation>
+<translation id="187628348035757895">خيارات المطوِّرين</translation>
 <translation id="1878302395768190018">‏يمكنك تخصيص هذا في أي وقت في إعدادات Chrome.</translation>
 <translation id="1880072593381090678">‏الصفحات الشائعة من Chrome</translation>
 <translation id="1883903952484604915">ملفاتي</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">إمكانية الدخول</translation>
 <translation id="6985347914332179298">لا توجد تنزيلات هنا</translation>
 <translation id="6990079615885386641">‏الحصول على التطبيق من متجر Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">‏إبلاغ Google تلقائيًا بتفاصيل أي مخاطر أمنية محتملة</translation>
 <translation id="6992289844737586249">السؤال أولاً قبل السماح للمواقع باستخدام الميكروفون (موصى به)</translation>
 <translation id="7016516562562142042">تم السماح به لمحرك البحث الحالي</translation>
 <translation id="7021515813996758557">تم تنزيل <ph name="FILE_NAME" /></translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">فتح الصورة بعلامة تبويب جديدة</translation>
 <translation id="8084114998886531721">كلمة مرور محفوظة</translation>
 <translation id="8087000398470557479">‏هذا المحتوى من <ph name="DOMAIN_NAME" />، وتم عرضه من قبل Google.</translation>
+<translation id="8087980556724996220">سيتم إيقاف مساعد الملء التلقائي خلال <ph name="DURATION_SECONDS" /> من الثواني...</translation>
 <translation id="8103578431304235997">علامة تبويب للتصفح المتخفي</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">اقتراح الصفحات ذات الصلة</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
index 618eb5a17..2becd0e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Светло</translation>
 <translation id="1821253160463689938">Използва „бисквитки“ за запомняне на предпочитанията ви дори ако не посещавате тези страници</translation>
 <translation id="1829244130665387512">Търсене в страницата</translation>
-<translation id="1832521218263067499">Инциденти, свързани със сигурността</translation>
 <translation id="1853692000353488670">Нов раздел „инкогнито“</translation>
 <translation id="1868024384445905608">Изтеглянето на файлове в Chrome вече е по-бързо</translation>
+<translation id="187628348035757895">Опции за програмисти</translation>
 <translation id="1878302395768190018">Можете да персонализирате това по всяко време от настройките на Chrome</translation>
 <translation id="1880072593381090678">Популярни страници от Chrome</translation>
 <translation id="1883903952484604915">Моите файлове</translation>
@@ -792,7 +792,6 @@
 <translation id="6981982820502123353">Достъпност</translation>
 <translation id="6985347914332179298">Тук няма изтегляния</translation>
 <translation id="6990079615885386641">Изтегляне на приложението от Google Play Магазин: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Автоматично съобщаване на Google на подробности за евентуални инциденти, свързани със сигурността</translation>
 <translation id="6992289844737586249">Извеждане на запитване, преди да се разреши на сайтовете да използват микрофона (препоръчително)</translation>
 <translation id="7016516562562142042">Разрешено за текущата търсеща машина</translation>
 <translation id="7021515813996758557">„<ph name="FILE_NAME" />“ се изтегли</translation>
@@ -938,6 +937,7 @@
 <translation id="8073388330009372546">Отваряне в нов раздел</translation>
 <translation id="8084114998886531721">Запазена парола</translation>
 <translation id="8087000398470557479">Това съдържание се показва от Google, а източникът му е <ph name="DOMAIN_NAME" />.</translation>
+<translation id="8087980556724996220">Асистентът за автоматично попълване ще спре след <ph name="DURATION_SECONDS" /> сек…</translation>
 <translation id="8103578431304235997">Раздел в режим „инкогнито“</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Предложения за сродни страници</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
index 03ab12e..03a13276 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">আলো</translation>
 <translation id="1821253160463689938">আপনার পছন্দগুলি মনে রাখার জন্য কুকি ব্যবহার করে। আপনি সেই সমস্ত পৃষ্ঠায় না গেলেও তা করে থাকে</translation>
 <translation id="1829244130665387512">পৃষ্ঠাতে খুঁজুন</translation>
-<translation id="1832521218263067499">নিরাপত্তা সংক্রান্ত ঘটনাগুলি</translation>
 <translation id="1853692000353488670">নতুন ছদ্মবেশী ট্যাব</translation>
 <translation id="1868024384445905608">Chrome এখন আরও দ্রুত ফাইল ডাউনলোড করে</translation>
+<translation id="187628348035757895">ডেভেলপার বিকল্প</translation>
 <translation id="1878302395768190018">আপনি যেকোনও সময়ে Chrome সেটিংসে এটি কাস্টমাইজ করতে পারেন</translation>
 <translation id="1880072593381090678">Chrome এর জনপ্রিয় পৃষ্ঠাগুলি</translation>
 <translation id="1883903952484604915">আমার ফাইল</translation>
@@ -793,7 +793,6 @@
 <translation id="6981982820502123353">অ্যাক্সেযোগ্যতা</translation>
 <translation id="6985347914332179298">এখানে কোনো ডাউনলোড নেই</translation>
 <translation id="6990079615885386641">Google Play Store-এর থেকে অ্যাপ্লিকেশানটি পান: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">স্বয়ংক্রিয়ভাবে Google এ নিরাপত্তার সম্ভাব্য লঙ্ঘনের ঘটনাগুলির বিস্তারিত বিবরণ অভিযোগ করুন।</translation>
 <translation id="6992289844737586249">সাইটগুলিকে আপনার মাইক্রোফোন ব্যবহার করতে দিতে মঞ্জুরি দেওয়ার আগে প্রথমে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation>
 <translation id="7016516562562142042">বর্তমান সার্চ ইঞ্জিনের জন্য অনুমোদন দেওয়া হয়েছে</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ডাউনলোড হয়েছে</translation>
@@ -939,6 +938,7 @@
 <translation id="8073388330009372546">নতুন ট্যাবে ছবি খুলুন</translation>
 <translation id="8084114998886531721">সংরক্ষিত পাসওয়ার্ড</translation>
 <translation id="8087000398470557479">এই সামগ্রী Google দ্বারা বিতরণ করা <ph name="DOMAIN_NAME" /> থেকে এসেছে।</translation>
+<translation id="8087980556724996220">নিজে থেকে পূরণ হওয়া অ্যাসিস্ট্যান্ট <ph name="DURATION_SECONDS" />সেকেন্ড বন্ধ হবে…</translation>
 <translation id="8103578431304235997">ছদ্মবেশী ট্যাব</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">সম্পর্কিত পৃষ্ঠাগুলি সাজেস্ট করুন</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
index 493798e..64f17b9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Clar</translation>
 <translation id="1821253160463689938">Utilitza galetes per recordar les teves preferències, fins i tot si no visites aquestes pàgines</translation>
 <translation id="1829244130665387512">Cerca a la pàgina</translation>
-<translation id="1832521218263067499">Incidències de seguretat</translation>
 <translation id="1853692000353488670">Pestanya d'incògnit nova</translation>
 <translation id="1868024384445905608">Ara Chrome baixa els fitxers més ràpid</translation>
 <translation id="187628348035757895">Opcions per a desenvolupadors</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Accessibilitat</translation>
 <translation id="6985347914332179298">Aquí no hi ha cap baixada</translation>
 <translation id="6990079615885386641">Baixeu l'aplicació des de Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Informa automàticament Google dels detalls sobre possibles incidències de seguretat</translation>
 <translation id="6992289844737586249">Pregunta abans de permetre que els llocs utilitzin el micròfon (opció recomanada)</translation>
 <translation id="7016516562562142042">Es permet al motor de cerca actual</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> s'ha baixat</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
index 38da62e..2a057a4 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Světlé</translation>
 <translation id="1821253160463689938">Používá soubory cookie k uložení vašeho nastavení i v případě, že stránky nenavštívíte</translation>
 <translation id="1829244130665387512">Najít na stránce</translation>
-<translation id="1832521218263067499">Narušení zabezpečení</translation>
 <translation id="1853692000353488670">Nová anonymní karta</translation>
 <translation id="1868024384445905608">Chrome teď stahuje soubory rychleji</translation>
+<translation id="187628348035757895">Možnosti pro vývojáře</translation>
 <translation id="1878302395768190018">Toto nastavení můžete kdykoliv upravit v nastavení Chromu</translation>
 <translation id="1880072593381090678">Oblíbené stránky z Chromu</translation>
 <translation id="1883903952484604915">Moje soubory</translation>
@@ -303,7 +303,7 @@
 <translation id="3328801116991980348">Informace o stránkách</translation>
 <translation id="3341058695485821946">Podívejte se, kolik dat jste ušetřili</translation>
 <translation id="3350687908700087792">Zavřít všechny anonymní karty</translation>
-<translation id="3353615205017136254">Zjednodušená stránka je poskytována společností Google. Původní stránku načtete klepnutím na tlačítko k načtení původní verze.</translation>
+<translation id="3353615205017136254">Zjednodušenou stránku poskytuje Google. Klepnutím na tlačítko k načtení originálu zobrazíte původní verzi.</translation>
 <translation id="3365671512111106261">Není k dispozici, když je zapnut Spořič dat</translation>
 <translation id="3367813778245106622">Chcete-li zahájit synchronizaci, znovu se přihlaste.</translation>
 <translation id="3377025655491224618">Soukromá karta</translation>
@@ -429,9 +429,9 @@
 <translation id="4409723563706114196">Předvídat stránky</translation>
 <translation id="4419556793104466535">Ovládání synchronizace, personalizace apod.</translation>
 <translation id="4432792777822557199">Stránky v jazyce <ph name="SOURCE_LANGUAGE" /> od teď budou překládány do jazyka <ph name="TARGET_LANGUAGE" /></translation>
-<translation id="4433925000917964731">Zjednodušená stránka je poskytována společností Google</translation>
+<translation id="4433925000917964731">Zjednodušenou stránku poskytuje Google</translation>
 <translation id="4434045419905280838">Vyskakovací okna a přesměrování</translation>
-<translation id="4440958355523780886">Zjednodušená stránka je poskytována společností Google. Klepnutím načtete původní stránku.</translation>
+<translation id="4440958355523780886">Zjednodušenou stránku poskytuje Google. Klepnutím načtete originál.</translation>
 <translation id="4452411734226507615">Zavřít kartu <ph name="TAB_TITLE" /></translation>
 <translation id="4452548195519783679">Záložka přidána do složky <ph name="FOLDER_NAME" /></translation>
 <translation id="4453340223357552416">Soubor <ph name="FILE_NAME" /> byl stažen v prohlížeči <ph name="PRODUCT_NAME" /></translation>
@@ -557,7 +557,7 @@
 <translation id="5327248766486351172">Název</translation>
 <translation id="5335288049665977812">Povolit webům spouštět JavaScript (doporučeno)</translation>
 <translation id="5345040418939504969">Záložka <ph name="BOOKMARK_TITLE" /> byla smazána</translation>
-<translation id="5363230136052241468">Klepnutím na tlačítko plochy načtete stránku Nová karta</translation>
+<translation id="5363230136052241468">Klepnutím na tlačítko plochy načtete stránku nové karty</translation>
 <translation id="5372829067651257087">Adresa byla zkopírována.</translation>
 <translation id="5391532827096253100">Spojení s tímto webem není zabezpečené. Informace o webu</translation>
 <translation id="5400569084694353794">Používáním této aplikace vyjadřujete souhlas se <ph name="BEGIN_LINK1" />smluvními podmínkami<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />zásadami ochrany soukromí<ph name="END_LINK2" /> prohlížeče Chrome.</translation>
@@ -780,7 +780,7 @@
 <translation id="6912998170423641340">Blokovat webům přístup k textu a obrázkům zkopírovaným do schránky</translation>
 <translation id="6914783257214138813">Vaše hesla uvidí každý, kdo může zobrazit exportovaný soubor.</translation>
 <translation id="6942665639005891494">Výchozí umístění pro stažené soubory můžete kdykoliv změnit pomocí možnosti v nabídce Nastavení.</translation>
-<translation id="6944102653068653326">Klepnutím načtete stránku nová karta</translation>
+<translation id="6944102653068653326">Klepnutím načtete stránku nové karty</translation>
 <translation id="6945221475159498467">Vybrat</translation>
 <translation id="6963642900430330478">Tato stránka je nebezpečná. Informace o webu</translation>
 <translation id="6963766334940102469">Smazat záložky</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Usnadnění</translation>
 <translation id="6985347914332179298">Nejsou k dispozici žádné stažené soubory</translation>
 <translation id="6990079615885386641">Získat aplikaci z Obchodu Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automaticky Googlu hlásit podrobnosti možných bezpečnostních incidentů</translation>
 <translation id="6992289844737586249">Pokud web bude chtít použít váš mikrofon, zobrazit dotaz (doporučeno)</translation>
 <translation id="7016516562562142042">Pro aktuální vyhledávač povoleno</translation>
 <translation id="7021515813996758557">Soubor <ph name="FILE_NAME" /> byl stažen</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Otevřít na nové kartě</translation>
 <translation id="8084114998886531721">Uložené heslo</translation>
 <translation id="8087000398470557479">Tento obsah pochází z domény <ph name="DOMAIN_NAME" />. Poskytováno společností Google.</translation>
+<translation id="8087980556724996220">Asistent automatického vyplňování bude ukončen za <ph name="DURATION_SECONDS" /> s…</translation>
 <translation id="8103578431304235997">Anonymní karta</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Navrhovat související stránky</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
index 4e62a86..5d5a418 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Lys</translation>
 <translation id="1821253160463689938">Anvender cookies til at huske dine præferencer, også selvom du ikke besøger siderne</translation>
 <translation id="1829244130665387512">Find på siden</translation>
-<translation id="1832521218263067499">Sikkerhedshændelser</translation>
 <translation id="1853692000353488670">Ny inkognitofane</translation>
 <translation id="1868024384445905608">Chrome downloader nu filer endnu hurtigere</translation>
 <translation id="187628348035757895">Indstillinger for udviklere</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Hjælpefunktioner</translation>
 <translation id="6985347914332179298">Der er ingen downloads her</translation>
 <translation id="6990079615885386641">Hent appen i Google Play Butik: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Rapportér automatisk oplysninger om mulige sikkerhedshændelser til Google.</translation>
 <translation id="6992289844737586249">Spørg om tilladelse, inden websites bruger din mikrofon (anbefales)</translation>
 <translation id="7016516562562142042">Tilladt for den nuværende søgemaskine</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> blev downloadet</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
index 310d0d2..c0e2d0f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Hell</translation>
 <translation id="1821253160463689938">Zum Speichern Ihrer Einstellungen werden Cookies verwendet, auch wenn Sie diese Seiten nicht besuchen</translation>
 <translation id="1829244130665387512">Auf Seite suchen</translation>
-<translation id="1832521218263067499">Sicherheitsrelevante Zwischenfälle</translation>
 <translation id="1853692000353488670">Neuer Inkognito-Tab</translation>
 <translation id="1868024384445905608">In Chrome sind Downloads jetzt noch schneller</translation>
 <translation id="187628348035757895">Entwickleroptionen</translation>
@@ -690,7 +689,7 @@
 <translation id="6295158916970320988">Alle Websites</translation>
 <translation id="629730747756840877">Konto</translation>
 <translation id="6303969859164067831">Abmelden und die Synchronisierung ausschalten</translation>
-<translation id="6316139424528454185">Android-Version nicht unterst.</translation>
+<translation id="6316139424528454185">Android-Version nicht unterstützt</translation>
 <translation id="6320088164292336938">Vibrieren</translation>
 <translation id="6324034347079777476">Android-Systemsynchronisierung deaktiviert</translation>
 <translation id="6333140779060797560">Über <ph name="APPLICATION" /> teilen</translation>
@@ -710,7 +709,7 @@
 <translation id="641643625718530986">Drucken...</translation>
 <translation id="6416782512398055893"><ph name="MBS" /> MB heruntergeladen</translation>
 <translation id="6433501201775827830">Suchmaschine auswählen</translation>
-<translation id="6436016483175965362">Blick hineinwerfen</translation>
+<translation id="6436016483175965362">Vorschau</translation>
 <translation id="6437478888915024427">Seiteninfo</translation>
 <translation id="6447842834002726250">Cookies</translation>
 <translation id="6448273550210938826">Such- und URL-Vorschläge</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Bedienungshilfen</translation>
 <translation id="6985347914332179298">Keine Downloads vorhanden</translation>
 <translation id="6990079615885386641">App aus dem Play Store abrufen: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Details zu möglichen sicherheitsrelevanten Zwischenfällen automatisch an Google senden</translation>
 <translation id="6992289844737586249">Nachfragen, bevor Websites auf Ihr Mikrofon zugreifen dürfen (empfohlen)</translation>
 <translation id="7016516562562142042">Für die aktuelle Suchmaschine zugelassen</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> heruntergeladen</translation>
@@ -973,7 +971,7 @@
 <translation id="8428213095426709021">Einstellungen</translation>
 <translation id="8438566539970814960">Suchanfragen und das Surfen verbessern</translation>
 <translation id="8441146129660941386">Zurück navigieren</translation>
-<translation id="8443209985646068659">Chrome-Update nicht mögl.</translation>
+<translation id="8443209985646068659">Update nicht möglich</translation>
 <translation id="8445448999790540984">Passwörter können nicht exportiert werden</translation>
 <translation id="8447861592752582886">Zugriffsberechtigung auf Gerät widerrufen</translation>
 <translation id="8461694314515752532">Synchronisierte Daten mit eigener Synchronisierungspassphrase verschlüsseln</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
index 8af846e5..d18d03d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Ανοιχτόχρωμο</translation>
 <translation id="1821253160463689938">Χρησιμοποιεί cookie για την απομνημόνευση των προτιμήσεών σας, ακόμα κι αν δεν επισκέπτεστε αυτές τις σελίδες</translation>
 <translation id="1829244130665387512">Εύρεση στη σελίδα</translation>
-<translation id="1832521218263067499">Συμβάντα ασφαλείας</translation>
 <translation id="1853692000353488670">Νέα καρτέλα ανώνυμης περιήγησης</translation>
 <translation id="1868024384445905608">Το Chrome κατεβάζει πλέον τα αρχεία πιο γρήγορα</translation>
 <translation id="187628348035757895">Επιλογές για προγραμματιστές</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Προσβασιμότητα</translation>
 <translation id="6985347914332179298">Δεν υπάρχουν λήψεις εδώ</translation>
 <translation id="6990079615885386641">Λήψη της εφαρμογής από το Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Αυτόματη αναφορά στην Google των λεπτομερειών πιθανών περιστατικών ασφάλειας</translation>
 <translation id="6992289844737586249">Να γίνεται ερώτηση προτού επιτραπεί στους ιστότοπους να χρησιμοποιήσουν το μικρόφωνό σας (συνιστάται)</translation>
 <translation id="7016516562562142042">Επιτράπηκε για την τρέχουσα μηχανή αναζήτησης</translation>
 <translation id="7021515813996758557">Έγινε λήψη του αρχείου <ph name="FILE_NAME" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
index 96bed30d..e06903a3 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Light</translation>
 <translation id="1821253160463689938">Uses cookies to remember your preferences, even if you don't visit those pages</translation>
 <translation id="1829244130665387512">Find in page</translation>
-<translation id="1832521218263067499">Security incidents</translation>
 <translation id="1853692000353488670">New incognito tab</translation>
 <translation id="1868024384445905608">Chrome now downloads files faster</translation>
 <translation id="187628348035757895">Developer options</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Accessibility</translation>
 <translation id="6985347914332179298">No downloads here</translation>
 <translation id="6990079615885386641">Get the app from the Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automatically report details of possible security incidents to Google</translation>
 <translation id="6992289844737586249">Ask first before allowing sites to use your microphone (recommended)</translation>
 <translation id="7016516562562142042">Allowed for current search engine</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> downloaded</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
index 4ad121a..2347273 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Claro</translation>
 <translation id="1821253160463689938">Usa cookies para recordar tus preferencias, incluso si no visitas esas páginas</translation>
 <translation id="1829244130665387512">Buscar en la página</translation>
-<translation id="1832521218263067499">Incidentes de seguridad</translation>
 <translation id="1853692000353488670">Nueva pestaña de incógnito</translation>
 <translation id="1868024384445905608">Ahora Chrome descarga los archivos más rápido</translation>
+<translation id="187628348035757895">Opciones para desarrolladores</translation>
 <translation id="1878302395768190018">Puedes personalizar esta opción en la configuración de Chrome en cualquier momento</translation>
 <translation id="1880072593381090678">Páginas populares de Chrome</translation>
 <translation id="1883903952484604915">Mis archivos</translation>
@@ -689,7 +689,7 @@
 <translation id="6295158916970320988">Todos los sitios</translation>
 <translation id="629730747756840877">Cuenta</translation>
 <translation id="6303969859164067831">Salir y desactivar la sincronización</translation>
-<translation id="6316139424528454185">La versión de Android no es compatible</translation>
+<translation id="6316139424528454185">Versión Android no compatible</translation>
 <translation id="6320088164292336938">Vibrar</translation>
 <translation id="6324034347079777476">Sincronización del sistema Android inhabilitada</translation>
 <translation id="6333140779060797560">Compartir mediante <ph name="APPLICATION" /></translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Accesibilidad</translation>
 <translation id="6985347914332179298">No hay descargas disponibles</translation>
 <translation id="6990079615885386641">Descargar la aplicación desde Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Informar automáticamente detalles de posibles incidentes de seguridad a Google</translation>
 <translation id="6992289844737586249">Preguntar primero antes de permitir que los sitios usen tu micrófono (recomendado)</translation>
 <translation id="7016516562562142042">Se habilitó para el motor de búsqueda actual</translation>
 <translation id="7021515813996758557">Se descargó <ph name="FILE_NAME" /></translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Abrir imagen en pestaña nueva</translation>
 <translation id="8084114998886531721">Se guardó la contraseña</translation>
 <translation id="8087000398470557479">Este contenido es de <ph name="DOMAIN_NAME" />, publicado por Google.</translation>
+<translation id="8087980556724996220">El Asistente de autocompletar se detendrá en <ph name="DURATION_SECONDS" /> s…</translation>
 <translation id="8103578431304235997">Pestaña de incógnito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Sugerir páginas relacionadas</translation>
@@ -971,7 +971,7 @@
 <translation id="8428213095426709021">Configuración</translation>
 <translation id="8438566539970814960">Mejorar las búsquedas y la navegación</translation>
 <translation id="8441146129660941386">Buscar más atrás</translation>
-<translation id="8443209985646068659">No se puede actualizar Chrome</translation>
+<translation id="8443209985646068659">No se actualiza Chrome</translation>
 <translation id="8445448999790540984">No se pueden exportar las contraseñas</translation>
 <translation id="8447861592752582886">Revocar permiso para el dispositivo</translation>
 <translation id="8461694314515752532">Encriptar los datos sincronizados con tu propia frase de contraseña de sincronización</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
index 54253400..baaf32a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Claro</translation>
 <translation id="1821253160463689938">Usa cookies para recordar tus preferencias aunque no visites esas páginas</translation>
 <translation id="1829244130665387512">Buscar en la página</translation>
-<translation id="1832521218263067499">Incidentes de seguridad</translation>
 <translation id="1853692000353488670">Nueva pestaña de incógnito</translation>
 <translation id="1868024384445905608">Ahora Chrome descarga los archivos más rápido</translation>
+<translation id="187628348035757895">Opciones para desarrolladores</translation>
 <translation id="1878302395768190018">Puedes personalizarla en cualquier momento en la configuración de Chrome</translation>
 <translation id="1880072593381090678">Páginas populares de Chrome</translation>
 <translation id="1883903952484604915">Mis archivos</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Accesibilidad</translation>
 <translation id="6985347914332179298">No hay descargas</translation>
 <translation id="6990079615885386641">Descarga la aplicación en Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Enviar a Google automáticamente información sobre posibles incidentes de seguridad</translation>
 <translation id="6992289844737586249">Preguntar antes de permitir que los sitios web utilicen el micrófono (recomendado)</translation>
 <translation id="7016516562562142042">Permitido en el motor de búsqueda actual</translation>
 <translation id="7021515813996758557">Se ha descargado <ph name="FILE_NAME" /></translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Abrir en pestaña nueva</translation>
 <translation id="8084114998886531721">Contraseña guardada</translation>
 <translation id="8087000398470557479">Este contenido procede de <ph name="DOMAIN_NAME" />, publicado por Google.</translation>
+<translation id="8087980556724996220">El Asistente de Autocompletar se detendrá en <ph name="DURATION_SECONDS" /> segundos…</translation>
 <translation id="8103578431304235997">Pestaña de incógnito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Sugerir páginas relacionadas</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
index 5280153..7af8ed2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Hele</translation>
 <translation id="1821253160463689938">Kasutage küpsisefaile oma eelistuste meelespidamiseks isegi siis, kui te neid lehti ei külasta</translation>
 <translation id="1829244130665387512">Otsi leheküljelt</translation>
-<translation id="1832521218263067499">Turvaintsidendid</translation>
 <translation id="1853692000353488670">Uus inkognito vaheleht</translation>
 <translation id="1868024384445905608">Chrome laadib nüüd faile kiiremini alla</translation>
 <translation id="187628348035757895">Arendaja valikud</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Juurdepääsetavus</translation>
 <translation id="6985347914332179298">Siin ei ole ühtki allalaadimist</translation>
 <translation id="6990079615885386641">Hankige rakendus Google Play poest: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Teavita Google'it automaatselt võimalike turvaintsidentide üksikasjadest</translation>
 <translation id="6992289844737586249">Küsi enne saitidele minu mikrofoni kasutamiseks juurdepääsu lubamist (soovitatav)</translation>
 <translation id="7016516562562142042">Praeguse otsingumootori puhul lubatud</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> laaditi alla</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
index 9aa1987..4fda166 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">روشن</translation>
 <translation id="1821253160463689938">از کوکی‌ها برای به خاطر سپردن تنظیمات برگزیده‌تان استفاده می‌کند، حتی اگر از آن صفحه‌ها بازدید نکنید</translation>
 <translation id="1829244130665387512">یافتن در صفحه</translation>
-<translation id="1832521218263067499">حوادث امنیتی</translation>
 <translation id="1853692000353488670">برگه جدید ناشناس</translation>
 <translation id="1868024384445905608">‏اکنون Chrome فایل‌ها را سریع‌تر بارگیری می‌کند</translation>
+<translation id="187628348035757895">گزینه‌های برنامه‌نویس</translation>
 <translation id="1878302395768190018">‏هرزمان بخواهید می‌توانید این گزینه را در «تنظیمات Chrome» سفارشی کنید</translation>
 <translation id="1880072593381090678">‏صفحه‌های پرطرفدار Chrome</translation>
 <translation id="1883903952484604915">فایل‌های من</translation>
@@ -790,7 +790,6 @@
 <translation id="6981982820502123353">قابلیت دسترسی</translation>
 <translation id="6985347914332179298">بارگیری‌هایی اینجا وجود ندارد</translation>
 <translation id="6990079615885386641">‏دریافت برنامه از فروشگاه Google Play: ‏<ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">‏گزارش خودکار جزئیات حوادث امنیتی احتمالی به Google.</translation>
 <translation id="6992289844737586249">قبل از اجازه به سایت‌ها برای استفاده از میکروفون ابتدا سؤال شود (توصیه می‌شود)</translation>
 <translation id="7016516562562142042">برای موتور جستجوی فعلی مجاز است</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> بارگیری شد</translation>
@@ -936,6 +935,7 @@
 <translation id="8073388330009372546">باز کردن تصویر در برگه جدید</translation>
 <translation id="8084114998886531721">گذرواژه ذخیره‌شده</translation>
 <translation id="8087000398470557479">‏این محتوا از <ph name="DOMAIN_NAME" /> است و توسط Google ارائه می‌شود.</translation>
+<translation id="8087980556724996220">تکمیل خودکار «دستیار» ظرف <ph name="DURATION_SECONDS" /> ثانیه متوقف خواهد شد…</translation>
 <translation id="8103578431304235997">برگه ناشناس</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">پیشنهاد صفحه‌های مرتبط</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
index 523fb67..2fa6fe7d2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Vaalea</translation>
 <translation id="1821253160463689938">Käyttää evästeitä asetustesi muistamiseen, vaikka et kävisi kyseisillä sivuilla</translation>
 <translation id="1829244130665387512">Haku sivulta</translation>
-<translation id="1832521218263067499">Tietoturvatapaukset</translation>
 <translation id="1853692000353488670">Uusi incognito-välilehti</translation>
 <translation id="1868024384445905608">Chrome lataa tiedostot nyt nopeammin</translation>
 <translation id="187628348035757895">Kehittäjäasetukset</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Esteettömyys</translation>
 <translation id="6985347914332179298">Ei ladattuja kohteita</translation>
 <translation id="6990079615885386641">Hanki sovellus Google Play Kaupasta: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Ilmoita mahdollisista turvallisuusongelmista Googlelle automaattisesti</translation>
 <translation id="6992289844737586249">Pyydä lupaa, kun sivustot yrittävät käyttää mikrofonia (suositus).</translation>
 <translation id="7016516562562142042">Sallittu nykyisellä hakukoneella</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ladattiin.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
index 8773aa5..cb7001f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Maliwanag</translation>
 <translation id="1821253160463689938">Gumamit ng mga cookie para matandaan ang iyong mga kagustuhan, kahit na hindi mo binibisita ang mga page na iyon</translation>
 <translation id="1829244130665387512">Nahanap sa pahina</translation>
-<translation id="1832521218263067499">Mga insidenteng nauugnay sa seguridad</translation>
 <translation id="1853692000353488670">Bagong tab na incognito</translation>
 <translation id="1868024384445905608">Mas mabilis nang mag-download ng mga file ang Chrome</translation>
+<translation id="187628348035757895">Mga opsyon ng developer</translation>
 <translation id="1878302395768190018">Mako-customize mo ito anumang oras sa Mga Setting ng Chrome</translation>
 <translation id="1880072593381090678">Mga sikat na page mula sa Chrome</translation>
 <translation id="1883903952484604915">Aking Mga File</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Pagiging Maa-access</translation>
 <translation id="6985347914332179298">Walang mga download dito</translation>
 <translation id="6990079615885386641">Kunin ang app mula sa Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Awtomatikong iulat sa Google ang mga detalye ng mga posibleng isyu sa seguridad</translation>
 <translation id="6992289844737586249">Magtanong muna bago payagan ang mga site na gamitin ang iyong mikropono (inirerekomenda)</translation>
 <translation id="7016516562562142042">Pinapayagan para sa kasalukuyang search engine</translation>
 <translation id="7021515813996758557">Na-download na ang <ph name="FILE_NAME" /></translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Buksan ang larawan sa bagong tab</translation>
 <translation id="8084114998886531721">Naka-save na password</translation>
 <translation id="8087000398470557479">Ang content na ito ay mula sa <ph name="DOMAIN_NAME" />, na ipinadala ng Google.</translation>
+<translation id="8087980556724996220">Hihinto ang Autofill Assistant pagkalipas ng <ph name="DURATION_SECONDS" />…</translation>
 <translation id="8103578431304235997">Tab na Incognito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Magmungkahi ng mga nauugnay na page</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
index 13c4586..d8247700 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Clair</translation>
 <translation id="1821253160463689938">Utilise des cookies pour mémoriser vos préférences, même si vous n'accédez pas à ces pages</translation>
 <translation id="1829244130665387512">Rechercher sur la page</translation>
-<translation id="1832521218263067499">Incidents de sécurité</translation>
 <translation id="1853692000353488670">Nouvel onglet de navigation privée</translation>
 <translation id="1868024384445905608">Chrome permet désormais de télécharger des fichiers plus vite</translation>
 <translation id="187628348035757895">Options pour développeurs</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Accessibilité</translation>
 <translation id="6985347914332179298">Aucun téléchargement ici</translation>
 <translation id="6990079615885386641">Télécharger l'application sur le Google Play Store : <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Signaler automatiquement les incidents de sécurité potentiels à Google</translation>
 <translation id="6992289844737586249">Demander avant d'autoriser des sites à utiliser mon micro (recommandé)</translation>
 <translation id="7016516562562142042">Autorisé pour le moteur de recherche actuel</translation>
 <translation id="7021515813996758557">Le fichier "<ph name="FILE_NAME" />" a bien été téléchargé.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
index bd7162f..f5d728d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">આછું</translation>
 <translation id="1821253160463689938">તમારી પસંદગીઓ યાદ રાખવા માટે કુકીનો ઉપયોગ કરે છે, પછી ભલે તમે તે પેજની મુલાકાત ન પણ લો</translation>
 <translation id="1829244130665387512">આ પૃષ્ઠમાં શોધો</translation>
-<translation id="1832521218263067499">સુરક્ષા પ્રસંગો</translation>
 <translation id="1853692000353488670">નવી છુપી ટેબ</translation>
 <translation id="1868024384445905608">Chrome હવે ફાઇલોને વધુ ઝડપથી ડાઉનલોડ કરે છે</translation>
+<translation id="187628348035757895">ડેવલપરના વિકલ્પો</translation>
 <translation id="1878302395768190018">Chrome સેટિંગમાં તમે આને કોઈપણ સમયે કસ્ટમાઇઝ કરી શકો છો</translation>
 <translation id="1880072593381090678">Chromeમાંથી લોકપ્રિય પેજ</translation>
 <translation id="1883903952484604915">મારી ફાઇલો</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">ઍક્સેસિબિલિટી</translation>
 <translation id="6985347914332179298">અહીં કોઈ ડાઉનલોડ્સ નથી</translation>
 <translation id="6990079615885386641">Google Play Store માંથી ઍપ્લિકેશન મેળવો: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Google ને સંભવિત સુરક્ષા ઘટનાઓની વિગતોની આપમેળે જાણ કરો</translation>
 <translation id="6992289844737586249">સાઇટ્સને તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી આપતાં પહેલા પૂછો (ભલામણ કરેલ)</translation>
 <translation id="7016516562562142042">હાલનાં શોધ એંજિન માટે મંજૂર</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ડાઉનલોડ કરી</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">નવા ટેબમાં છબી ખોલો</translation>
 <translation id="8084114998886531721">સાચવેલ પાસવર્ડ</translation>
 <translation id="8087000398470557479">આ કન્ટેન્ટ <ph name="DOMAIN_NAME" /> માંથી, Google દ્વારા વિતરિત કરેલ છે.</translation>
+<translation id="8087980556724996220">આસિસ્ટંટ ઑટોમૅટિક રીતે ભરવાનું <ph name="DURATION_SECONDS" /> સેકન્ડમાં બંધ કરશે…</translation>
 <translation id="8103578431304235997">છૂપું ટૅબ</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">સંબંધિત પેજ સૂચવો</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
index bd0dddb..60762d5 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">हल्का</translation>
 <translation id="1821253160463689938">आपकी पसंद याद रखने के लिए कुकी का इस्तेमाल करती है, भले ही आप उन पेजों पर नहीं जाते</translation>
 <translation id="1829244130665387512">पेज में ढूंढें</translation>
-<translation id="1832521218263067499">सुरक्षा संबंधी घटनाएं</translation>
 <translation id="1853692000353488670">नया गुप्त टैब</translation>
 <translation id="1868024384445905608">Chrome अब ज़्यादा तेज़ी से फ़ाइलें डाउनलोड करता है</translation>
+<translation id="187628348035757895">डेवलपर के लिए सेटिंग और टूल</translation>
 <translation id="1878302395768190018">आप किसी भी समय Chrome सेटिंग में जाकर इसे अपनी पसंद के मुताबिक बना सकते हैं</translation>
 <translation id="1880072593381090678">Chrome से लोकप्रिय पेज</translation>
 <translation id="1883903952484604915">मेरी फ़ाइलें</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">पहुंच क्षमता</translation>
 <translation id="6985347914332179298">यहां कोई डाउनलोड मौजूद नहीं है</translation>
 <translation id="6990079615885386641">Google Play स्‍टोर से ऐप प्राप्‍त करें: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Google को संभावित सुरक्षा घटनाओं के विवरणों की अपने आप रिपोर्ट करें</translation>
 <translation id="6992289844737586249">साइट को अपने माइक्रोफ़ोन का उपयोग करने देने से पहले अनुमति लेना आवश्यक बनाएं (अनुशंसित)</translation>
 <translation id="7016516562562142042">अभी वाले खोज इंजन के लिए अनुमति दी गई</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> को डाउनलोड किया गया</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">चित्र नए टैब में खोलें</translation>
 <translation id="8084114998886531721">सहेजा गया पासवर्ड</translation>
 <translation id="8087000398470557479">यह सामग्री <ph name="DOMAIN_NAME" /> की है जिसे Google के द्वारा वितरित किया गया है.</translation>
+<translation id="8087980556724996220">अपने आप भरने की सुविधा (ऑटो फ़िल) Assistant <ph name="DURATION_SECONDS" /> में बंद हो जाएगी…</translation>
 <translation id="8103578431304235997">गुप्त टैब</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">मिलते-जुलते पेज सुझाएं</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
index 24531d2..08b4ca5 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Svijetlo</translation>
 <translation id="1821253160463689938">Upotrebljava kolačiće za pamćenje vaših postavki, čak i ako ne posjetite te stranice</translation>
 <translation id="1829244130665387512">Traži na stranici</translation>
-<translation id="1832521218263067499">Sigurnosni incidenti</translation>
 <translation id="1853692000353488670">Nova anonimna kartica</translation>
 <translation id="1868024384445905608">Chrome sada brže preuzima datoteke</translation>
 <translation id="187628348035757895">Opcije za razvojne programere</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Pristupačnost</translation>
 <translation id="6985347914332179298">Ovdje nema preuzimanja</translation>
 <translation id="6990079615885386641">Preuzmite aplikaciju iz Trgovine Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automatski prijavi Googleu pojedinosti o mogućim sigurnosnim incidentima</translation>
 <translation id="6992289844737586249">Web-lokacije moraju tražiti dopuštenje za upotrebu mikrofona (preporučeno)</translation>
 <translation id="7016516562562142042">Dopušteno za trenutačnu tražilicu</translation>
 <translation id="7021515813996758557">Datoteka <ph name="FILE_NAME" /> je preuzeta</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
index 90c7c8f..a34a66a0 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Világos</translation>
 <translation id="1821253160463689938">Cookie-kat használ a preferenciák megjegyzésére még akkor is, ha Ön nem keresi fel az adott oldalakat</translation>
 <translation id="1829244130665387512">Keresés ezen az oldalon</translation>
-<translation id="1832521218263067499">Biztonsággal kapcsolatos események</translation>
 <translation id="1853692000353488670">Új inkognitólap</translation>
 <translation id="1868024384445905608">Mostantól a Chrome gyorsabban tölti le a fájlokat</translation>
 <translation id="187628348035757895">Fejlesztői beállítások</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Kisegítő lehetőségek</translation>
 <translation id="6985347914332179298">Itt nincsenek letöltések</translation>
 <translation id="6990079615885386641">Alkalmazás beszerzése a Google Play Áruházból: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Az esetleges biztonsági események automatikus jelentése a Google-nak</translation>
 <translation id="6992289844737586249">Kérdezzen rá, mielőtt engedélyezné a webhelyek számára a mikrofon használatát (ajánlott)</translation>
 <translation id="7016516562562142042">Engedélyezett a jelenlegi keresőmotor számára</translation>
 <translation id="7021515813996758557">A(z) <ph name="FILE_NAME" /> letöltve</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
index 092798772..335b8c8 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Terang</translation>
 <translation id="1821253160463689938">Menggunakan cookie untuk mengingat preferensi, meski Anda tidak membuka halaman tersebut</translation>
 <translation id="1829244130665387512">Cari di halaman</translation>
-<translation id="1832521218263067499">Insiden keamanan</translation>
 <translation id="1853692000353488670">Tab penyamaran baru</translation>
 <translation id="1868024384445905608">Chrome sekarang mendownload file lebih cepat</translation>
+<translation id="187628348035757895">Opsi developer</translation>
 <translation id="1878302395768190018">Anda dapat menyesuaikan ini kapan saja di Setelan Chrome</translation>
 <translation id="1880072593381090678">Halaman populer dari Chrome</translation>
 <translation id="1883903952484604915">File Saya</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Aksesibilitas</translation>
 <translation id="6985347914332179298">Tidak ada download di sini</translation>
 <translation id="6990079615885386641">Dapatkan aplikasi dari Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Otomatis melaporkan detail kemungkinan insiden keamanan ke Google</translation>
 <translation id="6992289844737586249">Tanya terlebih dahulu sebelum mengizinkan situs menggunakan mikrofon Anda (disarankan)</translation>
 <translation id="7016516562562142042">Diizinkan untuk mesin telusur yang sedang digunakan</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> didownload</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Buka gambar di tab baru</translation>
 <translation id="8084114998886531721">Sandi tersimpan</translation>
 <translation id="8087000398470557479">Konten ini dari <ph name="DOMAIN_NAME" />, dikirimkan oleh Google.</translation>
+<translation id="8087980556724996220">Asisten IsiOtomatis akan berhenti dalam <ph name="DURATION_SECONDS" />d…</translation>
 <translation id="8103578431304235997">Tab Penyamaran</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Sarankan halaman terkait</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
index 829b9419..fbce846 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Chiaro</translation>
 <translation id="1821253160463689938">Utilizza i cookie per memorizzare le tue preferenze, anche se non visiti quelle pagine</translation>
 <translation id="1829244130665387512">Trova nella pagina</translation>
-<translation id="1832521218263067499">Problemi di sicurezza</translation>
 <translation id="1853692000353488670">Nuova scheda in incognito</translation>
 <translation id="1868024384445905608">Ora Chrome scarica i file più velocemente</translation>
 <translation id="187628348035757895">Opzioni sviluppatore</translation>
@@ -710,7 +709,7 @@
 <translation id="641643625718530986">Stampa…</translation>
 <translation id="6416782512398055893">Sono stati scaricati <ph name="MBS" /> MB</translation>
 <translation id="6433501201775827830">Scegli il motore di ricerca</translation>
-<translation id="6436016483175965362">Breve anteprima</translation>
+<translation id="6436016483175965362">Dai un'occhiata</translation>
 <translation id="6437478888915024427">Informazioni sulla pagina</translation>
 <translation id="6447842834002726250">Cookie</translation>
 <translation id="6448273550210938826">Suggerimenti di ricerca e URL</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Accessibilità</translation>
 <translation id="6985347914332179298">Nessun download qui</translation>
 <translation id="6990079615885386641">Scarica l'app dal Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Segnala automaticamente a Google i dettagli dei possibili problemi di sicurezza</translation>
 <translation id="6992289844737586249">Chiedi conferma prima di consentire ai siti di utilizzare il microfono (opzione consigliata)</translation>
 <translation id="7016516562562142042">Consentita per il motore di ricerca corrente</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> scaricato</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
index f08227b..49d3984 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">בהיר</translation>
 <translation id="1821253160463689938">‏שימוש בקובצי cookie כדי לשמור את ההעדפות שלך, גם אם לא נכנסת אל הדפים האלה</translation>
 <translation id="1829244130665387512">חפש בדף</translation>
-<translation id="1832521218263067499">תקריות אבטחה</translation>
 <translation id="1853692000353488670">כרטיסייה חדשה לגלישה בסתר</translation>
 <translation id="1868024384445905608">‏הורדת קבצים ב-Chrome מתבצעת עכשיו מהר יותר</translation>
 <translation id="187628348035757895">אפשרויות למפתחים</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">נגישות</translation>
 <translation id="6985347914332179298">אין כאן הורדות</translation>
 <translation id="6990079615885386641">‏קבל את האפליקציה מחנות Google Play‏: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">‏דיווח אוטומטית ל-Google על פרטים של בעיות אבטחה אפשריות</translation>
 <translation id="6992289844737586249">שאל לפני שתאפשר לאתרים להשתמש במיקרופון (מומלץ)</translation>
 <translation id="7016516562562142042">מופעל למנוע החיפוש הנוכחי</translation>
 <translation id="7021515813996758557">הורדת הקובץ <ph name="FILE_NAME" /> בוצעה</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
index 885ede2..0da7430a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">明</translation>
 <translation id="1821253160463689938">Cookie を使って設定を保存します(これらのページにアクセスしない場合も Cookie が保持されます)</translation>
 <translation id="1829244130665387512">ページ内検索</translation>
-<translation id="1832521218263067499">セキュリティに関する事象</translation>
 <translation id="1853692000353488670">新しいシークレット タブ</translation>
 <translation id="1868024384445905608">Chrome でのファイルのダウンロードがさらに速くなりました</translation>
+<translation id="187628348035757895">開発者向けオプション</translation>
 <translation id="1878302395768190018">この設定は Chrome の [設定] ページでいつでもカスタマイズできます</translation>
 <translation id="1880072593381090678">Chrome でよくアクセスするページ</translation>
 <translation id="1883903952484604915">マイファイル</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">ユーザー補助機能</translation>
 <translation id="6985347914332179298">ここにダウンロードしたアイテムはありません</translation>
 <translation id="6990079615885386641">Google Play ストアからアプリを入手: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">セキュリティに関する事象についての詳細を Google に自動送信する</translation>
 <translation id="6992289844737586249">サイトにマイクの使用を許可する前に確認する(推奨)</translation>
 <translation id="7016516562562142042">現在の検索エンジンに対しては許可</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> をダウンロードしました</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">新しいタブで画像を開く</translation>
 <translation id="8084114998886531721">保存したパスワード</translation>
 <translation id="8087000398470557479"><ph name="DOMAIN_NAME" /> のコンテンツを Google から配信しています。</translation>
+<translation id="8087980556724996220">自動入力アシスタントはあと <ph name="DURATION_SECONDS" /> 秒で停止します…</translation>
 <translation id="8103578431304235997">シークレット タブ</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">関連ページを表示する</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
index a44021b..67f9141a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
@@ -115,9 +115,9 @@
 <translation id="1807246157184219062">ತಿಳಿ</translation>
 <translation id="1821253160463689938">ನೀವು ಆ ಪುಟಗಳಿಗೆ ಭೇಟಿ ನೀಡದಿದ್ದರೂ, ನಿಮ್ಮ ಆದ್ಯತೆಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಕುಕೀಗಳನ್ನು ಬಳಸುತ್ತದೆ</translation>
 <translation id="1829244130665387512">ಪುಟದಲ್ಲಿ ಹುಡುಕಿ</translation>
-<translation id="1832521218263067499">ಭದ್ರತೆ ಘಟನೆಗಳು</translation>
 <translation id="1853692000353488670">ಹೊಸ ಅದೃಶ್ಯ ವಿಂಡೋ</translation>
 <translation id="1868024384445905608">Chrome ಈಗ ಫೈಲ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ</translation>
+<translation id="187628348035757895">ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು</translation>
 <translation id="1878302395768190018">Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಇದನ್ನು ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬೇಕಾದರೂ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು</translation>
 <translation id="1880072593381090678">Chrome ನಿಂದ ಜನಪ್ರಿಯ ಪುಟಗಳು</translation>
 <translation id="1883903952484604915">ನನ್ನ ಫೈಲ್‌ಗಳು</translation>
@@ -792,7 +792,6 @@
 <translation id="6981982820502123353">ಪ್ರವೇಶ</translation>
 <translation id="6985347914332179298">ಇಲ್ಲಿ ಯಾವುದೇ ಡೌನ್‌ಲೋಡ್‌ಗಳು ಇಲ್ಲ</translation>
 <translation id="6990079615885386641">Google Play Store ನಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಪಡೆದುಕೊಳ್ಳಿ: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">ಸಂಭಾವ್ಯ ಸುರಕ್ಷತಾ ಸಂಬಂಧಿತ ಘಟನೆಗಳ ವಿವರಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವರದಿ ಮಾಡು</translation>
 <translation id="6992289844737586249">ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್‍ ಬಳಸಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸುವ ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="7016516562562142042">ಪ್ರಸ್ತುತ ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗೆ ಅನುಮತಿಸಲಾಗಿದೆ</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
@@ -938,6 +937,7 @@
 <translation id="8073388330009372546">ಚಿತ್ರವನ್ನು ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ  ತೆರೆಯಿರಿ</translation>
 <translation id="8084114998886531721">ಉಳಿಸಿರುವ ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="8087000398470557479"><ph name="DOMAIN_NAME" /> ಡೊಮೇನ್‌‌ನ ಈ ವಿಷಯವನ್ನು Google ನಿಂದ ವಿತರಿಸಲಾಗಿದೆ.</translation>
+<translation id="8087980556724996220">ಸ್ವಯಂ ಭರ್ತಿ ಸಹಾಯಕವು <ph name="DURATION_SECONDS" /> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ…</translation>
 <translation id="8103578431304235997">ಅದೃಶ್ಯ ಟ್ಯಾಬ್‌</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">ಸಂಬಂಧಿತ ಪುಟಗಳನ್ನು ಸೂಚಿಸಿ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
index 3945106..c050d42 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">밝게</translation>
 <translation id="1821253160463689938">페이지를 방문하지 않더라도 쿠키를 사용하여 환경설정 저장</translation>
 <translation id="1829244130665387512">페이지에서 찾기</translation>
-<translation id="1832521218263067499">보안 사고</translation>
 <translation id="1853692000353488670">새 시크릿 탭</translation>
 <translation id="1868024384445905608">이제 Chrome에서 파일을 더 빠르게 다운로드합니다.</translation>
+<translation id="187628348035757895">개발자 옵션</translation>
 <translation id="1878302395768190018">Chrome 설정에서 언제든지 맞춤설정할 수 있습니다.</translation>
 <translation id="1880072593381090678">Chrome 인기 페이지</translation>
 <translation id="1883903952484604915">내 파일</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">접근성</translation>
 <translation id="6985347914332179298">다운로드 항목 없음</translation>
 <translation id="6990079615885386641">Google Play 스토어에서 앱 다운로드: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 신고합니다.</translation>
 <translation id="6992289844737586249">사이트에서 마이크를 사용하기 전에 확인(권장)</translation>
 <translation id="7016516562562142042">현재 검색 엔진에 허용됨</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" />(이)가 다운로드됨</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">새 탭에서 이미지 열기</translation>
 <translation id="8084114998886531721">저장된 비밀번호</translation>
 <translation id="8087000398470557479">이 콘텐츠의 출처는 Google에서 제공하는 <ph name="DOMAIN_NAME" />입니다.</translation>
+<translation id="8087980556724996220">자동 완성 도우미가 <ph name="DURATION_SECONDS" />초 후 중지됩니다…</translation>
 <translation id="8103578431304235997">시크릿 탭</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">관련 페이지 추천</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
index 1d1dc8f..2f95a61 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Šviesi</translation>
 <translation id="1821253160463689938">Naudojami slapukai, siekiant įsiminti jūsų nuostatas, net jei nesilankote tuose puslapiuose</translation>
 <translation id="1829244130665387512">Surasti puslapyje</translation>
-<translation id="1832521218263067499">Su sauga susiję įvykiai</translation>
 <translation id="1853692000353488670">Naujas inkognito skirtukas</translation>
 <translation id="1868024384445905608">Dabar „Chrome“ failus atsisiunčia greičiau</translation>
 <translation id="187628348035757895">Kūrėjo parinktys</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Pritaikymas neįgaliesiems</translation>
 <translation id="6985347914332179298">Čia nėra jokių atsisiuntimų</translation>
 <translation id="6990079615885386641">Gauti programą iš „Google Play“ parduotuvės: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automatiškai pateikti išsamią informaciją apie galimas saugos problemas „Google“.</translation>
 <translation id="6992289844737586249">Pirmiausia klausti prieš leidžiant svetainėms naudoti mikrofoną (rekomenduojama)</translation>
 <translation id="7016516562562142042">Leidžiama dabartiniam paieškos varikliui</translation>
 <translation id="7021515813996758557">Failas „<ph name="FILE_NAME" />“ atsisiųstas</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
index e92dd8a..193baf59 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Gaišs</translation>
 <translation id="1821253160463689938">Izmanto sīkfailus, lai iegaumētu jūsu preferences, pat ja neapmeklējāt šīs lapas</translation>
 <translation id="1829244130665387512">Atrast lapā</translation>
-<translation id="1832521218263067499">Drošības problēmas</translation>
 <translation id="1853692000353488670">Jauna inkognito cilne</translation>
 <translation id="1868024384445905608">Tagad pārlūkā Chrome faili tiek lejupielādēti ātrāk.</translation>
 <translation id="187628348035757895">Izstrādātāju opcijas</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Pieejamība</translation>
 <translation id="6985347914332179298">Šeit nav nevienas lejupielādes.</translation>
 <translation id="6990079615885386641">Iegūstiet lietotni Google Play veikalā: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automātiski nosūtīt Google serveriem informāciju par iespējamām drošības problēmām</translation>
 <translation id="6992289844737586249">Jautāt, pirms atļaut vietnēm izmantot jūsu mikrofonu (ieteicams)</translation>
 <translation id="7016516562562142042">Atļauta pašreizējai meklētājprogrammai</translation>
 <translation id="7021515813996758557">Fails <ph name="FILE_NAME" /> ir lejupielādēts.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
index f7a8d63..f9593293 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">ലൈറ്റ്</translation>
 <translation id="1821253160463689938">നിങ്ങൾ ആ പേജുകൾ സന്ദർശിക്കുന്നില്ലെങ്കിൽ പോലും, നിങ്ങളുടെ മുൻഗണനകൾ ഓർമ്മിക്കുന്നതിന് കുക്കികളെ ഉപയോഗിക്കുന്നു</translation>
 <translation id="1829244130665387512">പേജില്‍ കണ്ടുപിടിക്കുക</translation>
-<translation id="1832521218263067499">സുരക്ഷാ സംഭവങ്ങൾ</translation>
 <translation id="1853692000353488670">പുതിയ ആൾമാറാട്ട ടാബ്</translation>
 <translation id="1868024384445905608">Chrome ഇപ്പോൾ വേഗത്തിൽ ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യുന്നു</translation>
+<translation id="187628348035757895">ഡെവലപ്പർ ഓപ്‌ഷനുകൾ</translation>
 <translation id="1878302395768190018">Chrome ക്രമീകരണത്തിൽ, ഏത് സമയത്തും നിങ്ങൾക്കിത് ഇഷ്‌ടാനുസൃതമാക്കാം</translation>
 <translation id="1880072593381090678">Chrome-ൽ നിന്നുള്ള ജനപ്രിയ പേജുകൾ</translation>
 <translation id="1883903952484604915">എന്റെ ഫയലുകൾ</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">ഉപയോഗസഹായി</translation>
 <translation id="6985347914332179298">ഇവിടെ ഡൗൺലോഡുകളൊന്നുമില്ല</translation>
 <translation id="6990079615885386641">Google Play സ്റ്റോറിൽ നിന്ന് അപ്ലിക്കേഷൻ സ്വീകരിക്കുക: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">സുരക്ഷയെ ബാധിക്കാൻ സാധ്യതയുള്ള കാര്യങ്ങളുടെ വിശദാംശങ്ങൾ Google-ൽ സ്വയമേവ റിപ്പോർട്ടുചെയ്യുന്നു</translation>
 <translation id="6992289844737586249">നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കാൻ സൈറ്റുകളെ അനുവദിക്കുന്നതിന് മുമ്പ് ആദ്യം ചോദിക്കുക (ശുപാർശചെയ്‌തിരിക്കുന്നു)</translation>
 <translation id="7016516562562142042">നിലവിലെ തിരയൽ എഞ്ചിനിൽ അനുവദിച്ചിരിക്കുന്നു</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> ഡൗൺലോഡുചെയ്‌തു</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">ചിത്രം പുതിയ ടാബിൽ തുറക്കുക</translation>
 <translation id="8084114998886531721">സംരക്ഷിച്ച പാസ്‌വേഡ്</translation>
 <translation id="8087000398470557479">ഈ ഉള്ളടക്കം Google-ൽ നിന്നുള്ള <ph name="DOMAIN_NAME" /> ഡൊമെയ്‌നിൽ നിന്നുള്ളതാണ്.</translation>
+<translation id="8087980556724996220">'സ്വമേധയാ പൂരിപ്പിക്കൽ അസിസ്റ്റന്റ്' <ph name="DURATION_SECONDS" />സെക്കന്‍ഡില്‍ പ്രവര്‍ത്തനം അവസാനിപ്പിക്കും…</translation>
 <translation id="8103578431304235997">ആൾമാറാട്ട ടാബ്</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">ബന്ധപ്പെട്ട പേജുകൾ നിർദ്ദേശിക്കുക</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
index 4d20024..4440919 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">फिकट</translation>
 <translation id="1821253160463689938">तुम्ही त्या पेजना भेट दिली नसली तरीही, तुमची प्राधान्ये लक्षात ठेवण्यासाठी कुकीचा वापर करते</translation>
 <translation id="1829244130665387512">या पृष्ठामध्ये शोधा</translation>
-<translation id="1832521218263067499">सुरक्षितता घटना</translation>
 <translation id="1853692000353488670">नवीन गुप्त टॅब</translation>
 <translation id="1868024384445905608">Chrome आता फायली वेगाने डाउनलोड करते</translation>
+<translation id="187628348035757895">डेव्‍हलपर पर्याय</translation>
 <translation id="1878302395768190018">तुम्ही Chrome सेटिंग्जमध्ये हे कधीही कस्टमाइझ करू शकता</translation>
 <translation id="1880072593381090678">Chrome ची लोकप्रिय पेज</translation>
 <translation id="1883903952484604915">माझ्या फायली</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">प्रवेशयोग्यता</translation>
 <translation id="6985347914332179298">येथे डाउनलोड नाहीत</translation>
 <translation id="6990079615885386641">Google Play Store मधून अॅप मिळवा: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Google कडे संभाव्य सुरक्षितता घटनांच्या तपशीलांची ऑटोमॅटिक तक्रार करा</translation>
 <translation id="6992289844737586249">साइटना तुमचा मायक्रोफोन वापरण्याची अनुमती देण्यापूर्वी प्रथम विचारा (शिफारस केलेले)</translation>
 <translation id="7016516562562142042">वर्तमान शोध इंजिनसाठी अनुमती दिली</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> डाउनलोड केले</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">नवीन टॅबमध्ये इमेज उघडा</translation>
 <translation id="8084114998886531721">सेव्ह केलेले पासवर्ड</translation>
 <translation id="8087000398470557479">Google ने वितरित केलेली ही सामग्री, <ph name="DOMAIN_NAME" /> मधील आहे.</translation>
+<translation id="8087980556724996220">ऑटोफिल असिस्टंट <ph name="DURATION_SECONDS" />से मध्ये थांबेल…</translation>
 <translation id="8103578431304235997">गुप्त टॅब</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">संबंधित पेज सूचवा</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
index 4fd6686..d1c01b9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Cahaya</translation>
 <translation id="1821253160463689938">Menggunakan kuki untuk mengingati pilihan anda, walaupun anda tidak melawati halaman tersebut</translation>
 <translation id="1829244130665387512">Cari dalam halaman</translation>
-<translation id="1832521218263067499">Insiden keselamatan</translation>
 <translation id="1853692000353488670">Tab inkognito baharu</translation>
 <translation id="1868024384445905608">Chrome kini memuat turun fail dengan lebih pantas</translation>
+<translation id="187628348035757895">Pilihan pembangun</translation>
 <translation id="1878302395768190018">Anda boleh menyesuaikan pilihan ini pada bila-bila masa dalam Tetapan Chrome</translation>
 <translation id="1880072593381090678">Halaman popular daripada Chrome</translation>
 <translation id="1883903952484604915">Fail Saya</translation>
@@ -133,7 +133,7 @@
 <translation id="1946005195648379376">Kawal cara Google menggunakan sejarah penyemakan imbas anda untuk memperibadikan Carian dan perkhidmatan Google yang lain.</translation>
 <translation id="1952172573699511566">Tapak web akan menunjukkan teks dalam bahasa pilihan anda, jika boleh.</translation>
 <translation id="195283394249132567">Perkhidmatan Google diperibadikan</translation>
-<translation id="1960290143419248813">Kemas kini Chrome tidak disokong untuk versi Android ini lagi.</translation>
+<translation id="1960290143419248813">Kemas kini Chrome tidak disokong untuk versi Android ini lagi</translation>
 <translation id="1966710179511230534">Sila kemas kini butiran log masuk anda.</translation>
 <translation id="1974060860693918893">Lanjutan</translation>
 <translation id="1984937141057606926">Dibenarkan, kecuali pihak ketiga</translation>
@@ -431,7 +431,7 @@
 <translation id="4432792777822557199">Halaman dalam <ph name="SOURCE_LANGUAGE" /> akan diterjemahkan kepada <ph name="TARGET_LANGUAGE" /> bermula dari sekarang</translation>
 <translation id="4433925000917964731">Halaman Lite disediakan oleh Google</translation>
 <translation id="4434045419905280838">Tetingkap timbul dan ubah hala</translation>
-<translation id="4440958355523780886">Halaman Lite yang disediakan oleh Google. Ketik untuk memuatkan halaman asal.</translation>
+<translation id="4440958355523780886">Halaman Lite disediakan oleh Google. Ketik untuk memuatkan halaman asal.</translation>
 <translation id="4452411734226507615">Tutup tab <ph name="TAB_TITLE" /></translation>
 <translation id="4452548195519783679">Ditandai halaman ke <ph name="FOLDER_NAME" /></translation>
 <translation id="4453340223357552416"><ph name="FILE_NAME" /> dimuat turun dalam <ph name="PRODUCT_NAME" /></translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Kebolehcapaian</translation>
 <translation id="6985347914332179298">Tiada muat turun di sini</translation>
 <translation id="6990079615885386641">Dapatkan apl daripada Gedung Play Google: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Laporkan butiran kemungkinan insiden keselamatan kepada Google secara automatik</translation>
 <translation id="6992289844737586249">Tanya dahulu sebelum membenarkan tapak menggunakan mikrofon anda (disyorkan)</translation>
 <translation id="7016516562562142042">Dibenarkan untuk enjin carian semasa</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> dimuat turun</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Buka imej dalam tab baharu</translation>
 <translation id="8084114998886531721">Kata laluan disimpan</translation>
 <translation id="8087000398470557479">Kandungan ini adalah daripada <ph name="DOMAIN_NAME" />, disampaikan oleh Google.</translation>
+<translation id="8087980556724996220">Pembantu Autolengkap akan berhenti dalam masa <ph name="DURATION_SECONDS" />s…</translation>
 <translation id="8103578431304235997">Tab Inkognito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Cadangkan halaman yang berkaitan</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
index 12dacc7..b09fe632 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Licht</translation>
 <translation id="1821253160463689938">Maakt gebruik van cookies om je voorkeuren te onthouden, zelfs als je deze pagina's niet bezoekt</translation>
 <translation id="1829244130665387512">Vinden op pagina</translation>
-<translation id="1832521218263067499">Beveiligingsincidenten</translation>
 <translation id="1853692000353488670">Nieuw incognitotabblad</translation>
 <translation id="1868024384445905608">Chrome downloadt bestanden nu sneller</translation>
 <translation id="187628348035757895">Ontwikkelaarsopties</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Toegankelijkheid</translation>
 <translation id="6985347914332179298">Geen downloads hier</translation>
 <translation id="6990079615885386641">Download de app uit de Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automatisch informatie over mogelijke beveiligingsincidenten aan Google melden</translation>
 <translation id="6992289844737586249">Eerst vragen voordat sites je microfoon mogen gebruiken (aanbevolen)</translation>
 <translation id="7016516562562142042">Toegestaan voor huidige zoekmachine</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> gedownload</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
index 4817da6d..bc4faa67 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Lys</translation>
 <translation id="1821253160463689938">Bruker informasjonskapsler til å huske preferansene dine, selv om du ikke går til de sidene</translation>
 <translation id="1829244130665387512">Finn på side</translation>
-<translation id="1832521218263067499">Sikkerhetshendelser</translation>
 <translation id="1853692000353488670">Ny inkognitofane</translation>
 <translation id="1868024384445905608">Chrome laster ned filer raskere nå</translation>
+<translation id="187628348035757895">Utvikleralternativer</translation>
 <translation id="1878302395768190018">Du kan når som helst tilpasse dette i Chrome-innstillingene</translation>
 <translation id="1880072593381090678">Populære sider fra Chrome</translation>
 <translation id="1883903952484604915">Mine filer</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Tilgjengelighet</translation>
 <translation id="6985347914332179298">Det finnes ingen nedlastinger her</translation>
 <translation id="6990079615885386641">Last ned appen fra Google Play Butikk: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Rapportér detaljer om mulige sikkerhetsbrudd til Google automatisk</translation>
 <translation id="6992289844737586249">Spør før nettsteder får bruke mikrofonen (anbefales)</translation>
 <translation id="7016516562562142042">Tillatt for den aktive søkemotoren</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> er lastet ned</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Åpne bildet i en ny fane</translation>
 <translation id="8084114998886531721">Lagret passord</translation>
 <translation id="8087000398470557479">Dette innholdet er fra <ph name="DOMAIN_NAME" /> og er levert av Google.</translation>
+<translation id="8087980556724996220">Autofill Assistant stopper om <ph name="DURATION_SECONDS" /> sek</translation>
 <translation id="8103578431304235997">Inkognitofane</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Foreslå relaterte sider</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
index fb36d68..c83bd3f9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Jasny</translation>
 <translation id="1821253160463689938">Twoje ustawienia będą zapisywane w plikach cookie, nawet jeśli nie odwiedzisz tych stron</translation>
 <translation id="1829244130665387512">Znajdź na stronie</translation>
-<translation id="1832521218263067499">Incydenty dotyczące zabezpieczeń</translation>
 <translation id="1853692000353488670">Nowa karta incognito</translation>
 <translation id="1868024384445905608">Chrome pobiera pliki jeszcze szybciej</translation>
+<translation id="187628348035757895">Opcje programisty</translation>
 <translation id="1878302395768190018">Możesz w dowolnym momencie zmienić tę opcję w Ustawieniach Chrome</translation>
 <translation id="1880072593381090678">Popularne strony z Chrome</translation>
 <translation id="1883903952484604915">Moje pliki</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Ułatwienia dostępu</translation>
 <translation id="6985347914332179298">Brak pobranych plików</translation>
 <translation id="6990079615885386641">Pobierz aplikację ze sklepu Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automatycznie przesyłaj do Google szczegółowe informacje o możliwych zagrożeniach</translation>
 <translation id="6992289844737586249">Pytaj, zanim zezwolisz stronom na korzystanie z mikrofonu (zalecane)</translation>
 <translation id="7016516562562142042">Zezwolono na dostęp obecnej wyszukiwarce</translation>
 <translation id="7021515813996758557">Plik <ph name="FILE_NAME" /> został pobrany</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Otwórz grafikę w nowej karcie</translation>
 <translation id="8084114998886531721">Zapisane hasło</translation>
 <translation id="8087000398470557479">Treść z <ph name="DOMAIN_NAME" /> dostarczana przez Google.</translation>
+<translation id="8087980556724996220">Asystent autouzupełniania przestanie działać za <ph name="DURATION_SECONDS" /> s…</translation>
 <translation id="8103578431304235997">Karta incognito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Sugeruj powiązane strony</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
index ca796add..d82db23e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Claro</translation>
 <translation id="1821253160463689938">Utiliza cookies para lembrar suas preferências, mesmo se você não acessar essas páginas</translation>
 <translation id="1829244130665387512">Encontrar na página</translation>
-<translation id="1832521218263067499">Incidentes de segurança</translation>
 <translation id="1853692000353488670">Nova guia anônima</translation>
 <translation id="1868024384445905608">Agora o Chrome faz o download de arquivos mais rapidamente</translation>
 <translation id="187628348035757895">Opções do desenvolvedor</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Acessibilidade</translation>
 <translation id="6985347914332179298">Não há downloads aqui</translation>
 <translation id="6990079615885386641">Comprar aplicativo na Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Informar incidentes de segurança ao Google automaticamente.</translation>
 <translation id="6992289844737586249">Perguntar antes de permitir que sites usem o microfone (recomendado)</translation>
 <translation id="7016516562562142042">Permitido para o mecanismo de pesquisa atual</translation>
 <translation id="7021515813996758557">O download de <ph name="FILE_NAME" /> foi concluído</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
index 5263bed..aa560131 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Claro</translation>
 <translation id="1821253160463689938">Utiliza cookies para memorizar as suas preferências, mesmo que não visite essas páginas.</translation>
 <translation id="1829244130665387512">Localizar na página</translation>
-<translation id="1832521218263067499">Incidentes de segurança</translation>
 <translation id="1853692000353488670">Novo separador anónimo</translation>
 <translation id="1868024384445905608">O Chrome agora transfere os ficheiros mais rapidamente.</translation>
 <translation id="187628348035757895">Opções de programador</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Acessibilidade</translation>
 <translation id="6985347914332179298">Nenhuma transferência aqui</translation>
 <translation id="6990079615885386641">Obter a aplicação na Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Comunicar automaticamente detalhes de possíveis incidentes de segurança à Google</translation>
 <translation id="6992289844737586249">Perguntar antes de permitir que os sites utilizem o microfone (recomendado)</translation>
 <translation id="7016516562562142042">Permitido para o motor de pesquisa atual</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> transferido</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
index 31d7ae1..d3ce0a7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Luminos</translation>
 <translation id="1821253160463689938">Folosește cookie-uri pentru a-ți reține preferințele, chiar dacă nu accesezi paginile respective</translation>
 <translation id="1829244130665387512">Găsește în pagină</translation>
-<translation id="1832521218263067499">Incidente privind securitatea</translation>
 <translation id="1853692000353488670">Filă incognito nouă</translation>
 <translation id="1868024384445905608">Acum Chrome descarcă mai rapid fișierele</translation>
+<translation id="187628348035757895">Opțiuni dezvoltator</translation>
 <translation id="1878302395768190018">Poți personaliza oricând această setare din setările Chrome</translation>
 <translation id="1880072593381090678">Pagini populare din Chrome</translation>
 <translation id="1883903952484604915">Fișierele mele</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Accesibilitate</translation>
 <translation id="6985347914332179298">Nu există descărcări aici</translation>
 <translation id="6990079615885386641">Descarcă aplicația din Magazinul Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Raportează automat la Google detaliile eventualelor incidente privind securitatea</translation>
 <translation id="6992289844737586249">Întreabă înainte de a permite site-urilor să folosească microfonul (recomandat)</translation>
 <translation id="7016516562562142042">Permisă pentru motorul de căutare actual</translation>
 <translation id="7021515813996758557">Fișierul <ph name="FILE_NAME" /> a fost descărcat</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Vezi imaginea în filă nouă</translation>
 <translation id="8084114998886531721">Parola a fost salvată</translation>
 <translation id="8087000398470557479">Acest conținut provine de pe <ph name="DOMAIN_NAME" />, oferit de Google.</translation>
+<translation id="8087980556724996220">Asistentul de completare automată se va opri în <ph name="DURATION_SECONDS" /> s…</translation>
 <translation id="8103578431304235997">Filă incognito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Sugerează pagini similare</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
index 4382bcd..b2190ac 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Светлый</translation>
 <translation id="1821253160463689938">Использовать файлы cookie, чтобы запомнить ваши предпочтения, даже если вы не открываете эти страницы</translation>
 <translation id="1829244130665387512">Найти на странице</translation>
-<translation id="1832521218263067499">Случаи нарушения безопасности</translation>
 <translation id="1853692000353488670">Новая вкладка инкогнито</translation>
 <translation id="1868024384445905608">Теперь файлы в Chrome будут скачиваться ещё быстрее</translation>
 <translation id="187628348035757895">Для разработчиков</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Специальные возможности</translation>
 <translation id="6985347914332179298">Нет скачанных объектов</translation>
 <translation id="6990079615885386641">Приложение в Google Play Маркете: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Автоматически отправлять в Google информацию о возможных проблемах безопасности</translation>
 <translation id="6992289844737586249">Запрашивать разрешение на доступ к микрофону (рекомендуется)</translation>
 <translation id="7016516562562142042">Открыт доступ для текущей поисковой системы</translation>
 <translation id="7021515813996758557">Файл <ph name="FILE_NAME" /> скачан</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
index e4a3d2fc..f81e973 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Svetlý režim</translation>
 <translation id="1821253160463689938">Používa súbory cookie na zapamätanie si predvolieb, dokonca aj keď dané stránky nenavštívite</translation>
 <translation id="1829244130665387512">Nájsť na stránke</translation>
-<translation id="1832521218263067499">Bezpečnostné problémy</translation>
 <translation id="1853692000353488670">Nová karta inkognito</translation>
 <translation id="1868024384445905608">Chrome teraz sťahuje súbory rýchlejšie</translation>
+<translation id="187628348035757895">Pre vývojárov</translation>
 <translation id="1878302395768190018">Môžete to kedykoľvek prispôsobiť v Nastaveniach Chromu</translation>
 <translation id="1880072593381090678">Populárne stránky z Chromu</translation>
 <translation id="1883903952484604915">Moje súbory</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Dostupnosť</translation>
 <translation id="6985347914332179298">Nie sú tu žiadne stiahnuté súbory</translation>
 <translation id="6990079615885386641">Získať aplikáciu z Obchodu Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Automaticky hlásiť Googlu podrobnosti možných bezpečnostných incidentov</translation>
 <translation id="6992289844737586249">Opýtať sa pred povolením webu používať váš mikrofón (odporúčané)</translation>
 <translation id="7016516562562142042">Povolené v aktuálnom vyhľadávači</translation>
 <translation id="7021515813996758557">Súbor <ph name="FILE_NAME" /> je stiahnutý</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Otvoriť obrázok na novej karte</translation>
 <translation id="8084114998886531721">Uložené heslo</translation>
 <translation id="8087000398470557479">Tento obsah pochádza z domény <ph name="DOMAIN_NAME" /> a bol doručený Googlom.</translation>
+<translation id="8087980556724996220">Automatické dopĺňanie Asistentom sa zastaví o <ph name="DURATION_SECONDS" /> s…</translation>
 <translation id="8103578431304235997">Karta inkognito</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Navrhovať súvisiace stránky</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
index 4719d8bb..241a8c7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Svetlo</translation>
 <translation id="1821253160463689938">Uporablja piškotke, da si zapomni vaše nastavitve, tudi če teh strani ne obiskujete</translation>
 <translation id="1829244130665387512">Poišči na strani</translation>
-<translation id="1832521218263067499">Varnostni dogodki</translation>
 <translation id="1853692000353488670">Nov zavihek brez beleženja zgodovine</translation>
 <translation id="1868024384445905608">Chrome zdaj hitreje prenaša datoteke</translation>
 <translation id="187628348035757895">Možnosti za razvijalce</translation>
@@ -791,7 +790,6 @@
 <translation id="6981982820502123353">Dostopnost</translation>
 <translation id="6985347914332179298">Tu ni prenosov</translation>
 <translation id="6990079615885386641">Prenos aplikacije iz Trgovine Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Samodejno poročanje podrobnosti morebitnih varnostnih dogodkov Googlu</translation>
 <translation id="6992289844737586249">Poziv, preden se spletnim mestom dovoli uporaba mikrofona (priporočeno)</translation>
 <translation id="7016516562562142042">Dovoljeno za trenutni iskalnik</translation>
 <translation id="7021515813996758557">Datoteka <ph name="FILE_NAME" /> je prenesena</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
index e0d6dc8..fe84526 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Светлa</translation>
 <translation id="1821253160463689938">Користи колачиће да би се запамтила подешавања, чак и када не посећујете те странице</translation>
 <translation id="1829244130665387512">Пронађи на страници</translation>
-<translation id="1832521218263067499">Инциденти у вези са безбедношћу</translation>
 <translation id="1853692000353488670">Нова картица без архивирања</translation>
 <translation id="1868024384445905608">Chrome сада брже преузима датотеке</translation>
 <translation id="187628348035757895">Опције за програмере</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Приступачност</translation>
 <translation id="6985347914332179298">Овде нема преузимања</translation>
 <translation id="6990079615885386641">Преузмите апликацију из Google Play продавнице: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Аутоматски пријави Google-у детаље о могућим безбедносним инцидентима</translation>
 <translation id="6992289844737586249">Питај пре него што дозволиш сајтовима да користе микрофон (препоручено)</translation>
 <translation id="7016516562562142042">Дозвољено је за актуелни претраживач</translation>
 <translation id="7021515813996758557">Преузели сте <ph name="FILE_NAME" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
index b11ff9c..9caa57c1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Ljus</translation>
 <translation id="1821253160463689938">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="1829244130665387512">Hitta på sida</translation>
-<translation id="1832521218263067499">Incidenter som rör säkerheten</translation>
 <translation id="1853692000353488670">Ny inkognitoflik</translation>
 <translation id="1868024384445905608">Nu laddas filer ned snabbare i Chrome</translation>
 <translation id="187628348035757895">Utvecklaralternativ</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Tillgänglighet</translation>
 <translation id="6985347914332179298">Det finns inga nedladdningar här</translation>
 <translation id="6990079615885386641">Hämta appen från Google Play Butik: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Rapportera uppgifter om möjliga säkerhetsincidenter till Google automatiskt</translation>
 <translation id="6992289844737586249">Fråga innan webbplatser tillåts att använda mikrofonen (rekommenderas)</translation>
 <translation id="7016516562562142042">Tillåt för den nuvarande sökmotorn</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> har laddats ned</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
index b03c0983..9524cca 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Mwangaza</translation>
 <translation id="1821253160463689938">Hutumia vidakuzi kukumbuka mapendeleo yako, hata usipotembelea kurasa hizo</translation>
 <translation id="1829244130665387512">Tafuta katika ukurasa</translation>
-<translation id="1832521218263067499">Matukio ya utovu wa usalama</translation>
 <translation id="1853692000353488670">Kichupo fiche kipya</translation>
 <translation id="1868024384445905608">Sasa Chrome inapakua faili haraka zaidi</translation>
 <translation id="187628348035757895">Chaguo za wasanidi programu</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Upatikanaji</translation>
 <translation id="6985347914332179298">Hapa hapana vipakuliwa</translation>
 <translation id="6990079615885386641">Pata programu kutoka kwenye Duka la Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Tumia Google ripoti ya matukio yanayotishia usalama mtandaoni, kiotomatiki</translation>
 <translation id="6992289844737586249">Uliza kwanza kabla ya kuruhusu tovuti zitumie maikrofoni yako (inapendekezwa)</translation>
 <translation id="7016516562562142042">Imeruhusiwa kwa mtambo wa sasa wa kutafuta</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> imepakuliwa</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
index d21f035..835fcd9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">வெளிச்சம்</translation>
 <translation id="1821253160463689938">நீங்கள் அந்தப் பக்கங்களைப் பார்வையிடவில்லை என்றாலும், உங்கள் விருப்பத்தேர்வுகளை நினைவில்கொள்ள குக்கீகளைப் பயன்படுத்தும்</translation>
 <translation id="1829244130665387512">இந்தப் பக்கத்தில் தேடு</translation>
-<translation id="1832521218263067499">பாதுகாப்புச் சம்பவங்கள்</translation>
 <translation id="1853692000353488670">புதிய மறைநிலை தாவல்</translation>
 <translation id="1868024384445905608">Chrome இப்போது கோப்புகளை வேகமாகப் பதிவிறக்குகிறது</translation>
+<translation id="187628348035757895">டெவெலப்பர் விருப்பங்கள்</translation>
 <translation id="1878302395768190018">Chrome அமைப்புகளில் இதை எப்போது வேண்டுமானாலும் நீங்கள் தனிப்பயனாக்கலாம்</translation>
 <translation id="1880072593381090678">Chrome இலிருந்து பிரபலமான பக்கங்கள்</translation>
 <translation id="1883903952484604915">எனது கோப்புகள்</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">அணுகல் தன்மை</translation>
 <translation id="6985347914332179298">இங்கே பதிவிறக்கங்கள் இல்லை</translation>
 <translation id="6990079615885386641">Google Play Store இலிருந்து பயன்பாட்டைப் பெறவும்: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">பாதுகாப்பிற்கு இடையூறு விளைவிக்கும் சாத்தியமுள்ள செயல்பாடு குறித்த விவரங்களைத் தானாகவே Google க்கு அனுப்பு</translation>
 <translation id="6992289844737586249">எனது மைக்ரோஃபோனைப் பயன்படுத்தத் தளங்களை அனுமதிக்கும் முன் கேள் (பரிந்துரைக்கப்படுகிறது)</translation>
 <translation id="7016516562562142042">நடப்புத் தேடல் இன்ஜினுக்கு அனுமதிக்கப்பட்டுள்ளது</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> பதிவிறக்கப்பட்டது</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">படத்தை புதிய தாவலில் திற</translation>
 <translation id="8084114998886531721">சேமித்த கடவுச்சொல்</translation>
 <translation id="8087000398470557479">இந்த உள்ளடக்கம் <ph name="DOMAIN_NAME" /> (Google ஆல் வழங்கப்படுவது) இலிருந்து கிடைக்கிறது.</translation>
+<translation id="8087980556724996220">தன்னிரப்பி அசிஸ்டண்ட் <ph name="DURATION_SECONDS" /> வினாடிகளில் நிறுத்தப்படும்…</translation>
 <translation id="8103578431304235997">மறைநிலைத் தாவல்</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">தொடர்புடைய பக்கங்களைப் பரிந்துரைக்கவும்</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
index 5fb95fd..17ccf31 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">లేత</translation>
 <translation id="1821253160463689938">మీ ప్రాధాన్యతలను గుర్తుంచుకోవడానికి కుక్కీలను ఉపయోగిస్తుంది, మీరు ఆ పేజీలను సందర్శించకపోయినా కూడా అది అమలవుతుంది</translation>
 <translation id="1829244130665387512">పేజీలో కనుగొను</translation>
-<translation id="1832521218263067499">భద్రతా సంఘటనలు</translation>
 <translation id="1853692000353488670">కొత్త అజ్ఞాత ట్యాబ్</translation>
 <translation id="1868024384445905608">Chrome ఇప్పుడు ఫైల్‌లను మరింత వేగంగా డౌన్‌లోడ్ చేస్తుంది</translation>
+<translation id="187628348035757895">డెవలపర్ ఎంపికలు</translation>
 <translation id="1878302395768190018">మీరు ఏ సమయంలో అయినా దీనిని Chrome సెట్టింగ్‌లలో అనుకూలీకరించవచ్చు</translation>
 <translation id="1880072593381090678">Chrome నుండి జనాదరణ పొందిన పేజీలు</translation>
 <translation id="1883903952484604915">నా ఫైల్‌లు</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">యాక్సెస్ సామర్థ్యం</translation>
 <translation id="6985347914332179298">ఇక్కడ డౌన్‌లోడ్‌లు లేవు</translation>
 <translation id="6990079615885386641">Google Play Store నుండి అనువర్తనాన్ని పొందండి: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">సంభావ్య భద్రతాపరమైన దాడులకు సంబంధించిన వివరాలను Googleకి స్వయంచాలకంగా నివేదించు</translation>
 <translation id="6992289844737586249">సైట్‌లను మీ మైక్రోఫోన్ ఉపయోగించడానికి అనుమతించే ముందు మిమ్మల్ని అడుగుతుంది (సిఫార్సు చేయబడింది)</translation>
 <translation id="7016516562562142042">ప్రస్తుత శోధన ఇంజిన్‌కు అనుమతించబడింది</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> డౌన్‌లోడ్ చేయబడింది</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">చిత్రాన్ని కొత్త ట్యాబ్‌లో తె.</translation>
 <translation id="8084114998886531721">సేవ్ చేసిన పాస్‌వర్డ్</translation>
 <translation id="8087000398470557479">ఈ కంటెంట్ Google ద్వారా డెలివర్ చేయబడిన <ph name="DOMAIN_NAME" />లోనిది.</translation>
+<translation id="8087980556724996220"><ph name="DURATION_SECONDS" />సె తర్వాత స్వీయ పూరణ అసిస్టెంట్ ఆపివేయబడుతుంది…</translation>
 <translation id="8103578431304235997">అజ్ఞాత ట్యాబ్</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">సంబంధిత పేజీలను సూచించు</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
index ae20c81..a4e9d83b 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">สว่าง</translation>
 <translation id="1821253160463689938">ใช้คุกกี้เพื่อให้จดจำค่ากำหนดของคุณ แม้ว่าคุณไม่ได้เข้าชมหน้าเว็บเหล่านั้น</translation>
 <translation id="1829244130665387512">ค้นหาในหน้าเว็บ</translation>
-<translation id="1832521218263067499">เหตุการณ์ด้านความปลอดภัย</translation>
 <translation id="1853692000353488670">แท็บใหม่ที่ไม่ระบุตัวตน</translation>
 <translation id="1868024384445905608">ตอนนี้ Chrome ดาวน์โหลดไฟล์ได้เร็วขึ้นแล้ว</translation>
+<translation id="187628348035757895">ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์</translation>
 <translation id="1878302395768190018">ปรับแต่งการตั้งค่านี้ได้ทุกเมื่อในการตั้งค่า Chrome</translation>
 <translation id="1880072593381090678">หน้ายอดนิยมจาก Chrome</translation>
 <translation id="1883903952484604915">ไฟล์ของฉัน</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">การเข้าถึง</translation>
 <translation id="6985347914332179298">ไม่มีการดาวน์โหลดที่นี่</translation>
 <translation id="6990079615885386641">รับแอปจาก Google Play Store: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">รายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ</translation>
 <translation id="6992289844737586249">ถามก่อน ก่อนที่จะอนุญาตให้เว็บไซต์ใช้ไมโครโฟน (แนะนำ)</translation>
 <translation id="7016516562562142042">อนุญาตสำหรับเครื่องมือค้นหาปัจจุบัน</translation>
 <translation id="7021515813996758557">ดาวน์โหลด <ph name="FILE_NAME" /> แล้ว</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">เปิดภาพในแท็บใหม่</translation>
 <translation id="8084114998886531721">รหัสผ่านที่บันทึกไว้</translation>
 <translation id="8087000398470557479">เนื้อหานี้มาจาก <ph name="DOMAIN_NAME" /> และนำส่งโดย Google</translation>
+<translation id="8087980556724996220">การช่วยป้อนอัตโนมัติจะหยุดใน <ph name="DURATION_SECONDS" /> วินาที…</translation>
 <translation id="8103578431304235997">แท็บที่ไม่ระบุตัวตน</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">แนะนำหน้าเว็บที่เกี่ยวข้อง</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
index 7ec4476..913fafe 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Açık</translation>
 <translation id="1821253160463689938">Belirtilen sayfaları ziyaret etmiyor olsanız bile tercihlerinizi hatırlamak için çerezler kullanır</translation>
 <translation id="1829244130665387512">Sayfada bul</translation>
-<translation id="1832521218263067499">Güvenlik olayları</translation>
 <translation id="1853692000353488670">Yeni gizli sekme</translation>
 <translation id="1868024384445905608">Chrome artık dosyaları daha hızlı indiriyor</translation>
+<translation id="187628348035757895">Geliştirici seçenekleri</translation>
 <translation id="1878302395768190018">Bunu istediğiniz zaman Chrome Ayarlarından özelleştirebilirsiniz</translation>
 <translation id="1880072593381090678">Chrome'dan popüler sayfalar</translation>
 <translation id="1883903952484604915">Dosyalarım</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Erişilebilirlik</translation>
 <translation id="6985347914332179298">Burada indirilen herhangi bir şey bulunmadı</translation>
 <translation id="6990079615885386641">Uygulamayı Google Play Store'dan edinin: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Olası güvenlik olaylarının ayrıntılarını Google'a otomatik olarak bildir</translation>
 <translation id="6992289844737586249">Sitelerin, mikrofonunuzu kullanmasına izin verilmeden önce size sorulsun (önerilen)</translation>
 <translation id="7016516562562142042">Geçerli arama motoru için izin verildi</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> dosyası indirildi</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Resmi yeni sekmede aç</translation>
 <translation id="8084114998886531721">Kayıtlı şifre</translation>
 <translation id="8087000398470557479">Bu içerik Google tarafından <ph name="DOMAIN_NAME" /> adresinden sağlanmaktadır.</translation>
+<translation id="8087980556724996220">Asistan Otomatik Doldurma özelliği <ph name="DURATION_SECONDS" /> sn. sonra duracak…</translation>
 <translation id="8103578431304235997">Gizli Sekme</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">İlgili sayfalar öner</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
index 5787c7c..e05b25b 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -114,7 +114,6 @@
 <translation id="1807246157184219062">Світла</translation>
 <translation id="1821253160463689938">Використовує файли cookie, щоб зберігати налаштування, навіть якщо ви не відвідуєте ці сторінки</translation>
 <translation id="1829244130665387512">Знайти на сторінці</translation>
-<translation id="1832521218263067499">Випадки порушення безпеки</translation>
 <translation id="1853692000353488670">Нова анонімна вкладка</translation>
 <translation id="1868024384445905608">Тепер Chrome завантажує файли швидше</translation>
 <translation id="187628348035757895">Параметри розробника</translation>
@@ -792,7 +791,6 @@
 <translation id="6981982820502123353">Доступність</translation>
 <translation id="6985347914332179298">Немає завантажень</translation>
 <translation id="6990079615885386641">Завантажити додаток із магазину Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Автоматично повідомляти Google деталі щодо можливих порушень безпеки</translation>
 <translation id="6992289844737586249">Запитувати, перш ніж дозволити сайтам використовувати мікрофон (рекомендується)</translation>
 <translation id="7016516562562142042">Дозволено для поточної пошукової системи</translation>
 <translation id="7021515813996758557">Файл "<ph name="FILE_NAME" />" завантажено</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
index 7ccfd2e5..97918910 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">Sáng</translation>
 <translation id="1821253160463689938">Sử dụng cookie để ghi nhớ tùy chọn của bạn, ngay cả khi bạn không truy cập vào các trang đó</translation>
 <translation id="1829244130665387512">Tìm trong trang</translation>
-<translation id="1832521218263067499">Sự cố bảo mật</translation>
 <translation id="1853692000353488670">Tab ẩn danh mới</translation>
 <translation id="1868024384445905608">Giờ đây, Chrome tải tệp xuống còn nhanh hơn nữa</translation>
+<translation id="187628348035757895">Tùy chọn của nhà phát triển</translation>
 <translation id="1878302395768190018">Bạn có thể tùy chỉnh tùy chọn này bất cứ lúc nào trong mục Cài đặt Chrome</translation>
 <translation id="1880072593381090678">Trang phổ biến từ Chrome</translation>
 <translation id="1883903952484604915">Tệp của tôi</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">Truy cập</translation>
 <translation id="6985347914332179298">Không có mục nào đã tải xuống tại đây</translation>
 <translation id="6990079615885386641">Tải ứng dụng từ Cửa hàng Google Play: <ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">Tự động báo cáo với Google chi tiết về sự cố bảo mật có thể xảy ra</translation>
 <translation id="6992289844737586249">Hỏi trước trước khi cho phép các trang web sử dụng micrô của bạn (được đề xuất)</translation>
 <translation id="7016516562562142042">Được cho phép đối với công cụ tìm kiếm hiện tại</translation>
 <translation id="7021515813996758557">Đã tải xuống <ph name="FILE_NAME" /></translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">Mở ảnh trong tab mới</translation>
 <translation id="8084114998886531721">Mật khẩu đã lưu</translation>
 <translation id="8087000398470557479">Nội dung này đến từ <ph name="DOMAIN_NAME" />, do Google phân phối.</translation>
+<translation id="8087980556724996220">Autofill Assistant sẽ dừng sau <ph name="DURATION_SECONDS" /> giây nữa…</translation>
 <translation id="8103578431304235997">Tab ẩn danh</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">Đề xuất các trang liên quan</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
index fcd6d28..7ee56cf 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">浅色调</translation>
 <translation id="1821253160463689938">使用 Cookie 记住您的偏好设置(即使您不访问这些网页)</translation>
 <translation id="1829244130665387512">在网页中查找</translation>
-<translation id="1832521218263067499">安全事件</translation>
 <translation id="1853692000353488670">打开新的无痕式标签页</translation>
 <translation id="1868024384445905608">Chrome 现可更快速地下载文件</translation>
+<translation id="187628348035757895">开发者选项</translation>
 <translation id="1878302395768190018">您可以随时在 Chrome 设置中自定义此设置</translation>
 <translation id="1880072593381090678">Chrome 中的热门网页</translation>
 <translation id="1883903952484604915">我的文件</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">无障碍</translation>
 <translation id="6985347914332179298">此处没有任何下载内容</translation>
 <translation id="6990079615885386641">从 Google Play 商店下载应用:<ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">自动向 Google 报告可能出现的安全事件详情</translation>
 <translation id="6992289844737586249">在允许网站使用您的麦克风前先询问(推荐)</translation>
 <translation id="7016516562562142042">已设为可供当前的搜索引擎使用</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> 已下载完毕</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">在新标签页中打开图片</translation>
 <translation id="8084114998886531721">保存的密码</translation>
 <translation id="8087000398470557479">此内容来自 <ph name="DOMAIN_NAME" />(由 Google 提供)。</translation>
+<translation id="8087980556724996220">自动填充助理将在 <ph name="DURATION_SECONDS" /> 秒后停止…</translation>
 <translation id="8103578431304235997">隐身标签页</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">提供相关页面建议</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
index 46d44254..77b69bb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -114,9 +114,9 @@
 <translation id="1807246157184219062">淺色</translation>
 <translation id="1821253160463689938">使用 Cookie 記住你的偏好設定 (即使你沒有造訪這些網頁)</translation>
 <translation id="1829244130665387512">在網頁中尋找</translation>
-<translation id="1832521218263067499">安全性事件</translation>
 <translation id="1853692000353488670">新增無痕式分頁</translation>
 <translation id="1868024384445905608">Chrome 現在的檔案下載速度更快了</translation>
+<translation id="187628348035757895">開發人員選項</translation>
 <translation id="1878302395768190018">你隨時可在 Chrome 設定中自訂這項設定</translation>
 <translation id="1880072593381090678">Chrome 常用網頁</translation>
 <translation id="1883903952484604915">我的檔案</translation>
@@ -791,7 +791,6 @@
 <translation id="6981982820502123353">協助工具</translation>
 <translation id="6985347914332179298">這裡沒有任何下載內容</translation>
 <translation id="6990079615885386641">從 Google Play 商店取得應用程式:<ph name="APP_ACTION" /></translation>
-<translation id="699220179437400583">自動將疑似安全性事件的詳細資料回報給 Google</translation>
 <translation id="6992289844737586249">允許網站使用您的麥克風前,必須先詢問您 (建議)</translation>
 <translation id="7016516562562142042">允許目前的搜尋引擎存取位置資訊</translation>
 <translation id="7021515813996758557"><ph name="FILE_NAME" /> 下載完成</translation>
@@ -937,6 +936,7 @@
 <translation id="8073388330009372546">在新分頁中開啟圖片</translation>
 <translation id="8084114998886531721">已儲存的密碼</translation>
 <translation id="8087000398470557479">這個內容來自 <ph name="DOMAIN_NAME" />,由 Google 所提供。</translation>
+<translation id="8087980556724996220">自動填入小幫手將在 <ph name="DURATION_SECONDS" /> 秒後停止運作…</translation>
 <translation id="8103578431304235997">無痕式分頁</translation>
 <translation id="8105893657415066307"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE" /></translation>
 <translation id="8105951947646329362">建議相關的網頁</translation>
diff --git a/chrome/android/webapk/shell_apk/current_version/current_version.gni b/chrome/android/webapk/shell_apk/current_version/current_version.gni
index 30e20898..989c976 100644
--- a/chrome/android/webapk/shell_apk/current_version/current_version.gni
+++ b/chrome/android/webapk/shell_apk/current_version/current_version.gni
@@ -12,4 +12,4 @@
 # //chrome/android/webapk/shell_apk:webapk is changed. This includes
 # Java files, Android resource files and AndroidManifest.xml. Does not affect
 # Chrome.apk
-current_shell_apk_version = 72
+current_shell_apk_version = 73
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/H2OTransparentLauncherActivity.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/H2OTransparentLauncherActivity.java
index 54b9f9a..86d34c5 100644
--- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/H2OTransparentLauncherActivity.java
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/H2OTransparentLauncherActivity.java
@@ -56,15 +56,19 @@
         Context appContext = getApplicationContext();
 
         // {@link H2OLauncher#changeEnabledComponentsAndKillShellApk()} enables one
-        // component, THEN disables the other. Check for the disabled component in order to
-        // handle the case where both components are enabled.
+        // component, THEN disables the other. Relaunch if the wrong component is disabled (vs
+        // if the wrong component is enabled) to handle the case where both components are enabled.
         ComponentName relaunchComponent = null;
         if (shouldLaunchSplash) {
-            if (H2OMainActivity.checkComponentEnabled(appContext)) {
+            // Relaunch if SplashActivity is disabled.
+            if (!SplashActivity.checkComponentEnabled(appContext)) {
                 relaunchComponent = new ComponentName(appContext, H2OMainActivity.class);
             }
-        } else if (SplashActivity.checkComponentEnabled(appContext)) {
-            relaunchComponent = new ComponentName(appContext, SplashActivity.class);
+        } else {
+            // Relaunch if H2OMainActivity is disabled.
+            if (!H2OMainActivity.checkComponentEnabled(appContext)) {
+                relaunchComponent = new ComponentName(appContext, SplashActivity.class);
+            }
         }
 
         if (relaunchComponent == null) {
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb
index b7e5c93..1c5456e 100644
--- a/chrome/app/resources/chromium_strings_ms.xtb
+++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -116,7 +116,7 @@
 <translation id="5032989939245619637">Simpan butiran di Chromium</translation>
 <translation id="5045248521775609809">Bawa Chromium ke mana-mana sahaja</translation>
 <translation id="5116586539350239523">Chromium akan menyimpan butiran peribadi anda dengan selamat supaya anda tidak perlu menaipnya semula.</translation>
-<translation id="5181952534059945058">Halaman ini menggunakan terlalu banyak memori, jadi Chromium mengalih keluar sesetengah kandungan.</translation>
+<translation id="5181952534059945058">Halaman ini menggunakan terlalu banyak memori, jadi Chromium mengalih keluar sebahagian kandungan.</translation>
 <translation id="5277894862589591112">Untuk menggunakan perubahan anda, mulakan semula Chromium</translation>
 <translation id="5358375970380395591">Anda log masuk menggunakan akaun yang terurus dan memberikan pentadbirnya kawalan ke atas profil Chromium anda. Data Chromium anda, seperti apl, penanda halaman, sejarah, kata laluan dan tetapan anda yang lain akan terikat kepada <ph name="USER_NAME" /> secara kekal. Anda akan dapat memadamkan data ini melalui Papan Pemuka Akaun Google, tetapi anda tidak akan dapat mengaitkan data ini dengan akaun lain. <ph name="LEARN_MORE" /></translation>
 <translation id="5386450000063123300">Mengemas kini Chromium (<ph name="PROGRESS_PERCENT" />)</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb
index 868897f..01f7b94 100644
--- a/chrome/app/resources/chromium_strings_te.xtb
+++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -197,12 +197,12 @@
 <translation id="7337881442233988129">Chromium</translation>
 <translation id="7339898014177206373">క్రొత్త విండో</translation>
 <translation id="734373864078049451">మీ వెబ్, బుక్‌మార్క్‌లు మరియు ఇతర Chromium అంశాలు ఇక్కడ చూపబడతాయి.</translation>
-<translation id="7344413941077984497"><ph name="NEW_PROFILE_NAME" /> వీక్షించగల వెబ్‌సైట్‌లను సెట్ చేయడానికి, మీరు <ph name="BEGIN_LINK_1" /><ph name="DISPLAY_LINK" /><ph name="END_LINK_1" />ని సందర్శించడం ద్వారా పరిమితులు మరియు సెట్టింగ్‌లను కాన్ఫిగర్ చేయవచ్చు. మీరు డిఫాల్ట్ సెట్టింగ్‌లను మార్చకపోతే, <ph name="NEW_PROFILE_NAME" /> వెబ్‌లో అన్నీ బ్రౌజ్ చేయగలరు.
+<translation id="7344413941077984497"><ph name="NEW_PROFILE_NAME" /> వీక్షించగల వెబ్‌సైట్‌లను సెట్ చేయడానికి, మీరు <ph name="BEGIN_LINK_1" /><ph name="DISPLAY_LINK" /><ph name="END_LINK_1" />ను సందర్శించడం ద్వారా పరిమితులు మరియు సెట్టింగ్‌లను కాన్ఫిగర్ చేయవచ్చు. మీరు డిఫాల్ట్ సెట్టింగ్‌లను మార్చకపోతే,<ph name="NEW_PROFILE_NAME" /> వెబ్‌లో అన్నీ బ్రౌజ్ చేయగలరు.
 
-<ph name="NEW_PROFILE_NAME" />ని మీ ఖాతా ప్రాప్యత చేయనీయకుండా నిరోధించడానికి, మీరు Chromiumని ఉపయోగించనప్పుడు మీ ప్రొపైల్‌ను లాక్ చేసి ఉంచేట్లు చూసుకోండి. దీన్ని చేయడానికి, బ్రౌజర్ ఎగువ కుడి మూలన ఉన్న మీ ప్రొఫైల్ పేరును క్లిక్ చేసి, ఆపై "నిష్క్రమించి, చైల్డ్ లాక్ చేయి" ఎంపికను ఎంచుకోండి.
+మీ ఖాతా యాక్సెస్ చేయనీయకుండా <ph name="NEW_PROFILE_NAME" />ను నిరోధించడానికి, మీరు Chromiumని ఉపయోగించనప్పుడు మీ ప్రొఫైల్‌ను లాక్ చేసి ఉంచేటట్లు చూసుకోండి. ఇలా చేయడానికి, బ్రౌజర్ ఎగువ కుడి మూలన ఉన్న మీ ప్రొఫైల్ పేరును క్లిక్ చేసి, ఆపై "నిష్క్రమించి, చైల్డ్ లాక్ చేయి" ఎంపికను ఎంచుకోండి.
 <ph name="BEGIN_LINK_2" />మరింత తెలుసుకోండి<ph name="END_LINK_2" />
 
-దయచేసి తదుపరి సూచనల కోసం <ph name="ACCOUNT_EMAIL" />లో మీ ఇమెయిల్‌ను చూడండి.</translation>
+తర్వాతి సూచనల కోసం <ph name="ACCOUNT_EMAIL" />లో మీ ఇమెయిల్‌ను చూడండి.</translation>
 <translation id="7448255348454382571">Chromium OSని మళ్లీ ప్రారంభించండి</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
 <translation id="7451052299415159299">ఈ సైట్ కోసం మీ కెమెరాని యాక్సెస్ చేయడానికి Chromiumకు అనుమతి అవసరం</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 14f36282..d25afea 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">ምስል አክል</translation>
 <translation id="1029317248976101138">ማጉሊያ</translation>
 <translation id="1030706264415084469"><ph name="URL" /> ትልቅ ውሂብ በእርስዎ መሣሪያ ላይ እስከ መጨረሻው ማከማቸት ይፈልጋል</translation>
+<translation id="1030889518049751641">የእንቅስቃሴ ምዝግብ ማስታወሻን አሳይ</translation>
 <translation id="1031362278801463162">ቅድመ-እይታን በመጫን ላይ</translation>
 <translation id="103279545524624934">የAndroid መተግበሪያዎችን ለማስጀመር የዲስክ ቦታ ያስለቅቁ።</translation>
 <translation id="1033780634303702874">ተከታታይ መሣሪያዎችዎን ይደርሳል</translation>
@@ -163,6 +164,7 @@
     መገለጫዎን እንደገና ማዋቀር ይኖርብዎታል።<ph name="BR" />
     <ph name="BR" />
     ችግሩን እንድንፈታው እኛን ለማገዝ እባክዎ በሚቀጥለው ማያ ገጽ ላይ ግብረመልስ ይላኩ።</translation>
+<translation id="1217668622537098248">ከእርምጃ በኋላ ወደ ግራ ጠቅታ አድህር</translation>
 <translation id="121783623783282548">የይለፍ ቃላትዎ አይዛመዱም።</translation>
 <translation id="1218860753635451122">የ«እስማማለሁ» አዝራርን ጠቅ በማድረግ ለእነዚህ የGoogle አገልግሎቶች ከላይ በተብራራው ማስሄድ መስማማትዎን ያረጋግጣሉ።</translation>
 <translation id="122082903575839559">የሰርቲፊኬት ፊርማ አልጎሪዝም</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">የደህንነት ቁልፍዎ ካልተዘረዘረ የቁልፍ አዝራሩን ቢያንስ ለ5 ሰከንዶች ይጫኑት።</translation>
 <translation id="275662540872599901">ማያ ገጽ ጠፍቷል</translation>
 <translation id="2761898608071930085">ሌላ መለያ ተጠቀም</translation>
+<translation id="276233135255363312">{0,plural, =1{አንድ ማንነትን የማያሳውቅ መስኮት አለዎት።}one{# ማንነትን የማያሳውቁ መስኮቶች አለዎት።}other{# ማንነትን የማያሳውቁ መስኮቶች አለዎት።}}</translation>
 <translation id="2762441749940182211">ካሜራ ታግዷል</translation>
 <translation id="2765217105034171413">ትንሽ</translation>
 <translation id="2766006623206032690">ለ&amp;ጥፍና እና ሂድ</translation>
@@ -1553,6 +1556,7 @@
 <translation id="3350117557200012647">ወደ የማጣመር ሁኔታ ሂድ</translation>
 <translation id="3353984535370177728">የሚሰቅሉትን አቃፊ ይምረጡ</translation>
 <translation id="3355936511340229503">የግንኙነት ስህተት</translation>
+<translation id="3356580349448036450">ተጠናቅቋል</translation>
 <translation id="3356797067524893661">ወደ Hangouts Meet ለመቀጠል ሙሉ በሙሉ ተዘጋጅተዋል</translation>
 <translation id="3358935496594837302">የእርስዎን ስልክ ማግኘት አልተቻለም። የበራ እና በቅርብ ርቀት የሚገኝ ተኳሃኝ የሆነ የAndroid ስልክ እየተጠቀሙ መሆንዎን ያረጋግጡ። &lt;a&gt;የበለጠ ለመረዳት&lt;/a&gt;</translation>
 <translation id="3359256513598016054">የሰርቲፊኬት መመሪያ እገዳዎች</translation>
@@ -2183,6 +2187,7 @@
 <translation id="4312866146174492540">አግድ (ነባሪ)</translation>
 <translation id="4316850752623536204">የገንቢ ድር ጣቢያ</translation>
 <translation id="4320177379694898372">ምንም የበይነመረብ ግንኙነት የለም</translation>
+<translation id="4320948194796820126">አንድ ዕልባት ወደ የእርስዎ ኢሜይል ያክሉ</translation>
 <translation id="4322394346347055525">ሌሎች ትሮችን ዝጋ</translation>
 <translation id="4324577459193912240">ፋይል ያልተሟላ ነው</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" />ን በጭራሽ አትተርጉም</translation>
@@ -2203,6 +2208,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> አንድ መስኮት እያጋራ ነው።</translation>
 <translation id="4364830672918311045">ማሳወቂያዎችን አሳይ</translation>
 <translation id="4365673000813822030">ውይ፣ ማመሳሰል መስራት አቁሟል።</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> ከ<ph name="APP_NAME" /> ጋር።</translation>
 <translation id="4370975561335139969">ያስገቧቸው ኢሜይል እና የይለፍ ቃል አይዛመዱም።</translation>
 <translation id="437184764829821926">የላቁ የቅርጸ-ቁምፊ ቅንብሮች</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3067,6 +3073,7 @@
 <translation id="5669267381087807207">በማግበር ላይ</translation>
 <translation id="5669691691057771421">አዲስ ፒን ያስገቡ</translation>
 <translation id="5671641761787789573">ምስሎች ታግደዋል</translation>
+<translation id="567643736130151854">በመለያ ይግቡ እና የእርስዎን ዕልባቶች፣ የይለፍ ቃላት እና ተጨማሪ ነገሮች በሁሉም መሣሪያዎች ላይ ለማግኘት ስምረትን ያብሩ</translation>
 <translation id="5677503058916217575">የገጽ ቋንቋ፦</translation>
 <translation id="5677928146339483299">ታግዷል</translation>
 <translation id="5678550637669481956">ወደ <ph name="VOLUME_NAME" /> የማንበብ እና የመጻፍ መዳረሻ ተሰጥቷል።</translation>
@@ -3937,6 +3944,7 @@
 <translation id="7007648447224463482">ሁሉንም በአዲስ መስኮት ውስጥ ክፈት</translation>
 <translation id="701080569351381435">ሶርስ አሳይ</translation>
 <translation id="7014174261166285193">መጫን አልተሳካም።</translation>
+<translation id="7017004637493394352">እንደገና «Ok Google» ይበሉ</translation>
 <translation id="7017219178341817193">አዲስ ገጽ ያክሉ</translation>
 <translation id="7017354871202642555">መስኮት ከተዋቀረ በኋላ ሁነታውን ማስቀመጥ አልተቻለም።</translation>
 <translation id="7017480957358237747">የተወሰኑ ድር ጣቢያዎችን ይፍቀዱ ወይም ይከልክሉ።</translation>
@@ -4264,6 +4272,7 @@
     <ph name="BEGIN_PARAGRAPH3" />በመሣሪያዎ ላይ ያለውን ዋና የአካባቢ ቅንብርን በማጥፋት አካባቢን ማጥፋት ይችላሉ። እርስዎ እንዲሁም በአካባቢ ቅንብሮች ውስጥ Wi-Fiን፣ የተንቀሳቃሽ ስልክ አውታረ መረቦችን እና ዳሳሾችን ለአካባቢ መጠቀም ማጥፋት ይችላሉ።<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">አንድ የይለፍ ቃል ይፍጠሩ -</translation>
 <translation id="7521387064766892559">ጃቫስክሪፕት</translation>
+<translation id="7522255036471229694">«Ok Google» ይብሉ</translation>
 <translation id="7525067979554623046">ፍጠር</translation>
 <translation id="7529411698175791732">የበይነመረብ ግንኙነትዎን ይፈትሹ። ችግሩ ከቀጠለ ዘግተው ወጥተው እንደገና ለመግባት ይሞክሩ።</translation>
 <translation id="7530016656428373557">የትፋት ፍጥነት በዋት</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">ባለፉት 4 ሳምንቶች</translation>
 <translation id="8574990355410201600">ሁልጊዜ በ<ph name="HOST" /> ላይ ድምጽን ፍቀድ</translation>
 <translation id="8575286410928791436">ለመተው <ph name="KEY_EQUIVALENT" />ን ይያዙ</translation>
+<translation id="8578421807258988326">{0,plural, =1{ይህን መስኮት ዝጋ}one{ሁሉንም ማንነት የማያሳውቁ መስኮቶች ዝጋ}other{ሁሉንም ማንነት የማያሳውቁ መስኮቶች ዝጋ}}</translation>
 <translation id="8578639784464423491">ከ99 ፊደላት መብለጥ አይችልም</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> ንጥሎችን በማመሳሰል ላይ...</translation>
 <translation id="857943718398505171">ተፈቅዷል (የሚመከር)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">የእርስዎን ግድግዳ ወረቀት ይቀይራል</translation>
 <translation id="9112987648460918699">አግኝ…</translation>
 <translation id="9114663181201435112">በቀላሉ በመለያ ይግቡ</translation>
-<translation id="9115487443206954631">የCast መሣሪያዎችን ያስተዳድሩ</translation>
 <translation id="9115675100829699941">&amp;እልባቶች</translation>
 <translation id="9116465289595958864">መጨረሻ ላይ የተቀየሩ</translation>
 <translation id="9116799625073598554">ማስታወሻ የሚወስድ መተግበሪያ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 5bb86d133..cee6511 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">تحميل صورة</translation>
 <translation id="1029317248976101138">تكبير/تصغير</translation>
 <translation id="1030706264415084469">يريد <ph name="URL" /> تخزين حجم كبير من البيانات بشكل دائم على جهازك.</translation>
+<translation id="1030889518049751641">عرض سجلّ الأنشطة</translation>
 <translation id="1031362278801463162">تحميل المعاينة</translation>
 <translation id="103279545524624934">‏احرص على تفريغ مساحة على القرص لتشغيل تطبيقات Android.</translation>
 <translation id="1033780634303702874">الوصول إلى الأجهزة التسلسلية</translation>
@@ -163,6 +164,7 @@
     سيلزمك إعداد ملفك الشخصي مرةً أخرى.<ph name="BR" />
     <ph name="BR" />
     في الشاشة التالية، يُرجى إرسال تعليقات لمساعدتنا في حل هذه المشكلة.</translation>
+<translation id="1217668622537098248">إعادة ميزة النقر بزر الماوس الأيسر بعد اتخاذ إجراء</translation>
 <translation id="121783623783282548">كلمتا المرور غير متطابقتين.</translation>
 <translation id="1218860753635451122">‏بالنقر على الزر "أوافق"، أنت توافق بذلك على المعالجة الواردة أعلاه لخدمات Google هذه.</translation>
 <translation id="122082903575839559">خوارزمية التوقيع على الشهادة</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">في حال لم يكن مفتاح الأمان مدرجًا، يُرجى الضغط على زر المفتاح لمدة لا تقل عن 5 ثوانٍ.</translation>
 <translation id="275662540872599901">الشاشة متوقفة</translation>
 <translation id="2761898608071930085">استخدام حساب آخر</translation>
+<translation id="276233135255363312">{0,plural, =1{توجد نافذة تصفُّح متخفٍ واحدة.}zero{توجد # نافذة تصفُّح متخفٍ}two{توجد نافذتي تصفُّح متخفٍ (#)}few{توجد # نوافذ تصفُّح متخفٍ}many{توجد # نافذة تصفُّح متخفٍ}other{توجد # نافذة تصفُّح متخفٍ}}</translation>
 <translation id="2762441749940182211">تم حظر استخدام الكاميرا</translation>
 <translation id="2765217105034171413">صغير</translation>
 <translation id="2766006623206032690">‏&amp;لصق عنوان URL والدخول إليه</translation>
@@ -1552,6 +1555,7 @@
 <translation id="3350117557200012647">الدخول في وضع الإقران</translation>
 <translation id="3353984535370177728">حدد مجلدًا لتحميله</translation>
 <translation id="3355936511340229503">خطأ الاتصال</translation>
+<translation id="3356580349448036450">مكتمل</translation>
 <translation id="3356797067524893661">‏الآن أنت جاهز تمامًا للمتابعة إلى Hangouts Meet</translation>
 <translation id="3358935496594837302">‏تعذّر العثور على هاتفك. تأكد من أنك تستخدم هاتف Android متوافقًا وأنه قيد التشغيل وفي متناول يديك. &lt;a&gt;مزيد من المعلومات&lt;/a&gt;</translation>
 <translation id="3359256513598016054">القيود على سياسة الشهادة</translation>
@@ -2181,6 +2185,7 @@
 <translation id="4312866146174492540">حظر (تلقائي)</translation>
 <translation id="4316850752623536204">موقع الويب لمطوّر البرامج</translation>
 <translation id="4320177379694898372">لا يتوفر اتصال بالإنترنت</translation>
+<translation id="4320948194796820126">إضافة إشارة مرجعية إلى بريدك الإلكتروني</translation>
 <translation id="4322394346347055525">إغلاق علامات التبويب الأخرى</translation>
 <translation id="4324577459193912240">ملف غير مكتمل</translation>
 <translation id="4330387663455830245">عدم ترجمة <ph name="LANGUAGE" /> مطلقًا</translation>
@@ -2201,6 +2206,7 @@
 <translation id="4364567974334641491">يشارك <ph name="APP_NAME" /> نافذة.</translation>
 <translation id="4364830672918311045">عرض الإشعارات</translation>
 <translation id="4365673000813822030">عذرًا، توقفت المزامنة.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> مع <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">البريد الإلكتروني وكلمة المرور اللذان أدخلتهما غير متطابقين</translation>
 <translation id="437184764829821926">الإعدادات المتقدمة للخط</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3065,6 +3071,7 @@
 <translation id="5669267381087807207">تفعيل</translation>
 <translation id="5669691691057771421">إدخال رقم التعريف الشخصي الجديد</translation>
 <translation id="5671641761787789573">تم حظر الصور</translation>
+<translation id="567643736130151854">سجّل الدخول وفعِّل المزامنة للحصول على الإشارات المرجعية وكلمات المرور والمزيد على جميع الأجهزة</translation>
 <translation id="5677503058916217575">لغة الصفحة:</translation>
 <translation id="5677928146339483299">تم المنع</translation>
 <translation id="5678550637669481956">تم منح إذن دخول للقراءة والكتابة إلى <ph name="VOLUME_NAME" />.</translation>
@@ -3937,6 +3944,7 @@
 <translation id="7007648447224463482">فتح الكل في نافذة جديدة</translation>
 <translation id="701080569351381435">عرض المصدر</translation>
 <translation id="7014174261166285193">تعذّر التثبيت.</translation>
+<translation id="7017004637493394352">‏قل "Ok Google" مرة أخرى</translation>
 <translation id="7017219178341817193">إضافة صفحة جديدة</translation>
 <translation id="7017354871202642555">لا يمكن تعيين الوضع بعد تعيين النافذة.</translation>
 <translation id="7017480957358237747">السماح ببعض المواقع أو حظرها،</translation>
@@ -4265,6 +4273,7 @@
     <ph name="BEGIN_PARAGRAPH3" />يمكنك إيقاف ميزة "الموقع الجغرافي" من خلال إيقاف الإعداد الرئيسي للموقع الجغرافي على جهازك. ويمكنك أيضًا إيقاف استخدام شبكة Wi-Fi وشبكات الجوَّال وأجهزة الاستشعار للموقع الجغرافي في إعدادات الموقع الجغرافي.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">إنشاء كلمة مرور -</translation>
 <translation id="7521387064766892559">جافا سكريبت</translation>
+<translation id="7522255036471229694">‏قل "Ok Google".</translation>
 <translation id="7525067979554623046">إنشاء</translation>
 <translation id="7529411698175791732">تحقق من اتصالك بالإنترنت. وإذا استمرت المشكلة، فحاول الخروج ثم تسجيل الدخول مرة أخرى.</translation>
 <translation id="7530016656428373557">معدل التفريغ بوحدة الوات</translation>
@@ -4955,6 +4964,7 @@
 <translation id="8571213806525832805">الأسابيع الـ4 الأخيرة</translation>
 <translation id="8574990355410201600">السماح دومًا بتشغيل الصوت على <ph name="HOST" /></translation>
 <translation id="8575286410928791436">يُرجى الضغط مع الاستمرار على <ph name="KEY_EQUIVALENT" /> للإنهاء</translation>
+<translation id="8578421807258988326">{0,plural, =1{إغلاق هذه النافذة}zero{إغلاق جميع نوافذ التصفُّح المتخفي}two{إغلاق جميع نوافذ التصفُّح المتخفي}few{إغلاق جميع نوافذ التصفُّح المتخفي}many{إغلاق جميع نوافذ التصفُّح المتخفي}other{إغلاق جميع نوافذ التصفُّح المتخفي}}</translation>
 <translation id="8578639784464423491">لا يمكن أن تتجاوز الكلمة 99 حرفًا.</translation>
 <translation id="8579285237314169903">جارٍ مزامنة <ph name="NUMBER_OF_FILES" /> من البنود...</translation>
 <translation id="857943718398505171">مسموح به (موصى به)</translation>
@@ -5308,7 +5318,6 @@
 <translation id="9112748030372401671">تغيير الخلفية</translation>
 <translation id="9112987648460918699">بحث...</translation>
 <translation id="9114663181201435112">تسجيل الدخول بسهولة</translation>
-<translation id="9115487443206954631">إدارة أجهزة الإرسال</translation>
 <translation id="9115675100829699941">إ&amp;شارات مرجعية</translation>
 <translation id="9116465289595958864">آخر تعديل</translation>
 <translation id="9116799625073598554">تطبيق تدوين الملاحظات</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index c1d111b..7d94e940 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Зареждане на изображението</translation>
 <translation id="1029317248976101138">Промяна на мащаба</translation>
 <translation id="1030706264415084469"><ph name="URL" /> иска да съхранява за постоянно голямо количество данни на устройството ви</translation>
+<translation id="1030889518049751641">Преглед на регистрационния файл за активността</translation>
 <translation id="1031362278801463162">Визуализацията се зарежда</translation>
 <translation id="103279545524624934">Освободете място на диска, за да стартирате приложения за Android.</translation>
 <translation id="1033780634303702874">Достъп до серийните ви устройства</translation>
@@ -163,6 +164,7 @@
 Ще се наложи да настроите отново потребителския си профил.<ph name="BR" />
 <ph name="BR" />
 Моля, изпратете отзиви от следващия екран, за да ни помогнете да отстраним проблема.</translation>
+<translation id="1217668622537098248">Връщане към кликване с ляв бутон след действието</translation>
 <translation id="121783623783282548">Паролите не са идентични.</translation>
 <translation id="1218860753635451122">С кликването си върху бутона „Приемам“ приемате описаното по-горе обработване за тези услуги на Google.</translation>
 <translation id="122082903575839559">Алгоритъм за подписа на сертификата</translation>
@@ -1177,6 +1179,7 @@
 <translation id="2755628026949580719">Ако не виждате ключа си за сигурност, натиснете бутона му и го задръжте поне 5 секунди.</translation>
 <translation id="275662540872599901">екранът е изключен</translation>
 <translation id="2761898608071930085">Използване на друг профил</translation>
+<translation id="276233135255363312">{0,plural, =1{Имате един прозорец в режим „инкогнито“.}other{Имате # прозореца в режим „инкогнито“.}}</translation>
 <translation id="2762441749940182211">Достъпът до камерата е блокиран</translation>
 <translation id="2765217105034171413">Малък</translation>
 <translation id="2766006623206032690">&amp;Поставяне и старт</translation>
@@ -1551,6 +1554,7 @@
 <translation id="3350117557200012647">Преминете в режим на сдвояване</translation>
 <translation id="3353984535370177728">Избиране на папка за качване</translation>
 <translation id="3355936511340229503">Грешка във връзката</translation>
+<translation id="3356580349448036450">Завършено</translation>
 <translation id="3356797067524893661">Готови сте да продължите към Hangouts Meet</translation>
 <translation id="3358935496594837302">Телефонът ви не може да бъде намерен. Уверете се, че използвате съвместим телефон с Android, който е включен и е подръка. &lt;a&gt;Научете повече&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Ограничения на правилата за сертификата</translation>
@@ -2185,6 +2189,7 @@
 <translation id="4312866146174492540">Блокиране (по подразбиране)</translation>
 <translation id="4316850752623536204">Уебсайт на програмиста</translation>
 <translation id="4320177379694898372">Няма връзка с интернет</translation>
+<translation id="4320948194796820126">Добавете отметка към електронната си поща</translation>
 <translation id="4322394346347055525">Затваряне на другите раздели</translation>
 <translation id="4324577459193912240">Файлът е непълен</translation>
 <translation id="4330387663455830245">Никога да не се превежда от <ph name="LANGUAGE" /></translation>
@@ -2205,6 +2210,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> споделя прозорец.</translation>
 <translation id="4364830672918311045">Показване на известия</translation>
 <translation id="4365673000813822030">Ами сега! Синхронизирането спря да работи.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> чрез <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Въведените имейл адрес и парола не съвпадат</translation>
 <translation id="437184764829821926">Разширени настройки за шрифтовете</translation>
 <translation id="4372884569765913867">1 x 1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Активира се</translation>
 <translation id="5669691691057771421">Въведете новия ПИН</translation>
 <translation id="5671641761787789573">Изображенията са блокирани</translation>
+<translation id="567643736130151854">Влезте в профила си и включете синхронизирането, за да получите отметките, паролите и другите си неща на всичките си устройства</translation>
 <translation id="5677503058916217575">Език на страницата:</translation>
 <translation id="5677928146339483299">Блокирано</translation>
 <translation id="5678550637669481956">Предоставен е достъп до „<ph name="VOLUME_NAME" />“ за четене и запис.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Отваряне на всички в нов прозорец</translation>
 <translation id="701080569351381435">Преглед на изходния код</translation>
 <translation id="7014174261166285193">Инсталацията не бе успешна.</translation>
+<translation id="7017004637493394352">Кажете „Ok Google“ отново</translation>
 <translation id="7017219178341817193">Добавяне на нова страница</translation>
 <translation id="7017354871202642555">Не може да се зададе режим, след като е настроен прозорец.</translation>
 <translation id="7017480957358237747">да разрешавате или забранявате определени уебсайтове;</translation>
@@ -4268,6 +4276,7 @@
 <ph name="BEGIN_PARAGRAPH3" />Можете да изключите местоположението, като деактивирате главната настройка за него на устройството си. Също така от настройките за местоположението сте в състояние да изключите използването на Wi-Fi, мобилни мрежи и сензори за определянето му.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Създаване на парола –</translation>
 <translation id="7521387064766892559">Javascript</translation>
+<translation id="7522255036471229694">Кажете „Ok Google“</translation>
 <translation id="7525067979554623046">Създаване</translation>
 <translation id="7529411698175791732">Проверете връзката си с интернет. Ако проблемът продължи, опитайте да излезете от профила си и отново да влезете в него.</translation>
 <translation id="7530016656428373557">Скорост на разреждане във ватове</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">Последните 4 седмици</translation>
 <translation id="8574990355410201600">Разрешаване винаги на звука от <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Натиснете и задръжте <ph name="KEY_EQUIVALENT" /> за изход</translation>
+<translation id="8578421807258988326">{0,plural, =1{Затваряне на този прозорец}other{Затваряне на всички прозорци в режим „инкогнито“}}</translation>
 <translation id="8578639784464423491">Не може да надхвърля 99 букви</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> елемента се синхронизират...</translation>
 <translation id="857943718398505171">Разрешено (препоръчително)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">Промяна на тапета ви</translation>
 <translation id="9112987648460918699">Търсене...</translation>
 <translation id="9114663181201435112">Лесно влизане в профила ви</translation>
-<translation id="9115487443206954631">Управление на устройства Cast</translation>
 <translation id="9115675100829699941">&amp;Отметки</translation>
 <translation id="9116465289595958864">Последна промяна</translation>
 <translation id="9116799625073598554">Приложение за водене на бележки</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 44e1d1e..f3f14ad 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">ছবি লোড করুন</translation>
 <translation id="1029317248976101138">জুম</translation>
 <translation id="1030706264415084469"><ph name="URL" /> আপনার ডিভাইসে স্থায়ীভাবে বেশি ডেটা স্টোর করে রাখতে চায়</translation>
+<translation id="1030889518049751641">অ্যাক্টিভিটি লগ দেখুন</translation>
 <translation id="1031362278801463162">পূর্বরূপ লোড হচ্ছে</translation>
 <translation id="103279545524624934">Android অ্যাপ্লিকেশান লঞ্চ করার জন্য ডিস্কে জায়গা খালি করুন।</translation>
 <translation id="1033780634303702874">আপনার সিরিয়াল ডিভাইসগুলি অ্যাক্সেস করুন</translation>
@@ -163,6 +164,7 @@
     আপনাকে আপনার প্রোফাইল আবার সেট আপ করতে হবে।<ph name="BR" />
     <ph name="BR" />
     পরবর্তী স্ক্রীনে, আমাদেরকে সমস্যাটি সমাধানে সাহায্য করতে দয়া করে প্রতিক্রিয়া পাঠান।</translation>
+<translation id="1217668622537098248">অ্যাকশনের পরে লেফট ক্লিকে ফিরে যান</translation>
 <translation id="121783623783282548">পাসওয়ার্ডগুলি মেলে না৷</translation>
 <translation id="1218860753635451122">“আমি সম্মত” বোতামে ক্লিক করার অর্থ আপনি এই Google পরিষেবাগুলির জন্য উপরে বর্ণিত প্রক্রিয়াগুলিতে আপনি সম্মতি দেন।</translation>
 <translation id="122082903575839559">শংসাপত্র স্বাক্ষর অ্যালগরিদম</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">আপনার নিরাপত্তা কী সূচিবদ্ধ করা না থাকলে, তার বোতামটি কমপক্ষে ৫ সেকেন্ডের জন্য টিপে ধরে থাকুন।</translation>
 <translation id="275662540872599901">স্ক্রিন বন্ধ</translation>
 <translation id="2761898608071930085">অন্য অ্যাকাউন্ট ব্যবহার করুন</translation>
+<translation id="276233135255363312">{0,plural, =1{আপনার একটি ছদ্মবেশী উইন্ডো আছে।}one{আপনার #টি ছদ্মবেশী উইন্ডো আছে।}other{আপনার #টি ছদ্মবেশী উইন্ডো আছে।}}</translation>
 <translation id="2762441749940182211">ক্যামেরার ব্যবহার ব্লক করা হয়েছে</translation>
 <translation id="2765217105034171413">ক্ষুদ্র</translation>
 <translation id="2766006623206032690">প্র&amp;তিলেপন করুন ও যান</translation>
@@ -1551,6 +1554,7 @@
 <translation id="3350117557200012647">যুক্ত করার মোডে যান</translation>
 <translation id="3353984535370177728">আপলোড করতে একটি ফোল্ডার বেছে নিন</translation>
 <translation id="3355936511340229503">সংযোগ ত্রুটি</translation>
+<translation id="3356580349448036450">সম্পূর্ণ</translation>
 <translation id="3356797067524893661">Hangouts Meet ব্যবহার চালিয়ে যেতে আপনি প্রস্তুত</translation>
 <translation id="3358935496594837302">আপনার ফোন খুঁজে পাওয়া যায়নি৷ নিশ্চিত করুন আপনার একটি উপযুক্ত Android ফোন আছে যেটি চালু রয়েছে এবং সহজে ব্যবহার করা যায়।&lt;a&gt;আরও জানুন/a&gt;</translation>
 <translation id="3359256513598016054">শংসাপত্র নীতি বাধ্যবাধকতা</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">অবরুদ্ধ করুন (ডিফল্ট)</translation>
 <translation id="4316850752623536204">ডেভেলপার ওয়েবসাইট</translation>
 <translation id="4320177379694898372">কোনো ইন্টারনেট সংযোগ নেই</translation>
+<translation id="4320948194796820126">আপনার ইমেলে একটি বুকমার্ক যোগ করুন</translation>
 <translation id="4322394346347055525">অন্যান্য ট্যাব বন্ধ করুন</translation>
 <translation id="4324577459193912240">ফাইলটি অসম্পূর্ণ</translation>
 <translation id="4330387663455830245">কখনও <ph name="LANGUAGE" /> অনুবাদ করবেন না</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> একটি উইন্ডো শেয়ার করছে।</translation>
 <translation id="4364830672918311045">বিজ্ঞপ্তিগুলি প্রদর্শন করুন</translation>
 <translation id="4365673000813822030">উপস, সিঙ্ক কাজ করা বন্ধ করে দিয়েছে৷</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> সহ <ph name="APP_NAME" />।</translation>
 <translation id="4370975561335139969">আপনার লেখা ইমেল আইডি এবং পাসওয়ার্ড মিলছে না</translation>
 <translation id="437184764829821926">উন্নত ফন্ট সেটিংস</translation>
 <translation id="4372884569765913867">১x১</translation>
@@ -3066,6 +3072,7 @@
 <translation id="5669267381087807207">সক্রিয় করা হচ্ছে</translation>
 <translation id="5669691691057771421">নতুন পিন লিখুন</translation>
 <translation id="5671641761787789573">চিত্রগুলি ব্লক করা হয়েছে</translation>
+<translation id="567643736130151854">সমস্ত ডিভাইসে আপনার বুকমার্ক, পাসওয়ার্ড এবং আরও অনেক কিছু পাওয়ার জন্য সাইন-ইন করে সিঙ্ক বিকল্পটি চালু করুন</translation>
 <translation id="5677503058916217575">পৃষ্ঠার ভাষা:</translation>
 <translation id="5677928146339483299">অবরুদ্ধ</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" />-এর পড়া এবং লেখার অ্যাক্সেস মঞ্জুর করা হয়েছে৷</translation>
@@ -3938,6 +3945,7 @@
 <translation id="7007648447224463482">সবগুলি নতুন উইন্ডোতে খুলুন</translation>
 <translation id="701080569351381435">উৎস দেখান</translation>
 <translation id="7014174261166285193">ইনস্টলেশান ব্যর্থ হয়েছে৷</translation>
+<translation id="7017004637493394352">আবার "Ok Google" বলুন</translation>
 <translation id="7017219178341817193">একটি নতুন পৃষ্ঠা যুক্ত করুন</translation>
 <translation id="7017354871202642555">উইন্ডো সেট করার পরে মোড সেট করা যায় না৷</translation>
 <translation id="7017480957358237747">নির্দিষ্ট কিছু ওয়েবসাইটকে অনুমতি দিন বা নিষিদ্ধ করুন</translation>
@@ -4265,6 +4273,7 @@
     <ph name="BEGIN_PARAGRAPH3" />আপনি আপনার ডিভাইসের প্রধান লোকেশন সেটিংস বন্ধ করে লোকেশনটি বন্ধ করতে পারেন। আপনি লোকেশন সেটিংসে অবস্থানের জন্য ওয়াই-ফাই, মোবাইল নেটওয়ার্ক এবং সেন্সর ব্যবহার বন্ধ করতে পারেন।<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">একটি পাসওয়ার্ড তৈরি করুন -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" বলুন</translation>
 <translation id="7525067979554623046">তৈরি করুন</translation>
 <translation id="7529411698175791732">আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন। সমস্যাটি থেকে গেলে, সাইন আউট করে আবার প্রবেশ করার চেষ্টা করুন।</translation>
 <translation id="7530016656428373557">ওয়াটে ডিসচার্জের হার</translation>
@@ -4954,6 +4963,7 @@
 <translation id="8571213806525832805">গত ৪ সপ্তাহ</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> এ সবসময় সাউন্ড চালু রাখুন</translation>
 <translation id="8575286410928791436">ছেড়ে যাওয়ার জন্য <ph name="KEY_EQUIVALENT" /> ধরে থাকুন</translation>
+<translation id="8578421807258988326">{0,plural, =1{এই উইন্ডোটি বন্ধ করুন}one{সমস্ত ছদ্মবেশী উইন্ডো বন্ধ করুন}other{সমস্ত ছদ্মবেশী উইন্ডো বন্ধ করুন}}</translation>
 <translation id="8578639784464423491">৯৯টি অক্ষরের বেশি রাখা যাবে না</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" />টি আইটেম সিঙ্ক করা হচ্ছে...</translation>
 <translation id="857943718398505171">অনুমোদিত (প্রস্তাবিত)</translation>
@@ -5307,7 +5317,6 @@
 <translation id="9112748030372401671">আপনার ওয়ালপেপার পরিবর্তন করুন</translation>
 <translation id="9112987648460918699">খুঁজুন...</translation>
 <translation id="9114663181201435112">সহজেই সাইন ইন করুন</translation>
-<translation id="9115487443206954631">Cast ডিভাইসগুলি পরিচালনা করুন</translation>
 <translation id="9115675100829699941">&amp;বুকমার্ক</translation>
 <translation id="9116465289595958864">শেষবার সংশোধন করা হয়েছে</translation>
 <translation id="9116799625073598554">টিকা-লেখার অ্যাপ</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 1da9b93..72cb201b 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1554,6 +1554,7 @@
 <translation id="3350117557200012647">Activa el mode de vinculació</translation>
 <translation id="3353984535370177728">Seleccioneu una carpeta per penjar</translation>
 <translation id="3355936511340229503">Error de connexió</translation>
+<translation id="3356580349448036450">Completada</translation>
 <translation id="3356797067524893661">Ja estàs a punt per accedir a Hangouts Meet</translation>
 <translation id="3358935496594837302">No es troba el telèfon. Comprova que estiguis utilitzant un telèfon Android compatible, que estigui encès i que sigui a prop. &lt;a&gt;Més informació&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Restriccions de normes de certificats</translation>
@@ -3946,6 +3947,7 @@
 <translation id="7007648447224463482">Obre-ho tot en una finestra nova</translation>
 <translation id="701080569351381435">Visualitza l'origen</translation>
 <translation id="7014174261166285193">La instal·lació ha fallat.</translation>
+<translation id="7017004637493394352">Torneu a dir "Ok Google"</translation>
 <translation id="7017219178341817193">Afegeix una pàgina nova</translation>
 <translation id="7017354871202642555">No es pot configurar el mode després d'haver configurat la finestra.</translation>
 <translation id="7017480957358237747">permet o prohibeix llocs web determinats,</translation>
@@ -4273,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Pots desactivar la ubicació desactivant l'opció Ubicació principal del dispositiu. També pots desactivar l'ús de Wi-Fi, xarxes mòbils i sensors per calcular la ubicació a la configuració d'ubicació.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Crea una contrasenya</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Digueu "Ok Google"</translation>
 <translation id="7525067979554623046">Crea</translation>
 <translation id="7529411698175791732">Comprova la connexió a Internet. Si el problema continua, prova de tancar la sessió i tornar-la a iniciar.</translation>
 <translation id="7530016656428373557">Velocitat de descàrrega en watts</translation>
@@ -5314,7 +5317,6 @@
 <translation id="9112748030372401671">Canviar el fons de pantalla</translation>
 <translation id="9112987648460918699">Cerca...</translation>
 <translation id="9114663181201435112">Inicia la sessió fàcilment</translation>
-<translation id="9115487443206954631">Gestiona els dispositius d'emissió</translation>
 <translation id="9115675100829699941">&amp;Adreces d'interès</translation>
 <translation id="9116465289595958864">Última modificació</translation>
 <translation id="9116799625073598554">Aplicació per prendre notes</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index a5d63d3..1e806b26 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Načíst obrázek</translation>
 <translation id="1029317248976101138">Lupa</translation>
 <translation id="1030706264415084469">Stránka <ph name="URL" /> chce v zařízení trvale ukládat velké množství dat</translation>
+<translation id="1030889518049751641">Zobrazit protokol aktivity</translation>
 <translation id="1031362278801463162">Načítání náhledu</translation>
 <translation id="103279545524624934">Chcete-li spouštět aplikace pro Android, uvolněte místo na disku.</translation>
 <translation id="1033780634303702874">Přistupovat k zařízením připojeným pomocí sériového portu</translation>
@@ -163,6 +164,7 @@
 Profil bude třeba znovu nastavit.<ph name="BR" />
 <ph name="BR" />
 Na následující obrazovce prosím zadejte zpětnou vazbu, která nám problém pomůže vyřešit.</translation>
+<translation id="1217668622537098248">Po akci vrátit na kliknutí levým tlačítkem</translation>
 <translation id="121783623783282548">Hesla se neshodují.</translation>
 <translation id="1218860753635451122">Kliknutím na tlačítko Souhlasím vyjadřujete souhlas se zpracováním popsaným výše pro tyto služby Google.</translation>
 <translation id="122082903575839559">Algoritmus podpisu certifikátu</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">Pokud váš bezpečnostní klíč není uveden, alespoň 5 sekund podržte tlačítko na klíči.</translation>
 <translation id="275662540872599901">obrazovka je vypnutá</translation>
 <translation id="2761898608071930085">Použít jiný účet</translation>
+<translation id="276233135255363312">{0,plural, =1{Máte jedno anonymní okno.}few{Máte # anonymní okna.}many{Máte # anonymního okna.}other{Máte # anonymních oken.}}</translation>
 <translation id="2762441749940182211">Kamera je blokována</translation>
 <translation id="2765217105034171413">Malé</translation>
 <translation id="2766006623206032690">Vložit a rovnou otevřít</translation>
@@ -1551,6 +1554,7 @@
 <translation id="3350117557200012647">Zapněte režim párování</translation>
 <translation id="3353984535370177728">Vyberte složku pro nahrání</translation>
 <translation id="3355936511340229503">Chyba připojení</translation>
+<translation id="3356580349448036450">Dokončeno</translation>
 <translation id="3356797067524893661">Jste připraveni pokračovat do služby Hangouts Meet</translation>
 <translation id="3358935496594837302">Telefon nebyl nalezen. Zkontrolujte, zda používáte kompatibilní telefon Android, který je zapnutý a který máte u sebe. &lt;a&gt;Další informace&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Omezení zásad certifikátu</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">Blokovat (výchozí)</translation>
 <translation id="4316850752623536204">Webové stránky vývojáře</translation>
 <translation id="4320177379694898372">Žádné připojení k internetu</translation>
+<translation id="4320948194796820126">Přidejte si záložku pro e-mail</translation>
 <translation id="4322394346347055525">Zavřít ostatní karty</translation>
 <translation id="4324577459193912240">Soubor je neúplný</translation>
 <translation id="4330387663455830245">Jazyk <ph name="LANGUAGE" /> nikdy nepřekládat</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> sdílí okno.</translation>
 <translation id="4364830672918311045">Zobrazování oznámení</translation>
 <translation id="4365673000813822030">Jejda, synchronizace přestala fungovat.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> pomocí aplikace <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Zadaný e-mail a heslo se neshodují.</translation>
 <translation id="437184764829821926">Rozšířené nastavení písma</translation>
 <translation id="4372884569765913867">1:1</translation>
@@ -3065,6 +3071,7 @@
 <translation id="5669267381087807207">Probíhá aktivace</translation>
 <translation id="5669691691057771421">Zadejte nový PIN</translation>
 <translation id="5671641761787789573">Byly zablokovány obrázky</translation>
+<translation id="567643736130151854">Chcete-li mít své záložky, hesla a další obsah na všech zařízeních, přihlaste se a zapněte synchronizaci</translation>
 <translation id="5677503058916217575">Jazyk stránky:</translation>
 <translation id="5677928146339483299">Zablokováno</translation>
 <translation id="5678550637669481956">Oprávnění ke čtení a zápisu na jednotku <ph name="VOLUME_NAME" /> bylo uděleno.</translation>
@@ -3936,6 +3943,7 @@
 <translation id="7007648447224463482">Otevřít vše v novém okně</translation>
 <translation id="701080569351381435">Zobrazit zdrojový kód</translation>
 <translation id="7014174261166285193">Instalace se nezdařila.</translation>
+<translation id="7017004637493394352">Řekněte „Ok Google“ ještě jednou</translation>
 <translation id="7017219178341817193">Přidat novou stránku</translation>
 <translation id="7017354871202642555">Po nastavení okna již nelze nastavit režim.</translation>
 <translation id="7017480957358237747">povolit nebo zakázat některé weby,</translation>
@@ -4263,6 +4271,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Určování polohy můžete vypnout tím, že v zařízení deaktivujete hlavní nastavení polohy. V nastavení polohy můžete také vypnout používání sítí Wi-Fi, mobilních sítí a senzorů k určování polohy.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Vytvořte heslo –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Řekněte „Ok Google“.</translation>
 <translation id="7525067979554623046">Vytvořit</translation>
 <translation id="7529411698175791732">Zkontrolujte připojení k internetu. Pokud problém přetrvává, zkuste se odhlásit a znovu přihlásit.</translation>
 <translation id="7530016656428373557">Rychlost vybíjení ve wattech</translation>
@@ -4950,6 +4959,7 @@
 <translation id="8571213806525832805">Poslední 4 týdny</translation>
 <translation id="8574990355410201600">Na webu <ph name="HOST" /> vždy povolit zvuk</translation>
 <translation id="8575286410928791436">Ukončíte podržením kláves <ph name="KEY_EQUIVALENT" /></translation>
+<translation id="8578421807258988326">{0,plural, =1{Zavřít toto okno}few{Zavřít všechna anonymní okna}many{Zavřít všechna anonymní okna}other{Zavřít všechna anonymní okna}}</translation>
 <translation id="8578639784464423491">Nesmí přesahovat 99 písmen</translation>
 <translation id="8579285237314169903">Synchronizace <ph name="NUMBER_OF_FILES" /> položek...</translation>
 <translation id="857943718398505171">Povoleno (doporučeno)</translation>
@@ -5303,7 +5313,6 @@
 <translation id="9112748030372401671">Změňte tapetu</translation>
 <translation id="9112987648460918699">Najít...</translation>
 <translation id="9114663181201435112">Snadné přihlášení</translation>
-<translation id="9115487443206954631">Spravovat zařízení Cast</translation>
 <translation id="9115675100829699941">&amp;Záložky</translation>
 <translation id="9116465289595958864">Naposledy upraveno</translation>
 <translation id="9116799625073598554">Aplikace na psaní poznámek</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 2cd1422..b98fda7 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1555,6 +1555,7 @@
 <translation id="3350117557200012647">Start parringstilstand</translation>
 <translation id="3353984535370177728">Vælg en mappe, der skal uploades</translation>
 <translation id="3355936511340229503">Forbindelsesfejl</translation>
+<translation id="3356580349448036450">Fuldført</translation>
 <translation id="3356797067524893661">Du kan nu fortsætte til Hangouts Meet</translation>
 <translation id="3358935496594837302">Din telefon blev ikke fundet. Sørg for, at du bruger en kompatibel Android-telefon, der er tændt og befinder sig i nærheden. &lt;a&gt;Få flere oplysninger&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Begrænsninger for certifikatpolitik</translation>
@@ -3946,6 +3947,7 @@
 <translation id="7007648447224463482">Åbn alle i et nyt vindue</translation>
 <translation id="701080569351381435">Vis kilde</translation>
 <translation id="7014174261166285193">Installationen mislykkedes.</translation>
+<translation id="7017004637493394352">Sig "Ok Google" igen</translation>
 <translation id="7017219178341817193">Tilføj en ny side</translation>
 <translation id="7017354871202642555">Tilstanden kan ikke indstilles, når vinduet er indstillet.</translation>
 <translation id="7017480957358237747">tillad eller forbyd visse websites,</translation>
@@ -4273,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Du kan deaktivere Placering ved at deaktivere den primære indstilling for Placering på din enhed. Du kan også deaktivere brugen af Wi-Fi, mobilnetværk og sensorer i forbindelse med Placering i placeringsindstillingerne.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Opret en adgangskode –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sig "Ok Google".</translation>
 <translation id="7525067979554623046">Opret</translation>
 <translation id="7529411698175791732">Tjek din internetforbindelse. Hvis problemet fortsætter, kan du prøve at logge ud og logge ind igen.</translation>
 <translation id="7530016656428373557">Afladningshastighed i Watt</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Skifte baggrund</translation>
 <translation id="9112987648460918699">Find...</translation>
 <translation id="9114663181201435112">Log nemt ind</translation>
-<translation id="9115487443206954631">Administrer Cast-enheder</translation>
 <translation id="9115675100829699941">&amp;Bogmærker</translation>
 <translation id="9116465289595958864">Sidst ændret</translation>
 <translation id="9116799625073598554">App til notatskrivning</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index afdbab7..cbfa9eb 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1552,6 +1552,7 @@
 <translation id="3350117557200012647">In den Pairing-Modus wechseln</translation>
 <translation id="3353984535370177728">Ordner zum Hochladen auswählen</translation>
 <translation id="3355936511340229503">Verbindungsfehler</translation>
+<translation id="3356580349448036450">Fertig</translation>
 <translation id="3356797067524893661">Hangouts Meet-Einrichtung abgeschlossen</translation>
 <translation id="3358935496594837302">Smartphone wurde nicht gefunden. Ihr Smartphone muss ein kompatibles Android-Smartphone sein, das eingeschaltet ist und sich in Reichweite befindet. &lt;a&gt;Weitere Informationen&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Beschränkungen für Zertifikatrichtlinien</translation>
@@ -3942,6 +3943,7 @@
 <translation id="7007648447224463482">Alle in neuem Fenster öffnen</translation>
 <translation id="701080569351381435">Quelltext anzeigen</translation>
 <translation id="7014174261166285193">Installation fehlgeschlagen</translation>
+<translation id="7017004637493394352">Sagen Sie noch einmal "Ok Google".</translation>
 <translation id="7017219178341817193">Neue Seite hinzufügen</translation>
 <translation id="7017354871202642555">Nach Erstellung des Fensters kann der Modus nicht mehr festgelegt werden.</translation>
 <translation id="7017480957358237747">bestimmte Websites freigeben oder sperren,</translation>
@@ -4269,6 +4271,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Sie können die Standortermittlung deaktivieren, indem Sie die Haupteinstellung "Standort" auf Ihrem Gerät deaktivieren. In den Standorteinstellungen können Sie auch die Nutzung von WLANs, Mobilfunknetzen und Sensoren für die Standortbestimmung deaktivieren.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Passwort erstellen –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sagen Sie "Ok Google".</translation>
 <translation id="7525067979554623046">Erstellen</translation>
 <translation id="7529411698175791732">Prüfen Sie Ihre Internetverbindung. Wenn das Problem weiterhin besteht, melden Sie sich ab und wieder an.</translation>
 <translation id="7530016656428373557">Entladerate in Watt</translation>
@@ -5314,7 +5317,6 @@
 <translation id="9112748030372401671">Hintergrundbild ändern</translation>
 <translation id="9112987648460918699">Suchen...</translation>
 <translation id="9114663181201435112">Einfach anmelden</translation>
-<translation id="9115487443206954631">Cast-Geräte verwalten</translation>
 <translation id="9115675100829699941">&amp;Lesezeichen</translation>
 <translation id="9116465289595958864">Zuletzt geändert</translation>
 <translation id="9116799625073598554">Notizen-App</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 210ebd06..4d5b85c2 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Είσοδος στη λειτουργία σύζευξης</translation>
 <translation id="3353984535370177728">Επιλέξτε έναν φάκελο για μεταφόρτωση</translation>
 <translation id="3355936511340229503">Σφάλμα σύνδεσης</translation>
+<translation id="3356580349448036450">Ολοκληρώθηκε</translation>
 <translation id="3356797067524893661">Είστε έτοιμοι να συνεχίσετε στο Hangouts Meet</translation>
 <translation id="3358935496594837302">Δεν είναι δυνατή η εύρεση του τηλεφώνου σας. Βεβαιωθείτε ότι χρησιμοποιείτε συμβατό τηλέφωνο Android που είναι ενεργοποιημένο και διαθέσιμο. &lt;a&gt;Μάθετε περισσότερα&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Περιορισμοί πολιτικής πιστοποιητικού</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Άνοιγμα όλων σε νέο παράθυρο</translation>
 <translation id="701080569351381435">Προβολή Πηγαίου Κώδικα</translation>
 <translation id="7014174261166285193">Η εγκατάσταση απέτυχε.</translation>
+<translation id="7017004637493394352">Εκφωνήστε ξανά "Ok Google"</translation>
 <translation id="7017219178341817193">Προσθήκη νέας σελίδας</translation>
 <translation id="7017354871202642555">Δεν είναι δυνατή η ρύθμιση της λειτουργίας μετά τη ρύθμιση του παράθυρου.</translation>
 <translation id="7017480957358237747">επιτρέψτε ή απαγορεύστε την πρόσβαση σε συγκεκριμένους ιστότοπους,</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Μπορείτε να απενεργοποιήσετε την Τοποθεσία απενεργοποιώντας την κύρια ρύθμιση Τοποθεσίας στη συσκευή σας. Μπορείτε επίσης να απενεργοποιήσετε τη χρήση δικτύων Wi-Fi, δικτύων κινητής τηλεφωνίας και αισθητήρων για την τοποθεσία στις ρυθμίσεις τοποθεσίας.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Δημιουργήστε έναν κωδικό πρόσβασης -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Εκφωνήστε "Ok Google"</translation>
 <translation id="7525067979554623046">Δημιουργία</translation>
 <translation id="7529411698175791732">Ελέγξτε τη σύνδεσή σας στο διαδίκτυο. Εάν το πρόβλημα παραμένει, δοκιμάστε να αποσυνδεθείτε και να συνδεθείτε ξανά.</translation>
 <translation id="7530016656428373557">Ρυθμός αποφόρτισης σε Watt</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Αλλάξτε την ταπετσαρία σας</translation>
 <translation id="9112987648460918699">Εύρεση...</translation>
 <translation id="9114663181201435112">Εύκολη σύνδεση</translation>
-<translation id="9115487443206954631">Διαχείριση συσκευών μετάδοσης</translation>
 <translation id="9115675100829699941">&amp;Σελιδοδείκτες</translation>
 <translation id="9116465289595958864">Τελευταία τροποποίηση</translation>
 <translation id="9116799625073598554">Εφαρμογή σημειώσεων</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index e3be7ba..9b997218 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -1556,6 +1556,7 @@
 <translation id="3350117557200012647">Get into pairing mode</translation>
 <translation id="3353984535370177728">Select a folder to upload</translation>
 <translation id="3355936511340229503">Connection error</translation>
+<translation id="3356580349448036450">Complete</translation>
 <translation id="3356797067524893661">You're all set to continue on to Hangouts Meet</translation>
 <translation id="3358935496594837302">Can’t find your phone. Make sure that you’re using a compatible Android phone that’s turned on and handy. &lt;a&gt;Learn more&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Certificate Policy Constraints</translation>
@@ -3946,6 +3947,7 @@
 <translation id="7007648447224463482">Open all in new window</translation>
 <translation id="701080569351381435">View Source</translation>
 <translation id="7014174261166285193">Installation failed.</translation>
+<translation id="7017004637493394352">Say 'OK Google' again</translation>
 <translation id="7017219178341817193">Add a new page</translation>
 <translation id="7017354871202642555">Cannot set mode after window is set.</translation>
 <translation id="7017480957358237747">allow or prohibit certain websites,</translation>
@@ -4273,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />You can turn off Location by turning off the main Location setting on your device. You can also turn off the use of Wi-Fi, mobile networks and sensors for location in location settings.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Create a password -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Say 'Ok Google'</translation>
 <translation id="7525067979554623046">Create</translation>
 <translation id="7529411698175791732">Check your Internet connection. If the problem continues, try signing out and signing in again.</translation>
 <translation id="7530016656428373557">Discharge Rate in Watts</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Change your wallpaper</translation>
 <translation id="9112987648460918699">Find...</translation>
 <translation id="9114663181201435112">Sign in easily</translation>
-<translation id="9115487443206954631">Manage Cast devices</translation>
 <translation id="9115675100829699941">&amp;Bookmarks</translation>
 <translation id="9116465289595958864">Last modified</translation>
 <translation id="9116799625073598554">Note-taking app</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index c2a9fbd..f580762 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Cargar imagen</translation>
 <translation id="1029317248976101138">Zoom</translation>
 <translation id="1030706264415084469"><ph name="URL" /> quiere almacenar datos de gran tamaño de forma permanente en tu dispositivo</translation>
+<translation id="1030889518049751641">Ver el Registro de actividad</translation>
 <translation id="1031362278801463162">Cargando vista previa</translation>
 <translation id="103279545524624934">Libera espacio en el disco para ejecutar apps de Android.</translation>
 <translation id="1033780634303702874">Acceder a tus dispositivos en serie</translation>
@@ -163,6 +164,7 @@
     Deberás configurar tu perfil nuevamente.<ph name="BR" />
     <ph name="BR" />
     En la próxima pantalla, envía un comentario para ayudarnos a solucionar este problema.</translation>
+<translation id="1217668622537098248">Volver al clic con el botón izquierdo después de la acción</translation>
 <translation id="121783623783282548">Las contraseñas no coinciden.</translation>
 <translation id="1218860753635451122">Al hacer clic en el botón "Acepto", aceptas el procesamiento descrito anteriormente para estos servicios de Google.</translation>
 <translation id="122082903575839559">Algoritmo de firma del certificado</translation>
@@ -1177,6 +1179,7 @@
 <translation id="2755628026949580719">Si no encuentras tu llave de seguridad en la lista, presiona el botón de la llave durante al menos 5 segundos.</translation>
 <translation id="275662540872599901">Pantalla apagada</translation>
 <translation id="2761898608071930085">Usar otra cuenta</translation>
+<translation id="276233135255363312">{0,plural, =1{Tienes una ventana de incógnito.}other{Tienes # ventanas de incógnito.}}</translation>
 <translation id="2762441749940182211">Cámara bloqueada</translation>
 <translation id="2765217105034171413">Pequeño</translation>
 <translation id="2766006623206032690">Pe&amp;gar y acceder</translation>
@@ -1551,6 +1554,7 @@
 <translation id="3350117557200012647">Activar el modo de sincronización</translation>
 <translation id="3353984535370177728">Seleccionar una carpeta para cargar</translation>
 <translation id="3355936511340229503">Error de conexión</translation>
+<translation id="3356580349448036450">Completo</translation>
 <translation id="3356797067524893661">Todo listo para utilizar Meet de Hangouts</translation>
 <translation id="3358935496594837302">No se puede encontrar el teléfono. Asegúrate de que tienes un teléfono Android compatible, y que esté encendido y cerca. &lt;a&gt;Más información&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Restricciones de directivas para certificados</translation>
@@ -2183,6 +2187,7 @@
 <translation id="4312866146174492540">Bloquear (predeterminado)</translation>
 <translation id="4316850752623536204">Sitio web del programador</translation>
 <translation id="4320177379694898372">Sin conexión a Internet</translation>
+<translation id="4320948194796820126">Agregar tu correo electrónico como favorito</translation>
 <translation id="4322394346347055525">Cerrar las demás pestañas</translation>
 <translation id="4324577459193912240">El archivo está incompleto</translation>
 <translation id="4330387663455830245">Nunca traducir <ph name="LANGUAGE" /></translation>
@@ -2203,6 +2208,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> comparte una ventana.</translation>
 <translation id="4364830672918311045">Mostrar notificaciones</translation>
 <translation id="4365673000813822030">¡Vaya! La sincronización ha dejado de funcionar.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> con <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">El correo electrónico y la contraseña que ingresaste no coinciden.</translation>
 <translation id="437184764829821926">Configuración de fuentes avanzadas</translation>
 <translation id="4372884569765913867">1 x 1</translation>
@@ -3067,6 +3073,7 @@
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5669691691057771421">Ingresa el PIN nuevo</translation>
 <translation id="5671641761787789573">Se bloquearon imágenes</translation>
+<translation id="567643736130151854">Accede y activa la sincronización para obtener tus favoritos, contraseñas y mucho más en todos tus dispositivos</translation>
 <translation id="5677503058916217575">Idioma de la página:</translation>
 <translation id="5677928146339483299">Bloqueado</translation>
 <translation id="5678550637669481956">Se concedió acceso de lectura y escritura a <ph name="VOLUME_NAME" />.</translation>
@@ -3938,6 +3945,7 @@
 <translation id="7007648447224463482">Abrir todo en una ventana nueva</translation>
 <translation id="701080569351381435">Ver código fuente</translation>
 <translation id="7014174261166285193">Error de instalación</translation>
+<translation id="7017004637493394352">Di "OK Google" otra vez.</translation>
 <translation id="7017219178341817193">Agregar nueva página</translation>
 <translation id="7017354871202642555">No es posible configurar el modo después de que se ha configurado la ventana.</translation>
 <translation id="7017480957358237747">permitir o prohibir determinados sitios web;</translation>
@@ -4265,6 +4273,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Para desactivar la ubicación, desactiva la opción principal de configuración de la ubicación en tu dispositivo. También, puedes desactivar el uso de redes Wi-Fi, redes móviles y sensores para obtener la ubicación en la configuración de la ubicación.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Crear una contraseña:</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Di "OK Google".</translation>
 <translation id="7525067979554623046">Crear</translation>
 <translation id="7529411698175791732">Comprueba tu conexión a Internet. Si el problema persiste, intenta salir de tu cuenta y acceder de nuevo.</translation>
 <translation id="7530016656428373557">Tasa de descarga en vatios</translation>
@@ -4956,6 +4965,7 @@
 <translation id="8571213806525832805">Últimas cuatro semanas</translation>
 <translation id="8574990355410201600">Permitir siempre el sonido en <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Mantén presionada la tecla <ph name="KEY_EQUIVALENT" /> para salir</translation>
+<translation id="8578421807258988326">{0,plural, =1{Cerrar esta ventana}other{Cerrar todas las ventanas de incógnito}}</translation>
 <translation id="8578639784464423491">No se pueden superar las 99 letras</translation>
 <translation id="8579285237314169903">Sincronizando <ph name="NUMBER_OF_FILES" /> elementos…</translation>
 <translation id="857943718398505171">Permitido (recomendado)</translation>
@@ -5309,7 +5319,6 @@
 <translation id="9112748030372401671">Cambiar el fondo de pantalla</translation>
 <translation id="9112987648460918699">Buscar...</translation>
 <translation id="9114663181201435112">Acceder de forma fácil</translation>
-<translation id="9115487443206954631">Administrar dispositivos de transmisión</translation>
 <translation id="9115675100829699941">&amp;Favoritos</translation>
 <translation id="9116465289595958864">Última modificación</translation>
 <translation id="9116799625073598554">App para tomar notas</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index c0279f9..e5d0388d 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Cargar imagen</translation>
 <translation id="1029317248976101138">Acercar</translation>
 <translation id="1030706264415084469"><ph name="URL" /> quiere almacenar datos de gran tamaño de forma permanente en tu dispositivo</translation>
+<translation id="1030889518049751641">Ver Registro de actividad</translation>
 <translation id="1031362278801463162">Cargando vista previa</translation>
 <translation id="103279545524624934">Libera espacio del disco para iniciar aplicaciones de Android.</translation>
 <translation id="1033780634303702874">Acceder a tus dispositivos en serie</translation>
@@ -163,6 +164,7 @@
     Debes volver a configurar tu perfil.<ph name="BR" />
     <ph name="BR" />
     Envíanos tus comentarios a través de la siguiente pantalla para ayudarnos a solucionar el problema.</translation>
+<translation id="1217668622537098248">Volver al clic izquierdo después de una acción</translation>
 <translation id="121783623783282548">Las contraseñas no coinciden.</translation>
 <translation id="1218860753635451122">Al hacer clic en el botón "Acepto", declaras que estás conforme con el proceso descrito anteriormente de estos servicios de Google.</translation>
 <translation id="122082903575839559">Algoritmo de firma de certificado</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Si tu llave de seguridad no aparece en la lista, pulsa el botón de la llave durante 5 segundos como mínimo.</translation>
 <translation id="275662540872599901">pantalla apagada</translation>
 <translation id="2761898608071930085">Usar otra cuenta</translation>
+<translation id="276233135255363312">{0,plural, =1{Tienes una ventana de incógnito.}other{Tienes # ventanas de incógnito.}}</translation>
 <translation id="2762441749940182211">Cámara bloqueada</translation>
 <translation id="2765217105034171413">Pequeño</translation>
 <translation id="2766006623206032690">Pe&amp;gar y acceder</translation>
@@ -1552,6 +1555,7 @@
 <translation id="3350117557200012647">Acceder al modo de vinculación</translation>
 <translation id="3353984535370177728">Seleccionar una carpeta para subirla</translation>
 <translation id="3355936511340229503">Error de conexión</translation>
+<translation id="3356580349448036450">Completo</translation>
 <translation id="3356797067524893661">Ya puedes utilizar Hangouts Meet</translation>
 <translation id="3358935496594837302">No se encuentra tu teléfono. Asegúrate de que estás utilizando un teléfono Android compatible que esté encendido y que tengas cerca. &lt;a&gt;Más información&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Restricciones de políticas de certificados</translation>
@@ -2183,6 +2187,7 @@
 <translation id="4312866146174492540">Bloquear (predeterminado)</translation>
 <translation id="4316850752623536204">Sitio web del desarrollador</translation>
 <translation id="4320177379694898372">No hay conexión a Internet</translation>
+<translation id="4320948194796820126">Añade un marcador a tu correo electrónico</translation>
 <translation id="4322394346347055525">Cerrar las demás pestañas</translation>
 <translation id="4324577459193912240">Archivo incompleto</translation>
 <translation id="4330387663455830245">No traducir nunca del <ph name="LANGUAGE" /></translation>
@@ -2203,6 +2208,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> está compartiendo una ventana.</translation>
 <translation id="4364830672918311045">Mostrar notificaciones</translation>
 <translation id="4365673000813822030">¡Ups! La sincronización ha dejado de funcionar.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> con <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">La dirección de correo electrónico y la contraseña que has introducido no coinciden</translation>
 <translation id="437184764829821926">Configuración de fuentes avanzada</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3067,6 +3073,7 @@
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5669691691057771421">Introducir el nuevo PIN</translation>
 <translation id="5671641761787789573">Imágenes bloqueadas</translation>
+<translation id="567643736130151854">Inicia sesión y activa la sincronización para obtener tus marcadores, contraseñas y mucho más en todos tus dispositivos</translation>
 <translation id="5677503058916217575">Idioma de la página:</translation>
 <translation id="5677928146339483299">Con bloqueo</translation>
 <translation id="5678550637669481956">Se ha concedido acceso de lectura y escritura a <ph name="VOLUME_NAME" />.</translation>
@@ -3938,6 +3945,7 @@
 <translation id="7007648447224463482">Abrir todo en una ventana nueva</translation>
 <translation id="701080569351381435">Ver código fuente</translation>
 <translation id="7014174261166285193">Error de instalación</translation>
+<translation id="7017004637493394352">Di otra vez "Ok Google"</translation>
 <translation id="7017219178341817193">Añadir una nueva página</translation>
 <translation id="7017354871202642555">No se puede establecer un modo después de crear una ventana.</translation>
 <translation id="7017480957358237747">permitir o prohibir determinados sitios web,</translation>
@@ -4265,6 +4273,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Para inhabilitar la ubicación, desactiva la opción Ubicación del dispositivo.  También puedes inhabilitar el uso de sensores y redes Wi‑Fi o móviles para determinar la ubicación en los ajustes de ubicación.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Crear una contraseña:</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Di "Ok Google"</translation>
 <translation id="7525067979554623046">Crear</translation>
 <translation id="7529411698175791732">Comprueba tu conexión a Internet. Si el problema persiste, prueba a cerrar sesión y volver a iniciarla.</translation>
 <translation id="7530016656428373557">Tasa de descarga en vatios</translation>
@@ -4955,6 +4964,7 @@
 <translation id="8571213806525832805">Últimas cuatro semanas</translation>
 <translation id="8574990355410201600">Permitir siempre el sonido en <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Mantén pulsado <ph name="KEY_EQUIVALENT" /> para salir</translation>
+<translation id="8578421807258988326">{0,plural, =1{Cerrar esta ventana}other{Cerrar todas las ventanas de incógnito}}</translation>
 <translation id="8578639784464423491">No puede tener más de 99 caracteres</translation>
 <translation id="8579285237314169903">Sincronizando <ph name="NUMBER_OF_FILES" /> elementos...</translation>
 <translation id="857943718398505171">Permitido (recomendado)</translation>
@@ -5308,7 +5318,6 @@
 <translation id="9112748030372401671">Cambia tu fondo de pantalla</translation>
 <translation id="9112987648460918699">Buscar...</translation>
 <translation id="9114663181201435112">Iniciar sesión fácilmente</translation>
-<translation id="9115487443206954631">Administrar dispositivos Google Cast</translation>
 <translation id="9115675100829699941">&amp;Marcadores</translation>
 <translation id="9116465289595958864">Última modificación</translation>
 <translation id="9116799625073598554">Aplicación para tomar notas</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index cf6510a..f179fe8a 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Sidumisrežiimi aktiveerimine</translation>
 <translation id="3353984535370177728">Valige kaust üleslaadimiseks</translation>
 <translation id="3355936511340229503">Ühenduse viga</translation>
+<translation id="3356580349448036450">Lõpetatud</translation>
 <translation id="3356797067524893661">Teil on rakendusega Hangouts Meet jätkamiseks kõik valmis</translation>
 <translation id="3358935496594837302">Teie telefoni ei õnnestu leida. Veenduge, et kasutaksite ühilduvat Android-telefoni, mis on sisse lülitatud ja käepärast. &lt;a&gt;Lisateave&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Sertifikaadi eeskirjade piirangud</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Ava kõik uues aknas</translation>
 <translation id="701080569351381435">Kuva Lähtekood</translation>
 <translation id="7014174261166285193">Installimine ebaõnnestus.</translation>
+<translation id="7017004637493394352">Öelge uuesti: „Ok Google”</translation>
 <translation id="7017219178341817193">Lisa uus leht</translation>
 <translation id="7017354871202642555">Pärast akna seadistamist ei saa režiimi määrata.</translation>
 <translation id="7017480957358237747">lubada või keelata teatud veebisaite,</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Asukohateenuse väljalülitamiseks võite välja lülitada oma seadme peamise asukohaseade. Asukohaseadetes võite välja lülitada ka WiFi- ja mobiilsidevõrkude ning andurite kasutamise asukoha määramiseks.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Parooli loomine –</translation>
 <translation id="7521387064766892559">Javascript</translation>
+<translation id="7522255036471229694">Öelge: „Ok Google”</translation>
 <translation id="7525067979554623046">Loo</translation>
 <translation id="7529411698175791732">Kontrollige oma Interneti-ühendust. Probleemi jätkumisel logige välja ja uuesti sisse.</translation>
 <translation id="7530016656428373557">Tühjenemise määr vattides</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">Taustapildi muutmine</translation>
 <translation id="9112987648460918699">Otsi...</translation>
 <translation id="9114663181201435112">Lihtne sisselogimine</translation>
-<translation id="9115487443206954631">Cast'i seadmete haldamine</translation>
 <translation id="9115675100829699941">&amp;Järjehoidjad</translation>
 <translation id="9116465289595958864">Viimati muudetud</translation>
 <translation id="9116799625073598554">Märkmete tegemise rakendus</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 48d60f5..6d52ace 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">بارگیری تصویر</translation>
 <translation id="1029317248976101138">بزرگ‌نمایی</translation>
 <translation id="1030706264415084469"><ph name="URL" /> می‌خواهد داده‌های بزرگ را برای همیشه در دستگاهتان ذخیره کند</translation>
+<translation id="1030889518049751641">مشاهده گزارش فعالیت</translation>
 <translation id="1031362278801463162">بارگیری پیش‌نمایش</translation>
 <translation id="103279545524624934">‏برای راه‌اندازی برنامه‌های Android فضای دیسک را خالی کنید.</translation>
 <translation id="1033780634303702874">دسترسی به دستگاه‌های سریال خودتان</translation>
@@ -163,6 +164,7 @@
     باید نمایه‌تان را دوباره راه‌اندازی کنید.<ph name="BR" />
     <ph name="BR" />
     در صفحه بعدی، لطفاً برای کمک به ما جهت اصلاح مشکل، بازخوردی ارسال کنید.</translation>
+<translation id="1217668622537098248">بعد از کنش، به کلیک چپ بازنشانی کنید</translation>
 <translation id="121783623783282548">گذرواژه‌ها با هم مطابقت ندارند.</translation>
 <translation id="1218860753635451122">‏درصورت کلیک کردن روی دکمه «موافقم»، با پردازش توضیح داده‌شده در بالا برای این سرویس‌های Google موافقت می‌کنید.</translation>
 <translation id="122082903575839559">الگوریتم امضای گواهی</translation>
@@ -1176,6 +1178,7 @@
 <translation id="2755628026949580719">اگر کلید امنیتی‌تان در فهرست نیست، دکمه کلید را برای حداقل ۵ ثانیه فشار دهید.</translation>
 <translation id="275662540872599901">صفحه خاموش است</translation>
 <translation id="2761898608071930085">استفاده از حسابی دیگر</translation>
+<translation id="276233135255363312">{0,plural, =1{یک پنجره ناشناس دارید.}one{# پنجره ناشناس دارید.}other{# پنجره ناشناس دارید.}}</translation>
 <translation id="2762441749940182211">دوربین مسدود شده است</translation>
 <translation id="2765217105034171413">کوچک</translation>
 <translation id="2766006623206032690">جا&amp;گذاری و رفتن</translation>
@@ -1550,6 +1553,7 @@
 <translation id="3350117557200012647">به حالت مرتبط‌سازی بروید</translation>
 <translation id="3353984535370177728">انتخاب یک پوشه برای بارگذاری</translation>
 <translation id="3355936511340229503">خطای اتصال</translation>
+<translation id="3356580349448036450">کامل</translation>
 <translation id="3356797067524893661">‏برای ادامه و رفتن به Hangouts Meet آماده‌اید</translation>
 <translation id="3358935496594837302">‏تلفنتان پیدا نمی‌شود. مطمئن شوید از تلفن Android سازگاری استفاده می‌کنید که روشن و در دسترس است. &lt;a&gt;بیشتر بدانید&lt;/a&gt;</translation>
 <translation id="3359256513598016054">محدودیت‌های سیاست گواهی</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">مسدود کردن (پیش‌فرض)</translation>
 <translation id="4316850752623536204">وب‌سایت برنامه‌نویس</translation>
 <translation id="4320177379694898372">اتصال اینترنتی ندارید</translation>
+<translation id="4320948194796820126">افزودن نشانک به ایمیل</translation>
 <translation id="4322394346347055525">بستن برگه‌های دیگر</translation>
 <translation id="4324577459193912240">فایل ناقص</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> هرگز ترجمه نشود</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> در حال اشتراک‌گذاری یک پنجره است.</translation>
 <translation id="4364830672918311045">نمایش اعلان‌ها</translation>
 <translation id="4365673000813822030">وای، همگام‌سازی متوقف شده است.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> با <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">ایمیل و گذرواژه‌ای که وارد کرده‌اید، مطابقت ندارند</translation>
 <translation id="437184764829821926">تنظیمات پیشرفته قلم</translation>
 <translation id="4372884569765913867">۱x۱</translation>
@@ -3066,6 +3072,7 @@
 <translation id="5669267381087807207">فعالسازی</translation>
 <translation id="5669691691057771421">پین جدید را وارد کنید</translation>
 <translation id="5671641761787789573">تصویرها مسدود شدند</translation>
+<translation id="567643736130151854">برای دریافت نشانک‌ها، گذرواژه‌ها و سایر موارد در همه دستگاه‌ها، به سیستم وارد شوید و همگام‌سازی را روشن کنید</translation>
 <translation id="5677503058916217575">زبان صفحه:</translation>
 <translation id="5677928146339483299">مسدود است</translation>
 <translation id="5678550637669481956">مجوز خواندن و نوشتن در <ph name="VOLUME_NAME" /> داده شد.</translation>
@@ -3937,6 +3944,7 @@
 <translation id="7007648447224463482">باز کردن همه در پنجره جدید</translation>
 <translation id="701080569351381435">مشاهده منبع</translation>
 <translation id="7014174261166285193">نصب انجام نشد.</translation>
+<translation id="7017004637493394352">‏دوباره بگویید «Ok Google»</translation>
 <translation id="7017219178341817193">افزودن صفحه جدید</translation>
 <translation id="7017354871202642555">بعد از تنظیم پنجره، تنظیم حالت امکان‌پذیر نیست.</translation>
 <translation id="7017480957358237747">وب‌سایت‌های خاصی را مجاز یا ممنوع کنید،</translation>
@@ -4264,6 +4272,7 @@
     <ph name="BEGIN_PARAGRAPH3" />می‌توانید با خاموش کردن تنظیم «مکان» اصلی در دستگاهتان، «مکان» را خاموش کنید. همچنین، می‌توانید در تنظیمات مکان استفاده از Wi-Fi، شبکه‌های تلفن همراه و حسگرها را برای مکان خاموش کنید.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">ایجاد گذرواژه -</translation>
 <translation id="7521387064766892559">جاوا اسکریپت</translation>
+<translation id="7522255036471229694">‏بگویید «Ok Google»</translation>
 <translation id="7525067979554623046">ایجاد</translation>
 <translation id="7529411698175791732">اتصال اینترنت را بررسی کنید. اگر مشکل حل نشد، از سیستم خارج شوید و دوباره به آن وارد شوید.</translation>
 <translation id="7530016656428373557">نسبت تخلیه به وات</translation>
@@ -4954,6 +4963,7 @@
 <translation id="8571213806525832805">۴ هفته گذشته</translation>
 <translation id="8574990355410201600">همیشه در <ph name="HOST" /> به صدا اجازه داده شود</translation>
 <translation id="8575286410928791436">برای خارج شدن، <ph name="KEY_EQUIVALENT" /> را نگه دارید</translation>
+<translation id="8578421807258988326">{0,plural, =1{بستن این پنجره}one{بستن همه پنجره‌های ناشناس}other{بستن همه پنجره‌های ناشناس}}</translation>
 <translation id="8578639784464423491">نمی‌تواند بیش از ۹۹ حرف باشد</translation>
 <translation id="8579285237314169903">در حال همگام‌سازی <ph name="NUMBER_OF_FILES" /> مورد...</translation>
 <translation id="857943718398505171">مجاز (توصیه می‌شود)</translation>
@@ -5307,7 +5317,6 @@
 <translation id="9112748030372401671">تغییر کاغذدیواری</translation>
 <translation id="9112987648460918699">یافتن...</translation>
 <translation id="9114663181201435112">ورود به سیستم آسان</translation>
-<translation id="9115487443206954631">‏مدیریت دستگاه‌های Cast</translation>
 <translation id="9115675100829699941">&amp;نشانک ها</translation>
 <translation id="9116465289595958864">آخرین اصلاح</translation>
 <translation id="9116799625073598554">برنامه یادداشت‌برداری</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index bbff5af..0a228ed 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1558,6 +1558,7 @@
 <translation id="3350117557200012647">Siirry laiteparin muodostustilaan</translation>
 <translation id="3353984535370177728">Valitse lähetettävä kansio</translation>
 <translation id="3355936511340229503">Yhteysvirhe</translation>
+<translation id="3356580349448036450">Valmis</translation>
 <translation id="3356797067524893661">Olet valmis jatkamaan Hangouts Meetiin</translation>
 <translation id="3358935496594837302">Puhelintasi ei löydy. Varmista, että käytät yhteensopivaa Android-laitetta ja että se on käden ulottuvilla. &lt;a&gt;Lisätietoja&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Varmennekäytännön rajoitteet</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Avaa kaikki uudessa ikkunassa</translation>
 <translation id="701080569351381435">Näytä lähdekoodi</translation>
 <translation id="7014174261166285193">Asennus epäonnistui.</translation>
+<translation id="7017004637493394352">Sano ”Ok Google” uudelleen</translation>
 <translation id="7017219178341817193">Lisää uusi sivu</translation>
 <translation id="7017354871202642555">Tilaa ei voi asettaa ikkunan asettamisen jälkeen.</translation>
 <translation id="7017480957358237747">sallia tai estää tietyt verkkosivustot,</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Voit poistaa palvelun käytöstä poistamalla laitteen sijaintiasetuksen käytöstä. Voit myös poistaa käytöstä Wi-Fi- ja mobiiliverkkojen sekä anturien käytön sijainnin määrityksessä.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Luo salasana –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sano ”Ok Google”.</translation>
 <translation id="7525067979554623046">Luo</translation>
 <translation id="7529411698175791732">Tarkista internetyhteytesi. Jos ongelma jatkuu, kirjaudu ulos ja sitten takaisin sisään.</translation>
 <translation id="7530016656428373557">Purkautumisnopeus watteina</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Vaihda taustakuva</translation>
 <translation id="9112987648460918699">Haku...</translation>
 <translation id="9114663181201435112">Kirjaudu sisään helposti</translation>
-<translation id="9115487443206954631">Hallinnoi Cast-laitteita</translation>
 <translation id="9115675100829699941">&amp;Kirjanmerkit</translation>
 <translation id="9116465289595958864">Muokattu viimeksi</translation>
 <translation id="9116799625073598554">Muistiinpanosovellus</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 8e1cd00..9abedde 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">I-load ang larawan</translation>
 <translation id="1029317248976101138">I-zoom</translation>
 <translation id="1030706264415084469">Gusto ng <ph name="URL" /> na permanenteng mag-store ng malaking data sa iyong device</translation>
+<translation id="1030889518049751641">Tingnan ang Log ng Aktibidad</translation>
 <translation id="1031362278801463162">Preview ng paglo-load</translation>
 <translation id="103279545524624934">Magbakante ng disk space upang mailunsad ang Android apps.</translation>
 <translation id="1033780634303702874">I-access ang iyong mga serial device</translation>
@@ -163,6 +164,7 @@
     Kakailanganin mong i-set up muli ang iyong profile.<ph name="BR" />
     <ph name="BR" />
     Sa susunod na screen, mangyaring magpadala ng feedback upang tulungan kaming ayusin ang isyu.</translation>
+<translation id="1217668622537098248">I-revert sa pag-left click pagkatapos ng pagkilos</translation>
 <translation id="121783623783282548">Hindi magkatugma ang mga password.</translation>
 <translation id="1218860753635451122">Sa pamamagitan ng pag-click sa button na "Sumasang-ayon Ako," sumasang-ayon ka sa pagpoprosesong inilarawan sa itaas para sa mga serbisyong ito ng Google.</translation>
 <translation id="122082903575839559">Certificate Signature Algorithm</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Kung hindi nakalista ang iyong security key, pindutin ang button ng key sa loob ng kahit 5 segundo lang.</translation>
 <translation id="275662540872599901">naka-off ang screen</translation>
 <translation id="2761898608071930085">Gumamit ng Ibang Account</translation>
+<translation id="276233135255363312">{0,plural, =1{Mayroon kang isang incognito window.}one{Mayroon kang # incognito window.}other{Mayroon kang # na incognito window.}}</translation>
 <translation id="2762441749940182211">Naka-block ang camera</translation>
 <translation id="2765217105034171413">Maliit</translation>
 <translation id="2766006623206032690">Pa&amp;ste at umalis</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Pumunta sa pairing mode</translation>
 <translation id="3353984535370177728">Pumili ng folder na i-a-upload</translation>
 <translation id="3355936511340229503">Error sa koneksyon</translation>
+<translation id="3356580349448036450">Kumpleto na</translation>
 <translation id="3356797067524893661">Handa ka nang magpatuloy sa Hangouts Meet</translation>
 <translation id="3358935496594837302">Hindi mahanap ang iyong telepono. Siguraduhing gumagamit ka ng tugmang Android phone na naka-on at malapit. &lt;a&gt;Matuto pa&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Mga Limitasyon sa Patakaran ng Certificate</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">I-block (default)</translation>
 <translation id="4316850752623536204">Website ng Developer</translation>
 <translation id="4320177379694898372">Walang koneksyon sa internet</translation>
+<translation id="4320948194796820126">Magdagdag ng bookmark sa email mo</translation>
 <translation id="4322394346347055525">Isara ang Ibang Mga Tab</translation>
 <translation id="4324577459193912240">Hindi kumpleto ang file</translation>
 <translation id="4330387663455830245">Huwag Isalin Ang <ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491">Nagbabahagi ng window ang <ph name="APP_NAME" />.</translation>
 <translation id="4364830672918311045">Ipakita ang mga notification</translation>
 <translation id="4365673000813822030">Oops, tumigil sa paggana ang Sync.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> sa <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Hindi nagtutugma ang inilagay mong email at password</translation>
 <translation id="437184764829821926">Mga advanced na setting ng font</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Ina-activate</translation>
 <translation id="5669691691057771421">Ilagay ang bagong PIN</translation>
 <translation id="5671641761787789573">Na-block ang mga larawan</translation>
+<translation id="567643736130151854">Mag-sign in at i-on ang pag-sync para makuha ang iyong mga bookmark, password, at higit pa sa lahat ng device</translation>
 <translation id="5677503058916217575">Wika ng page:</translation>
 <translation id="5677928146339483299">Naka-block</translation>
 <translation id="5678550637669481956">Ipinagkaloob na sa <ph name="VOLUME_NAME" /> ang access sa pagbasa at pagsulat.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Buksan ang lahat sa bagong window</translation>
 <translation id="701080569351381435">View Source</translation>
 <translation id="7014174261166285193">Nabigo ang pag-install.</translation>
+<translation id="7017004637493394352">Sabihing muli ang "Ok Google"</translation>
 <translation id="7017219178341817193">Magdagdag ng bagong page </translation>
 <translation id="7017354871202642555">Hindi matakda ang mode pagkatapos matakda ang window.</translation>
 <translation id="7017480957358237747">pahintulutan o ipagbawal ang mga partikular na website,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Maaari mong i-off ang Lokasyon sa pamamagitan ng pag-off sa pangunahing setting ng Lokasyon sa iyong device. Maaari mo ring i-off ang paggamit ng Wi-Fi, mga mobile network, at mga sensor para sa lokasyon sa mga setting ng lokasyon.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Gumawa ng isang password -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sabihin ang "Ok Google"</translation>
 <translation id="7525067979554623046">Gumawa</translation>
 <translation id="7529411698175791732">Suriin ang iyong koneksyon sa internet. Kung magpapatuloy ang problema, subukang mag-sign out at muling mag-sign in.</translation>
 <translation id="7530016656428373557">Rate ng Pagdiskarga sa Watts</translation>
@@ -4959,6 +4968,7 @@
 <translation id="8571213806525832805">Huling 4 na linggo</translation>
 <translation id="8574990355410201600">Palaging payagan ang tunog sa <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pindutin nang matagal ang <ph name="KEY_EQUIVALENT" /> para Umalis.</translation>
+<translation id="8578421807258988326">{0,plural, =1{Isara ang window na ito}one{Isara ang lahat ng incognito window}other{Isara ang lahat ng incognito window}}</translation>
 <translation id="8578639784464423491">Hindi maaaring lumagpas sa 99 na titik</translation>
 <translation id="8579285237314169903">Nagsi-sync ng <ph name="NUMBER_OF_FILES" /> (na) item...</translation>
 <translation id="857943718398505171">Pinapayagan (inirerekomenda)</translation>
@@ -5313,7 +5323,6 @@
 <translation id="9112748030372401671">Palitan ang iyong wallpaper</translation>
 <translation id="9112987648460918699">Find...</translation>
 <translation id="9114663181201435112">Mag-sign in nang walang kahirap-hirap</translation>
-<translation id="9115487443206954631">Pamahalaan ang mga Cast device</translation>
 <translation id="9115675100829699941">&amp;Mga Bookmark</translation>
 <translation id="9116465289595958864">Huling binago</translation>
 <translation id="9116799625073598554">App sa pagsusulat ng tala</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 5d717fa..6ba4166 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Associer</translation>
 <translation id="3353984535370177728">Sélectionner le dossier d'importation</translation>
 <translation id="3355936511340229503">Erreur de connexion</translation>
+<translation id="3356580349448036450">Terminé</translation>
 <translation id="3356797067524893661">Vous pouvez accéder à Hangouts Meet</translation>
 <translation id="3358935496594837302">Impossible de trouver votre téléphone. Assurez-vous qu'il s'agit bien d'un téléphone Android compatible, qu'il est allumé et qu'il se trouve à proximité. &lt;a&gt;En savoir plus&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Contraintes des stratégies de certificat</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Tout ouvrir dans une nouvelle fenêtre</translation>
 <translation id="701080569351381435">Code source</translation>
 <translation id="7014174261166285193">Échec de l'installation</translation>
+<translation id="7017004637493394352">Dites une nouvelle fois "Ok Google".</translation>
 <translation id="7017219178341817193">Ajouter une page</translation>
 <translation id="7017354871202642555">Impossible de définir le mode une fois la fenêtre créée.</translation>
 <translation id="7017480957358237747">autoriser ou interdire certains sites Web ;</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Pour désactiver ce service, désactivez le paramètre de localisation principal de l'appareil. Vous pouvez également désactiver l'utilisation des réseaux mobiles et Wi-Fi, ainsi que des capteurs, dans les paramètres de localisation.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Créer un mot de passe –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Dites "Ok Google".</translation>
 <translation id="7525067979554623046">Créer</translation>
 <translation id="7529411698175791732">Vérifiez votre connexion Internet. Si le problème persiste, essayez de vous déconnecter, puis de vous reconnecter.</translation>
 <translation id="7530016656428373557">Taux de décharge en watts</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">Changer le fond d'écran</translation>
 <translation id="9112987648460918699">Rechercher...</translation>
 <translation id="9114663181201435112">Connectez-vous en toute simplicité</translation>
-<translation id="9115487443206954631">Gérer les appareils Cast</translation>
 <translation id="9115675100829699941">&amp;Favoris</translation>
 <translation id="9116465289595958864">Dernière modification</translation>
 <translation id="9116799625073598554">Application de prise de notes</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 318074d..f361486 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">છબી લોડ કરો</translation>
 <translation id="1029317248976101138">ઝૂમ કરો</translation>
 <translation id="1030706264415084469"><ph name="URL" /> તમારા ઉપકરણ પર કાયમી ધોરણે વિશાળ ડેટા સ્ટોર કરવા માગે છે</translation>
+<translation id="1030889518049751641">પ્રવૃત્તિ લૉગ જુઓ</translation>
 <translation id="1031362278801463162">પ્રીવ્યૂ લોડ થાય છે</translation>
 <translation id="103279545524624934">Android ઍપ્લિકેશનો લોંચ કરવા માટે ડિસ્ક સ્થાન ખાલી કરો.</translation>
 <translation id="1033780634303702874">તમારા સીરિયલ ઉપકરણોને ઍક્સેસ કરો</translation>
@@ -163,6 +164,7 @@
     તમારે ફરીથી તમારી પ્રોફાઇલ સેટ કરવાની જરૂર પડશે.<ph name="BR" />
     <ph name="BR" />
     આગલી સ્ક્રીન પર, આ સમસ્યાને ઠીક કરવામાં અમારી સહાય કરવા માટે કૃપા કરીને પ્રતિસાદ મોકલો.</translation>
+<translation id="1217668622537098248">ક્રિયા કર્યા પછી ડાબી ક્લિક પર પાછા ફરો</translation>
 <translation id="121783623783282548">પાસવર્ડ્સ મેળ ખાતા નથી.</translation>
 <translation id="1218860753635451122">"હું સંમત છું" બટનને ક્લિક કરીને, તમે આ Google સેવાઓ માટે ઉપર વર્ણવેલ પ્રક્રિયા સાથે સંમત થાઓ છો.</translation>
 <translation id="122082903575839559">પ્રમાણપત્ર સહી ઍલ્ગોરિધમ</translation>
@@ -1176,6 +1178,7 @@
 <translation id="2755628026949580719">તમારી સુરક્ષા કી સૂચિબદ્ધ ન કરવામાં આવી હોય, તો કીનું બટન ઓછામાં ઓછી 5 સેકન્ડ સુધી દબાવો.</translation>
 <translation id="275662540872599901">સ્ક્રીન બંધ છે</translation>
 <translation id="2761898608071930085">બીજા એકાઉન્ટનો ઉપયોગ કરો</translation>
+<translation id="276233135255363312">{0,plural, =1{તમારી પાસે એક છુપી વિન્ડો છે.}one{તમારી પાસે # છુપી વિન્ડો છે.}other{તમારી પાસે # છુપા વિન્ડો છે.}}</translation>
 <translation id="2762441749940182211">કૅમેરા અવરોધિત</translation>
 <translation id="2765217105034171413">નાનું</translation>
 <translation id="2766006623206032690">પે&amp;સ્ટ કરો અને જાઓ</translation>
@@ -1550,6 +1553,7 @@
 <translation id="3350117557200012647">જોડાણ કરવાના મોડમાં જાઓ</translation>
 <translation id="3353984535370177728">અપલોડ કરવા માટે એક ફોલ્ડર પસંદ કરો</translation>
 <translation id="3355936511340229503">કનેક્શન ભૂલ</translation>
+<translation id="3356580349448036450">પૂર્ણ</translation>
 <translation id="3356797067524893661">તમે Hangouts Meet પર ચાલુ રાખવા માટે તૈયાર છો</translation>
 <translation id="3358935496594837302">તમારો ફોન શોધી શકાતો નથી. ખાતરી કરો કે તમે સુસંગત Android ફોનનો ઉપયોગ કરી રહ્યા છો જે ચાલુ છે અને હાથવગો છે. &lt;a&gt;વધુ જાણો&lt;/a&gt;</translation>
 <translation id="3359256513598016054">પ્રમાણપત્ર નીતિની મર્યાદાઓ</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">અવરોધિત કરો (ડિફૉલ્ટ)</translation>
 <translation id="4316850752623536204">વિકાસકર્તા વેબસાઇટ</translation>
 <translation id="4320177379694898372">કોઈ ઇન્ટરનેટ કનેક્શન નથી</translation>
+<translation id="4320948194796820126">તમારા ઇમેઇલમાં બુકમાર્ક ઉમેરો</translation>
 <translation id="4322394346347055525">અન્ય ટૅબ્સને બંધ કરો</translation>
 <translation id="4324577459193912240">ફાઇલ અધૂરી છે</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> નો ક્યારેય અનુવાદ કરશો નહીં</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" />, એક વિંડો શેર કરી રહી છે.</translation>
 <translation id="4364830672918311045">નોટિફિકેશન બતાવો</translation>
 <translation id="4365673000813822030">ઊફ્ફ, સમન્વયન કામ કરતું બંધ થઈ ગયું છે. </translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> સાથે <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">તમે દાખલ કરેલ ઇમેઇલ અને પાસવર્ડ મેળ ખાતા નથી</translation>
 <translation id="437184764829821926">વિગતવાર ફોન્ટ સેટિંગ્સ</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3067,6 +3073,7 @@
 <translation id="5669267381087807207">સક્રિય કરી રહ્યું છે</translation>
 <translation id="5669691691057771421">નવો PIN દાખલ કરો</translation>
 <translation id="5671641761787789573">છબીઓ અવરોધિત</translation>
+<translation id="567643736130151854">બધા ડિવાઇસ પર તમારા બુકમાર્ક, પાસવર્ડ અને વધુ મેળવવા માટે સાઇન ઇન કરો અને સિંક ચાલુ કરો</translation>
 <translation id="5677503058916217575">પૃષ્ઠ ભાષા:</translation>
 <translation id="5677928146339483299">અવરોધિત</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> ને વાંચવા લખવાની ઍક્સેસ મંજૂર કરવામાં આવી છે.</translation>
@@ -3938,6 +3945,7 @@
 <translation id="7007648447224463482">બધું નવી વિંડોમાં ખોલો</translation>
 <translation id="701080569351381435">સ્રોત જુઓ</translation>
 <translation id="7014174261166285193">ઇન્સ્ટોલેશન નિષ્ફળ થયું.</translation>
+<translation id="7017004637493394352">ફરીથી "Ok Google" કહો</translation>
 <translation id="7017219178341817193">નવું પૃષ્ઠ ઉમેરો</translation>
 <translation id="7017354871202642555">વિંડો સેટ થઈ જાય પછી મોડને સેટ કરી શકાતો નથી.</translation>
 <translation id="7017480957358237747">અમુક વેબસાઇટ્સને મંજૂરી આપો અથવા પ્રતિબંધિત કરો,</translation>
@@ -4265,6 +4273,7 @@
     <ph name="BEGIN_PARAGRAPH3" />તમે તમારા ડિવાઇસમાં મુખ્ય સ્થાન સેટિંગ બંધ કરીને સ્થાન બંધ કરી શકો છો. તમે સ્થાન સેટિંગમાં સ્થાન માટે વાઇ-ફાઇ, મોબાઇલ નેટવર્ક અને સેન્સરનો ઉપયોગ પણ બંધ કરી શકો છો.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">એક પાસવર્ડ બનાવો -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" કહો</translation>
 <translation id="7525067979554623046">બનાવો</translation>
 <translation id="7529411698175791732">તમારું ઇન્ટરનેટ કનેક્શન તપાસો. જો સમસ્યા ચાલુ રહે, તો સાઇન આઉટ કરો અને ફરીથી સાઇન ઇન કરવાનો પ્રયાસ કરો.</translation>
 <translation id="7530016656428373557">ડિસ્ચાર્જ દર વોટ્સમાં</translation>
@@ -4947,6 +4956,7 @@
 <translation id="8571213806525832805">છેલ્લા 4 અઠવાડિયા</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> પર હંમેશાં અવાજને મંજૂરી આપો</translation>
 <translation id="8575286410928791436">છોડવા માટે <ph name="KEY_EQUIVALENT" /> દબાવી રાખો</translation>
+<translation id="8578421807258988326">{0,plural, =1{આ વિંડો બંધ કરો}one{છુપી વિન્ડો બંધ કરો}other{બધા છુપા વિન્ડો બંધ કરો}}</translation>
 <translation id="8578639784464423491">99 અક્ષરો કરતાં વધુ હોઈ શકતો નથી</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> આઇટમ્સ સમન્વયિત કરી રહ્યાં છે...</translation>
 <translation id="857943718398505171">મંજૂર (ભલામણ કરેલ)</translation>
@@ -5300,7 +5310,6 @@
 <translation id="9112748030372401671">તમારું વોલપેપર બદલો</translation>
 <translation id="9112987648460918699">શોધો...</translation>
 <translation id="9114663181201435112">સરળતાથી સાઇન ઇન કરો</translation>
-<translation id="9115487443206954631">કાસ્ટ ઉપકરણોને સંચાલિત કરો</translation>
 <translation id="9115675100829699941">&amp;બુકમાર્ક્સ</translation>
 <translation id="9116465289595958864">છેલ્લે સંશોધિત</translation>
 <translation id="9116799625073598554">નોંધ લેતી અ‍ૅપ્લિકેશન</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 032b956..eade5fb 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">चित्र लोड करें</translation>
 <translation id="1029317248976101138">ज़ूम</translation>
 <translation id="1030706264415084469"><ph name="URL" /> आपके डिवाइस पर हमेशा के लिए बड़ी मात्रा में डेटा संग्रहीत करना चाहता है</translation>
+<translation id="1030889518049751641">गतिविधि लॉग देखें</translation>
 <translation id="1031362278801463162">पूर्वावलोकन लोड हो रहा है</translation>
 <translation id="103279545524624934">Android ऐप्लिकेशन लॉन्च करने के लिए डिस्क में जगह खाली करें.</translation>
 <translation id="1033780634303702874">अपने सीरियल डिवाइस को एक्सेस करें</translation>
@@ -163,6 +164,7 @@
     आपको अपनी प्रोफ़ाइल फिर से सेट करनी होगी.<ph name="BR" />
     <ph name="BR" />
     अगली स्क्रीन पर, समस्या को ठीक करने में सहायता के लिए कृपया सुझाव भेजें.</translation>
+<translation id="1217668622537098248">कार्रवाई के बाद बायां क्लिक वापस लाएं</translation>
 <translation id="121783623783282548">पासवर्ड मेल नहीं खाते.</translation>
 <translation id="1218860753635451122">"मैं सहमत हूं" बटन पर क्लिक करके, आप पुष्टि करते हैं कि इन Google सेवाओं के लिए ऊपर बताई गई प्रोसेसिंग से आप सहमत हैं.</translation>
 <translation id="122082903575839559">प्रमाणपत्र हस्ताक्षर कलन विधि</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">अगर आपकी 'सुरक्षा चाबी' सूची में नहीं है, तो चाबी पर दिए गए बटन को पांच सेकंड तक दबाकर रखें.</translation>
 <translation id="275662540872599901">स्क्रीन बंद है</translation>
 <translation id="2761898608071930085">किसी दूसरे खाते का इस्तेमाल करें</translation>
+<translation id="276233135255363312">{0,plural, =1{आपके पास एक गुप्त विंडो है.}one{आपके पास # गुप्त विंडो हैं.}other{आपके पास # गुप्त विंडो हैं.}}</translation>
 <translation id="2762441749940182211">कैमरा ब्लॉक किया गया है</translation>
 <translation id="2765217105034171413">छोटा</translation>
 <translation id="2766006623206032690">&amp;चिपकाएं और जाएं</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">दूसरे डिवाइस से जोड़ने के मोड में जाएं</translation>
 <translation id="3353984535370177728">अपलोड करने के लिए फ़ोल्डर चुनें</translation>
 <translation id="3355936511340229503">कनेक्शन गड़बड़ी</translation>
+<translation id="3356580349448036450">पूर्ण</translation>
 <translation id="3356797067524893661">Hangouts Meet पर जारी रखने के लिए आप बिल्कुल तैयार हैं</translation>
 <translation id="3358935496594837302">आपका फ़ोन नहीं मिल पा रहा है. पक्का करें कि आप ऐसे संगत Android फ़ोन का उपयोग कर रहे हैं जो चालू है और पहुंच में है. &lt;a&gt;अधिक जानें&lt;/a&gt;</translation>
 <translation id="3359256513598016054">प्रमाणपत्र नीति बाध्यताएं</translation>
@@ -2185,6 +2189,7 @@
 <translation id="4312866146174492540">अवरुद्ध करें (डिफ़ॉल्ट)</translation>
 <translation id="4316850752623536204">डेवलपर वेबसाइट</translation>
 <translation id="4320177379694898372">कोई इंटरनेट कनेक्‍शन नहीं</translation>
+<translation id="4320948194796820126">अपने ईमेल में बुकमार्क जोड़ें</translation>
 <translation id="4322394346347055525">अन्य टैब बंद करें</translation>
 <translation id="4324577459193912240">फ़ाइल अधूरी है</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> का कभी अनुवाद ना करें</translation>
@@ -2205,6 +2210,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> किसी विंडो को शेयर कर रहा है.</translation>
 <translation id="4364830672918311045">प्रदर्शन नोटिफ़िकेशन</translation>
 <translation id="4365673000813822030">ओह, समन्‍वयन ने कार्य करना बंद कर दिया.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> के ज़रिए <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">आपके द्वारा डाले गए ईमेल और पासवर्ड का मिलान नहीं हो रहा</translation>
 <translation id="437184764829821926">उन्नत फ़ॉन्ट सेटिंग</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3069,6 +3075,7 @@
 <translation id="5669267381087807207">सक्रिय कर रहा है</translation>
 <translation id="5669691691057771421">नया पिन डालें</translation>
 <translation id="5671641761787789573">इमेज ब्लॉक की गईं</translation>
+<translation id="567643736130151854">सभी डिवाइस पर अपने बुकमार्क, पासवर्ड वगैरह पाने के लिए साइन इन करें और सिंक सुविधा चालू करें</translation>
 <translation id="5677503058916217575">पेज की भाषा:</translation>
 <translation id="5677928146339483299">अवरोधित</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> पर पढ़ने और लिखने की ऐक्‍सेस दी गई है.</translation>
@@ -3940,6 +3947,7 @@
 <translation id="7007648447224463482">सभी को नई विंडो में खोलें</translation>
 <translation id="701080569351381435">स्रोत देखें</translation>
 <translation id="7014174261166285193">स्थापना विफल.</translation>
+<translation id="7017004637493394352">पुन: "Ok Google" बोलें</translation>
 <translation id="7017219178341817193">कोई नया पेज जोड़ें</translation>
 <translation id="7017354871202642555">विंडो के सेट होने के बाद मोड सेट नहीं कर सकता है.</translation>
 <translation id="7017480957358237747">कुछ वेबसाइटों को अनुमति दें या प्रतिबंधित करें,</translation>
@@ -4267,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />आप अपने डिवाइस की मुख्य स्थान सेटिंग को बंद करके स्थान को बंद कर सकते हैं. आप सेटिंग में जाकर स्थान के वाई-फ़ाई, मोबाइल नेटवर्क और सेंसर भी बंद कर सकते हैं.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">पासवर्ड बनाएं -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" बोलें</translation>
 <translation id="7525067979554623046">बनाएं</translation>
 <translation id="7529411698175791732">अपना इंटरनेट कनेक्शन जाँचें. अगर समस्या बनी रहती है, तो साइन आउट करके और दोबारा प्रवेश करके देखें.</translation>
 <translation id="7530016656428373557">डिस्चार्ज दर वॉट में</translation>
@@ -4957,6 +4966,7 @@
 <translation id="8571213806525832805">पिछले 4 सप्ताह</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> पर आवाज़ हमेशा चालू रखें</translation>
 <translation id="8575286410928791436">बाहर निकलने के लिए <ph name="KEY_EQUIVALENT" /> दबाए रखें</translation>
+<translation id="8578421807258988326">{0,plural, =1{यह विंडो बंद करें}one{सभी गुप्त विंडो बंद करें}other{सभी गुप्त विंडो बंद करें}}</translation>
 <translation id="8578639784464423491">99 से ज़्यादा अक्षर नहीं हो सकते</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> आइटम समन्‍वयित कर रहा है...</translation>
 <translation id="857943718398505171">अनुमति दी गई (सुझाया गया)</translation>
@@ -5310,7 +5320,6 @@
 <translation id="9112748030372401671">अपना वॉलपेपर बदलें</translation>
 <translation id="9112987648460918699">ढूंढें ...</translation>
 <translation id="9114663181201435112">आसानी से प्रवेश करें</translation>
-<translation id="9115487443206954631">कास्ट डिवाइस प्रबंधित करें</translation>
 <translation id="9115675100829699941">&amp;बुकमार्क</translation>
 <translation id="9116465289595958864">पिछली बार संशोधित</translation>
 <translation id="9116799625073598554">नोट लेने वाला ऐप</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 2f38e08..a49e1c3 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Pokreni način uparivanja</translation>
 <translation id="3353984535370177728">Odaberite mapu za prijenos</translation>
 <translation id="3355936511340229503">Pogreška veze</translation>
+<translation id="3356580349448036450">Dovršeno</translation>
 <translation id="3356797067524893661">Spremni ste za nastavak na Hangouts Meet</translation>
 <translation id="3358935496594837302">Telefon nije moguće pronaći. Provjerite je li vaš Android telefon kompatibilan i pri ruci. &lt;a&gt;Saznajte više&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Ograničenja pravila certifikata</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Otvori sve u novom prozoru</translation>
 <translation id="701080569351381435">Prikaži izvor</translation>
 <translation id="7014174261166285193">Instalacija nije uspjela.</translation>
+<translation id="7017004637493394352">Ponovo recite "Ok Google"</translation>
 <translation id="7017219178341817193">Dodaj novu stranicu</translation>
 <translation id="7017354871202642555">Nakon postavljanja prozora nije moguće postaviti način.</translation>
 <translation id="7017480957358237747">dopustiti ili zabraniti određene web-lokacije</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Lokaciju možete isključiti tako što ćete isključiti glavnu postavku lokacije na uređaju. U postavkama lokacije također možete isključiti upotrebu Wi‑Fi-ja, mobilnih mreža i senzora za lokaciju.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Izrada zaporke –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Recite "Ok Google"</translation>
 <translation id="7525067979554623046">Stvori</translation>
 <translation id="7529411698175791732">Provjerite internetsku vezu. Ako se problem ne riješi, pokušajte se odjaviti i ponovo prijaviti.</translation>
 <translation id="7530016656428373557">Stopa pražnjenja u vatima</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">promijeniti pozadinu</translation>
 <translation id="9112987648460918699">Traži...</translation>
 <translation id="9114663181201435112">Jednostavna prijava</translation>
-<translation id="9115487443206954631">Upravljanje uređajima Cast</translation>
 <translation id="9115675100829699941">&amp;Bookmarks (Oznake)</translation>
 <translation id="9116465289595958864">Zadnja izmjena</translation>
 <translation id="9116799625073598554">Aplikacija za zapisivanje bilješki</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 9419003..ed351ff 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1558,6 +1558,7 @@
 <translation id="3350117557200012647">Párosítás megkezdése</translation>
 <translation id="3353984535370177728">Válassza ki a feltölteni kívánt mappát</translation>
 <translation id="3355936511340229503">Kapcsolódási hiba</translation>
+<translation id="3356580349448036450">Kész</translation>
 <translation id="3356797067524893661">Készen áll a Hangouts Meet használatára</translation>
 <translation id="3358935496594837302">A telefon nem található. Győződjön meg arról, hogy kompatibilis, bekapcsolt Android-telefonja kéznél van. &lt;a&gt;További információ&lt;/a&gt;.</translation>
 <translation id="3359256513598016054">Tanúsítvány-irányelvi megkötések</translation>
@@ -3949,6 +3950,7 @@
 <translation id="7007648447224463482">Összes megnyitása új ablakban</translation>
 <translation id="701080569351381435">Forráskód megtekintése</translation>
 <translation id="7014174261166285193">A telepítés nem sikerült.</translation>
+<translation id="7017004637493394352">Mondja ki az „Ok Google” szavakat újra.</translation>
 <translation id="7017219178341817193">Új oldal hozzáadása</translation>
 <translation id="7017354871202642555">A mód beállítása már nem lehetséges, miután beállította az ablakot.</translation>
 <translation id="7017480957358237747">bizonyos webhelyek engedélyezése vagy tiltása,</translation>
@@ -4276,6 +4278,7 @@
     <ph name="BEGIN_PARAGRAPH3" />A helymeghatározást úgy kapcsolhatja ki, hogy kikapcsolja eszközén a fő Hely beállítást. A Wi-Fi, a mobilhálózatok és érzékelők helymeghatározáshoz való használatát szintén a helybeállítások között kapcsolhatja ki.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Hozzon létre egy jelszót –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Mondja ki a következő szavakat: „Ok Google” (Oké Google).</translation>
 <translation id="7525067979554623046">Létrehozás</translation>
 <translation id="7529411698175791732">Ellenőrizze az internetkapcsolatot. Ha a probléma továbbra is fennáll, próbáljon ki-, majd újra bejelentkezni.</translation>
 <translation id="7530016656428373557">Kisütési teljesítmény wattban</translation>
@@ -5320,7 +5323,6 @@
 <translation id="9112748030372401671">Háttérkép módosítása</translation>
 <translation id="9112987648460918699">Keresés...</translation>
 <translation id="9114663181201435112">Egyszerű bejelentkezés</translation>
-<translation id="9115487443206954631">Cast-eszközök kezelése</translation>
 <translation id="9115675100829699941">&amp;Könyvjelzők</translation>
 <translation id="9116465289595958864">Utoljára módosítva</translation>
 <translation id="9116799625073598554">Jegyzetkészítő alkalmazás</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 00f6614..bfeb411 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Muat Gambar</translation>
 <translation id="1029317248976101138">Zoom</translation>
 <translation id="1030706264415084469"><ph name="URL" /> ingin menyimpan data berukuran besar di perangkat Anda secara permanen</translation>
+<translation id="1030889518049751641">Lihat Log Aktivitas</translation>
 <translation id="1031362278801463162">Memuat pratinjau</translation>
 <translation id="103279545524624934">Kosongkan ruang disk untuk meluncurkan aplikasi Android.</translation>
 <translation id="1033780634303702874">Mengakses perangkat seri Anda</translation>
@@ -163,6 +164,7 @@
     Anda harus menyiapkan kembali profil Anda.<ph name="BR" />
     <ph name="BR" />
     Di layar berikutnya, kirimkan masukan untuk membantu kami memperbaiki masalah.</translation>
+<translation id="1217668622537098248">Kembali ke klik kiri setelah tindakan</translation>
 <translation id="121783623783282548">Sandi tidak cocok.</translation>
 <translation id="1218860753635451122">Dengan mengklik tombol "Saya Setuju", berarti Anda menyetujui pemrosesan yang dijelaskan di atas terkait layanan Google ini.</translation>
 <translation id="122082903575839559">Algoritme Tanda Tangan Sertifikat</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Jika kunci keamanan Anda tidak terdaftar, tekan tombol kunci selama minimal 5 detik.</translation>
 <translation id="275662540872599901">layar nonaktif</translation>
 <translation id="2761898608071930085">Gunakan Akun Lain</translation>
+<translation id="276233135255363312">{0,plural, =1{Anda memiliki satu jendela samaran.}other{Anda memiliki # jendela samaran.}}</translation>
 <translation id="2762441749940182211">Kamera diblokir</translation>
 <translation id="2765217105034171413">Kecil</translation>
 <translation id="2766006623206032690">Tem&amp;pel lalu buka</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Masuk mode penyambungan</translation>
 <translation id="3353984535370177728">Pilih folder untuk diunggah</translation>
 <translation id="3355936511340229503">Kesalahan sambungan</translation>
+<translation id="3356580349448036450">Selesai</translation>
 <translation id="3356797067524893661">Anda siap untuk melanjutkan ke Hangouts Meet</translation>
 <translation id="3358935496594837302">Ponsel tidak dapat ditemukan. Pastikan Anda menggunakan ponsel Android yang kompatibel yang aktif dan ada dalam jangkauan. &lt;a&gt;Pelajari lebih lanjut&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Kendala Kebijakan Sertifikat</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">Blokir (default)</translation>
 <translation id="4316850752623536204">Situs Web Pengembang</translation>
 <translation id="4320177379694898372">Tidak ada sambungan internet</translation>
+<translation id="4320948194796820126">Tambahkan bookmark ke email Anda</translation>
 <translation id="4322394346347055525">Tutup Tab Lain</translation>
 <translation id="4324577459193912240">File tidak lengkap</translation>
 <translation id="4330387663455830245">Jangan Pernah Terjemahkan <ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> membagikan jendela.</translation>
 <translation id="4364830672918311045">Tampilkan notifikasi</translation>
 <translation id="4365673000813822030">Ups, Sinkronisasi berhenti bekerja.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> dengan <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Email dan sandi yang Anda masukkan tidak cocok</translation>
 <translation id="437184764829821926">Setelan font lanjutan</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5669691691057771421">Masukkan PIN baru</translation>
 <translation id="5671641761787789573">Gambar diblokir</translation>
+<translation id="567643736130151854">Login dan aktifkan sinkronisasi untuk mendapatkan bookmark, sandi, dan lainnya di semua perangkat</translation>
 <translation id="5677503058916217575">Bahasa halaman:</translation>
 <translation id="5677928146339483299">Dicekal</translation>
 <translation id="5678550637669481956">Akses membaca dan menulis ke <ph name="VOLUME_NAME" /> telah diberikan.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Buka semua di jendela baru</translation>
 <translation id="701080569351381435">Lihat Sumber</translation>
 <translation id="7014174261166285193">Pemasangan gagal.</translation>
+<translation id="7017004637493394352">Ucapkan "Ok Google" lagi</translation>
 <translation id="7017219178341817193">Tambahkan halaman baru</translation>
 <translation id="7017354871202642555">Tidak dapat menyetel mode setelah jendela ditetapkan.</translation>
 <translation id="7017480957358237747">mengizinkan atau melarang situs web tertentu,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Anda dapat menonaktifkan Lokasi dengan menonaktifkan Setelan lokasi utama di perangkat. Anda juga dapat menonaktifkan penggunaan Wi-Fi, jaringan seluler, dan sensor untuk lokasi di setelan lokasi.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Buat sandi -</translation>
 <translation id="7521387064766892559">Javascript</translation>
+<translation id="7522255036471229694">Ucapkan "Ok Google"</translation>
 <translation id="7525067979554623046">Buat</translation>
 <translation id="7529411698175791732">Periksa koneksi internet Anda. Jika masalah tetap berlanjut, coba logout lalu login lagi.</translation>
 <translation id="7530016656428373557">Laju Penggunaan Daya dalam Watt</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">4 minggu terakhir</translation>
 <translation id="8574990355410201600">Selalu izinkan suara di <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Tekan <ph name="KEY_EQUIVALENT" /> untuk Berhenti</translation>
+<translation id="8578421807258988326">{0,plural, =1{Tutup jendela ini}other{Tutup semua jendela samaran}}</translation>
 <translation id="8578639784464423491">Tidak boleh melebihi 99 huruf</translation>
 <translation id="8579285237314169903">Menyinkronkan <ph name="NUMBER_OF_FILES" /> item...</translation>
 <translation id="857943718398505171">Diizinkan (disarankan)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">Ubah wallpaper Anda</translation>
 <translation id="9112987648460918699">Temukan...</translation>
 <translation id="9114663181201435112">Masuk dengan mudah</translation>
-<translation id="9115487443206954631">Mengelola perangkat Cast</translation>
 <translation id="9115675100829699941">&amp;Bookmark</translation>
 <translation id="9116465289595958864">Terakhir diubah</translation>
 <translation id="9116799625073598554">Aplikasi pencatat</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index e3f1c87..9c404e20 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -586,7 +586,7 @@
 <translation id="1838709767668011582">Sito Google</translation>
 <translation id="1839704667838141620">Cambia la modalità di condivisione di questo file</translation>
 <translation id="1841545962859478868">L'amministratore del dispositivo potrebbe monitorare i seguenti elementi:</translation>
-<translation id="1841616161104323629">Manca il record del dispositivo.</translation>
+<translation id="1841616161104323629">Record del dispositivo mancante.</translation>
 <translation id="1841705068325380214">L'estensione <ph name="EXTENSION_NAME" /> è stata disattivata</translation>
 <translation id="1842766183094193446">Vuoi attivare questa modalità demo?</translation>
 <translation id="1844692022597038441">Questo file non è disponibile offline.</translation>
@@ -1553,6 +1553,7 @@
 <translation id="3350117557200012647">Attiva la modalità di accoppiamento</translation>
 <translation id="3353984535370177728">Seleziona una cartella da caricare</translation>
 <translation id="3355936511340229503">Errore di connessione</translation>
+<translation id="3356580349448036450">Fine</translation>
 <translation id="3356797067524893661">Sei pronto per continuare su Hangouts Meet</translation>
 <translation id="3358935496594837302">Impossibile trovare il telefono. Assicurati di usare un telefono Android compatibile che sia acceso e a portata di mano. &lt;a&gt;Ulteriori informazioni&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Vincoli criteri certificati</translation>
@@ -2824,7 +2825,7 @@
 <translation id="532360961509278431">Impossibile aprire "$1": $2</translation>
 <translation id="5324780743567488672">Imposta automaticamente il fuso orario in base alla posizione</translation>
 <translation id="5327248766486351172">Nome</translation>
-<translation id="5327570636534774768">Questo dispositivo è stato contrassegnato per essere gestito da un altro dominio. Esegui il deprovisioning del dispositivo dal dominio in questione prima di configurare la modalità demo.</translation>
+<translation id="5327570636534774768">Questo dispositivo è stato contrassegnato per la gestione da un altro dominio. Esegui il deprovisioning del dispositivo dal dominio in questione prima di configurare la modalità demo.</translation>
 <translation id="532776649628038357">Accetto</translation>
 <translation id="532943162177641444">Tocca la notifica sul tuo <ph name="PHONE_NAME" /> per configurare l'hotspot mobile che può essere utilizzato per questo dispositivo.</translation>
 <translation id="5329858601952122676">&amp;Elimina</translation>
@@ -3942,6 +3943,7 @@
 <translation id="7007648447224463482">Apri tutto in una nuova finestra</translation>
 <translation id="701080569351381435">Visualizza sorgente</translation>
 <translation id="7014174261166285193">Installazione non riuscita.</translation>
+<translation id="7017004637493394352">Dì "Ok Google" di nuovo</translation>
 <translation id="7017219178341817193">Aggiungi una nuova pagina</translation>
 <translation id="7017354871202642555">Impossibile impostare la modalità dopo l'impostazione della finestra.</translation>
 <translation id="7017480957358237747">consentire o vietare siti web specifici,</translation>
@@ -4064,7 +4066,7 @@
 <translation id="7197160646667308890"><ph name="BEGIN_PARAGRAPH1" />Si tratta di informazioni generali sul dispositivo e sulla relativa modalità di utilizzo (ad esempio il livello della batteria, l'utilizzo delle app e la connettività di rete). I dati saranno utilizzati per migliorare i prodotti e i servizi di Google per tutti. Alcune informazioni aggregate consentiranno anche ai partner, ad esempio gli sviluppatori Android, di migliorare i propri prodotti e le proprie app.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />La disattivazione di questa funzione non influisce sulla capacità del dispositivo di inviare le informazioni necessarie per i servizi essenziali quali aggiornamenti di sistema e sicurezza.<ph name="END_PARAGRAPH2" />
     <ph name="BEGIN_PARAGRAPH3" />Puoi controllare questa funzione da Impostazioni &gt; Google. Seleziona Utilizzo e diagnostica dal menu.<ph name="END_PARAGRAPH3" /></translation>
-<translation id="7197190419934240522">Beneficia dell'intelligenza della Ricerca Google e di Google ogni volta che navighi</translation>
+<translation id="7197190419934240522">Sfrutta tutti i vantaggi di Ricerca Google e Google ogni volta che navighi</translation>
 <translation id="7197632491113152433">Nel tuo account abbiamo trovato <ph name="NUMBER_OF_APPS" /> app che possono essere utilizzate su questo dispositivo.</translation>
 <translation id="7199158086730159431">Ricevi assistenza</translation>
 <translation id="7200083590239651963">Seleziona configurazione</translation>
@@ -4269,6 +4271,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Puoi disattivare la geolocalizzazione disattivando l'impostazione Posizione principale del dispositivo. Puoi anche disattivare l'uso di reti Wi-Fi e mobili e di sensori per la geolocalizzazione nelle impostazioni di geolocalizzazione.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Crea una password -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Dì "Ok Google"</translation>
 <translation id="7525067979554623046">Crea</translation>
 <translation id="7529411698175791732">Controlla la connessione a Internet. Se il problema persiste, prova a uscire e ad accedere di nuovo.</translation>
 <translation id="7530016656428373557">Velocità di esaurimento in watt</translation>
@@ -4735,7 +4738,7 @@
 <translation id="8200772114523450471">Riprendi</translation>
 <translation id="8202160505685531999">Inserisci di nuovo la password per aggiornare il profilo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203732864715032075">Ricevi notifiche e imposta come predefinita la memorizzazione di questo computer per Messaggi. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
-<translation id="8203795194971602413">Clic con destro</translation>
+<translation id="8203795194971602413">Clic con il pulsante destro</translation>
 <translation id="8206354486702514201">Questa impostazione è stata applicata dall'amministratore.</translation>
 <translation id="8206745257863499010">Bluesy</translation>
 <translation id="8209677645716428427">Un utente supervisionato può navigare sul Web sotto la tua guida. In qualità di gestore di un utente supervisionato in Chome, puoi:</translation>
@@ -5310,7 +5313,6 @@
 <translation id="9112748030372401671">Modifica dello sfondo</translation>
 <translation id="9112987648460918699">Trova...</translation>
 <translation id="9114663181201435112">Accedi facilmente</translation>
-<translation id="9115487443206954631">Gestisci i dispositivi Cast</translation>
 <translation id="9115675100829699941">&amp;Preferiti</translation>
 <translation id="9116465289595958864">Ultima modifica</translation>
 <translation id="9116799625073598554">App per creare note</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index e611fe7..a4cb7f9 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1554,6 +1554,7 @@
 <translation id="3350117557200012647">כניסה למצב התאמה</translation>
 <translation id="3353984535370177728">בחר תיקיה להעלאה</translation>
 <translation id="3355936511340229503">שגיאת חיבור</translation>
+<translation id="3356580349448036450">בוצע</translation>
 <translation id="3356797067524893661">‏הכול מוכן ואפשר להמשיך אל Hangouts Meet</translation>
 <translation id="3358935496594837302">‏לא ניתן למצוא את הטלפון שלך. יש לוודא שימוש בטלפון Android תואם ושהוא מופעל ונמצא בקרבתך. &lt;a&gt;למידע נוסף&lt;/a&gt;</translation>
 <translation id="3359256513598016054">מגבלות מדיניות אישורים </translation>
@@ -3945,6 +3946,7 @@
 <translation id="7007648447224463482">פתח הכול בחלון חדש</translation>
 <translation id="701080569351381435">הצג מקור</translation>
 <translation id="7014174261166285193">ההתקנה נכשלה.</translation>
+<translation id="7017004637493394352">‏אמור שוב "Ok Google"</translation>
 <translation id="7017219178341817193">הוסף דף חדש</translation>
 <translation id="7017354871202642555">לא ניתן להגדיר מצב לאחר שהחלון הוגדר.</translation>
 <translation id="7017480957358237747">התר או חסום אתרים מסוימים,</translation>
@@ -4272,6 +4274,7 @@
     <ph name="BEGIN_PARAGRAPH3" />ניתן לכבות את המיקום על-ידי כיבוי של הגדרת המיקום הראשית במכשיר. בהגדרות המיקום ניתן גם לבטל את השימוש ב-Wi-Fi, ברשתות סלולריות ובחיישנים לאיתור המיקום.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">צור סיסמה -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">‏אמור "Ok Google"</translation>
 <translation id="7525067979554623046">צור</translation>
 <translation id="7529411698175791732">בדוק את חיבור האינטרנט. אם הבעיה לא נפתרת, נסה לצאת מהחשבון ולהיכנס אליו שוב.</translation>
 <translation id="7530016656428373557">שיעור פריקה בוואט</translation>
@@ -5313,7 +5316,6 @@
 <translation id="9112748030372401671">שינוי הטפט שלך</translation>
 <translation id="9112987648460918699">חפש...</translation>
 <translation id="9114663181201435112">כניסה בקלות</translation>
-<translation id="9115487443206954631">‏נהל מכשירי Cast</translation>
 <translation id="9115675100829699941">&amp;סימניות</translation>
 <translation id="9116465289595958864">שינוי אחרון</translation>
 <translation id="9116799625073598554">יישום לרישום הערות</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 0da1ba47..fe06f4b 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">画像を読み込む</translation>
 <translation id="1029317248976101138">ズーム</translation>
 <translation id="1030706264415084469"><ph name="URL" /> から、端末に大きなデータを永続的に保存する許可を求められています</translation>
+<translation id="1030889518049751641">アクティビティ ログを表示</translation>
 <translation id="1031362278801463162">プレビューを読み込んでいます</translation>
 <translation id="103279545524624934">Android アプリを起動できるようにディスク領域を解放します。</translation>
 <translation id="1033780634303702874">シリアル デバイスへのアクセス</translation>
@@ -163,6 +164,7 @@
     プロフィールをもう一度設定する必要があります。<ph name="BR" />
     <ph name="BR" />
     次の画面でフィードバックをお送りください。この問題の解決に役立てさせていただきます。</translation>
+<translation id="1217668622537098248">終了後、デフォルトの左クリック動作に戻す</translation>
 <translation id="121783623783282548">パスワードが一致しません。</translation>
 <translation id="1218860753635451122">[同意する] をクリックすると、これらの Google サービスに関する上記の処理内容に同意したことになります。</translation>
 <translation id="122082903575839559">証明書の署名アルゴリズム</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">セキュリティ キーが表示されていない場合は、キーのボタンを 5 秒以上長押ししてください。</translation>
 <translation id="275662540872599901">画面オフ</translation>
 <translation id="2761898608071930085">別のアカウントを使用</translation>
+<translation id="276233135255363312">{0,plural, =1{1 個のシークレット ウィンドウを開いています。}other{# 個のシークレット ウィンドウを開いています。}}</translation>
 <translation id="2762441749940182211">カメラがブロックされています</translation>
 <translation id="2765217105034171413">小</translation>
 <translation id="2766006623206032690">貼り付けて移動(&amp;S)</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">ペア設定モードにしてください</translation>
 <translation id="3353984535370177728">アップロードするフォルダを選択</translation>
 <translation id="3355936511340229503">接続エラー</translation>
+<translation id="3356580349448036450">完了</translation>
 <translation id="3356797067524893661">設定が完了しました。ハングアウト Meet を使用できます</translation>
 <translation id="3358935496594837302">スマートフォンが見つかりません。使用している Android スマートフォンが対応機種で、電源が入っており、手の届く範囲にあることを確認してください。&lt;a&gt;詳細&lt;/a&gt;</translation>
 <translation id="3359256513598016054">証明書ポリシーの制約</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">ブロック(デフォルト)</translation>
 <translation id="4316850752623536204">デベロッパーのウェブサイト</translation>
 <translation id="4320177379694898372">インターネットに接続されていません</translation>
+<translation id="4320948194796820126">メールサービスへのブックマークを追加</translation>
 <translation id="4322394346347055525">他のタブをすべて閉じる</translation>
 <translation id="4324577459193912240">ファイルが不完全です</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> を翻訳しない</translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> がウィンドウを共有しています。</translation>
 <translation id="4364830672918311045">通知を表示</translation>
 <translation id="4365673000813822030">同期は停止されました。</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> で<ph name="ACTION_NAME" />します。</translation>
 <translation id="4370975561335139969">入力したメールアドレスとパスワードが一致しません</translation>
 <translation id="437184764829821926">フォントの詳細設定</translation>
 <translation id="4372884569765913867">1×1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">有効にしています</translation>
 <translation id="5669691691057771421">新しい PIN を入力</translation>
 <translation id="5671641761787789573">画像がブロックされました</translation>
+<translation id="567643736130151854">ログインして同期を有効にすれば、ブックマーク、パスワード、その他の設定をどの端末からでもご利用いただけます</translation>
 <translation id="5677503058916217575">ページの言語:</translation>
 <translation id="5677928146339483299">ブロック</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> への読み書きのアクセス権が許可されました。</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">すべてを新しいウィンドウで開く</translation>
 <translation id="701080569351381435">ソースを表示</translation>
 <translation id="7014174261166285193">インストールできませんでした。</translation>
+<translation id="7017004637493394352">もう一度「OK Google」と言ってください</translation>
 <translation id="7017219178341817193">新しいページを追加</translation>
 <translation id="7017354871202642555">ウィンドウが設定されている場合はモードを設定できません。</translation>
 <translation id="7017480957358237747">特定のウェブサイトへのアクセスを許可または禁止する</translation>
@@ -4269,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />位置情報をオフにするには、端末でメインの位置情報の設定をオフにします。位置情報の設定では、Wi‑Fi、モバイル ネットワーク、センサーを使用した現在地の特定をオフにすることもできます。<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">パスワードを作成 -</translation>
 <translation id="7521387064766892559">Javascript</translation>
+<translation id="7522255036471229694">「OK Google」と言ってください</translation>
 <translation id="7525067979554623046">作成</translation>
 <translation id="7529411698175791732">インターネット接続を確認してください。問題が解消しない場合は、ログアウトして再度ログインしてみてください。</translation>
 <translation id="7530016656428373557">放電率(ワット)</translation>
@@ -4959,6 +4968,7 @@
 <translation id="8571213806525832805">過去 4 週間</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> の音声を常に許可する</translation>
 <translation id="8575286410928791436">終了するには <ph name="KEY_EQUIVALENT" /> キーを押します</translation>
+<translation id="8578421807258988326">{0,plural, =1{このウィンドウを閉じる}other{すべてのシークレット ウィンドウを閉じる}}</translation>
 <translation id="8578639784464423491">99 文字までで指定してください</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> 個のアイテムを同期しています...</translation>
 <translation id="857943718398505171">許可(推奨)</translation>
@@ -5312,7 +5322,6 @@
 <translation id="9112748030372401671">壁紙を変更する</translation>
 <translation id="9112987648460918699">検索...</translation>
 <translation id="9114663181201435112">簡単にログイン</translation>
-<translation id="9115487443206954631">キャスト デバイスを管理</translation>
 <translation id="9115675100829699941">ブックマーク(&amp;B)</translation>
 <translation id="9116465289595958864">最終更新</translation>
 <translation id="9116799625073598554">メモ用アプリ</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index e1ec3891..1ee06ae 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">ಚಿತ್ರ ಲೋಡ್ ಮಾಡು</translation>
 <translation id="1029317248976101138">ಝೂಮ್</translation>
 <translation id="1030706264415084469">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಸಂಗ್ರಹಣೆ ಮಾಡಲು <ph name="URL" /> ಬಯಸುತ್ತದೆ</translation>
+<translation id="1030889518049751641">ಚಟುವಟಿಕೆ ಲಾಗ್ ವೀಕ್ಷಿಸಿ</translation>
 <translation id="1031362278801463162">ಪೂರ್ವವೀಕ್ಷಣೆ ಲೋಡ್ ಆಗುತ್ತಿದೆ</translation>
 <translation id="103279545524624934">Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಡಿಸ್ಕ್ ಸ್ಥಳಾವಕಾಶ ಮುಕ್ತಗೊಳಿಸಿ.</translation>
 <translation id="1033780634303702874">ನಿಮ್ಮ ಸರಣಿ ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಿ</translation>
@@ -159,6 +160,7 @@
      ನೀವು ಮತ್ತೆ ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.<ph name="BR" />
      <ph name="BR" />
      ಮುಂದಿನ ಪರದೆಯಲ್ಲಿ, ಸಮಸ್ಯೆಯನ್ನು ಬಗೆಹರಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು ದಯವಿಟ್ಟು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ.</translation>
+<translation id="1217668622537098248">ಕ್ರಿಯೆಯ ನಂತರ ಎಡ ಕ್ಲಿಕ್‌ಗೆ ಹಿಂತಿರುಗಿಸಿ</translation>
 <translation id="121783623783282548">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಹೊಂದುತ್ತಿಲ್ಲ.</translation>
 <translation id="1218860753635451122">ಈ Google ಸೇವೆಗಳಿಗಾಗಿ "ನಾನು ಒಪ್ಪುತ್ತೇನೆ" ಬಟನ್‌ ಅನ್ನು ಕ್ಲಿಕ್‌ ಮಾಡುವುದರ ಮೂಲಕ, ನೀವು ಮೇಲೆ ವಿವರಿಸಿರುವ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆಗೆ ಒಪ್ಪುತ್ತೀರಿ.</translation>
 <translation id="122082903575839559">ಪ್ರಮಾಣಪತ್ರ ಸಹಿ ಅಲ್ಗಾರಿದಮ್</translation>
@@ -1176,6 +1178,7 @@
 <translation id="2755628026949580719">ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಯನ್ನು ಪಟ್ಟಿ ಮಾಡಿರದಿದ್ದರೆ, 5 ಸೆಕೆಂಡುಗಳವರೆಗೆ ಕೀ ಬಟನ್ ಅನ್ನು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ.</translation>
 <translation id="275662540872599901">ಸ್ಕ್ರೀನ್ ಆಫ್</translation>
 <translation id="2761898608071930085">ಮತ್ತೊಂದು ಖಾತೆಯನ್ನು ಬಳಸಿ</translation>
+<translation id="276233135255363312">{0,plural, =1{ನೀವು ಒಂದು ಅಜ್ಞಾತ ವಿಂಡೋವನ್ನು ತೆರೆದಿರುವಿರಿ.}one{ನೀವು # ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ತೆರೆದಿರುವಿರಿ.}other{ನೀವು # ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ತೆರೆದಿರುವಿರಿ.}}</translation>
 <translation id="2762441749940182211">ಕ್ಯಾಮೆರಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="2765217105034171413">ಸಣ್ಣ</translation>
 <translation id="2766006623206032690">ಅಂ&amp;ಟಿಸಿ ಮತ್ತು ಹೋಗಿ</translation>
@@ -1550,6 +1553,7 @@
 <translation id="3350117557200012647">ಜೋಡಿಸುವಿಕೆ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="3353984535370177728">ಅಪ್‌ಲೋಡ್‌ ಮಾಡಲು ಫೋಲ್ಡರ್‌ವೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="3355936511340229503">ಸಂಪರ್ಕ ದೋಷ</translation>
+<translation id="3356580349448036450">ಪೂರ್ಣಗೊಂಡಿದೆ</translation>
 <translation id="3356797067524893661">Hangouts ಸಭೆಯನ್ನು ಮುಂದುವರಿಸಲು ನೀವು ಸಿದ್ಧರಾಗಿರುವಿರಿ</translation>
 <translation id="3358935496594837302">ನಿಮ್ಮ ಫೋನ್ ಪತ್ತೆಮಾಡಲಾಗಲಿಲ್ಲ. ನೀವು ಆನ್ ಮಾಡಿರುವಂತಹ ಮತ್ತು ಸುಲಭವಾಗಿ ಲಭ್ಯ ಇರುವ ಹೊಂದಾಣಿಕೆಯ Android ಫೋನ್ ಬಳಸಲು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. &lt;a&gt;ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ&lt;/a&gt;</translation>
 <translation id="3359256513598016054">ಪ್ರಮಾಣಪತ್ರ ನೀತಿ ನಿರ್ಬಂಧಗಳು</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">ನಿರ್ಬಂಧಿಸು (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="4316850752623536204">ಡೆವಲಪರ್ ವೆಬ್‌ಸೈಟ್</translation>
 <translation id="4320177379694898372">ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲ</translation>
+<translation id="4320948194796820126">ನಿಮ್ಮ ಇಮೇಲ್‌ಗೆ ಬುಕ್‌ಮಾರ್ಕ್ ಸೇರಿಸಿ</translation>
 <translation id="4322394346347055525">ಇತರ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="4324577459193912240">ಫೈಲ್‌ ಅಪೂರ್ಣವಾಗಿದೆ</translation>
 <translation id="4330387663455830245">ಎಂದಿಗೂ <ph name="LANGUAGE" /> ಭಾಷೆಯನ್ನು ಅನುವಾದಿಸಬೇಡ</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> ವಿಂಡೋವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದೆ.</translation>
 <translation id="4364830672918311045">ಅಧಿಸೂಚನೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ</translation>
 <translation id="4365673000813822030">ಓಹ್, ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> ಮೂಲಕ <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">ನೀವು ನಮೂದಿಸಿದ ಇಮೇಲ್ ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ</translation>
 <translation id="437184764829821926">ಸುಧಾರಿತ ಫಾಂಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="5669691691057771421">ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ</translation>
 <translation id="5671641761787789573">ಚಿತ್ರಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
+<translation id="567643736130151854">ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳನ್ನು ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ಪಡೆದುಕೊಳ್ಳಲು ಸೈನ್ ಇನ್ ಮಾಡಿ ಮತ್ತು ಸಿಂಕ್ ಆನ್ ಮಾಡಿ</translation>
 <translation id="5677503058916217575">ಪುಟದ ಭಾಷೆ:</translation>
 <translation id="5677928146339483299">ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> ಗೆ ಓದಲು ಮತ್ತು ಬರೆಯಲು ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ.</translation>
@@ -3938,6 +3945,7 @@
 <translation id="7007648447224463482">ಎಲ್ಲವನ್ನೂ ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="701080569351381435">ಮೂಲ ವೀಕ್ಷಿಸಿ</translation>
 <translation id="7014174261166285193">ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ.</translation>
+<translation id="7017004637493394352">"Ok Google" ಎಂದು ಮತ್ತೊಮ್ಮೆ ಹೇಳಿ</translation>
 <translation id="7017219178341817193">ಒಂದು ಹೊಸ ಪುಟವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="7017354871202642555">ವಿಂಡೋ ಸೆಟ್ ಮಾಡಿದ ನಂತರ ಮೋಡ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7017480957358237747">ನಿರ್ದಿಷ್ಟ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಅನುಮತಿಸಿ ಅಥವಾ ನಿಷೇಧಿಸಿ,</translation>
@@ -4264,6 +4272,7 @@
 <ph name="BEGIN_PARAGRAPH3" />ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಮುಖ್ಯ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆಫ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಸ್ಥಳವನ್ನು ಆಫ್ ಮಾಡಬಹುದು. ನೀವು ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸ್ಥಳಕ್ಕಾಗಿ ವೈ-ಫೈ, ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಮತ್ತು ಸೆನ್ಸರ್‌ಗಳ ಬಳಕೆಯನ್ನು ಸಹ ಆಫ್‌ ಮಾಡಬಹುದು.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">ಪಾಸ್‌ವರ್ಡ್ ರಚಿಸಿ -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" ಎಂದು ಹೇಳಿ</translation>
 <translation id="7525067979554623046">ರಚಿಸಿ</translation>
 <translation id="7529411698175791732">ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರೀಕ್ಷಿಸಿ. ಸಮಸ್ಯೆ ಮುಂದುವರೆದರೆ, ಸೈನ್ ಔಟ್ ಮಾಡಲು ಹಾಗೂ ಮರಳಿ ಸೈನ್ ಇನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7530016656428373557">ವ್ಯಾಟ್‌ಗಳಲ್ಲಿ ಡಿಸ್‌ಚಾರ್ಜ್ ದರ</translation>
@@ -4950,6 +4959,7 @@
 <translation id="8571213806525832805">ಕಳೆದ 4 ವಾರಗಳು</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> ನಲ್ಲಿ ಧ್ವನಿಗೆ ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
 <translation id="8575286410928791436">ನಿರ್ಗಮಿಸಲು <ph name="KEY_EQUIVALENT" /> ಅನ್ನು ಒತ್ತಿಹಿಡಿಯಿರಿ</translation>
+<translation id="8578421807258988326">{0,plural, =1{ಈ ವಿಂಡೋ ಮುಚ್ಚಿ}one{ಎಲ್ಲಾ ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಿ}other{ಎಲ್ಲಾ ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಿ}}</translation>
 <translation id="8578639784464423491">99 ಅಕ್ಷರಗಳನ್ನು ಮೀರಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> ಐಟಂಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="857943718398505171">ಅನುಮತಿಸಲಾಗಿದೆ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
@@ -5303,7 +5313,6 @@
 <translation id="9112748030372401671">ನಿಮ್ಮ ವಾಲ್‌ಪೇಪರ್ ಬದಲಿಸಿ</translation>
 <translation id="9112987648460918699">ಹುಡುಕಿ...</translation>
 <translation id="9114663181201435112">ಸುಲಭವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
-<translation id="9115487443206954631">ಬಿತ್ತರಿಸುವಿಕೆ ಸಾಧನಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="9115675100829699941">&amp;ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
 <translation id="9116465289595958864">ಕೊನೆಯದಾಗಿ ಮಾರ್ಪಡಿಸಿರುವುದು</translation>
 <translation id="9116799625073598554">ಟಿಪ್ಪಣಿ ತೆಗೆದುಕೊಳ್ಳುವಿಕೆ ಅಪ್ಲಿಕೇಶನ್</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index f3aef46..effbf32 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">이미지 로드</translation>
 <translation id="1029317248976101138">확대</translation>
 <translation id="1030706264415084469"><ph name="URL" />에서 내 기기에 대용량 데이터를 영구 저장하려고 합니다</translation>
+<translation id="1030889518049751641">활동 로그 보기</translation>
 <translation id="1031362278801463162">미리보기 로드 중</translation>
 <translation id="103279545524624934">Android 앱을 실행하려면 디스크 저장 공간을 확보하세요.</translation>
 <translation id="1033780634303702874">직렬 기기에 액세스</translation>
@@ -163,6 +164,7 @@
     프로필을 다시 설정해야 합니다.<ph name="BR" />
     <ph name="BR" />
     다음 화면에서 Google이 문제를 해결할 수 있도록 의견을 보내주시기 바랍니다.</translation>
+<translation id="1217668622537098248">작업 후 왼쪽 클릭으로 되돌리기</translation>
 <translation id="121783623783282548">비밀번호가 일치하지 않습니다.</translation>
 <translation id="1218860753635451122">'동의' 버튼을 클릭하면 이 Google 서비스와 관련하여 상기한 바와 같이 처리함에 동의하는 것으로 간주됩니다.</translation>
 <translation id="122082903575839559">인증서 서명 알고리즘</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">보안 키가 목록에 없으면 키에 있는 버튼을 5초 이상 길게 누르세요.</translation>
 <translation id="275662540872599901">화면 꺼짐</translation>
 <translation id="2761898608071930085">다른 계정 사용</translation>
+<translation id="276233135255363312">{0,plural, =1{시크릿 창이 1개 열려 있습니다.}other{시크릿 창이 #개 열려 있습니다.}}</translation>
 <translation id="2762441749940182211">카메라 차단됨</translation>
 <translation id="2765217105034171413">작게</translation>
 <translation id="2766006623206032690">붙여넣어 바로가기(&amp;S)</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">페어링 모드 시작</translation>
 <translation id="3353984535370177728">업로드할 폴더 선택</translation>
 <translation id="3355936511340229503">연결 오류</translation>
+<translation id="3356580349448036450">완료</translation>
 <translation id="3356797067524893661">행아웃 Meet 사용 준비 완료</translation>
 <translation id="3358935496594837302">휴대전화를 찾을 수 없습니다. 호환 가능한 Android 휴대전화를 사용 중인지, 휴대전화의 전원이 켜져 있고 가까이 있는지 확인하세요. &lt;a&gt;자세히 알아보기e&lt;/a&gt;</translation>
 <translation id="3359256513598016054">인증서 정책 제약조건</translation>
@@ -2184,6 +2188,7 @@
 <translation id="4312866146174492540">차단(기본값)</translation>
 <translation id="4316850752623536204">개발자 웹사이트</translation>
 <translation id="4320177379694898372">인터넷에 연결되지 않음</translation>
+<translation id="4320948194796820126">이메일에 북마크 추가</translation>
 <translation id="4322394346347055525">다른 탭 닫기</translation>
 <translation id="4324577459193912240">파일 다운로드가 완료되지 않음</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> 번역 안함</translation>
@@ -2204,6 +2209,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" />이(가) 창을 공유합니다.</translation>
 <translation id="4364830672918311045">알림 표시</translation>
 <translation id="4365673000813822030">동기화 작업이 중지되었습니다.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> 앱으로 <ph name="ACTION_NAME" /> 작업을 실행합니다.</translation>
 <translation id="4370975561335139969">입력한 이메일과 비밀번호가 일치하지 않습니다.</translation>
 <translation id="437184764829821926">고급 글꼴 설정</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3068,6 +3074,7 @@
 <translation id="5669267381087807207">활성화 중</translation>
 <translation id="5669691691057771421">새 PIN 입력</translation>
 <translation id="5671641761787789573">이미지가 차단됨</translation>
+<translation id="567643736130151854">로그인 후 동기화를 사용 설정하여 모든 기기에서 내 북마크, 비밀번호 등을 사용하세요.</translation>
 <translation id="5677503058916217575">페이지 언어:</translation>
 <translation id="5677928146339483299">차단됨</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" />에 대한 읽기/쓰기 액세스 권한이 부여되었습니다.</translation>
@@ -3939,6 +3946,7 @@
 <translation id="7007648447224463482">모두 새 창에서 열기</translation>
 <translation id="701080569351381435">소스 보기</translation>
 <translation id="7014174261166285193">설치에 실패했습니다.</translation>
+<translation id="7017004637493394352">다시 한번 "Ok Google"이라고 말하세요.</translation>
 <translation id="7017219178341817193">새 페이지 추가</translation>
 <translation id="7017354871202642555">창이 설정된 후에는 모드를 설정할 수 없습니다.</translation>
 <translation id="7017480957358237747">특정 웹사이트 허용 또는 금지</translation>
@@ -4266,6 +4274,7 @@
     <ph name="BEGIN_PARAGRAPH3" />기기에서 기본 위치 설정을 사용 중지하면 위치를 사용 중지할 수 있습니다. 또한 위치 설정에서 위치를 추정하는 데 Wi-Fi, 모바일 네트워크, 센서를 사용하지 않도록 할 수도 있습니다.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">비밀번호 만들기 -</translation>
 <translation id="7521387064766892559">자바스크립트</translation>
+<translation id="7522255036471229694">"Ok Google"이라고 말하세요.</translation>
 <translation id="7525067979554623046">만들기</translation>
 <translation id="7529411698175791732">인터넷 연결 상태를 확인하세요. 문제가 계속되면 로그아웃한 뒤 다시 로그인해보세요.</translation>
 <translation id="7530016656428373557">방전율(와트)</translation>
@@ -4956,6 +4965,7 @@
 <translation id="8571213806525832805">지난 4주</translation>
 <translation id="8574990355410201600"><ph name="HOST" />에서 소리 항상 허용</translation>
 <translation id="8575286410928791436">종료하려면 <ph name="KEY_EQUIVALENT" /> 키를 길게 누르세요.</translation>
+<translation id="8578421807258988326">{0,plural, =1{창 닫기}other{시크릿 창 모두 닫기}}</translation>
 <translation id="8578639784464423491">99자를 초과할 수 없습니다.</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" />개 항목 동기화 중...</translation>
 <translation id="857943718398505171">허용(권장)</translation>
@@ -5309,7 +5319,6 @@
 <translation id="9112748030372401671">배경화면 변경</translation>
 <translation id="9112987648460918699">찾기...</translation>
 <translation id="9114663181201435112">간편한 로그인</translation>
-<translation id="9115487443206954631">Cast 기기 관리</translation>
 <translation id="9115675100829699941">북마크(&amp;B)</translation>
 <translation id="9116465289595958864">최종 수정 날짜</translation>
 <translation id="9116799625073598554">메모 앱</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 91de3722..4810a78 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Įjunkite susiejimo režimą</translation>
 <translation id="3353984535370177728">Pasirinkite norimą įkelti aplanką</translation>
 <translation id="3355936511340229503">Ryšio klaida</translation>
+<translation id="3356580349448036450">Baigta</translation>
 <translation id="3356797067524893661">Viskas nustatyta – galite eiti į „Hangout Meet“</translation>
 <translation id="3358935496594837302">Nepavyksta rasti jūsų telefono. Įsitikinkite, kad naudojate suderinamą „Android“ telefoną, kuris įjungtas ir yra netoliese. &lt;a&gt;Sužinokite daugiau&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Sertifikato politikos apribojimai</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Atidaryti viską naujame lange</translation>
 <translation id="701080569351381435">Žiūrėti šaltinį</translation>
 <translation id="7014174261166285193">Nepavyko įdiegti.</translation>
+<translation id="7017004637493394352">Dar kartą ištarkite „Ok Google“</translation>
 <translation id="7017219178341817193">Pridėti naują puslapį</translation>
 <translation id="7017354871202642555">Nustačius langą, režimo nustatyti negalima.</translation>
 <translation id="7017480957358237747">leisti arba drausti konkrečias svetaines</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Galite išjungti vietovės nustatymą išjungdami pagrindinį vietovės nustatymą šiame įrenginyje. Vietovės nustatymuose taip pat galite išjungti „Wi‑Fi“, mobiliojo ryšio tinklų ir jutiklių naudojimą vietovei nustatyti.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Sukurti slaptažodį –</translation>
 <translation id="7521387064766892559">„JavaScript“</translation>
+<translation id="7522255036471229694">Ištarkite „Ok Google“.</translation>
 <translation id="7525067979554623046">Sukurti</translation>
 <translation id="7529411698175791732">Patikrinkite interneto ryšį. Jei problema kartosis, pabandykite atsijungti ir vėl prisijungti.</translation>
 <translation id="7530016656428373557">Iškrovos koeficientas vatais</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">Darbalaukio fono keitimas</translation>
 <translation id="9112987648460918699">Rasti...</translation>
 <translation id="9114663181201435112">Lengvai prisijunkite</translation>
-<translation id="9115487443206954631">„Cast“ įrenginių tvarkymas</translation>
 <translation id="9115675100829699941">&amp;Žymės</translation>
 <translation id="9116465289595958864">Paskutinį kartą pakeista</translation>
 <translation id="9116799625073598554">Užrašų programa</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index a352eed..314cf14 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Pāreja uz režīmu savienošanai pārī</translation>
 <translation id="3353984535370177728">Atlasīt augšupielādējamo mapi</translation>
 <translation id="3355936511340229503">Savienojuma kļūda</translation>
+<translation id="3356580349448036450">Pabeigts</translation>
 <translation id="3356797067524893661">Jūs esat gatavs izmantot pakalpojumu Hangouts Meet</translation>
 <translation id="3358935496594837302">Nevar atrast tālruni. Jums ir jāizmanto saderīgs Android tālrunis, kurš ir ieslēgts un atrodas rokas stiepiena attālumā. &lt;a&gt;Uzziniet vairāk&lt;/a&gt;.</translation>
 <translation id="3359256513598016054">Sertifikātu politikas ierobežojumi</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Atvērt visu jaunā logā</translation>
 <translation id="701080569351381435">Skatīt avotu</translation>
 <translation id="7014174261166285193">Instalēšana neizdevās.</translation>
+<translation id="7017004637493394352">Vēlreiz sakiet frāzi “Ok Google”.</translation>
 <translation id="7017219178341817193">Pievienot jaunu lapu</translation>
 <translation id="7017354871202642555">Nevar iestatīt režīmu pēc loga iestatīšanas.</translation>
 <translation id="7017480957358237747">ļaut vai aizliegt noteiktas vietnes;</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Varat izslēgt atrašanās vietas noteikšanu, savā ierīcē izslēdzot galveno atrašanās vietas noteikšanas iestatījumu. Atrašanās vietas iestatījumos varat arī izslēgt Wi-Fi, mobilo tīklu un sensoru izmantošanu atrašanās vietas noteikšanai.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Paroles izveide —</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sakiet frāzi “Ok Google”</translation>
 <translation id="7525067979554623046">Izveidot</translation>
 <translation id="7529411698175791732">Pārbaudiet interneta savienojumu. Ja neizdodas novērst problēmu, izrakstieties un atkārtoti pierakstieties.</translation>
 <translation id="7530016656428373557">Izlādes ātrums vatos</translation>
@@ -5318,7 +5321,6 @@
 <translation id="9112748030372401671">Mainīt tapeti</translation>
 <translation id="9112987648460918699">Atrast...</translation>
 <translation id="9114663181201435112">Vienkārša pierakstīšanās</translation>
-<translation id="9115487443206954631">Apraides ierīču pārvaldība</translation>
 <translation id="9115675100829699941">Grāmatzīmes</translation>
 <translation id="9116465289595958864">Pēdējoreiz pārveidots</translation>
 <translation id="9116799625073598554">Piezīmju pierakstīšanas lietotne</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 9f840d1..54dfedf2 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">ചിത്രം ലോഡുചെയ്യുക</translation>
 <translation id="1029317248976101138">സൂം ചെയ്യുക</translation>
 <translation id="1030706264415084469">നിങ്ങളുടെ ഉപകരണത്തിൽ ശാശ്വതമായി വലിയ അളവിൽ ഡാറ്റ സംഭരിക്കാന്‍ <ph name="URL" />ആഗ്രഹിക്കുന്നു</translation>
+<translation id="1030889518049751641">ആക്റ്റിവിറ്റി ലോഗ് കാണുക</translation>
 <translation id="1031362278801463162">പ്രിവ്യൂ ലോഡുചെയ്യുന്നു...</translation>
 <translation id="103279545524624934">Android ആപ്‌സ് ആരംഭിക്കുന്നതിന്, ഡിസ്‌ക് ഇടം സൃഷ്‌ടിക്കുക.</translation>
 <translation id="1033780634303702874">നിങ്ങളുടെ സീരിയൽ ഉപകരണങ്ങൾ ആക്‌സസ്സുചെയ്യുക</translation>
@@ -163,6 +164,7 @@
     നിങ്ങളുടെ പ്രൊഫൈൽ വീണ്ടും സജ്ജമാക്കേണ്ടതുണ്ട്.<ph name="BR" />
     <ph name="BR" />
     അടുത്ത സ്‌ക്രീനിൽ, ഫീഡ്‌ബാക്ക് അയച്ച് പ്രശ്‌നം പരിഹരിക്കാൻ ഞങ്ങളെ സഹായിക്കുക.</translation>
+<translation id="1217668622537098248">പ്രവൃത്തിക്ക് ശേഷം ഇടത് ക്ലിക്ക് പുനഃസ്ഥാപിക്കുക</translation>
 <translation id="121783623783282548">പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല.</translation>
 <translation id="1218860753635451122">"ഞാൻ സമ്മതിക്കുന്നു" ബട്ടൺ ക്ലിക്ക് ചെയ്യുക വഴി, ഈ Google സേവനങ്ങൾക്കായി മുകളിൽ വിവരിച്ചിട്ടുള്ള പ്രോസസ്സിംഗിന് നിങ്ങൾ സമ്മതിക്കുകയാണ്.</translation>
 <translation id="122082903575839559">സര്‍‌ട്ടിഫിക്കറ്റ് സിഗ്‌നേച്ചര്‍‌ അല്‍‌ഗോരിതം</translation>
@@ -1177,6 +1179,7 @@
 <translation id="2755628026949580719">നിങ്ങളുടെ സുരക്ഷാ കീ ലിസ്‌റ്റ് ചെയ്‌തിട്ടില്ലെങ്കിൽ, കുറഞ്ഞത് 5 സെക്കൻഡ് കീയുടെ ബട്ടൺ അമർത്തുക.</translation>
 <translation id="275662540872599901">സ്‌ക്രീൻ ഓഫാണ്</translation>
 <translation id="2761898608071930085">മറ്റൊരു അക്കൗണ്ട് ഉപയോഗിക്കുക</translation>
+<translation id="276233135255363312">{0,plural, =1{നിങ്ങളുടെ ഒരു അദൃശ്യ വിൻഡോ തുറന്നിരിക്കുന്നു.}other{നിങ്ങളുടെ # അദൃശ്യ വിൻഡോകള്‍ തുറന്നിരിക്കുന്നു.}}</translation>
 <translation id="2762441749940182211">ക്യാമറ ബ്ലോക്ക് ചെയ്‌‌തു</translation>
 <translation id="2765217105034171413">ചെറുത്</translation>
 <translation id="2766006623206032690">ഒട്ടി&amp;ക്കൂ കൂടാതെ പോകൂ</translation>
@@ -1551,6 +1554,7 @@
 <translation id="3350117557200012647">ജോടിയാക്കൽ മോഡിലേക്ക് പ്രവേശിക്കുക</translation>
 <translation id="3353984535370177728">അപ്‌ലോഡുചെയ്യുന്നതിന് ഒരു ഫോൾഡർ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="3355936511340229503">കണക്ഷന്‍ പിശക്.</translation>
+<translation id="3356580349448036450">പൂര്‍ത്തിയാക്കൂ</translation>
 <translation id="3356797067524893661">Hangouts Meet-ൽ തുടരുന്നതിന് നിങ്ങൾ സജ്ജമാണ്</translation>
 <translation id="3358935496594837302">നിങ്ങളുടെ ഫോൺ കണ്ടെത്താനാകുന്നില്ല. അനുയോജ്യമായ Android ഫോൺ ആണ് ഉപയോഗിക്കുന്നതെന്നും അത് ഓണാണെന്നും കൈയ്യിലുണ്ടെന്നും ഉറപ്പാക്കുക. &lt;a&gt;കൂടുതലറിയുക&lt;/a&gt;</translation>
 <translation id="3359256513598016054">സര്‍‌ട്ടിഫിക്കറ്റ് നയ നിയന്ത്രണങ്ങള്‍‌</translation>
@@ -2182,6 +2186,7 @@
 <translation id="4312866146174492540">ബ്ലോക്കുചെയ്യുക (ഡിഫോൾട്ട്)</translation>
 <translation id="4316850752623536204">ഡെവലപ്പർ വെബ്‌സൈറ്റ്</translation>
 <translation id="4320177379694898372">ഇന്റർനെറ്റ് കണക്ഷനൊന്നുമില്ല</translation>
+<translation id="4320948194796820126">നിങ്ങളുടെ ഇമെയിലിലേക്ക് ഒരു ബുക്ക്‌മാർക്ക് ചേർക്കുക</translation>
 <translation id="4322394346347055525">മറ്റ് ടാബുകള്‍ അടയ്‌ക്കുക</translation>
 <translation id="4324577459193912240">ഫയൽ ‌പൂർണ്ണമല്ല</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> ഒരിക്കലും വിവര്‍‌ത്തനം ചെയ്യരുത്</translation>
@@ -2202,6 +2207,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" />, ഒരു വിൻഡോ പങ്കിടുന്നു.</translation>
 <translation id="4364830672918311045">അറിയിപ്പുകൾ പ്രദർശിപ്പിക്കുക</translation>
 <translation id="4365673000813822030">ക്ഷമിക്കണം, സമന്വയം പ്രവർത്തനം നിർത്തി.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> ഉപയോഗിച്ചുള്ള <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">നിങ്ങൾ നൽകിയ ഇമെയിലും പാസ്‌വേഡും പൊരുത്തപ്പെടുന്നില്ല</translation>
 <translation id="437184764829821926">വിപുലീകരിച്ച ഫോണ്ട് ക്രമീകരണങ്ങൾ</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3066,6 +3072,7 @@
 <translation id="5669267381087807207">സജീവമാക്കുന്നു</translation>
 <translation id="5669691691057771421">പുതിയ പിൻ നൽകുക</translation>
 <translation id="5671641761787789573">ചിത്രങ്ങൾ ബ്ലോക്ക് ചെയ്‌തു</translation>
+<translation id="567643736130151854">ബുക്ക്‌മാർക്കുകളും ‌പാസ്‌വേഡുകളും മറ്റും എല്ലാ ഉപകരണങ്ങളിലും നേടുന്നതിന് സൈന്‍ ഇന്‍ ചെയ്ത ശേഷം സമന്വയം ഓണാക്കുക</translation>
 <translation id="5677503058916217575">പേജ് ഭാഷ:</translation>
 <translation id="5677928146339483299">തടഞ്ഞു</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> എന്നതിലേക്ക് റീഡുചെയ്യാനും റൈറ്റുചെയ്യാനുമുള്ള ആക്‌സസ്സ് അനുവദിച്ചിരിക്കുന്നു.</translation>
@@ -3939,6 +3946,7 @@
 <translation id="7007648447224463482">എല്ലാം പുതിയ വിൻഡോയിൽ തുറക്കുക</translation>
 <translation id="701080569351381435">ഉറവിടം കാണുക</translation>
 <translation id="7014174261166285193">ഇന്‍സ്റ്റാളേഷന്‍ പരാജയപ്പെട്ടു.</translation>
+<translation id="7017004637493394352">വീണ്ടും "Ok Google" പറയുക</translation>
 <translation id="7017219178341817193">ഒരു പുതിയ പേജ് ചേര്‍ക്കുക</translation>
 <translation id="7017354871202642555">വിന്‍ഡോ സജ്ജമാക്കിയതിനുശേഷം മോഡ് സജ്ജമാക്കാന്‍ കഴിയില്ല.</translation>
 <translation id="7017480957358237747">ചില വെബ്‌സൈറ്റുകളെ അനുവദിക്കുകയോ നിരോധിക്കുകയോ ചെയ്യുക,</translation>
@@ -4266,6 +4274,7 @@
     <ph name="BEGIN_PARAGRAPH3" />ഈ ഉപകരണത്തിലെ പ്രധാന ലൊക്കേഷൻ ക്രമീകരണം ഓഫാക്കുക വഴി നിങ്ങൾക്ക് ലൊക്കേഷൻ ഓഫാക്കാവുന്നതാണ്. കൂടാതെ ലൊക്കേഷൻ ക്രമീകരണത്തിൽ, ലൊക്കേഷന് വേണ്ടിയുള്ള വൈഫൈ, മൊബൈൽ നെറ്റ്‌വർക്കുകൾ, സെൻസറുകൾ എന്നിവയുടെ ഉപയോഗവും ഓഫാക്കാനാവും.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">ഒരു പാസ്‌വേഡ് സൃഷ്‌ടിക്കുക -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" എന്ന് പറയുക</translation>
 <translation id="7525067979554623046">സൃഷ്‌ടിക്കുക</translation>
 <translation id="7529411698175791732">നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക. പ്രശ്‌നം തുടരുകയാണെങ്കിൽ, സൈൻ ഔട്ട് ചെയ്‌ത് വീണ്ടും സൈൻ ഇൻ ചെയ്യുന്നത് പരീക്ഷിക്കൂ.</translation>
 <translation id="7530016656428373557">ഡിസ്ചാർജ്ജ് നിരക്ക് വാട്‌സിൽ</translation>
@@ -4956,6 +4965,7 @@
 <translation id="8571213806525832805">കഴിഞ്ഞ 4 ആഴ്ച</translation>
 <translation id="8574990355410201600">എല്ലായ്‌പ്പോഴും <ph name="HOST" /> എന്നതിൽ ‌ശബ്ദം അനുവദിക്കുക</translation>
 <translation id="8575286410928791436">പുറത്തുകടക്കുന്നതിന് <ph name="KEY_EQUIVALENT" /> അമര്‍ത്തിപ്പിടിക്കുക</translation>
+<translation id="8578421807258988326">{0,plural, =1{ഈ വിൻഡോ അവസാനിപ്പിക്കുക}other{എല്ലാ അദൃശ്യ വിൻഡോകളും അവസാനിപ്പിക്കുക}}</translation>
 <translation id="8578639784464423491">99 അക്ഷരങ്ങളേക്കാൾ അധികമാവരുത്</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> ഇനങ്ങൾ സമന്വയിപ്പിക്കുന്നു...</translation>
 <translation id="857943718398505171">അനുവദിച്ചിരിക്കുന്നു (ശുപാർശചെയ്‌തത്)</translation>
@@ -5308,7 +5318,6 @@
 <translation id="9112748030372401671">നിങ്ങളുടെ വാൾപേപ്പർ മാറ്റുക</translation>
 <translation id="9112987648460918699">കണ്ടെത്തുക...</translation>
 <translation id="9114663181201435112">എളുപ്പത്തിൽ സൈൻ ഇൻ ചെയ്യുക</translation>
-<translation id="9115487443206954631">Cast ഉപകരണങ്ങൾ മാനേജുചെയ്യുക</translation>
 <translation id="9115675100829699941">&amp;ബുക്ക്‌മാര്‍ക്കുകള്‍</translation>
 <translation id="9116465289595958864">അവസാനം പരിഷ്ക്കരിച്ചവ</translation>
 <translation id="9116799625073598554">കുറിപ്പെടുക്കാനുള്ള ആപ്പ്</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 823e8c9b..a149edc 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">इमेज लोड करा</translation>
 <translation id="1029317248976101138">झूम करा</translation>
 <translation id="1030706264415084469"><ph name="URL" /> ला तुमच्या डिव्हाइसवर मोठ्या प्रमाणावर डेटा कायमचा स्टोअर करायचा आहे</translation>
+<translation id="1030889518049751641">अॅक्टिव्हिटी लॉग पाहा</translation>
 <translation id="1031362278801463162">पूर्वावलोकन लोड करत आहे</translation>
 <translation id="103279545524624934">Android अॅप्स लाँच करण्यासाठी डिस्क स्थान मोकळे करा.</translation>
 <translation id="1033780634303702874">आपल्या अनुक्रमिक डिव्हाइसेसवर प्रवेश करा</translation>
@@ -163,6 +164,7 @@
     तुम्हाला तुमचे प्रोफाईल पुन्हा सेट करावे लागेल.<ph name="BR" />
     <ph name="BR" />
     पुढील स्क्रीनवर, कृपया समस्येचे निराकरण करण्यात आम्हाला मदत करण्यासाठी अभिप्राय पाठवा.</translation>
+<translation id="1217668622537098248">क्रिया केल्यानंतर डाव्या क्लिकवर परत जा</translation>
 <translation id="121783623783282548">पासवर्ड जुळत नाहीत.</translation>
 <translation id="1218860753635451122">"मी सहमती दर्शवतो" या बटणावर क्लिक करून तुम्ही या Google सेवांसाठी वर वर्णन केलेल्या प्रक्रियांना सहमती दर्शवता.</translation>
 <translation id="122082903575839559">सर्टिफिकेट स्वाक्षरी अल्गोरिदम</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">तुमची सिक्युरिटी की सूचीबद्ध नसल्यास, कीचे बटण किमान पाच सेकंद दाबून ठेवा.</translation>
 <translation id="275662540872599901">स्क्रीन बंद</translation>
 <translation id="2761898608071930085">दुसरे खाते वापरा</translation>
+<translation id="276233135255363312">{0,plural, =1{तुमच्याकडे एक गुप्त विंडो आहे.}one{तुमच्याकडे # गुप्त विंडो आहे.}other{तुमच्याकडे # गुप्त विंडो आहेत.}}</translation>
 <translation id="2762441749940182211">कॅमेरा ब्लॉक केला आहे</translation>
 <translation id="2765217105034171413">लहान</translation>
 <translation id="2766006623206032690">पे&amp;स्ट करा आणि जा</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">पेअरींग मोड मध्ये जा</translation>
 <translation id="3353984535370177728">अपलोड करण्यासाठी एक फोल्डर निवडा</translation>
 <translation id="3355936511340229503">कनेक्शन एरर</translation>
+<translation id="3356580349448036450">पूर्ण</translation>
 <translation id="3356797067524893661">Hangouts Meetवर सुरू ठेवण्यासाठी तुम्ही पूर्ण सज्ज आहात</translation>
 <translation id="3358935496594837302">तुमचा फोन आढळला नाही. तुम्ही सुसंगत Android फोन वापरत असल्याची आणि तो चालू व सोयीस्कर असल्याची खात्री करा. &lt;a&gt;आणखी जाणून घ्या&lt;/a&gt;</translation>
 <translation id="3359256513598016054">सर्टिफिकेट धोरण प्रतिबंध</translation>
@@ -2185,6 +2189,7 @@
 <translation id="4312866146174492540">अवरोधित करा (डीफॉल्ट)</translation>
 <translation id="4316850752623536204">विकसक वेबसाइट</translation>
 <translation id="4320177379694898372">कोणतेही इंटरनेट कनेक्शन नाही</translation>
+<translation id="4320948194796820126">तुमच्या ईमेलवर बुकमार्क जोडा</translation>
 <translation id="4322394346347055525">अन्य टॅब बंद करा</translation>
 <translation id="4324577459193912240">फाइल अपूर्ण आहे</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> कधीही भाषांतरित करू नका</translation>
@@ -2205,6 +2210,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> विंडो शेअर करीत आहे.</translation>
 <translation id="4364830672918311045">सूचना डिस्प्ले करा</translation>
 <translation id="4365673000813822030">अरेरे, समक्रमणाने काम करणे थांबवले आहे.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> सह <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">तुम्ही एंटर केलेला ईमेल आणि पासवर्ड जुळत नाही</translation>
 <translation id="437184764829821926">प्रगत फॉन्ट सेटिंग्ज</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3069,6 +3075,7 @@
 <translation id="5669267381087807207">सक्रिय करीत आहे </translation>
 <translation id="5669691691057771421">नवीन पिन एंटर करा</translation>
 <translation id="5671641761787789573">इमेज ब्लॉक केल्या</translation>
+<translation id="567643736130151854">सर्व डिव्हाइसवर तुमचे बुकमार्क, पासवर्ड आणि बरेच काही मिळविण्यासाठी साइन इन करा आणि सिंक सुरू करा</translation>
 <translation id="5677503058916217575">पृष्ठ भाषा:</translation>
 <translation id="5677928146339483299">अवरोधित</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> ला मंजूर केला गेलेला प्रवेश वाचा आणि लिहा.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">सर्व नवीन विंडोमध्ये उघडा</translation>
 <translation id="701080569351381435">स्त्रोत पहा</translation>
 <translation id="7014174261166285193">स्थापना अयशस्वी.</translation>
+<translation id="7017004637493394352">पुन्हा "Ok Google" म्हणा</translation>
 <translation id="7017219178341817193">एक नवीन पृष्ठ जोडा</translation>
 <translation id="7017354871202642555">विंडो सेट केल्यानंतर मोड सेट करणे शक्य नाही.</translation>
 <translation id="7017480957358237747">विशिष्ट वेबसाइटला अनुमती द्या किंवा प्रतिबंध करा,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />तुमच्या डिव्हाइसवर मुख्य स्थान सेटिंग बंद करून तुम्ही स्थान बंद करू शकता. तुम्ही स्थान सेटिंग्जमध्ये वाय फाय, मोबाईल नेटवर्क आणि स्थानासाठी सेन्सरचा वापर देखील बंद करू शकता.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">एक पासवर्ड तयार करा -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" म्हणा</translation>
 <translation id="7525067979554623046">तयार करा</translation>
 <translation id="7529411698175791732">तुमचे इंटरनेट कनेक्शन तपासा. समस्या कायम राहिल्यास, साइन आउट करून आणि पुन्हा साइन इन करून पहा.</translation>
 <translation id="7530016656428373557">डिस्चार्ज रेट वॉट्स मध्ये</translation>
@@ -4956,6 +4965,7 @@
 <translation id="8571213806525832805">मागील 4 आठवड्यांमधील</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> वर आवाज नेहमी चालू ठेवा</translation>
 <translation id="8575286410928791436">बाहेर पडण्यासाठी <ph name="KEY_EQUIVALENT" /> धरून ठेवा</translation>
+<translation id="8578421807258988326">{0,plural, =1{ही विंडो बंद करा}one{सर्व गुप्त विंडो बंद करा}other{सर्व गुप्त विंडो बंद करा}}</translation>
 <translation id="8578639784464423491">९९ पेक्षा जास्‍त अक्षरे असू शकत नाहीत</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> आयटम संकालित करीत आहे...</translation>
 <translation id="857943718398505171">अनुमती दिली (शिफारस केलेले)</translation>
@@ -5310,7 +5320,6 @@
 <translation id="9112748030372401671">तुमचा वॉलपेपर बदला</translation>
 <translation id="9112987648460918699">शोधा...</translation>
 <translation id="9114663181201435112">सहजपणे साइन इन करा</translation>
-<translation id="9115487443206954631">कास्ट डिव्हाइसेस व्यवस्थापित करा</translation>
 <translation id="9115675100829699941">&amp;बुकमार्क</translation>
 <translation id="9116465289595958864">अखेरचे सुधारित केले</translation>
 <translation id="9116799625073598554">टीप-घेणारा अॅप</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index a63f6fb..5af4c3b 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Muatkan Imej</translation>
 <translation id="1029317248976101138">Zum</translation>
 <translation id="1030706264415084469"><ph name="URL" /> mahu menyimpan data bersaiz besar pada peranti anda secara kekal</translation>
+<translation id="1030889518049751641">Lihat Log Aktiviti</translation>
 <translation id="1031362278801463162">Memuatkan pratonton</translation>
 <translation id="103279545524624934">Kosongkan ruang cakera untuk melancarkan apl Android.</translation>
 <translation id="1033780634303702874">Akses peranti bersiri anda</translation>
@@ -163,6 +164,7 @@
     Anda perlu menyediakan profil anda semula.<ph name="BR" />
     <ph name="BR" />
     Pada skrin berikutnya, sila hantar maklum balas untuk membantu kami menyelesaikan isu ini.</translation>
+<translation id="1217668622537098248">Kembali ke klik kiri selepas tindakan</translation>
 <translation id="121783623783282548">Kata laluan tidak sepadan.</translation>
 <translation id="1218860753635451122">Dengan mengklik butang "Saya Setuju", anda bersetuju membenarkan pemprosesan yang dihuraikan di atas untuk perkhidmatan Google ini.</translation>
 <translation id="122082903575839559">Algoritma Tandatangan Sijil</translation>
@@ -1181,6 +1183,7 @@
 <translation id="2755628026949580719">Jika kunci keselamatan anda tidak tersenarai, tekan butang kunci selama sekurang-kurangnya 5 saat.</translation>
 <translation id="275662540872599901">skrin dimatikan</translation>
 <translation id="2761898608071930085">Gunakan Akaun Lain</translation>
+<translation id="276233135255363312">{0,plural, =1{Anda mempunyai satu tetingkap inkognito.}other{Anda mempunyai # tingkap inkognito.}}</translation>
 <translation id="2762441749940182211">Kamera disekat</translation>
 <translation id="2765217105034171413">Kecil</translation>
 <translation id="2766006623206032690">Ta&amp;mpal dan pergi</translation>
@@ -1555,6 +1558,7 @@
 <translation id="3350117557200012647">Masuk ke mod penggandingan</translation>
 <translation id="3353984535370177728">Pilih folder untuk dimuat naik</translation>
 <translation id="3355936511340229503">Ralat sambungan</translation>
+<translation id="3356580349448036450">Selesai</translation>
 <translation id="3356797067524893661">Anda telah sedia untuk terus ke Hangout Meet</translation>
 <translation id="3358935496594837302">Tidak dapat mencari telefon anda. Pastikan anda menggunakan telefon Android serasi yang dihidupkan dan telefon tersebut ada bersama anda. &lt;a&gt;Ketahui lebih lanjut&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Kekangan Dasar Sijil</translation>
@@ -2187,6 +2191,7 @@
 <translation id="4312866146174492540">Sekat (lalai)</translation>
 <translation id="4316850752623536204">Tapak Web Pembangun</translation>
 <translation id="4320177379694898372">Tiada sambungan Internet</translation>
+<translation id="4320948194796820126">Tambahkan penanda halaman pada e-mel anda</translation>
 <translation id="4322394346347055525">Tutup Tab Lain</translation>
 <translation id="4324577459193912240">Fail tidak lengkap</translation>
 <translation id="4330387663455830245">Jangan Sekali-kali Terjemahkan <ph name="LANGUAGE" /></translation>
@@ -2207,6 +2212,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> berkongsi tetingkap.</translation>
 <translation id="4364830672918311045">Paparkan pemberitahuan</translation>
 <translation id="4365673000813822030">Alamak, Penyegerakan telah berhenti berfungsi.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> dengan <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">E-mel dan kata laluan yang anda masukkan tidak padan</translation>
 <translation id="437184764829821926">Tetapan fon terperinci</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3071,6 +3077,7 @@
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5669691691057771421">Masukkan PIN baharu</translation>
 <translation id="5671641761787789573">Imej disekat</translation>
+<translation id="567643736130151854">Log masuk dan hidupkan penyegerakan untuk mendapatkan penanda halaman, kata laluan dan pelbagai lagi pada semua peranti</translation>
 <translation id="5677503058916217575">Bahasa halaman:</translation>
 <translation id="5677928146339483299">Disekat</translation>
 <translation id="5678550637669481956">Akses baca dan tulis kepada <ph name="VOLUME_NAME" /> telah diberikan.</translation>
@@ -3942,6 +3949,7 @@
 <translation id="7007648447224463482">Buka semua dalam tetingkap baharu</translation>
 <translation id="701080569351381435">Lihat Sumber</translation>
 <translation id="7014174261166285193">Gagal pemasangan.</translation>
+<translation id="7017004637493394352">Sebut "Ok Google" sekali lagi</translation>
 <translation id="7017219178341817193">Tambah halaman baharu</translation>
 <translation id="7017354871202642555">Tidak dapat menetapkan mod selepas tetingkap ditetapkan.</translation>
 <translation id="7017480957358237747">benarkan atau larang tapak web tertentu,</translation>
@@ -4269,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Anda boleh mematikan Lokasi dengan mematikan tetapan Lokasi utama pada peranti anda. Anda juga boleh mematikan penggunaan Wi-Fi, rangkaian mudah alih dan penderia untuk lokasi dalam tetapan lokasi.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Buat kata laluan -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sebut "Ok Google".</translation>
 <translation id="7525067979554623046">Cipta</translation>
 <translation id="7529411698175791732">Semak sambungan Internet anda. Jika masalah ini masih berterusan, cuba log keluar dan log masuk semula.</translation>
 <translation id="7530016656428373557">Kadar Nyahcas dalam Watt</translation>
@@ -4960,6 +4969,7 @@
 <translation id="8571213806525832805">4 minggu terakhir</translation>
 <translation id="8574990355410201600">Sentiasa benarkan bunyi pada <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Tekan dan tahan <ph name="KEY_EQUIVALENT" /> untuk Berhenti</translation>
+<translation id="8578421807258988326">{0,plural, =1{Tutup tetingkap ini}other{Tutup semua tetingkap inkognito}}</translation>
 <translation id="8578639784464423491">Tidak boleh melebihi 99 huruf</translation>
 <translation id="8579285237314169903">Menyegerakkan <ph name="NUMBER_OF_FILES" /> item...</translation>
 <translation id="857943718398505171">Dibenarkan (disyorkan)</translation>
@@ -5313,7 +5323,6 @@
 <translation id="9112748030372401671">Tukar kertas dinding anda</translation>
 <translation id="9112987648460918699">Find...</translation>
 <translation id="9114663181201435112">Log masuk dengan mudah</translation>
-<translation id="9115487443206954631">Urus peranti Cast</translation>
 <translation id="9115675100829699941">&amp;Bookmarks</translation>
 <translation id="9116465289595958864">Kali terakhir diubah suai</translation>
 <translation id="9116799625073598554">Apl pengambilan nota</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 22ca4f91..3144667 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">De koppelingsmodus activeren</translation>
 <translation id="3353984535370177728">Een map voor uploaden selecteren</translation>
 <translation id="3355936511340229503">Verbindingsfout</translation>
+<translation id="3356580349448036450">Voltooid</translation>
 <translation id="3356797067524893661">Je bent gereed om door te gaan met Hangouts Meet</translation>
 <translation id="3358935496594837302">Kan je telefoon niet vinden. Zorg ervoor dat je een geschikte Android-telefoon gebruikt die is ingeschakeld en zich in de buurt bevindt. &lt;a&gt;Meer informatie&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Beleidsbeperkingen voor certificaat</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Alles openen in nieuw venster</translation>
 <translation id="701080569351381435">Toon paginabron</translation>
 <translation id="7014174261166285193">Installatie mislukt.</translation>
+<translation id="7017004637493394352">Zeg nog een keer "Oké Google"</translation>
 <translation id="7017219178341817193">Een nieuwe pagina toevoegen</translation>
 <translation id="7017354871202642555">Kan modus niet instellen nadat venster is ingesteld.</translation>
 <translation id="7017480957358237747">bepaalde websites toestaan of verbieden,</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Je kunt Locatie uitschakelen door de hoofdinstelling Locatie op je apparaat uit te schakelen. Je kunt het gebruik van wifi, mobiele netwerken en sensoren voor locaties ook uitschakelen via de locatie-instellingen.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Een wachtwoord maken –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Zeg "Oké Google"</translation>
 <translation id="7525067979554623046">Maken</translation>
 <translation id="7529411698175791732">Controleer de internetverbinding. Als het probleem blijft optreden, log je uit en weer in.</translation>
 <translation id="7530016656428373557">Ontlading in Watt</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">Je achtergrond wijzigen</translation>
 <translation id="9112987648460918699">Zoek...</translation>
 <translation id="9114663181201435112">Gemakkelijk inloggen</translation>
-<translation id="9115487443206954631">Cast-apparaten beheren</translation>
 <translation id="9115675100829699941">&amp;Bladwijzers</translation>
 <translation id="9116465289595958864">Laatst gewijzigd</translation>
 <translation id="9116799625073598554">Notitie-app</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 3e20b19..019eaa1c 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Last inn bildet</translation>
 <translation id="1029317248976101138">Zoom</translation>
 <translation id="1030706264415084469"><ph name="URL" /> ber om å lagre store datamengder permanent på enheten din</translation>
+<translation id="1030889518049751641">Se aktivitetsloggen</translation>
 <translation id="1031362278801463162">Laster inn forhåndsvisning</translation>
 <translation id="103279545524624934">Frigjør lagringsplass for å starte Android-apper.</translation>
 <translation id="1033780634303702874">bruke de seriekoblede enhetene dine</translation>
@@ -163,6 +164,7 @@
     Du må konfigurere profilen din på nytt.<ph name="BR" />
     <ph name="BR" />
     Gå til neste skjermbilde, og send tilbakemelding for å hjelpe oss med å løse problemet.</translation>
+<translation id="1217668622537098248">Gå tilbake til venstreklikk etter handling</translation>
 <translation id="121783623783282548">Passordene stemmer ikke overens.</translation>
 <translation id="1218860753635451122">Ved å klikke på «Godta»-knappen godtar du behandlingen som beskrives ovenfor, for disse Google-tjenestene.</translation>
 <translation id="122082903575839559">Signaturalgoritme for sertifikat</translation>
@@ -1176,6 +1178,7 @@
 <translation id="2755628026949580719">Hvis sikkerhetsnøkkelen din ikke er oppført, trykker du på knappen på nøkkelen i minst fem sekunder.</translation>
 <translation id="275662540872599901">skjerm av</translation>
 <translation id="2761898608071930085">Bruk en annen konto</translation>
+<translation id="276233135255363312">{0,plural, =1{Du har ett inkognitovindu.}other{Du har # inkognitovinduer.}}</translation>
 <translation id="2762441749940182211">Kameraet er blokkert</translation>
 <translation id="2765217105034171413">Liten</translation>
 <translation id="2766006623206032690">&amp;Lim inn og gå til</translation>
@@ -1549,6 +1552,7 @@
 <translation id="3350117557200012647">Start tilkoblingsmodus</translation>
 <translation id="3353984535370177728">Velg mappen du vil laste opp</translation>
 <translation id="3355936511340229503">Tilkoblingsfeil</translation>
+<translation id="3356580349448036450">Fullført</translation>
 <translation id="3356797067524893661">Du er klar for å fortsette til Hangouts Meet</translation>
 <translation id="3358935496594837302">Finner ikke telefonen. Sørg for at du bruker en kompatibel Android-telefon som er slått på og i nærheten. &lt;a&gt;Finn ut mer&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Retningslinjebegrensninger for sertifikat</translation>
@@ -2179,6 +2183,7 @@
 <translation id="4312866146174492540">Blokkér (standard)</translation>
 <translation id="4316850752623536204">Utviklernettsted</translation>
 <translation id="4320177379694898372">Ingen Internett-tilkobling</translation>
+<translation id="4320948194796820126">Legg til et bokmerke til e-posten din</translation>
 <translation id="4322394346347055525">Lukk andre faner</translation>
 <translation id="4324577459193912240">Filen er ufullstendig</translation>
 <translation id="4330387663455830245">Oversett aldri <ph name="LANGUAGE" /></translation>
@@ -2199,6 +2204,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> deler et vindu.</translation>
 <translation id="4364830672918311045">Vis varsler</translation>
 <translation id="4365673000813822030">Beklager, synkroniseringen har sluttet å fungere.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> med <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">E-posten og passordet du skrev inn, stemmer ikke overens.</translation>
 <translation id="437184764829821926">Avanserte innstillinger for skrifttype</translation>
 <translation id="4372884569765913867">1 x 1</translation>
@@ -3063,6 +3069,7 @@
 <translation id="5669267381087807207">Aktiverer</translation>
 <translation id="5669691691057771421">Skriv inn en ny PIN-kode</translation>
 <translation id="5671641761787789573">Bilder er blokkert</translation>
+<translation id="567643736130151854">Logg på og slå på synkronisering for å få blant annet bokmerker og passord på alle enheter</translation>
 <translation id="5677503058916217575">Sidespråk:</translation>
 <translation id="5677928146339483299">Blokkert</translation>
 <translation id="5678550637669481956">Lese- og skrivetilgang til <ph name="VOLUME_NAME" /> er innvilget.</translation>
@@ -3934,6 +3941,7 @@
 <translation id="7007648447224463482">Åpne alt i et nytt vindu</translation>
 <translation id="701080569351381435">Se kilde</translation>
 <translation id="7014174261166285193">Installeringen mislyktes.</translation>
+<translation id="7017004637493394352">Si «Ok Google» igjen</translation>
 <translation id="7017219178341817193">Legg til en ny side</translation>
 <translation id="7017354871202642555">Kan ikke angi modus etter at vinduet er opprettet.</translation>
 <translation id="7017480957358237747">tillate eller nekte bestemte nettsteder,</translation>
@@ -4261,6 +4269,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Du kan slå av Posisjon ved å slå av hovedinnstillingen for Posisjon på enheten. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon fra posisjonsinnstillingene.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Lag et passord –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Si «Ok Google»</translation>
 <translation id="7525067979554623046">Opprett</translation>
 <translation id="7529411698175791732">Sjekk Internett-tilkoblingen din. Hvis problemet vedvarer, bør du prøve å logge av og så logge på igjen.</translation>
 <translation id="7530016656428373557">Utladningshastighet i watt</translation>
@@ -4949,6 +4958,7 @@
 <translation id="8571213806525832805">Siste 4 uker</translation>
 <translation id="8574990355410201600">Tillat alltid lyd på <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Hold inne <ph name="KEY_EQUIVALENT" /> for å avslutte.</translation>
+<translation id="8578421807258988326">{0,plural, =1{Lukk dette vinduet}other{Lukk alle inkognitovinduer}}</translation>
 <translation id="8578639784464423491">Kan ikke overstige 99 bokstaver</translation>
 <translation id="8579285237314169903">Synkroniserer <ph name="NUMBER_OF_FILES" /> elementer …</translation>
 <translation id="857943718398505171">Tillatt (anbefales)</translation>
@@ -5302,7 +5312,6 @@
 <translation id="9112748030372401671">endre bakgrunnen din</translation>
 <translation id="9112987648460918699">Finn</translation>
 <translation id="9114663181201435112">Logg på enkelt</translation>
-<translation id="9115487443206954631">Administrer Cast-enheter</translation>
 <translation id="9115675100829699941">&amp;Bokmerker</translation>
 <translation id="9116465289595958864">Sist endret</translation>
 <translation id="9116799625073598554">Notatapper</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index c1e660b1..47e2ebfe 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Wczytaj obraz</translation>
 <translation id="1029317248976101138">Powiększ</translation>
 <translation id="1030706264415084469"><ph name="URL" /> chce na stałe przechowywać dużą ilość danych na Twoim urządzeniu</translation>
+<translation id="1030889518049751641">Wyświetl historię aktywności</translation>
 <translation id="1031362278801463162">Wczytuję podgląd</translation>
 <translation id="103279545524624934">Aby uruchomić aplikacje na Androida, zwolnij miejsce na dysku.</translation>
 <translation id="1033780634303702874">Dostęp do urządzeń szeregowych</translation>
@@ -163,6 +164,7 @@
     Musisz ponownie skonfigurować profil.<ph name="BR" />
     <ph name="BR" />
     Na następnym ekranie wyślij opinię, by pomóc nam naprawić ten problem.</translation>
+<translation id="1217668622537098248">Przywróć działanie po kliknięciu lewego przycisku myszy</translation>
 <translation id="121783623783282548">Hasła nie są zgodne.</translation>
 <translation id="1218860753635451122">Klikając przycisk „Zgadzam się”, wyrażasz zgodę na opisane powyżej przetwarzanie danych w przypadku tych usług Google.</translation>
 <translation id="122082903575839559">Algorytm podpisu certyfikatu</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Jeśli Twojego klucza bezpieczeństwa nie ma na liście, naciśnij i przytrzymaj przycisk na kluczu przez co najmniej 5 sekund.</translation>
 <translation id="275662540872599901">ekran wyłączony</translation>
 <translation id="2761898608071930085">Użyj innego konta</translation>
+<translation id="276233135255363312">{0,plural, =1{Masz jedno okno incognito.}few{Masz # okna incognito.}many{Masz # okien incognito.}other{Masz # okna incognito.}}</translation>
 <translation id="2762441749940182211">Zablokowano dostęp do kamery</translation>
 <translation id="2765217105034171413">Mały</translation>
 <translation id="2766006623206032690">Wk&amp;lej i otwórz</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Otwórz tryb parowania</translation>
 <translation id="3353984535370177728">Wybierz folder do przesłania</translation>
 <translation id="3355936511340229503">Błąd połączenia</translation>
+<translation id="3356580349448036450">Zakończone</translation>
 <translation id="3356797067524893661">Wszystko gotowe do korzystania z Hangouts Meet</translation>
 <translation id="3358935496594837302">Nie można znaleźć telefonu. Upewnij się, że używasz zgodnego telefonu z Androidem oraz że jest on włączony i znajduje się w zasięgu ręki. &lt;a&gt;Więcej informacji&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Ograniczenia zasad certyfikatu</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">Blokuj (domyślnie)</translation>
 <translation id="4316850752623536204">Witryna programisty</translation>
 <translation id="4320177379694898372">Brak połączenia z internetem</translation>
+<translation id="4320948194796820126">Dodaj zakładkę do e-maila</translation>
 <translation id="4322394346347055525">Zamknij inne karty</translation>
 <translation id="4324577459193912240">Plik niekompletny</translation>
 <translation id="4330387663455830245">Nigdy nie tłumacz z tego języka: <ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> udostępnia okno.</translation>
 <translation id="4364830672918311045">Wyświetlanie powiadomień</translation>
 <translation id="4365673000813822030">Ups, synchronizacja przestała działać.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> w aplikacji <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Podany adres e-mail i hasło nie pasują do siebie</translation>
 <translation id="437184764829821926">Zaawansowane ustawienia czcionek</translation>
 <translation id="4372884569765913867">1 x 1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Aktywowanie</translation>
 <translation id="5669691691057771421">Wpisz nowy kod PIN</translation>
 <translation id="5671641761787789573">Obrazy zablokowane</translation>
+<translation id="567643736130151854">Zaloguj się w Chromium, by mieć dostęp do swoich zakładek, haseł i innych ustawień na wszystkich swoich urządzeniach.</translation>
 <translation id="5677503058916217575">Język strony:</translation>
 <translation id="5677928146339483299">Zablokowane</translation>
 <translation id="5678550637669481956">Uprawnienia do zapisu i odczytu nośnika <ph name="VOLUME_NAME" /> zostały przyznane.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Otwórz wszystkie w nowym oknie</translation>
 <translation id="701080569351381435">Wyświetl źródło</translation>
 <translation id="7014174261166285193">Instalacja nie powiodła się.</translation>
+<translation id="7017004637493394352">Powiedz „OK Google” jeszcze raz</translation>
 <translation id="7017219178341817193">Dodaj nową stronę</translation>
 <translation id="7017354871202642555">Nie można ustawić trybu po ustawieniu okna.</translation>
 <translation id="7017480957358237747">zezwalać na dostęp do określonych witryn lub blokować go,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Aby wyłączyć tę usługę, wyłącz główne ustawienie Lokalizacja na urządzeniu. Możesz też wyłączyć w ustawieniach lokalizacji korzystanie z sieci Wi‑Fi, sieci komórkowych i czujników przy określaniu lokalizacji.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Utwórz hasło –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Powiedz „OK Google”</translation>
 <translation id="7525067979554623046">Utwórz</translation>
 <translation id="7529411698175791732">Sprawdź połączenie z internetem. Jeśli problem nie ustąpi, wyloguj się i zaloguj ponownie.</translation>
 <translation id="7530016656428373557">Szybkość rozładowywania w watach</translation>
@@ -4959,6 +4968,7 @@
 <translation id="8571213806525832805">Ostatnie 4 tygodnie</translation>
 <translation id="8574990355410201600">Zawsze zezwalaj na odtwarzanie dźwięku na stronie <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Aby zakończyć, przytrzymaj klawisz <ph name="KEY_EQUIVALENT" /></translation>
+<translation id="8578421807258988326">{0,plural, =1{Zamknij to okno}few{Zamknij wszystkie okna incognito}many{Zamknij wszystkie okna incognito}other{Zamknij wszystkie okna incognito}}</translation>
 <translation id="8578639784464423491">Nie może mieć więcej niż 99 liter</translation>
 <translation id="8579285237314169903">Synchronizuję elementy – <ph name="NUMBER_OF_FILES" />...</translation>
 <translation id="857943718398505171">Dozwolone (zalecane)</translation>
@@ -5312,7 +5322,6 @@
 <translation id="9112748030372401671">Zmiana tapety</translation>
 <translation id="9112987648460918699">Znajdź...</translation>
 <translation id="9114663181201435112">Łatwe logowanie</translation>
-<translation id="9115487443206954631">Zarządzaj urządzeniami przesyłającymi</translation>
 <translation id="9115675100829699941">&amp;Zakładki</translation>
 <translation id="9116465289595958864">Ostatnia modyfikacja</translation>
 <translation id="9116799625073598554">Aplikacja do notatek</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 40d5a28..c2ca52b0 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Entrar no modo de pareamento</translation>
 <translation id="3353984535370177728">Selecionar uma pasta para upload</translation>
 <translation id="3355936511340229503">Erro de conexão</translation>
+<translation id="3356580349448036450">Concluído</translation>
 <translation id="3356797067524893661">Está tudo pronto para usar o Hangouts Meet</translation>
 <translation id="3358935496594837302">Não foi possível localizar seu smartphone. Certifique-se de que você esteja usando um smartphone compatível com Android ativado e acessível. &lt;a&gt;Saiba mais&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Restrições da diretiva de certificação</translation>
@@ -3949,6 +3950,7 @@
 <translation id="7007648447224463482">Abrir todos em uma nova janela</translation>
 <translation id="701080569351381435">Exibir o código fonte</translation>
 <translation id="7014174261166285193">Falha na instalação.</translation>
+<translation id="7017004637493394352">Diga "Ok Google" novamente</translation>
 <translation id="7017219178341817193">Adicionar uma nova página</translation>
 <translation id="7017354871202642555">Não é possível definir o modo após a definição da janela.</translation>
 <translation id="7017480957358237747">permitir ou proibir determinados websites,</translation>
@@ -4276,6 +4278,7 @@
     <ph name="BEGIN_PARAGRAPH3" />É possível desativar a localização desativando a configuração principal de Local no seu dispositivo. Você também pode desativar o uso de Wi-Fi, redes móveis e sensores de local nas configurações.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Criar uma senha:</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Diga "Ok Google"</translation>
 <translation id="7525067979554623046">Criar</translation>
 <translation id="7529411698175791732">Verifique sua conexão com a Internet. Se o problema continuar, tente sair e fazer login novamente.</translation>
 <translation id="7530016656428373557">Taxa de descarga em Watts</translation>
@@ -5321,7 +5324,6 @@
 <translation id="9112748030372401671">Altere seu papel de parede</translation>
 <translation id="9112987648460918699">Buscar...</translation>
 <translation id="9114663181201435112">Fazer login de forma fácil</translation>
-<translation id="9115487443206954631">Gerenciar dispositivos de transmissão</translation>
 <translation id="9115675100829699941">&amp;Favoritos</translation>
 <translation id="9116465289595958864">Última modificação</translation>
 <translation id="9116799625073598554">App de anotações</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 9bd4034..aa48a61 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Aceder ao modo de sincronização</translation>
 <translation id="3353984535370177728">Selecionar uma pasta a carregar</translation>
 <translation id="3355936511340229503">Erro de ligação</translation>
+<translation id="3356580349448036450">Concluído</translation>
 <translation id="3356797067524893661">Está preparado para continuar para o Hangouts Meet</translation>
 <translation id="3358935496594837302">Não é possível localizar o telemóvel. Certifique-se de que está a utilizar um telemóvel Android compatível que está ligado e próximo. &lt;a&gt;Saiba mais&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Restrições de políticas de certificados</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Abrir tudo numa nova janela</translation>
 <translation id="701080569351381435">Ver origem</translation>
 <translation id="7014174261166285193">A instalação falhou.</translation>
+<translation id="7017004637493394352">Diga "Ok Google" novamente</translation>
 <translation id="7017219178341817193">Adicionar uma nova página</translation>
 <translation id="7017354871202642555">Não é possível definir o modo uma vez definida a janela.</translation>
 <translation id="7017480957358237747">permitir ou proibir determinados Sites,</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Pode desativar a Localização ao desativar a definição de Localização principal no dispositivo. Também pode desativar a utilização das redes Wi-Fi e móveis, bem como de sensores, para fins de localização nas definições de localização.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Criar palavra-passe –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Diga "Ok Google"</translation>
 <translation id="7525067979554623046">Criar</translation>
 <translation id="7529411698175791732">Verifique a sua ligação à Internet. Se o problema continuar, experimente terminar e iniciar sessão novamente.</translation>
 <translation id="7530016656428373557">Taxa de descarga em Watts</translation>
@@ -5318,7 +5321,6 @@
 <translation id="9112748030372401671">Alterar a imagem de fundo</translation>
 <translation id="9112987648460918699">Localizar...</translation>
 <translation id="9114663181201435112">Iniciar sessão facilmente</translation>
-<translation id="9115487443206954631">Gerir dispositivos de transmissão</translation>
 <translation id="9115675100829699941">&amp;Marcadores</translation>
 <translation id="9116465289595958864">Última modificação</translation>
 <translation id="9116799625073598554">Aplicação para tirar notas</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 1e43118..b2593318 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Încarcă imaginea</translation>
 <translation id="1029317248976101138">Zoom</translation>
 <translation id="1030706264415084469"><ph name="URL" /> dorește să stocheze permanent cantități mari de date pe dispozitiv</translation>
+<translation id="1030889518049751641">Vezi Jurnalul de activități</translation>
 <translation id="1031362278801463162">Se încarcă previzualizarea</translation>
 <translation id="103279545524624934">Eliberează spațiu pe disc pentru a lansa aplicații Android.</translation>
 <translation id="1033780634303702874">Accesează dispozitivele seriale</translation>
@@ -163,6 +164,7 @@
     Va trebui să îți configurezi profilul din nou.<ph name="BR" />
     <ph name="BR" />
     Pe următorul ecran, trimite-ne feedback pentru a ne ajuta să remediem problema.</translation>
+<translation id="1217668622537098248">Revino la clic stânga după acțiune</translation>
 <translation id="121783623783282548">Parolele nu se potrivesc.</translation>
 <translation id="1218860753635451122">Dacă dai clic pe butonul „Sunt de acord” înseamnă că ești de acord cu procesarea descrisă mai sus pentru aceste servicii Google.</translation>
 <translation id="122082903575839559">Algoritm de semnare a certificatului</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Dacă cheia de securitate nu este afișată, apasă butonul cheii timp de cel puțin cinci secunde.</translation>
 <translation id="275662540872599901">ecran dezactivat</translation>
 <translation id="2761898608071930085">Folosește alt cont</translation>
+<translation id="276233135255363312">{0,plural, =1{Ai o fereastră incognito.}few{Ai # ferestre incognito.}other{Ai # de ferestre incognito.}}</translation>
 <translation id="2762441749940182211">Camera foto este blocată</translation>
 <translation id="2765217105034171413">Mic</translation>
 <translation id="2766006623206032690">In&amp;serează și accesează</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Intră în modul de asociere</translation>
 <translation id="3353984535370177728">Selectați un dosar de încărcat</translation>
 <translation id="3355936511340229503">Eroare de conexiune</translation>
+<translation id="3356580349448036450">Finalizat</translation>
 <translation id="3356797067524893661">Ești gata să accesezi Hangouts Meet</translation>
 <translation id="3358935496594837302">Telefonul nu poate fi găsit. Asigură-te că folosești un telefon Android compatibil care este pornit și la îndemână. &lt;a&gt;Află mai multe&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Limitări ale politicii pentru certificate</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">Blochează (în mod prestabilit)</translation>
 <translation id="4316850752623536204">Site-ul dezvoltatorului</translation>
 <translation id="4320177379694898372">Fără conexiune la internet</translation>
+<translation id="4320948194796820126">Adaugă un marcaj la e-mail</translation>
 <translation id="4322394346347055525">Închide celelalte file</translation>
 <translation id="4324577459193912240">Fișier incomplet</translation>
 <translation id="4330387663455830245">Nu traduce niciodată din <ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> trimite conținutul unei ferestre.</translation>
 <translation id="4364830672918311045">Afișează notificările</translation>
 <translation id="4365673000813822030">Hopa, sincronizarea a încetat să funcționeze.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> cu <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Adresa de e-mail și parola pe care le-ai introdus nu se potrivesc</translation>
 <translation id="437184764829821926">Setări avansate pentru fonturi</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Se activează</translation>
 <translation id="5669691691057771421">Introdu noul cod PIN</translation>
 <translation id="5671641761787789573">Imagini blocate</translation>
+<translation id="567643736130151854">Conectează-te și activează sincronizarea pentru a accesa marcajele, parolele și altele pe toate dispozitivele tale</translation>
 <translation id="5677503058916217575">Limba paginii:</translation>
 <translation id="5677928146339483299">Blocat</translation>
 <translation id="5678550637669481956">A fost acordat accesul de citire și scriere la <ph name="VOLUME_NAME" />.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Deschide totul într-o fereastră nouă</translation>
 <translation id="701080569351381435">Afișează sursa</translation>
 <translation id="7014174261166285193">Instalarea nu a reușit.</translation>
+<translation id="7017004637493394352">Rostește din nou „Ok Google”</translation>
 <translation id="7017219178341817193">Adaugă o pagină nouă</translation>
 <translation id="7017354871202642555">Modul nu poate fi setat după setarea ferestrei.</translation>
 <translation id="7017480957358237747">permiteți sau interziceți anumite site-uri web,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Poți dezactiva locația dezactivând setarea principală Locație pe dispozitiv. De asemenea, poți dezactiva utilizarea rețelelor Wi-Fi, a rețelelor mobile și a senzorilor pentru locație din setările privind locația.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Creați o parolă –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Rostește „Ok Google”</translation>
 <translation id="7525067979554623046">Creați</translation>
 <translation id="7529411698175791732">Verifică conexiunea la internet. Dacă problema persistă, deconectează-te și conectează-te din nou.</translation>
 <translation id="7530016656428373557">Rata de descărcare în wați</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">Ultimele 4 săptămâni</translation>
 <translation id="8574990355410201600">Permite întotdeauna sunetul pe <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pentru a ieși, ține apăsată tasta <ph name="KEY_EQUIVALENT" />.</translation>
+<translation id="8578421807258988326">{0,plural, =1{Închide această fereastră}few{Închide toate ferestrele incognito}other{Închide toate ferestrele incognito}}</translation>
 <translation id="8578639784464423491">Nu poate depăși 99 de litere</translation>
 <translation id="8579285237314169903">Se sincronizează <ph name="NUMBER_OF_FILES" /> elemente...</translation>
 <translation id="857943718398505171">Acordată (recomandat)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">Schimbați imaginea de fundal</translation>
 <translation id="9112987648460918699">Caută...</translation>
 <translation id="9114663181201435112">Conectează-te cu ușurință</translation>
-<translation id="9115487443206954631">Gestionează dispozitivele Cast</translation>
 <translation id="9115675100829699941">&amp;Marcaje</translation>
 <translation id="9116465289595958864">Ultima modificare</translation>
 <translation id="9116799625073598554">Aplicație pentru scris note</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 858d2198..1854e70a 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Перейдите в режим подключения</translation>
 <translation id="3353984535370177728">Выберите папку для загрузки</translation>
 <translation id="3355936511340229503">Ошибка подключения</translation>
+<translation id="3356580349448036450">Готово</translation>
 <translation id="3356797067524893661">Все готово! Можно возвращаться в Hangouts Meet.</translation>
 <translation id="3358935496594837302">Телефон не обнаружен. Убедитесь, что вы используете совместимое устройство Android, которое включено и находится поблизости. &lt;a&gt;Подробнее…&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Ограничения политики сертификатов</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Открыть все в новом окне</translation>
 <translation id="701080569351381435">Просмотр исходного кода</translation>
 <translation id="7014174261166285193">Установка не выполнена.</translation>
+<translation id="7017004637493394352">Скажите "Окей, Google" ещё раз</translation>
 <translation id="7017219178341817193">Добавить страницу</translation>
 <translation id="7017354871202642555">Нельзя настроить режим после настройки окна.</translation>
 <translation id="7017480957358237747">контроль доступа к сайтам,</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Отключить геолокацию можно в настройках доступа к данным о местоположении. Там же вы можете запретить использование сетей Wi‑Fi, сотовой связи и датчиков для уточнения местоположения.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Придумайте пароль –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Скажите "Окей, Google"</translation>
 <translation id="7525067979554623046">Создать</translation>
 <translation id="7529411698175791732">Проверьте подключение к Интернету. Если оно установлено, попробуйте выйти из аккаунта и войти снова.</translation>
 <translation id="7530016656428373557">Скорость разрядки в ваттах</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Изменение обоев</translation>
 <translation id="9112987648460918699">Найти...</translation>
 <translation id="9114663181201435112">Удобный вход</translation>
-<translation id="9115487443206954631">Устройства Google Cast</translation>
 <translation id="9115675100829699941">&amp;Закладки</translation>
 <translation id="9116465289595958864">Последнее изменение</translation>
 <translation id="9116799625073598554">Приложение для заметок</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 78310f3..4095cecaa 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Načítať obrázok</translation>
 <translation id="1029317248976101138">Lupa</translation>
 <translation id="1030706264415084469"><ph name="URL" /> chce natrvalo ukladať veľké množstvo dát vo vašom zariadení</translation>
+<translation id="1030889518049751641">Zobraziť denník aktivít</translation>
 <translation id="1031362278801463162">Načítava sa ukážka</translation>
 <translation id="103279545524624934">Ak chcete spúšťať aplikácie pre Android, uvoľnite miesto na disku.</translation>
 <translation id="1033780634303702874">Mať prístup k zariadeniam pripojeným cez sériový port</translation>
@@ -163,6 +164,7 @@
     Svoj profil si musíte znova založiť.<ph name="BR" />
     <ph name="BR" />
     Na ďalšej obrazovke nám pošlite spätnú väzbu, ktorá nám pomôže tento problém vyriešiť.</translation>
+<translation id="1217668622537098248">Po akcii sa vrátiť na kliknutie ľavým tlačidlom myši</translation>
 <translation id="121783623783282548">Heslá sa nezhodujú.</translation>
 <translation id="1218860753635451122">Kliknutím na tlačidlo Súhlasím vyjadrujete súhlas so spracovaním uvedeným vyššie v rámci týchto služieb Googlu.</translation>
 <translation id="122082903575839559">Algoritmus podpisu certifikátu</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">Ak váš bezpečnostný kľúč nie je uvedený, stlačte tlačidlo na kľúči aspoň na päť sekúnd.</translation>
 <translation id="275662540872599901">obrazovka je vypnutá</translation>
 <translation id="2761898608071930085">Použiť iný účet</translation>
+<translation id="276233135255363312">{0,plural, =1{Máte jedno okno inkognito.}few{Máte # okná inkognito.}many{You have # incognito windows.}other{Máte # okien inkognito.}}</translation>
 <translation id="2762441749940182211">Kamera je zablokovaná</translation>
 <translation id="2765217105034171413">Malé</translation>
 <translation id="2766006623206032690">Prilepiť a &amp;otvoriť</translation>
@@ -1553,6 +1556,7 @@
 <translation id="3350117557200012647">Prechod do režimu párovania</translation>
 <translation id="3353984535370177728">Vyberte priečinok na nahranie</translation>
 <translation id="3355936511340229503">Chyba pripojenia</translation>
+<translation id="3356580349448036450">Dokončené</translation>
 <translation id="3356797067524893661">Nastavenie je dokončené, môžete pokračovať do služby Hangouts Meet</translation>
 <translation id="3358935496594837302">Telefón sa nedarí nájsť. Skontrolujte, či používate kompatibilný telefón s Androidom, ktorý je zapnutý a v dosahu. &lt;a&gt;Ďalšie informácie&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Obmedzenia certifikačnej politiky</translation>
@@ -2185,6 +2189,7 @@
 <translation id="4312866146174492540">Blokovať (predvolené)</translation>
 <translation id="4316850752623536204">Webové stránky vývojára</translation>
 <translation id="4320177379694898372">Žiadne internetové pripojenie</translation>
+<translation id="4320948194796820126">Uložte si e‑mail ako záložku</translation>
 <translation id="4322394346347055525">Zatvoriť ostatné karty</translation>
 <translation id="4324577459193912240">Súbor nie je úplný</translation>
 <translation id="4330387663455830245">Nikdy neprekladať jazyk <ph name="LANGUAGE" /></translation>
@@ -2205,6 +2210,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> zdieľa okno.</translation>
 <translation id="4364830672918311045">Zobrazovať upozornenia</translation>
 <translation id="4365673000813822030">Synchronizácia prestala pracovať.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> v aplikácii <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Zadaný e-mail a heslo nesúhlasia.</translation>
 <translation id="437184764829821926">Rozšírené nastavenia písma</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3069,6 +3075,7 @@
 <translation id="5669267381087807207">Prebieha aktivácia</translation>
 <translation id="5669691691057771421">Zadanie nového kódu PIN</translation>
 <translation id="5671641761787789573">Boli zablokované obrázky</translation>
+<translation id="567643736130151854">Prihláste sa a zapnite synchronizáciu. Získate tak svoje záložky, heslá a ďalšie položky vo všetkých zariadeniach</translation>
 <translation id="5677503058916217575">Jazyk stránky:</translation>
 <translation id="5677928146339483299">Zablokované</translation>
 <translation id="5678550637669481956">Bol udelený prístup k médiu <ph name="VOLUME_NAME" /> s povolením čítať a zapisovať.</translation>
@@ -3940,6 +3947,7 @@
 <translation id="7007648447224463482">Otvoriť všetky v novom okne</translation>
 <translation id="701080569351381435">Zobraziť zdrojový kód</translation>
 <translation id="7014174261166285193">Inštalácia zlyhala.</translation>
+<translation id="7017004637493394352">Povedzte „Ok Google“ ešte raz</translation>
 <translation id="7017219178341817193">Pridať novú stránku</translation>
 <translation id="7017354871202642555">Po nastavení okna nie je možné nastaviť režim.</translation>
 <translation id="7017480957358237747">povoliť alebo zakázať konkrétne webové stránky,</translation>
@@ -4267,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Túto službu aktivujete v zariadení zapnutím nastavenia Poloha. V nastaveniach polohy môžete tiež vypnúť určovanie polohy pomocou siete Wi‑Fi, mobilnej siete a senzorov.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Vytvorte heslo –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Povedzte „Ok Google“</translation>
 <translation id="7525067979554623046">Vytvoriť</translation>
 <translation id="7529411698175791732">Skontrolujte internetové pripojenie. Ak problém pretrváva, skúste sa odhlásiť a znovu prihlásiť.</translation>
 <translation id="7530016656428373557">Vybíjanie batérie (W)</translation>
@@ -4956,6 +4965,7 @@
 <translation id="8571213806525832805">Posledné 4 týždne</translation>
 <translation id="8574990355410201600">Vždy povoliť zvuk na webe <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Ukončíte pridržaním klávesa <ph name="KEY_EQUIVALENT" /></translation>
+<translation id="8578421807258988326">{0,plural, =1{Zavrieť toto okno}few{Zavrieť všetky okná inkognito}many{Zavrieť všetky okná inkognito}other{Zavrieť všetky okná inkognito}}</translation>
 <translation id="8578639784464423491">Nemôže presiahnuť 99 znakov</translation>
 <translation id="8579285237314169903">Synchronizujú sa položky (počet: <ph name="NUMBER_OF_FILES" />)...</translation>
 <translation id="857943718398505171">Povolené (odporúčané)</translation>
@@ -5309,7 +5319,6 @@
 <translation id="9112748030372401671">Zmeniť tapetu</translation>
 <translation id="9112987648460918699">Nájsť...</translation>
 <translation id="9114663181201435112">Jednoduché prihlásenie</translation>
-<translation id="9115487443206954631">Spravovať zariadenia Cast</translation>
 <translation id="9115675100829699941">&amp;Záložky</translation>
 <translation id="9116465289595958864">Naposledy upravené</translation>
 <translation id="9116799625073598554">Aplikácia na písanie poznámok</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 2099da4..2b8c6e7 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Vklopite način za seznanjanje</translation>
 <translation id="3353984535370177728">Izberite mapo za prenos</translation>
 <translation id="3355936511340229503">Napaka povezave</translation>
+<translation id="3356580349448036450">Dokončano</translation>
 <translation id="3356797067524893661">Pripravljeni ste za nadaljevanje v Hangouts Meet</translation>
 <translation id="3358935496594837302">Vašega telefona ni mogoče najti. Uporabljati morate združljiv telefon Android, ki je vklopljen in pri roki. &lt;a&gt;Več o tem&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Omejitve pravilnika potrdila</translation>
@@ -3948,6 +3949,7 @@
 <translation id="7007648447224463482">Odpri vse v novem oknu</translation>
 <translation id="701080569351381435">Ogled izvorne kode</translation>
 <translation id="7014174261166285193">Namestitev ni uspela.</translation>
+<translation id="7017004637493394352">Znova izgovorite »Ok Google«</translation>
 <translation id="7017219178341817193">Dodaj novo stran</translation>
 <translation id="7017354871202642555">Ko enkrat nastavite okno, ni mogoče nastaviti načina.</translation>
 <translation id="7017480957358237747">dovoljevanje ali prepoved nekaterih spletnih mest,</translation>
@@ -4275,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Zaznavanje lokacije lahko izklopite tako, da v napravi izklopite glavno lokacijsko nastavitev. V lokacijskih nastavitvah lahko izklopite tudi uporabo omrežij Wi‑Fi, mobilnih omrežij in tipal za zaznavanje lokacije.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Ustvarjanje gesla –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Izgovorite »Ok Google«</translation>
 <translation id="7525067979554623046">Ustvari</translation>
 <translation id="7529411698175791732">Preverite internetno povezavo. Če težave ne odpravite, se poskusite odjaviti in znova prijaviti.</translation>
 <translation id="7530016656428373557">Hitrost praznjenja v vatih</translation>
@@ -5319,7 +5322,6 @@
 <translation id="9112748030372401671">Spreminjanje ozadja</translation>
 <translation id="9112987648460918699">Iskanje ...</translation>
 <translation id="9114663181201435112">Preprosta prijava</translation>
-<translation id="9115487443206954631">Upravljanje naprav Cast</translation>
 <translation id="9115675100829699941">&amp;Zaznamki</translation>
 <translation id="9116465289595958864">Nazadnje spremenjeno</translation>
 <translation id="9116799625073598554">Aplikacija za ustvarjanje zapiskov</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index b61993b..7f27986 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -852,7 +852,7 @@
 <translation id="225240747099314620">Дозволи идентификаторе за заштићени садржај (можда ће бити потребно да поново покренете рачунар)</translation>
 <translation id="2255077166240162850">Овај уређај је закључан на неки други домен или режим.</translation>
 <translation id="2255317897038918278">Microsoft означавање времена</translation>
-<translation id="2256115617011615191">Поново покрени одмах</translation>
+<translation id="2256115617011615191">Рестартуј одмах</translation>
 <translation id="225614027745146050">Добро дошли</translation>
 <translation id="225692081236532131">Статус активације</translation>
 <translation id="2261323523305321874">Администратор је унео промену која се односи на цео систем и која је онемогућила неке старе профиле.</translation>
@@ -1553,6 +1553,7 @@
 <translation id="3350117557200012647">Активирајте режим упаривања</translation>
 <translation id="3353984535370177728">Избор директоријума за отпремање</translation>
 <translation id="3355936511340229503">Грешка при повезивању</translation>
+<translation id="3356580349448036450">Завршено</translation>
 <translation id="3356797067524893661">Спремни сте да наставите на Hangouts Meet</translation>
 <translation id="3358935496594837302">Не можемо да пронађемо телефон. Проверите да ли користите компатибилни и укључени Android телефон који је у близини. &lt;a&gt;Сазнајте више&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Ограничења смерница сертификата</translation>
@@ -3195,7 +3196,7 @@
 <translation id="5851063901794976166">Овде нема ничега...</translation>
 <translation id="5851868085455377790">Издавалац</translation>
 <translation id="5852112051279473187">Упс! Дошло је до озбиљног проблема док смо пријављивали овај уређај. Пробајте поново или контактирајте представника подршке.</translation>
-<translation id="5852137567692933493">Поново покрени и обави Powerwash</translation>
+<translation id="5852137567692933493">Рестартуј и обави Powerwash</translation>
 <translation id="5854912040170951372">Парче</translation>
 <translation id="5855773610748894548">Упс, грешка са безбедносним модулом.</translation>
 <translation id="5856721540245522153">Омогућавање функција за отклањање грешака</translation>
@@ -3945,6 +3946,7 @@
 <translation id="7007648447224463482">Отвори све у новом прозору</translation>
 <translation id="701080569351381435">Прикажи извор</translation>
 <translation id="7014174261166285193">Инсталација није успела.</translation>
+<translation id="7017004637493394352">Кажите поново „Ок Google“</translation>
 <translation id="7017219178341817193">Додајте нову страницу</translation>
 <translation id="7017354871202642555">Није могуће подесити режим након подешавања прозора.</translation>
 <translation id="7017480957358237747">да дозволите или забраните одређене веб-сајтове,</translation>
@@ -4272,6 +4274,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Можете да искључите локацију ако искључите главно подешавање локације на уређају. У подешавањима локације можете да искључите и коришћење Wi-Fi мреже, мобилних мрежа и сензора за локацију.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Прављење лозинке –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Реците „Ок Google“</translation>
 <translation id="7525067979554623046">Направи</translation>
 <translation id="7529411698175791732">Проверите интернет везу. Ако се проблем и даље јавља, пробајте да се одјавите и поново пријавите.</translation>
 <translation id="7530016656428373557">Ниво потрошње у ватима</translation>
@@ -4317,7 +4320,7 @@
 <translation id="7591957897535945411">Ова страница је преведена.</translation>
 <translation id="7595453277607160340">Да бисте користили Android и да би <ph name="DEVICE_TYPE" /> уређај радио правилно, пријавите се поново и ажурирајте.</translation>
 <translation id="7595547011743502844"><ph name="ERROR" /> (кôд грешке <ph name="ERROR_CODE" />).</translation>
-<translation id="7598466960084663009">Поново покрени рачунар</translation>
+<translation id="7598466960084663009">Рестартуј рачунар</translation>
 <translation id="7599527631045201165">Назив уређаја је предугачак. Унесите краћи и пробајте поново.</translation>
 <translation id="7600965453749440009">Никад не преводи <ph name="LANGUAGE" /></translation>
 <translation id="760197030861754408">Идите на <ph name="LANDING_PAGE" /> да бисте се повезали.</translation>
@@ -5316,7 +5319,6 @@
 <translation id="9112748030372401671">Промена позадине</translation>
 <translation id="9112987648460918699">Пронађи...</translation>
 <translation id="9114663181201435112">Лако се пријављујте</translation>
-<translation id="9115487443206954631">Управљај Cast уређајима</translation>
 <translation id="9115675100829699941">&amp;Обележивачи</translation>
 <translation id="9116465289595958864">Последња измена</translation>
 <translation id="9116799625073598554">Апликација за прављење белешки</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index f798b209..d5a5b17 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1556,6 +1556,7 @@
 <translation id="3350117557200012647">Aktivera kopplingsläget</translation>
 <translation id="3353984535370177728">Välj en mapp för uppladdning</translation>
 <translation id="3355936511340229503">Anslutningsfel</translation>
+<translation id="3356580349448036450">Klart</translation>
 <translation id="3356797067524893661">Klart att fortsätta med Hangouts Meet</translation>
 <translation id="3358935496594837302">Mobilen hittades inte. Använd en kompatibel Android-mobil som är på och finns till hands. &lt;a&gt;Läs mer&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Begränsningar för Certifikatpolicy</translation>
@@ -3946,6 +3947,7 @@
 <translation id="7007648447224463482">Öppna alla i ett nytt fönster</translation>
 <translation id="701080569351381435">Visa källa</translation>
 <translation id="7014174261166285193">Installationen misslyckades.</translation>
+<translation id="7017004637493394352">Säg ”Ok Google” igen</translation>
 <translation id="7017219178341817193">Lägg till ny sida</translation>
 <translation id="7017354871202642555">Det går inte att ange läge när fönstret har skapats.</translation>
 <translation id="7017480957358237747">tillåt eller förbjud vissa webbplatser,</translation>
@@ -4273,6 +4275,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Du kan inaktivera tjänsten genom att inaktivera huvudinställningen för Plats på enheten. Du kan även inaktivera användningen av Wi-Fi, mobila nätverk och sensorer för plats i platsinställningarna.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Skapa ett lösenord –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Säg ”Ok Google”</translation>
 <translation id="7525067979554623046">Skapa</translation>
 <translation id="7529411698175791732">Kontrollera internetanslutningen. Om problemet kvarstår testar du att logga ut och logga in igen.</translation>
 <translation id="7530016656428373557">Urladdningstakt i watt</translation>
@@ -5317,7 +5320,6 @@
 <translation id="9112748030372401671">Ändra bakgrund</translation>
 <translation id="9112987648460918699">Sök...</translation>
 <translation id="9114663181201435112">Logga in enkelt</translation>
-<translation id="9115487443206954631">Hantera Cast-enheter</translation>
 <translation id="9115675100829699941">&amp;Bokmärken</translation>
 <translation id="9116465289595958864">Senast ändrat</translation>
 <translation id="9116799625073598554">App för anteckningar</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index b0a0607761..e3b9377 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1550,6 +1550,7 @@
 <translation id="3350117557200012647">Anzisha hali ya kuoanisha</translation>
 <translation id="3353984535370177728">Chagua folda ya kupakia</translation>
 <translation id="3355936511340229503">Hitilafu ya muunganisho</translation>
+<translation id="3356580349448036450">Imekamilika</translation>
 <translation id="3356797067524893661">Uko tayari kwenda kwenye Hangouts Meet</translation>
 <translation id="3358935496594837302">Imeshindwa kupata simu yako. Hakikisha kuwa unatumia simu ya Android inayooana, ambayo imewashwa na unayoweza kufikia. &lt;a&gt;Pata maelezo zaidi&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Vizuizi vya Sera ya Vyeti</translation>
@@ -3938,6 +3939,7 @@
 <translation id="7007648447224463482">Fungua url zote katika dirisha jipya</translation>
 <translation id="701080569351381435">Angalia chanzo</translation>
 <translation id="7014174261166285193">Usakinishaji haukufaulu.</translation>
+<translation id="7017004637493394352">Sema "Ok Google" tena</translation>
 <translation id="7017219178341817193">Ongeza ukurasa mpya</translation>
 <translation id="7017354871202642555">Haiwezi kuweka modi baada ya kuweka dirisha.</translation>
 <translation id="7017480957358237747">ruhusu au zuia tovuti fulani,</translation>
@@ -4264,6 +4266,7 @@
     <ph name="BEGIN_PARAGRAPH2" />Huduma za mahali za Google hutumia vyanzo kama vile Wi-Fi, mitandao ya simu na vitambuzi ili kukadiria mahali kifaa chako kilipo. Huduma hii inatumika wakati umewasha mipangilio ya Mahali kwenye kifaa chako.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Unaweza kuzima mipangilio ya Mahali kwa kuzima mipangilio ya msingi ya Mahali katika kifaa chako. Unaweza pia kuzima matumizi ya Wi-Fi, mitandao ya simu na vitambuzi vya mahali katika mipangilio ya mahali.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Tunga nenosiri -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Sema "Ok Google"</translation>
 <translation id="7525067979554623046">Unda</translation>
 <translation id="7529411698175791732">Angalia muunganisho wako wa intaneti. Iwapo tatizo litaendelea, jaribu kuondoka na uingie tena katika akaunti.</translation>
 <translation id="7530016656428373557">Kiwango cha Kutoa katika kipimo cha Wati</translation>
@@ -5311,7 +5314,6 @@
 <translation id="9112748030372401671">Badilisha mandhari yako</translation>
 <translation id="9112987648460918699">Pata...</translation>
 <translation id="9114663181201435112">Ingia katika akaunti kwa urahisi</translation>
-<translation id="9115487443206954631">Dhibiti vifaa vya Kutuma</translation>
 <translation id="9115675100829699941">&amp;Alamisho</translation>
 <translation id="9116465289595958864">Wakati zilibadilishwa</translation>
 <translation id="9116799625073598554">Programu ya kuandika vidokezo</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index f51601d5..4bf4577 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">படத்தை ஏற்று</translation>
 <translation id="1029317248976101138">பெரிதாக்கு</translation>
 <translation id="1030706264415084469">உங்கள் சாதனத்தில், அதிக அளவு தரவை நிரந்தரமாகச் சேமிக்க <ph name="URL" /> விரும்புகிறது</translation>
+<translation id="1030889518049751641">செயல்பாட்டுப் பதிவைக் காட்டு</translation>
 <translation id="1031362278801463162">மாதிரிக்காட்சியை ஏற்றுகிறது</translation>
 <translation id="103279545524624934">Android பயன்பாடுகளைத் துவக்க, சாதனத்தில் இடத்தைக் காலியாக்கவும்.</translation>
 <translation id="1033780634303702874">உங்கள் தொடர் சாதனங்களை அணுகலாம்</translation>
@@ -163,6 +164,7 @@
     சுயவிவரத்தை மீண்டும் அமைக்க வேண்டும்.<ph name="BR" />
     <ph name="BR" />
     அடுத்த திரையில், சிக்கலைச் சரிசெய்வதற்கு உதவ, கருத்து தெரிவிக்கவும்.</translation>
+<translation id="1217668622537098248">செயலுக்குப் பின்னர் வழக்கமான இடது கிளிக் செயல்பாட்டிற்குத் திரும்பும்</translation>
 <translation id="121783623783282548">கடவுச்சொற்கள் பொருந்தவில்லை.</translation>
 <translation id="1218860753635451122">"ஏற்கிறேன்" பட்டனைக் கிளிக் செய்வதன் மூலம், மேலே விவரிக்கப்பட்டுள்ள இந்த Google சேவைகள் தொடர்பான செயலாக்கத்தை ஏற்கிறீர்கள்.</translation>
 <translation id="122082903575839559">சான்றிதழ் கையொப்ப அல்காரிதம்</translation>
@@ -1181,6 +1183,7 @@
 <translation id="2755628026949580719">உங்கள் பாதுகாப்பு விசை காண்பிக்கப்படவில்லை என்றால், குறைந்தது 5 வினாடிகளுக்கு விசையின் பட்டனை அழுத்தவும்.</translation>
 <translation id="275662540872599901">திரை அணைக்கப்பட்டுள்ளது</translation>
 <translation id="2761898608071930085">வேறொரு கணக்கைப் பயன்படுத்து</translation>
+<translation id="276233135255363312">{0,plural, =1{ஒரு மறைநிலைச் சாளரத்தைத் திறந்து வைத்திருக்கிறீர்கள்.}other{# மறைநிலைச் சாளரங்களைத் திறந்து வைத்திருக்கிறீர்கள்.}}</translation>
 <translation id="2762441749940182211">கேமரா தடுக்கப்பட்டது</translation>
 <translation id="2765217105034171413">சிறிய</translation>
 <translation id="2766006623206032690">ஒட்&amp;டி விட்டு செல்</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">புளூடூத் பாதுகாப்பு விசையை இணைத்தல்</translation>
 <translation id="3353984535370177728">பதிவேற்ற கோப்புறையைத் தேர்வுசெய்யவும்</translation>
 <translation id="3355936511340229503">இணைப்புப் பிழை</translation>
+<translation id="3356580349448036450">முடிந்தது</translation>
 <translation id="3356797067524893661">Hangouts Meetஐப் பயன்படுத்துவதற்குத் தேவையான அனைத்தையும் அமைத்துவிட்டீர்கள்</translation>
 <translation id="3358935496594837302">மொபைலைக் கண்டறிய முடியவில்லை. இணங்கும் Android ஃபோனைப் பயன்படுத்துவதையும், அது இயக்கப்பட்டு அருகில் உள்ளதையும் உறுதிப்படுத்திக்கொள்ளவும். &lt;a&gt;மேலும் அறிக&lt;/a&gt;</translation>
 <translation id="3359256513598016054">சான்றிதழ் கொள்கைக் கட்டுப்பாடுகள்</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">தடு (இயல்பு)</translation>
 <translation id="4316850752623536204">டெவலப்பர் இணையதளம்</translation>
 <translation id="4320177379694898372">இணைய இணைப்பு இல்லை</translation>
+<translation id="4320948194796820126">புக்மார்க்கில் சேர்க்க மின்னஞ்சல் சேவையைத் தேர்ந்தெடுக்கவும்</translation>
 <translation id="4322394346347055525">பிற தாவல்களை மூடுக</translation>
 <translation id="4324577459193912240">பதிவிறக்கம் முழுமையடையவில்லை</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> மொழியிலிருந்தால் ஒருபோதும் மொழிபெயர்க்காதே</translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> சாளரத்தைப் பகிர்கிறது.</translation>
 <translation id="4364830672918311045">அறிவிப்புகளைக் காட்டலாம்</translation>
 <translation id="4365673000813822030">அச்சச்சோ, ஒத்திசைவு பணியை நிறுத்தியுள்ளது.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> மூலம் <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">உள்ளிட்ட மின்னஞ்சலும், கடவுச்சொல்லும் பொருந்தவில்லை.</translation>
 <translation id="437184764829821926">மேம்பட்ட எழுத்துரு அமைப்புகள்</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3071,6 +3077,7 @@
 <translation id="5669267381087807207">செயலாக்குகிறது</translation>
 <translation id="5669691691057771421">புதிய பின்னை உள்ளிடவும்</translation>
 <translation id="5671641761787789573">படங்கள் தடுக்கப்பட்டன</translation>
+<translation id="567643736130151854">உங்கள் சாதனங்கள் அனைத்திலும் உங்கள் புக்மார்க்குகள், கடவுச்சொற்கள் மற்றும் பலவற்றைப் பெற உள்நுழைந்து, ஒத்திசைவை இயக்கவும்</translation>
 <translation id="5677503058916217575">பக்கத்தின் மொழி:</translation>
 <translation id="5677928146339483299">தடுக்கப்பட்டது</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> இல் எழுதுவதற்கான, படிப்பதற்கான அணுகல் வழங்கப்பட்டது.</translation>
@@ -3942,6 +3949,7 @@
 <translation id="7007648447224463482">அனைத்தையும் புதிய சாளரத்தில் திற</translation>
 <translation id="701080569351381435">மூலத்தைப் பார்க்கவும்</translation>
 <translation id="7014174261166285193">நிறுவல் தோல்வியடைந்தது.</translation>
+<translation id="7017004637493394352">மீண்டும் "Ok Google" எனக் கூறவும்</translation>
 <translation id="7017219178341817193">புதிய பக்கத்தைச் சேர்</translation>
 <translation id="7017354871202642555">சாளரம் அமைக்கப்பட்ட பின்னர் பயன்முறையை அமைக்க முடியாது.</translation>
 <translation id="7017480957358237747">சில இணையதளங்களை அனுமதிக்கலாம் அல்லது தடைசெய்யலாம்,</translation>
@@ -4269,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />சாதனத்தில் முதன்மை இருப்பிட அமைப்பை முடக்குவதன் மூலம், இருப்பிடத்தை முடக்கலாம். அத்துடன், இருப்பிடத்தைக் கண்டறிவதற்காக வைஃபை, மொபைல் நெட்வொர்க்குகள், சென்சார்கள் ஆகியவை பயன்படுத்தப்படுவதை இருப்பிட அமைப்புகளில் முடக்கலாம்.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">கடவுச்சொல்லை உருவாக்கு -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" என்று கூறவும்</translation>
 <translation id="7525067979554623046">உருவாக்கு</translation>
 <translation id="7529411698175791732">இணைய இணைப்பைச் சரிபார்க்கவும். சிக்கல் தொடர்ந்தால், வெளியேறி மீண்டும் உள்நுழையவும்.</translation>
 <translation id="7530016656428373557">வாட்ஸ் அலகில் வெளியேற்ற வீதம்</translation>
@@ -4961,6 +4970,7 @@
 <translation id="8571213806525832805">கடந்த 4 வாரங்கள்</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> இல் எப்போதும் ஒலியை அனுமதி</translation>
 <translation id="8575286410928791436">வெளியேற, <ph name="KEY_EQUIVALENT" />ஐ அழுத்திப் பிடித்திருக்கவும்</translation>
+<translation id="8578421807258988326">{0,plural, =1{இந்தச் சாளரத்தை மூடு}other{எல்லா மறைநிலைச் சாளரங்களையும் மூடு}}</translation>
 <translation id="8578639784464423491">99 எழுத்துகளுக்கு அதிகமாக இருக்கக்கூடாது</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> உருப்படிகளை ஒத்திசைக்கிறது...</translation>
 <translation id="857943718398505171">அனுமதிக்கப்பட்டது (பரிந்துரைத்தது)</translation>
@@ -5314,7 +5324,6 @@
 <translation id="9112748030372401671">உங்கள் வால்பேப்பரை மாற்றலாம்</translation>
 <translation id="9112987648460918699">கண்டுபிடி...</translation>
 <translation id="9114663181201435112">எளிதாக உள்நுழையலாம்</translation>
-<translation id="9115487443206954631">Cast சாதனங்களை நிர்வகி</translation>
 <translation id="9115675100829699941">&amp;புக்மார்க்குகள்</translation>
 <translation id="9116465289595958864">கடைசியாக மாற்றியது</translation>
 <translation id="9116799625073598554">குறிப்பெடுக்கும் பயன்பாடு</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index c9fcb0d8..41ae513b 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">చిత్రాన్ని లోడ్ చేయండి</translation>
 <translation id="1029317248976101138">జూమ్ చేయి:</translation>
 <translation id="1030706264415084469"><ph name="URL" /> శాశ్వతంగా అధిక డేటాను మీ పరికరంలో నిల్వ చేయాలనుకుంటోంది</translation>
+<translation id="1030889518049751641">కార్యకలాపాల లాగ్‌ని చూడండి</translation>
 <translation id="1031362278801463162">పరిదృశ్యం లోడ్ అవుతోంది</translation>
 <translation id="103279545524624934">Android అనువర్తనాలను ప్రారంభించడానికి డిస్క్ స్థలాన్ని ఖాళీ చేయండి.</translation>
 <translation id="1033780634303702874">మీ క్రమానుసార పరికరాలను ప్రాప్యత చేయడం</translation>
@@ -75,7 +76,7 @@
 <translation id="1112420131909513020">నేపథ్య ట్యాబ్ బ్లూటూత్‌ని ఉపయోగిస్తోంది</translation>
 <translation id="1114102982691049955"><ph name="PRINTER_MANUFACTURER" /> <ph name="PRINTER_MODEL" /> (USB)</translation>
 <translation id="1114202307280046356">చతుర్భుజం</translation>
-<translation id="1114335938027186412">మీ కంప్యూటర్ ట్రస్టెడ్ ప్లాట్‌ఫారమ్ మాడ్యూల్ (TPM) భద్రతా పరికరాన్ని కలిగి ఉంది, ఇది Chrome OSలో అనేక కీలకమైన భద్రతా ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm</translation>
+<translation id="1114335938027186412">మీ కంప్యూటర్ ట్రస్టెడ్ ప్లాట్‌ఫామ్ మాడ్యూల్ (TPM) భద్రతా పరికరాన్ని కలిగి ఉంది, ఇది Chrome OSలో అనేక కీలకమైన భద్రతా ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm</translation>
 <translation id="1114525161406758033">మూత మూసి ఉన్నప్పుడు స్లీప్ స్థితికి వెళ్లు</translation>
 <translation id="1116639326869298217">మీ గుర్తింపును ధృవీకరించడం సాధ్యపడలేదు</translation>
 <translation id="1116694919640316211">గురించి</translation>
@@ -163,6 +164,7 @@
     మీరు మీ ప్రొఫైల్‌ను మళ్లీ సెటప్ చేయాల్సి ఉంటుంది.<ph name="BR" />
     <ph name="BR" />
    తదుపరి స్క్రీన్‌లో, దయచేసి ఈ సమస్యను పరిష్కరించడంలో మాకు సహాయపడటానికి అభిప్రాయాన్ని పంపండి.</translation>
+<translation id="1217668622537098248">చర్య తర్వాత తిరిగి ఎడమ క్లిక్ వద్దకు మారు</translation>
 <translation id="121783623783282548">పాస్‌‌వర్డ్‌లు సరిపోలలేదు.</translation>
 <translation id="1218860753635451122">"నేను అంగీకరిస్తున్నాను" బటన్‌ని క్లిక్ చేయడం ద్వారా, ఈ Google సేవల కోసం ఎగువ పేర్కొన్న వాటిని ప్రాసెస్ చేయడానికి మీరు అంగీకరిస్తున్నారు.</translation>
 <translation id="122082903575839559">సర్టిఫికెట్ సంతకం అల్గారిథమ్</translation>
@@ -561,7 +563,7 @@
 <translation id="1812631533912615985">టాబ్‌లను అన్‌పిన్ చెయ్యండి</translation>
 <translation id="1813278315230285598">సేవలు</translation>
 <translation id="18139523105317219">EDI వేడుక పేరు</translation>
-<translation id="1815083418640426271">సాదా వచనం వలె అతికించు</translation>
+<translation id="1815083418640426271">సాదా వచనం లాగా అతికించు</translation>
 <translation id="1815579292149538864">CUPS ప్రింటర్‌లను సెటప్ చేయండి లేదా నిర్వహించండి.</translation>
 <translation id="181577467034453336">మరో <ph name="NUMBER_OF_VIEWS" />...</translation>
 <translation id="1815861158988915678"><ph name="BEGIN_BOLD" />హెచ్చరిక:<ph name="END_BOLD" /> ఈ ఫైల్‌లు తాత్కాలికమైనవి, డిస్క్ స్పేస్‌ను పెంచడం కోసం స్వయంచాలకంగా తొలగించబడవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
@@ -780,7 +782,7 @@
 <translation id="2149850907588596975">పాస్‌వర్డ్‌లు మరియు ఫారమ్‌లు</translation>
 <translation id="2150139952286079145">శోధించాల్సిన గమ్యస్థానాలు</translation>
 <translation id="2150661552845026580">"<ph name="EXTENSION_NAME" />"ను జోడించాలా?</translation>
-<translation id="2151576029659734873">చెల్లని టాబ్ సూచిక ఎంటర్ చెయ్యబడింది.</translation>
+<translation id="2151576029659734873">చెల్లని ట్యాబ్ సూచిక నమోదు చేయబడింది.</translation>
 <translation id="2154484045852737596">కార్డ్‌ను సవరించండి</translation>
 <translation id="2154710561487035718">URLను కాపీ చెయ్యి</translation>
 <translation id="2155772377859296191"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ఉన్నట్టుంది</translation>
@@ -822,7 +824,7 @@
 <translation id="2217501013957346740">పేరును సృష్టించండి -</translation>
 <translation id="2218019600945559112">మౌస్ మరియు టచ్‌ప్యాడ్</translation>
 <translation id="2218320521449013367">Chrome హానికరమైన సాఫ్ట్‌వేర్‌ని తీసివేస్తున్నప్పుడు ఎర్రర్ సంభవించింది</translation>
-<translation id="2218515861914035131">సాధారణ వచనం వలె అతికించండి</translation>
+<translation id="2218515861914035131">సాధారణ వచనం లాగా అతికించండి</translation>
 <translation id="221872881068107022">రివర్స్ స్క్రోలింగ్</translation>
 <translation id="2220409419896228519">మీకు ఇష్టమైన Google యాప్‌లకు బుక్‌మార్క్‌లను జోడించండి</translation>
 <translation id="2220529011494928058">సమస్యను నివేదించు</translation>
@@ -1147,7 +1149,7 @@
 <translation id="2709516037105925701">స్వయంపూర్తి</translation>
 <translation id="271033894570825754">కొత్తది</translation>
 <translation id="2714393097308983682">Google Play స్టోర్</translation>
-<translation id="2715751256863167692">ఈ అప్‌గ్రేడ్ మీ Chromebookని రీసెట్ చేస్తుంది మరియు ప్రస్తుత వినియోగదారు డేటాను తీసివేస్తుంది.</translation>
+<translation id="2715751256863167692">ఈ అప్‌గ్రేడ్ మీ Chromebookని రీసెట్ చేసి ప్రస్తుత వినియోగదారు డేటాను తీసివేస్తుంది.</translation>
 <translation id="2718395828230677721">రాత్రి కాంతి</translation>
 <translation id="2718998670920917754">యాంటీ-వైరస్ సాఫ్ట్‌వేర్ వైరస్‌ను కనుగొంది.</translation>
 <translation id="2719936478972253983">కింది కుక్కీలు బ్లాక్ చేయబడ్డాయి</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">మీ భద్రతా కీ కనుక జాబితా చేయబడకుంటే, కనీసం 5 సెకన్ల పాటు కీ బటన్‌ని నొక్కండి.</translation>
 <translation id="275662540872599901">స్క్రీన్ ఆఫ్‌లో ఉంది</translation>
 <translation id="2761898608071930085">మరో ఖాతాను ఉపయోగించు</translation>
+<translation id="276233135255363312">{0,plural, =1{మీ వద్ద ఒక అజ్ఞాత విండో ఉంది.}other{మీ వద్ద # అజ్ఞాత విండోలు ఉన్నాయి.}}</translation>
 <translation id="2762441749940182211">కెమెరా బ్లాక్ చేయబడింది</translation>
 <translation id="2765217105034171413">చిన్నది</translation>
 <translation id="2766006623206032690">పే&amp;స్ట్ చేసి ముందుకు వెళ్ళండి</translation>
@@ -1190,7 +1193,7 @@
 <translation id="2772936498786524345">స్నీకీ</translation>
 <translation id="2773802008104670137">ఈ రకమైన ఫైల్ మీ కంప్యూటర్‌కు హాని కలిగించవచ్చు.</translation>
 <translation id="2775104091073479743">వేలిముద్రలను సవరించండి</translation>
-<translation id="2776441542064982094">నెట్‌వర్క్‌లో నమోదు చేయడానికి పరికరాలు అందుబాటులో లేనట్లుగా కనిపిస్తోంది. మీ పరికరం ఆన్‌లో ఉండి, ఇంటర్నెట్‌కు కనెక్ట్ చేయబడి ఉంటే, దాని యొక్క సూచన మాన్యువల్‌లోని సూచనలని పాటించి దాన్ని నమోదు చేయడానికి ప్రయత్నించండి.</translation>
+<translation id="2776441542064982094">నెట్‌వర్క్‌లో నమోదు చేయడానికి పరికరాలు అందుబాటులో లేనట్లుగా కనిపిస్తోంది. మీ పరికరం ఆన్‌లో ఉండి, ఇంటర్నెట్‌కు కనెక్ట్ చేయబడి ఉంటే, దాని సూచన మాన్యువల్‌లోని సూచనలని పాటించి దాన్ని నమోదు చేయడానికి ప్రయత్నించండి.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux అప్లికేషన్‌ను ఇన్‌స్టాల్ చేయడంలో ఎర్రర్</translation>
 <translation id="2783298271312924866">డౌన్‌లోడ్ చేయబడింది</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">జత చేసే మోడ్‌లోకి ప్రవేశించండి</translation>
 <translation id="3353984535370177728">అప్‌లోడ్ చేయడానికి ఫోల్టర్‌ను ఎంచుకోండి</translation>
 <translation id="3355936511340229503">కనెక్షన్ లోపం</translation>
+<translation id="3356580349448036450">పూర్తయింది</translation>
 <translation id="3356797067524893661">మీరు Hangouts సమావేశానికి కొనసాగడానికి అంతా పూర్తి చేశారు</translation>
 <translation id="3358935496594837302">మీ ఫోన్‌ను కనుగొనలేము. మీరు ఆన్ చేసి ఉన్న అనుకూల Android ఫోన్‌ని ఉపయోగిస్తున్నారని మరియు అది చేతికి అందేంత దగ్గర్లో ఉందని నిర్ధారించుకోండి. &lt;a&gt;మరింత తెలుసుకోండి&lt;/a&gt;</translation>
 <translation id="3359256513598016054">సర్టిఫికెట్ విధాన పరిమితులు</translation>
@@ -1918,7 +1922,7 @@
 <translation id="386548886866354912"><ph name="EXTENSION_NAME" /> గల ప్యాక్</translation>
 <translation id="3866249974567520381">వివరణ</translation>
 <translation id="3867944738977021751">సర్టిఫికెట్ ఫీల్డ్‌లు</translation>
-<translation id="3869917919960562512">తప్పుడు సూచిక.</translation>
+<translation id="3869917919960562512">తప్పు సూచిక.</translation>
 <translation id="3870931306085184145"><ph name="DOMAIN" /> కోసం సేవ్ చేసిన పాస్‌వర్డ్‌లు లేవు</translation>
 <translation id="3871092408932389764">అతి తక్కువ</translation>
 <translation id="3872220884670338524">మరిన్ని చర్యలు, <ph name="DOMAIN" />లో <ph name="USERNAME" /> కోసం సేవ్ చేయబడిన ఖాతా</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">బ్లాక్ చేయి (డిఫాల్ట్)</translation>
 <translation id="4316850752623536204">డెవలపర్ వెబ్‌సైట్</translation>
 <translation id="4320177379694898372">ఇంటర్నెట్ కనెక్షన్ లేదు</translation>
+<translation id="4320948194796820126">మీ ఇమెయిల్‌కి బుక్‌మార్క్‌ని జోడించండి</translation>
 <translation id="4322394346347055525">ఇతర టాబ్‌లను మూసివేయి</translation>
 <translation id="4324577459193912240">ఫైల్ అసంపూర్ణంగా ఉంది</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" />ని ఎప్పటికీ అనువదించవద్దు</translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> ఒక విండోను భాగస్వామ్యం చేస్తోంది.</translation>
 <translation id="4364830672918311045">నోటిఫికేషన్‌లను ప్రదర్శించడం</translation>
 <translation id="4365673000813822030">అయ్యో, సమకాలీకరణ పని చేయడం ఆగిపోయింది.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" />తో <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">మీరు నమోదు చేసిన ఇమెయిల్ మరియు పాస్‌వర్డ్ సరిపోలలేదు</translation>
 <translation id="437184764829821926">అధునాతన ఫాంట్ సెట్టింగ్‌లు</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -2290,7 +2296,7 @@
 <translation id="4514542542275172126">కొత్త పర్యవేక్షించబడే వినియోగదారుని సెటప్ చేయండి</translation>
 <translation id="4514610446763173167">ప్లే లేదా పాజ్ చేయడానికి వీడియోని టోగుల్ చేయండి</translation>
 <translation id="451515744433878153">తీసివేయి</translation>
-<translation id="4518677423782794009">Chrome క్రాష్ అవుతోందా, అసాధారణ రీతిలో ప్రారంభ పేజీలు, సాధన పట్టీలు లేదా మీరు తొలగించలేని రీతిలో ఊహించని ప్రకటనలను చూపుతోందా లేదా మీ బ్రౌజర్ అనుభవాన్ని మారుస్తోందా? మీరు Chrome శుభ్రత సాధనాన్ని అమలు చేయడం ద్వారా సమస్యను పరిష్కరించవచ్చు.</translation>
+<translation id="4518677423782794009">Chrome క్రాష్ అవుతోందా, లేక అసాధారణ రీతిలో ప్రారంభ పేజీలు, సాధన పట్టీలు లేదా మీరు తొలగించలేని రీతిలో ఊహించని ప్రకటనలను చూపుతోందా, లేక మీ బ్రౌజర్ అనుభవాన్ని మారుస్తోందా? మీరు Chrome క్లీన్‌అప్ సాధనం అమలు చేయడం ద్వారా సమస్యను పరిష్కరించగలుగుతారు.</translation>
 <translation id="4519935350946509010">కనెక్షన్ ఎర్రర్.</translation>
 <translation id="4520385623207007473">ఉపయోగంలో ఉన్న కుక్కీలు</translation>
 <translation id="452039078290142656"><ph name="VENDOR_NAME" /> అందించిన తెలియని పరికరాలు</translation>
@@ -2413,7 +2419,7 @@
 <translation id="4699357559218762027">(స్వయంచాలకంగా ప్రారంభించబడింది)</translation>
 <translation id="4707302005824653064">chrome.comలో నిర్వాహకుడు (<ph name="CUSTODIAN_EMAIL" />) వినియోగాన్ని మరియు చరిత్రను సమీక్షించవచ్చు.</translation>
 <translation id="4707579418881001319">L2TP/IPsec + వినియోగదారు ప్రమాణపత్రం</translation>
-<translation id="4707934200082538898">దయచేసి తదుపరి సూచనల కోసం <ph name="BEGIN_BOLD" /><ph name="MANAGER_EMAIL" /><ph name="END_BOLD" />లో మీ ఇమెయిల్‌ను తనిఖీ చేయండి.</translation>
+<translation id="4707934200082538898">తర్వాతి సూచనల కోసం <ph name="BEGIN_BOLD" /><ph name="MANAGER_EMAIL" /><ph name="END_BOLD" />లో మీ ఇమెయిల్‌ను దయచేసి తనిఖీ చేయండి.</translation>
 <translation id="4708794300267213770">నిద్రావస్థ నుండి సక్రియం అవుతున్నప్పుడు లాక్ స్క్రీన్‌ని చూపు</translation>
 <translation id="4708849949179781599"><ph name="PRODUCT_NAME" /> నిష్క్రమించు</translation>
 <translation id="4711638718396952945">సెట్టింగ్‌లను పునరుద్ధరించు</translation>
@@ -2434,7 +2440,7 @@
 <translation id="4734518477988699048">ఇన్‌పుట్ విలువ చెల్లదు.</translation>
 <translation id="4735265153267957659">Smart Lockని ప్రారంభించడానికి మీ పాస్‌వర్డ్‌‌ను నమోదు చేయండి. తర్వాతిసారి, మీ ఫోన్ మీ <ph name="DEVICE_TYPE" />ని అన్‌లాక్ చేస్తుంది. సెట్టింగ్‌లలో Smart Lockని ఆఫ్ చేయండి.</translation>
 <translation id="473546211690256853">ఈ ఖాతా <ph name="DOMAIN" /> ద్వారా నిర్వహించబడుతోంది</translation>
-<translation id="4735803855089279419">ఈ పరికరం కోసం పరికరాన్ని గుర్తించే వాళ్లను గుర్తించడంలో సిస్టమ్ విఫలమైంది.</translation>
+<translation id="4735803855089279419">ఈ పరికర ఐడెంటిఫైయర్‌లను గుర్తించడంలో సిస్టమ్ విఫలమైంది.</translation>
 <translation id="4737715515457435632">దయచేసి నెట్‌వర్క్‌కు కనెక్ట్ చేయండి</translation>
 <translation id="473775607612524610">నవీకరణ</translation>
 <translation id="474217410105706308">ట్యాబ్‌ని మ్యూట్ చేయండి</translation>
@@ -2608,7 +2614,7 @@
 <translation id="4988526792673242964">పేజీలు</translation>
 <translation id="49896407730300355">అ&amp;పసవ్యదిశలో తిప్పు</translation>
 <translation id="4989966318180235467">&amp;నేపథ్య పేజీని పర్యవేక్షించు</translation>
-<translation id="4990343175649730969">Chrome శుభ్రత సాధనాన్ని డౌన్‌లోడ్ చేయి</translation>
+<translation id="4990343175649730969">Chrome క్లీన్‌అప్ సాధనాన్ని డౌన్‌లోడ్ చేయి</translation>
 <translation id="4991420928586866460">ఎగువ-అడ్డు వరుస కీలను ఫంక్షన్ కీల వలె పరిగణించు</translation>
 <translation id="499165176004408815">అధిక కాంట్రాస్ట్ మోడ్‌ను ఉపయోగించు</translation>
 <translation id="4992066212339426712">అన్‌మ్యూట్ చేయి</translation>
@@ -2921,7 +2927,7 @@
 <translation id="5457459357461771897">మీ కంప్యూటర్‌లోని ఫోటోలు, సంగీతం మరియు ఇతర మీడియాను చదవడం మరియు తొలగించడం</translation>
 <translation id="5457599981699367932">అతిథి వలె బ్రౌజ్ చెయ్యండి</translation>
 <translation id="5458998536542739734">లాక్ స్క్రీన్ గమనికలు</translation>
-<translation id="5463275305984126951"><ph name="LOCATION" /> యొక్క స్థానం</translation>
+<translation id="5463275305984126951"><ph name="LOCATION" /> యొక్క సూచిక</translation>
 <translation id="5463856536939868464">దాచిపెట్టిన బుక్‌మార్క్‌లు ఉన్న మెను</translation>
 <translation id="5464632865477611176">ఈ సమయాన్ని అమలు చేయి</translation>
 <translation id="5465662442746197494">సహాయం కావాలా?</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">సక్రియం చేస్తోంది</translation>
 <translation id="5669691691057771421">కొత్త PINని నమోదు చేయండి</translation>
 <translation id="5671641761787789573">చిత్రాలు బ్లాక్ చేయబడ్డాయి</translation>
+<translation id="567643736130151854">అన్ని పరికరాలలో మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌లు మరియు మరిన్నింటిని పొందడం కోసం సైన్ ఇన్ చేసి, సమకాలీకరణను ఆన్ చేయండి</translation>
 <translation id="5677503058916217575">పేజీ భాష:</translation>
 <translation id="5677928146339483299">బ్లాక్ చెయ్యబడింది</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" />కి చదవడానికి మరియు వ్రాయడానికి ప్రాప్యత మంజూరు చేయబడింది.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">అన్ని కొత్త విండోలో తెరువు</translation>
 <translation id="701080569351381435">సోర్స్‌ను చూడండి</translation>
 <translation id="7014174261166285193">వ్యవస్థాపన విఫలమైంది.</translation>
+<translation id="7017004637493394352">మళ్లీ "Ok Google" చెప్పండి</translation>
 <translation id="7017219178341817193">కొత్త పేజీని జోడించండి</translation>
 <translation id="7017354871202642555">విండో సెట్ చెయ్యబడిన తర్వాత మోడ్ సెట్ చెయ్యబడదు.</translation>
 <translation id="7017480957358237747">నిర్దిష్ట వెబ్‌సైట్‌లను అనుమతించండి లేదా నిషేధించండి,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />మీ పరికరంలోని ప్రధాన స్థాన సెట్టింగ్‌ని ఆఫ్ చేయడం ద్వారా మీరు స్థానాన్ని ఆఫ్ చేయవచ్చు. మీరు స్థాన సెట్టింగ్‌లలో స్థానం కోసం Wi-Fi, మొబైల్ నెట్‌వర్క్‌లు మరియు సెన్సార్‌లను కూడా ఆఫ్ చేయవచ్చు.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">పాస్‌వర్డ్‌ను సృష్టించండి -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" చెప్పండి</translation>
 <translation id="7525067979554623046">సృష్టించు</translation>
 <translation id="7529411698175791732">మీ ఇంటర్నెట్ కనెక్షన్‌ను తనిఖీ చేయండి. సమస్య కొనసాగితే, సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయడాన్ని ప్రయత్నించండి.</translation>
 <translation id="7530016656428373557">వాట్‌లలో తరుగుదల రేట్</translation>
@@ -4305,7 +4314,7 @@
 <translation id="7576976045740938453">డెమో మోడ్ ఖాతాకు సంబంధించి ఒక సమస్య ఏర్పడింది.</translation>
 <translation id="7579149537961810247">సైట్‌లను మ్యూట్ చేయండి</translation>
 <translation id="7580671184200851182">అన్ని స్పీకర్‌ల్లో ఒకే ఆడియోను ప్లే చేయి (మోనో ఆడియో)</translation>
-<translation id="7581462281756524039">శుభ్రత సాధనం</translation>
+<translation id="7581462281756524039">క్లీన్‌అప్ సాధనం</translation>
 <translation id="7582582252461552277">ఈ నెట్‌వర్క్‌ను ప్రాధాన్యపరచు</translation>
 <translation id="7586498138629385861">Chrome అనువర్తనాలు తెరవబడి ఉన్నప్పుడు Chrome నిరంతరాయంగా అమలులో ఉంటుంది.</translation>
 <translation id="7589461650300748890">అయ్యో, అక్కడ. జాగ్రత్తగా ఉండండి.</translation>
@@ -4459,7 +4468,7 @@
     <ph name="LINE_BREAK2" />
     కొన్ని ఫోటోలను ఎంచుకోవడానికి ప్రయత్నించండి.</translation>
 <translation id="782590969421016895">ప్రస్తుత పేజీలను ఉపయోగించండి</translation>
-<translation id="7826254698725248775">పరికరాన్ని గుర్తించేవారిలో వైరుధ్యం.</translation>
+<translation id="7826254698725248775">వైరుధ్యమైన పరికర ఐడెంటిఫైయర్.</translation>
 <translation id="7826346148677309647">మీరు Play Storeలో మీ పరికరం కోసం మరిన్ని యాప్‌లను కనుగొనవచ్చు.</translation>
 <translation id="7826790948326204519"><ph name="BEGIN_H3" />డీబగ్గింగ్ ఫీచర్‌లు<ph name="END_H3" />
     <ph name="BR" />
@@ -4955,6 +4964,7 @@
 <translation id="8571213806525832805">గత 4 వారాలు</translation>
 <translation id="8574990355410201600"><ph name="HOST" />లో ఎల్లప్పుడూ ధ్వనిని అనుమతించు</translation>
 <translation id="8575286410928791436">నిష్క్రమించడానికి <ph name="KEY_EQUIVALENT" />ని పట్టుకొని ఉంచండి</translation>
+<translation id="8578421807258988326">{0,plural, =1{ఈ విండోని మూసివేయండి}other{అన్ని అజ్ఞాత విండోలను మూసివేయండి}}</translation>
 <translation id="8578639784464423491">99 అక్షరాలను మించకూడదు</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> అంశాలను సమకాలీకరిస్తోంది...</translation>
 <translation id="857943718398505171">అనుమతించబడింది (సిఫార్సు చేయబడింది)</translation>
@@ -4984,7 +4994,7 @@
 <translation id="8627795981664801467">సురక్షిత కనెక్షన్‌ల మాత్రమే</translation>
 <translation id="8630903300770275248">పర్యవేక్షించబడే వినియోగదారుని దిగుమతి చేయి</translation>
 <translation id="8631032106121706562">పూరేకులు</translation>
-<translation id="8637542770513281060">మీ కంప్యూటర్‌లో ఒక సురక్షిత మాడ్యూల్ ఉంది, అది Chrome OSలో అనేక కీలకమైన భద్రతా ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. Chromebook సహాయ కేంద్రంలో దీని గురించి మరింత తెలుసుకోవడానికి, ఇక్కడికి వెళ్లండి: https://support.google.com/chromebook/?p=sm</translation>
+<translation id="8637542770513281060">మీ కంప్యూటర్‌లో ఒక సురక్షిత మాడ్యూల్ ఉంది, Chrome OSలో అనేక కీలకమైన భద్రతా ఫీచర్‌లను అమలు చేయడానికి ఇది ఉపయోగించబడుతుంది. Chromebook సహాయ కేంద్రంలో దీని గురించి మరింత తెలుసుకోండి, ఇక్కడికి వెళ్లండి: https://support.google.com/chromebook/?p=sm</translation>
 <translation id="8637688295594795546">సిస్టమ్ నవీకరణ అందుబాటులో ఉంది. డౌన్‌లోడ్ చెయ్యడానికి సిద్ధం చేస్తోంది...</translation>
 <translation id="8639047128869322042">హానికరమైన సాఫ్ట్‌వేర్‌ కోసం తనిఖీ చేస్తోంది...</translation>
 <translation id="8639963783467694461">స్వీయపూర్తి సెట్టింగ్‌లు</translation>
@@ -5308,7 +5318,6 @@
 <translation id="9112748030372401671">మీ వాల్‌పేపర్‌ను మార్చండి</translation>
 <translation id="9112987648460918699">కనుగొను...</translation>
 <translation id="9114663181201435112">సులభంగా సైన్ ఇన్ చేయండి</translation>
-<translation id="9115487443206954631">Cast పరికరాలను నిర్వహించండి</translation>
 <translation id="9115675100829699941">&amp;బుక్‌మార్క్‌లు</translation>
 <translation id="9116465289595958864">చివరిగా సవరించినది</translation>
 <translation id="9116799625073598554">విషయ సేకరణ అనువర్తనం</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 5dfa088..093d063f 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">โหลดภาพ</translation>
 <translation id="1029317248976101138">ซูม</translation>
 <translation id="1030706264415084469"><ph name="URL" /> ต้องการจัดเก็บข้อมูลขนาดใหญ่อย่างถาวรในอุปกรณ์ของคุณ</translation>
+<translation id="1030889518049751641">ดูบันทึกกิจกรรม</translation>
 <translation id="1031362278801463162">กำลังโหลดหน้าตัวอย่าง</translation>
 <translation id="103279545524624934">เพิ่มพื้นที่ว่างในดิสก์เพื่อเปิดแอป Android</translation>
 <translation id="1033780634303702874">เข้าถึงอุปกรณ์ซีเรียล</translation>
@@ -163,6 +164,7 @@
     คุณจะต้องตั้งค่าโปรไฟล์ของคุณอีกครั้ง<ph name="BR" />
     <ph name="BR" />
     บนหน้าจอถัดไป โปรดส่งความคิดเห็นมาที่เราเพื่อช่วยแก้ไขปัญหานี้</translation>
+<translation id="1217668622537098248">เปลี่ยนกลับเป็นคลิกซ้ายหลังจากดำเนินการ</translation>
 <translation id="121783623783282548">รหัสผ่านของคุณไม่ตรงกัน</translation>
 <translation id="1218860753635451122">การคลิกปุ่ม "ฉันยอมรับ" แสดงว่าคุณยอมรับการดำเนินการของบริการต่างๆ ของ Google ตามที่ชี้แจ้งไว้ด้านบน</translation>
 <translation id="122082903575839559">อัลกอริธึมลายเซ็นใบรับรอง </translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">หากคีย์ความปลอดภัยไม่แสดงอยู่ในรายการ ให้กดปุ่มของคีย์ค้างไว้อย่างน้อย 5 วินาที</translation>
 <translation id="275662540872599901">ปิดหน้าจอ</translation>
 <translation id="2761898608071930085">ใช้บัญชีอื่น</translation>
+<translation id="276233135255363312">{0,plural, =1{คุณมีหน้าต่างที่ไม่ระบุตัวตน 1 หน้า}other{คุณมีหน้าต่างที่ไม่ระบุตัวตน # หน้า}}</translation>
 <translation id="2762441749940182211">บล็อกกล้องถ่ายรูป</translation>
 <translation id="2765217105034171413">ขนาดเล็ก</translation>
 <translation id="2766006623206032690">&amp;วางแล้วไป</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">เข้าสู่โหมดการจับคู่</translation>
 <translation id="3353984535370177728">เลือกโฟลเดอร์ที่จะอัปโหลด</translation>
 <translation id="3355936511340229503">ข้อผิดพลาดในการเชื่อมต่อ</translation>
+<translation id="3356580349448036450">เสร็จสมบูรณ์</translation>
 <translation id="3356797067524893661">คุณพร้อมที่จะเข้าการประชุม Hangouts แล้ว</translation>
 <translation id="3358935496594837302">ไม่พบโทรศัพท์ของคุณ โปรดตรวจสอบว่าคุณใช้โทรศัพท์ Android ที่เข้ากันได้ซึ่งเปิดอยู่และอยู่ใกล้ๆ มือคุณ &lt;a&gt;ดูข้อมูลเพิ่มเติม&lt;/a&gt;</translation>
 <translation id="3359256513598016054">ข้อจำกัดนโยบายใบรับรอง</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">บล็อก (ค่าเริ่มต้น)</translation>
 <translation id="4316850752623536204">เว็บไซต์นักพัฒนาซอฟต์แวร์</translation>
 <translation id="4320177379694898372">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</translation>
+<translation id="4320948194796820126">เพิ่มบุ๊กมาร์กไปยังอีเมล</translation>
 <translation id="4322394346347055525">ปิดแท็บอื่นๆ</translation>
 <translation id="4324577459193912240">ไฟล์ไม่สมบูรณ์</translation>
 <translation id="4330387663455830245">ไม่ต้องแปลภาษา<ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> กำลังแชร์หน้าต่าง</translation>
 <translation id="4364830672918311045">แสดงการแจ้งเตือน</translation>
 <translation id="4365673000813822030">อ๊ะ การซิงค์หยุดทำงาน</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" />ด้วย <ph name="APP_NAME" /></translation>
 <translation id="4370975561335139969">อีเมลและรหัสผ่านที่คุณป้อนไม่ตรงกัน</translation>
 <translation id="437184764829821926">การตั้งค่าแบบอักษรขึ้นสูง</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">กำลังเปิดการใช้งาน</translation>
 <translation id="5669691691057771421">ป้อน PIN ใหม่</translation>
 <translation id="5671641761787789573">บล็อกรูปภาพ</translation>
+<translation id="567643736130151854">ลงชื่อเข้าใช้และเปิดการซิงค์เพื่อรับบุ๊กมาร์ก รหัสผ่าน และอื่นๆ ในอุปกรณ์ทุกเครื่อง</translation>
 <translation id="5677503058916217575">ภาษาหน้าเว็บ:</translation>
 <translation id="5677928146339483299">ถูกบล็อก</translation>
 <translation id="5678550637669481956">ได้รับสิทธิ์ในการอ่านและเขียน <ph name="VOLUME_NAME" /> แล้ว</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">เปิดทั้งหมดในหน้าต่างใหม่</translation>
 <translation id="701080569351381435">ดูต้นฉบับ</translation>
 <translation id="7014174261166285193">การติดตั้งล้มเหลว</translation>
+<translation id="7017004637493394352">พูดว่า "Ok Google" อีกครั้ง</translation>
 <translation id="7017219178341817193">เพิ่มหน้าใหม่</translation>
 <translation id="7017354871202642555">ไม่สามารถกำหนดโหมดได้หลังจากกำหนดหน้าต่างแล้ว</translation>
 <translation id="7017480957358237747">อนุญาตหรือห้ามบางเว็บไซต์</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />คุณปิดตำแหน่งได้ด้วยการปิดการตั้งค่าตำแหน่งหลักในอุปกรณ์ หรือจะปิดการใช้ Wi‑Fi, เครือข่ายมือถือ และเซ็นเซอร์สำหรับการบอกตำแหน่งในการตั้งค่าตำแหน่งก็ได้<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">สร้างรหัสผ่าน -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">พูดว่า "Ok Google"</translation>
 <translation id="7525067979554623046">สร้าง</translation>
 <translation id="7529411698175791732">ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ หากปัญหายังคงอยู่ ให้ลองออกจากระบบและลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="7530016656428373557">อัตราการใช้ไฟฟ้าเป็นวัตต์</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">4 สัปดาห์ที่แล้ว</translation>
 <translation id="8574990355410201600">อนุญาตให้เปิดเสียงใน <ph name="HOST" /> เสมอ</translation>
 <translation id="8575286410928791436">กด <ph name="KEY_EQUIVALENT" /> ค้างไว้เพื่อออก</translation>
+<translation id="8578421807258988326">{0,plural, =1{ปิดหน้าต่างนี้}other{ปิดหน้าต่างที่ไม่ระบุตัวตนทั้งหมด}}</translation>
 <translation id="8578639784464423491">ต้องไม่เกิน 99 ตัวอักษร</translation>
 <translation id="8579285237314169903">กำลังซิงค์ <ph name="NUMBER_OF_FILES" /> รายการ...</translation>
 <translation id="857943718398505171">อนุญาตแล้ว (แนะนำ)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">เปลี่ยนวอลเปเปอร์ของคุณ</translation>
 <translation id="9112987648460918699">ค้นหา...</translation>
 <translation id="9114663181201435112">ลงชื่อเข้าใช้ได้อย่างง่ายดาย</translation>
-<translation id="9115487443206954631">จัดการอุปกรณ์แคสต์</translation>
 <translation id="9115675100829699941">&amp;บุ๊กมาร์ก</translation>
 <translation id="9116465289595958864">แก้ไขล่าสุด</translation>
 <translation id="9116799625073598554">แอปสำหรับจดโน้ต</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 772f1bf..509a1b1a 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Resim Yükle</translation>
 <translation id="1029317248976101138">Yakınlaştır</translation>
 <translation id="1030706264415084469"><ph name="URL" /> büyük miktarda veriyi cihazınızda kalıcı olarak depolamak istiyor</translation>
+<translation id="1030889518049751641">Etkinlik Günlüğünü Görüntüle</translation>
 <translation id="1031362278801463162">Önizleme yükleniyor</translation>
 <translation id="103279545524624934">Android uygulamalarını başlatmak için disk alanını boşaltın.</translation>
 <translation id="1033780634303702874">Seri cihazlarınıza erişme</translation>
@@ -163,6 +164,7 @@
     Profilinizi tekrar ayarlamanız gerekecek.<ph name="BR" />
     <ph name="BR" />
     Sorunu düzeltmemize yardımcı olmak için lütfen bir sonraki ekranda geri bildirim gönderin.</translation>
+<translation id="1217668622537098248">İşlemden sonra sol tıklamaya geri döndürür</translation>
 <translation id="121783623783282548">Şifreler eşleşmiyor.</translation>
 <translation id="1218860753635451122">"Kabul Ediyorum" düğmesini tıklayarak bu Google hizmetleri ile ilgili yukarıda açıklanan işlemleri kabul etmiş olursunuz.</translation>
 <translation id="122082903575839559">Sertifika İmza Algoritması</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Güvenlik anahtarınız listede yoksa anahtarın düğmesine en az 5 saniye boyunca basın.</translation>
 <translation id="275662540872599901">ekran kapalı</translation>
 <translation id="2761898608071930085">Başka Bir Hesap Kullan</translation>
+<translation id="276233135255363312">{0,plural, =1{Tek bir gizli pencereniz var.}other{# gizli pencereniz var.}}</translation>
 <translation id="2762441749940182211">Kamera engellendi</translation>
 <translation id="2765217105034171413">Küçük</translation>
 <translation id="2766006623206032690">Ya&amp;pıştır ve git</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Eşleme moduna geçin</translation>
 <translation id="3353984535370177728">Yüklemek için bir klasör seçin</translation>
 <translation id="3355936511340229503">Bağlantı hatası</translation>
+<translation id="3356580349448036450">Tamamlandı</translation>
 <translation id="3356797067524893661">Artık Hangouts Meet'e devam edebilirsiniz</translation>
 <translation id="3358935496594837302">Telefonunuz bulunamıyor. Uyumlu bir Android telefon kullandığınızdan, ayrıca telefonunuzun açık ve yakında olduğundan emin olun. &lt;a&gt;Daha fazla bilgi&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Sertifika Politikası Kısıtlamaları</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">Engelle (varsayılan)</translation>
 <translation id="4316850752623536204">Geliştirici Web Sitesi</translation>
 <translation id="4320177379694898372">İnternet bağlantısı yok</translation>
+<translation id="4320948194796820126">E-postanıza yer işareti ekleyin</translation>
 <translation id="4322394346347055525">Diğer Sekmeleri Kapat</translation>
 <translation id="4324577459193912240">Dosya eksik</translation>
 <translation id="4330387663455830245"><ph name="LANGUAGE" /> Dilini Hiçbir Zaman Çevirme</translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" />, bir pencereyi paylaşıyor.</translation>
 <translation id="4364830672918311045">Bildirimleri görüntüleme</translation>
 <translation id="4365673000813822030">Hata, Senkronizasyonun çalışması durdu.</translation>
+<translation id="4366956553771076218"><ph name="APP_NAME" /> ile <ph name="ACTION_NAME" />.</translation>
 <translation id="4370975561335139969">Girdiğiniz e-posta ve şifre eşleşmiyor</translation>
 <translation id="437184764829821926">Gelişmiş yazı tipi ayarları</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3071,6 +3077,7 @@
 <translation id="5669267381087807207">Etkinleştiriliyor</translation>
 <translation id="5669691691057771421">Yeni PIN'i girin</translation>
 <translation id="5671641761787789573">Resimler engellendi</translation>
+<translation id="567643736130151854">Tüm cihazlarda yer işaretlerinizi, şifrelerinizi ve daha pek çok şeyi almak için oturum açın ve senkronizasyonu etkinleştirin</translation>
 <translation id="5677503058916217575">Sayfanın dili:</translation>
 <translation id="5677928146339483299">Engellendi</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> birimine okuma ve yazma erişimi izni verildi.</translation>
@@ -3942,6 +3949,7 @@
 <translation id="7007648447224463482">Tümünü yeni pencerede aç</translation>
 <translation id="701080569351381435">Kaynağı Görüntüle</translation>
 <translation id="7014174261166285193">Yükleme işlemi başarısız oldu.</translation>
+<translation id="7017004637493394352">Tekrar "Ok Google" deyin</translation>
 <translation id="7017219178341817193">Yeni sayfa ekle</translation>
 <translation id="7017354871202642555">Pencere ayarlandıktan sonra mod ayarlanamaz.</translation>
 <translation id="7017480957358237747">çeşitli web sitelerine izin verebilir veya bu siteleri yasaklayabilir,</translation>
@@ -4269,6 +4277,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Cihazınızdaki ana Konum ayarını kapatarak Konum hizmetini devre dışı bırakabilirsiniz. Ayrıca konum ayarlarından, konum hizmetleri için kablosuz ağ, mobil ağlar ve sensörlerin kullanımını da kapatabilirsiniz.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Bir şifre oluşturun -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">"Ok Google" deyin</translation>
 <translation id="7525067979554623046">Oluştur</translation>
 <translation id="7529411698175791732">İnternet bağlantınızı kontrol edin. Sorun devam ederse oturumu kapatıp tekrar açmayı deneyin.</translation>
 <translation id="7530016656428373557">Vat Olarak Boşalma Oranı</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">Son 4 hafta</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> sitesinde sese her zaman izin ver</translation>
 <translation id="8575286410928791436">Çıkmak için <ph name="KEY_EQUIVALENT" /> tuşunu basılı tutun.</translation>
+<translation id="8578421807258988326">{0,plural, =1{Bu pencereyi kapat.}other{Tüm gizli pencereleri kapat}}</translation>
 <translation id="8578639784464423491">99 harften uzun olamaz</translation>
 <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> öğe senkronize ediliyor...</translation>
 <translation id="857943718398505171">İzin verildi (önerilir)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">Duvar kağıdınızı değiştirme</translation>
 <translation id="9112987648460918699">Bul...</translation>
 <translation id="9114663181201435112">Kolayca oturum açın</translation>
-<translation id="9115487443206954631">Cast cihazlarını yönet</translation>
 <translation id="9115675100829699941">&amp;Yer İşaretleri</translation>
 <translation id="9116465289595958864">Son değiştirilme</translation>
 <translation id="9116799625073598554">Not alma uygulaması</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index a68176d..155787df 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1557,6 +1557,7 @@
 <translation id="3350117557200012647">Увімкніть режим створення пари</translation>
 <translation id="3353984535370177728">Виберіть папку для завантаження</translation>
 <translation id="3355936511340229503">Помилка з’єднання</translation>
+<translation id="3356580349448036450">Готово</translation>
 <translation id="3356797067524893661">Готово. Можете перейти в Hangouts Meet</translation>
 <translation id="3358935496594837302">Не вдається знайти телефон. Переконайтеся, що ваш телефон Android сумісний, увімкнений і розташований поблизу. &lt;a&gt;Докладніше&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Обмеження політики сертифіката</translation>
@@ -3947,6 +3948,7 @@
 <translation id="7007648447224463482">Відкривати в новому вікні</translation>
 <translation id="701080569351381435">Переглянути джерело</translation>
 <translation id="7014174261166285193">Помилка встановлення.</translation>
+<translation id="7017004637493394352">Ще раз скажіть "Ok Google"</translation>
 <translation id="7017219178341817193">Додати нову сторінку</translation>
 <translation id="7017354871202642555">Неможливо вибрати режим після налаштування вікна.</translation>
 <translation id="7017480957358237747">дозволяти чи забороняти певні веб-сайти;</translation>
@@ -4274,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Ви можете не визначати місцезнаходження, дезактивувавши на цьому пристрої функцію "Доступ до моїх геоданих". Вимкнути визначення місцезнаходження за допомогою Wi-Fi, мобільних мереж і датчиків можна також у налаштуваннях меню "Доступ до моїх геоданих".<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Створити пароль –</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Скажіть "Ok Google"</translation>
 <translation id="7525067979554623046">Створити</translation>
 <translation id="7529411698175791732">Перевірте з’єднання з Інтернетом. Якщо проблема не зникне, вийдіть з облікового запису та знову ввійдіть.</translation>
 <translation id="7530016656428373557">Швидкість розряджання акумулятора у ватах</translation>
@@ -5318,7 +5321,6 @@
 <translation id="9112748030372401671">Змінювати фоновий малюнок</translation>
 <translation id="9112987648460918699">Знайти...</translation>
 <translation id="9114663181201435112">Простий вхід</translation>
-<translation id="9115487443206954631">Керування пристроями Cast</translation>
 <translation id="9115675100829699941">&amp;Закладки</translation>
 <translation id="9116465289595958864">Востаннє змінені</translation>
 <translation id="9116799625073598554">Додаток для створення нотаток</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index bc55d72..372c7fcb 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">Tải hình ảnh</translation>
 <translation id="1029317248976101138">Thu phóng</translation>
 <translation id="1030706264415084469"><ph name="URL" /> muốn lưu trữ vĩnh viễn một lượng lớn dữ liệu trên thiết bị của bạn</translation>
+<translation id="1030889518049751641">Xem nhật ký hoạt động</translation>
 <translation id="1031362278801463162">Đang tải chế độ xem trước</translation>
 <translation id="103279545524624934">Giải phóng dung lượng ổ đĩa để khởi chạy ứng dụng Android.</translation>
 <translation id="1033780634303702874">Truy cập thiết bị tuần tự của bạn</translation>
@@ -163,6 +164,7 @@
     Bạn sẽ phải thiết lập lại hồ sơ của mình.<ph name="BR" />
     <ph name="BR" />
     Trên màn hình tiếp theo, vui lòng gửi phản hồi để giúp chúng tôi khắc phục sự cố.</translation>
+<translation id="1217668622537098248">Trở về hành động nhấp chuột trái sau khi thực hiện hành động khác</translation>
 <translation id="121783623783282548">Mật khẩu không khớp.</translation>
 <translation id="1218860753635451122">Bằng việc nhấp vào nút "Tôi đồng ý", bạn đồng ý với quy trình xử lý mô tả ở trên cho các dịch vụ này của Google.</translation>
 <translation id="122082903575839559">Thuật toán Chữ ký Chứng chỉ</translation>
@@ -1180,6 +1182,7 @@
 <translation id="2755628026949580719">Nếu khóa bảo mật của bạn chưa có trong danh sách, hãy nhấn vào nút của khóa trong ít nhất 5 giây.</translation>
 <translation id="275662540872599901">màn hình tắt</translation>
 <translation id="2761898608071930085">Sử dụng một tài khoản khác</translation>
+<translation id="276233135255363312">{0,plural, =1{Bạn đang mở một cửa sổ ẩn danh.}other{Bạn đang mở # cửa sổ ẩn danh.}}</translation>
 <translation id="2762441749940182211">Máy ảnh bị chặn</translation>
 <translation id="2765217105034171413">Nhỏ</translation>
 <translation id="2766006623206032690">Dán và tru&amp;y cập</translation>
@@ -1554,6 +1557,7 @@
 <translation id="3350117557200012647">Chuyển sang chế độ ghép nối</translation>
 <translation id="3353984535370177728">Chọn thư mục để tải lên</translation>
 <translation id="3355936511340229503">Lỗi kết nối</translation>
+<translation id="3356580349448036450">Hoàn tất</translation>
 <translation id="3356797067524893661">Bạn đã thiết lập xong và sẵn sàng tiếp tục với Hangouts Meet</translation>
 <translation id="3358935496594837302">Không thể tìm thấy điện thoại của bạn. Hãy đảm bảo rằng bạn đang sử dụng điện thoại Android tương thích được bật và ở trong tầm tay. &lt;a&gt;Tìm hiểu thêm&lt;/a&gt;</translation>
 <translation id="3359256513598016054">Giới hạn Chính sách của Chứng chỉ</translation>
@@ -2186,6 +2190,7 @@
 <translation id="4312866146174492540">Chặn (mặc định)</translation>
 <translation id="4316850752623536204">Trang web dành cho nhà phát triển</translation>
 <translation id="4320177379694898372">Không có kết nối Internet</translation>
+<translation id="4320948194796820126">Thêm dấu trang vào email của bạn</translation>
 <translation id="4322394346347055525">Đóng các Tab Khác</translation>
 <translation id="4324577459193912240">Tệp không hoàn chỉnh</translation>
 <translation id="4330387663455830245">Không bao giờ dịch <ph name="LANGUAGE" /></translation>
@@ -2206,6 +2211,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> đang chia sẻ một cửa sổ.</translation>
 <translation id="4364830672918311045">Hiển thị thông báo</translation>
 <translation id="4365673000813822030">Rất tiếc, Đồng bộ hóa đã ngừng hoạt động.</translation>
+<translation id="4366956553771076218"><ph name="ACTION_NAME" /> với <ph name="APP_NAME" />.</translation>
 <translation id="4370975561335139969">Email và mật khẩu bạn nhập không khớp</translation>
 <translation id="437184764829821926">Cài đặt phông chữ nâng cao</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3070,6 +3076,7 @@
 <translation id="5669267381087807207">Đang kích hoạt</translation>
 <translation id="5669691691057771421">Nhập mã PIN mới</translation>
 <translation id="5671641761787789573">Đã chặn hình ảnh</translation>
+<translation id="567643736130151854">Đăng nhập và bật tính năng đồng bộ hóa để sử dụng dấu trang, mật khẩu và các dữ liệu khác trên tất cả thiết bị</translation>
 <translation id="5677503058916217575">Ngôn ngữ trang:</translation>
 <translation id="5677928146339483299">Bị chặn</translation>
 <translation id="5678550637669481956">Quyền truy cập đọc và ghi vào <ph name="VOLUME_NAME" /> đã được cấp.</translation>
@@ -3941,6 +3948,7 @@
 <translation id="7007648447224463482">Mở tất cả trong cửa sổ mới</translation>
 <translation id="701080569351381435">Xem Nguồn</translation>
 <translation id="7014174261166285193">Cài đặt không thành công.</translation>
+<translation id="7017004637493394352">Nói "Ok Google" lần nữa</translation>
 <translation id="7017219178341817193">Thêm trang mới</translation>
 <translation id="7017354871202642555">Không thể đặt chế độ sau khi cửa sổ được đặt.</translation>
 <translation id="7017480957358237747">cho phép hoặc cấm các trang web nhất định,</translation>
@@ -4268,6 +4276,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Bạn có thể tắt Vị trí bằng cách tắt tùy chọn cài đặt Vị trí chính trên thiết bị. Ngoài ra, bạn cũng có thể tắt cài đặt sử dụng mạng Wi-Fi, mạng di động và các cảm biến vị trí trong phần cài đặt vị trí.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">Tạo mật khẩu -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">Nói “Ok Google”</translation>
 <translation id="7525067979554623046">Tạo</translation>
 <translation id="7529411698175791732">Kiểm tra kết nối Internet. Nếu sự cố vẫn tiếp diễn, hãy thử đăng xuất và đăng nhập lại.</translation>
 <translation id="7530016656428373557">Tốc độ phóng điện tính bằng Watt</translation>
@@ -4958,6 +4967,7 @@
 <translation id="8571213806525832805">4 tuần qua</translation>
 <translation id="8574990355410201600">Luôn cho phép phát âm thanh trên <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Giữ phím <ph name="KEY_EQUIVALENT" /> để thoát</translation>
+<translation id="8578421807258988326">{0,plural, =1{Đóng cửa sổ này}other{Đóng tất cả cửa sổ ẩn danh}}</translation>
 <translation id="8578639784464423491">Không được vượt quá 99 chữ cái</translation>
 <translation id="8579285237314169903">Đang đồng bộ hóa <ph name="NUMBER_OF_FILES" /> mục...</translation>
 <translation id="857943718398505171">Được phép (được đề xuất)</translation>
@@ -5311,7 +5321,6 @@
 <translation id="9112748030372401671">Thay đổi hình nền của bạn</translation>
 <translation id="9112987648460918699">Tìm...</translation>
 <translation id="9114663181201435112">Đăng nhập dễ dàng</translation>
-<translation id="9115487443206954631">Quản lý thiết bị Truyền</translation>
 <translation id="9115675100829699941">&amp;Dấu trang</translation>
 <translation id="9116465289595958864">Sửa đổi lần cuối</translation>
 <translation id="9116799625073598554">Ứng dụng ghi chú</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 3d36150..b2a97fd 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">加载图片</translation>
 <translation id="1029317248976101138">缩放</translation>
 <translation id="1030706264415084469"><ph name="URL" /> 想在您的设备上永久存储大量数据</translation>
+<translation id="1030889518049751641">查看活动日志</translation>
 <translation id="1031362278801463162">正在加载预览</translation>
 <translation id="103279545524624934">请释放磁盘空间以启动 Android 应用。</translation>
 <translation id="1033780634303702874">访问您的串行设备</translation>
@@ -163,6 +164,7 @@
     您必须重新设置个人资料。<ph name="BR" />
     <ph name="BR" />
     请在随即显示的屏幕上发送反馈,以协助我们解决此问题。</translation>
+<translation id="1217668622537098248">执行完其他操作后还原到左键点击</translation>
 <translation id="121783623783282548">密码不匹配。</translation>
 <translation id="1218860753635451122">点击“我同意”按钮,即表示您同意上述针对这些 Google 服务的处理方式。</translation>
 <translation id="122082903575839559">证书签名算法</translation>
@@ -1175,6 +1177,7 @@
 <translation id="2755628026949580719">如果您的安全密钥未被列出,请按住安全密钥上的按钮至少 5 秒钟。</translation>
 <translation id="275662540872599901">已关闭屏幕</translation>
 <translation id="2761898608071930085">使用另一帐号</translation>
+<translation id="276233135255363312">{0,plural, =1{您打开了 1 个无痕式窗口。}other{您打开了 # 个无痕式窗口。}}</translation>
 <translation id="2762441749940182211">已禁止使用摄像头</translation>
 <translation id="2765217105034171413">小</translation>
 <translation id="2766006623206032690">粘贴并转到(&amp;S)</translation>
@@ -1547,6 +1550,7 @@
 <translation id="3350117557200012647">进入配对模式</translation>
 <translation id="3353984535370177728">选择要上传的文件夹</translation>
 <translation id="3355936511340229503">连接出错</translation>
+<translation id="3356580349448036450">已完成</translation>
 <translation id="3356797067524893661">大功告成!您现在便可开始使用 Hangouts Meet 了</translation>
 <translation id="3358935496594837302">找不到您的手机。请确保您使用的是兼容的 Android 手机,而且该手机正处于开机状态且就在您身边。&lt;a&gt;了解详情&lt;/a&gt;</translation>
 <translation id="3359256513598016054">证书政策约束</translation>
@@ -2178,6 +2182,7 @@
 <translation id="4312866146174492540">屏蔽(默认)</translation>
 <translation id="4316850752623536204">开发者网站</translation>
 <translation id="4320177379694898372">未连接到互联网</translation>
+<translation id="4320948194796820126">为您的电子邮件添加书签</translation>
 <translation id="4322394346347055525">关闭其他标签页</translation>
 <translation id="4324577459193912240">文件下载未完成</translation>
 <translation id="4330387663455830245">一律不翻译<ph name="LANGUAGE" />内容</translation>
@@ -2198,6 +2203,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> 正在共享窗口。</translation>
 <translation id="4364830672918311045">显示通知</translation>
 <translation id="4365673000813822030">糟糕,同步已停止。</translation>
+<translation id="4366956553771076218">使用<ph name="APP_NAME" /><ph name="ACTION_NAME" />。</translation>
 <translation id="4370975561335139969">您输入的电子邮件地址和密码不匹配。</translation>
 <translation id="437184764829821926">高级字体设置</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3057,6 +3063,7 @@
 <translation id="5669267381087807207">正在激活</translation>
 <translation id="5669691691057771421">请输入新的 PIN 码</translation>
 <translation id="5671641761787789573">已拦截图片</translation>
+<translation id="567643736130151854">您只需登录帐号并开启同步功能,即可将您的书签和密码等信息同步到所有设备上</translation>
 <translation id="5677503058916217575">网页语言:</translation>
 <translation id="5677928146339483299">已屏蔽</translation>
 <translation id="5678550637669481956">已授予对 <ph name="VOLUME_NAME" />的读写权限。</translation>
@@ -3928,6 +3935,7 @@
 <translation id="7007648447224463482">在新窗口中打开所有网址</translation>
 <translation id="701080569351381435">显示源代码</translation>
 <translation id="7014174261166285193">安装失败。</translation>
+<translation id="7017004637493394352">再说一遍“Ok Google”</translation>
 <translation id="7017219178341817193">添加新网页</translation>
 <translation id="7017354871202642555">无法在创建窗口后设置模式。</translation>
 <translation id="7017480957358237747">允许或禁止访问某些网站;</translation>
@@ -4255,6 +4263,7 @@
     <ph name="BEGIN_PARAGRAPH3" />您可通过关闭设备上的主要“位置信息”设置来关闭位置信息服务。此外,您也可在“位置信息”设置中关闭使用 WLAN、移动网络和传感器来确定位置的功能。<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">设置密码 -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">说“Ok Google”</translation>
 <translation id="7525067979554623046">创建</translation>
 <translation id="7529411698175791732">请检查您的互联网连接。如果问题仍然存在,请尝试退出帐号并重新登录。</translation>
 <translation id="7530016656428373557">电池放电率(瓦)</translation>
@@ -4942,6 +4951,7 @@
 <translation id="8571213806525832805">近 4 周</translation>
 <translation id="8574990355410201600">始终允许 <ph name="HOST" /> 播放声音</translation>
 <translation id="8575286410928791436">按住 <ph name="KEY_EQUIVALENT" /> 键即可退出</translation>
+<translation id="8578421807258988326">{0,plural, =1{关闭这个窗口}other{关闭所有无痕式窗口}}</translation>
 <translation id="8578639784464423491">不能超过 99 个字母</translation>
 <translation id="8579285237314169903">正在同步 <ph name="NUMBER_OF_FILES" /> 个文件…</translation>
 <translation id="857943718398505171">已允许(推荐)</translation>
@@ -5295,7 +5305,6 @@
 <translation id="9112748030372401671">更换您的壁纸</translation>
 <translation id="9112987648460918699">查找...</translation>
 <translation id="9114663181201435112">轻松登录</translation>
-<translation id="9115487443206954631">管理投射设备</translation>
 <translation id="9115675100829699941">书签(&amp;B)</translation>
 <translation id="9116465289595958864">上次修改时间</translation>
 <translation id="9116799625073598554">记事应用</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 1d8c65e8..66af92c7 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -19,6 +19,7 @@
 <translation id="1026822031284433028">載入圖片</translation>
 <translation id="1029317248976101138">縮放</translation>
 <translation id="1030706264415084469"><ph name="URL" /> 要求在你的裝置上永久儲存大量資料</translation>
+<translation id="1030889518049751641">查看活動記錄</translation>
 <translation id="1031362278801463162">正在載入預覽畫面</translation>
 <translation id="103279545524624934">請釋出磁碟空間以啟動 Android 應用程式。</translation>
 <translation id="1033780634303702874">存取你的序列裝置</translation>
@@ -163,6 +164,7 @@
     您必須重新建立設定檔。<ph name="BR" />
     <ph name="BR" />
     請在下一個畫面中提供您的寶貴意見,協助我們修正這個問題。</translation>
+<translation id="1217668622537098248">完成動作後還原至先前的按左鍵動作</translation>
 <translation id="121783623783282548">密碼不相符。</translation>
 <translation id="1218860753635451122">點選 [我同意] 按鈕即表示您同意上述的 Google 服務處理程序。</translation>
 <translation id="122082903575839559">憑證簽章演算法</translation>
@@ -1179,6 +1181,7 @@
 <translation id="2755628026949580719">如果畫面上未列出你的安全金鑰,請按住金鑰上的按鈕至少 5 秒。</translation>
 <translation id="275662540872599901">螢幕已關閉</translation>
 <translation id="2761898608071930085">使用其他帳戶</translation>
+<translation id="276233135255363312">{0,plural, =1{你已開啟 1 個無痕式視窗。}other{你已開啟 # 個無痕式視窗。}}</translation>
 <translation id="2762441749940182211">無法使用攝影機</translation>
 <translation id="2765217105034171413">小</translation>
 <translation id="2766006623206032690">貼上及前往(&amp;S)</translation>
@@ -1553,6 +1556,7 @@
 <translation id="3350117557200012647">進入配對模式</translation>
 <translation id="3353984535370177728">選取要上傳的資料夾</translation>
 <translation id="3355936511340229503">連線錯誤</translation>
+<translation id="3356580349448036450">完成</translation>
 <translation id="3356797067524893661">設定程序已完成,現在可以開始使用 Hangouts Meet 了</translation>
 <translation id="3358935496594837302">找不到你的手機。請確定你使用的是相容的 Android 手機並已開機,且手機在適當距離範圍內。&lt;a&gt;瞭解詳情&lt;/a&gt;</translation>
 <translation id="3359256513598016054">憑證原則限制</translation>
@@ -2093,7 +2097,7 @@
 <translation id="4146026355784316281">一律使用系統檢視器開啟</translation>
 <translation id="4146785383423576110">重設與清理</translation>
 <translation id="4147897805161313378">Google 相簿</translation>
-<translation id="4147911968024186208">請再試一次。如果這個錯誤再次發生,請與你的支援代表聯絡。</translation>
+<translation id="4147911968024186208">請再試一次。如果這個錯誤再次發生,請與你的產品支援代表聯絡。</translation>
 <translation id="4150201353443180367">顯示設定</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 個分頁}other{# 個分頁}}</translation>
 <translation id="4154664944169082762">指紋</translation>
@@ -2184,6 +2188,7 @@
 <translation id="4312866146174492540">封鎖 (預設)</translation>
 <translation id="4316850752623536204">開發人員網站</translation>
 <translation id="4320177379694898372">沒有網際網路連線</translation>
+<translation id="4320948194796820126">為電子郵件服務加上書籤</translation>
 <translation id="4322394346347055525">關閉其他分頁</translation>
 <translation id="4324577459193912240">檔案未完成下載</translation>
 <translation id="4330387663455830245">一律不翻譯<ph name="LANGUAGE" />內容</translation>
@@ -2204,6 +2209,7 @@
 <translation id="4364567974334641491"><ph name="APP_NAME" /> 正在共用視窗。</translation>
 <translation id="4364830672918311045">顯示通知</translation>
 <translation id="4365673000813822030">糟糕,同步處理已停止運作。</translation>
+<translation id="4366956553771076218">使用「<ph name="APP_NAME" />」<ph name="ACTION_NAME" />。</translation>
 <translation id="4370975561335139969">您所輸入的電子郵件和密碼不相符</translation>
 <translation id="437184764829821926">進階字型設定</translation>
 <translation id="4372884569765913867">1x1</translation>
@@ -3068,6 +3074,7 @@
 <translation id="5669267381087807207">啟用中</translation>
 <translation id="5669691691057771421">輸入新的 PIN 碼</translation>
 <translation id="5671641761787789573">已封鎖圖片</translation>
+<translation id="567643736130151854">登入並開啟同步功能,讓書籤、密碼等資料在所有裝置上保持同步</translation>
 <translation id="5677503058916217575">網頁語言:</translation>
 <translation id="5677928146339483299">已封鎖</translation>
 <translation id="5678550637669481956">已授予 <ph name="VOLUME_NAME" /> 的讀取及寫入權限。</translation>
@@ -3258,7 +3265,7 @@
 <translation id="5946591249682680882">報表 ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation>
 <translation id="5949544233750246342">無法剖析檔案</translation>
 <translation id="5955282598396714173">你的密碼已過期。如要變更密碼,請先登出然後重新登入。</translation>
-<translation id="5955809630138889698">這個裝置可能只能使用線上示範模式。如需詳情,請與你的支援代表聯絡。</translation>
+<translation id="5955809630138889698">這個裝置可能只能使用線上示範模式。如需詳情,請與你的產品支援代表聯絡。</translation>
 <translation id="5956585768868398362">這是你想要的搜尋頁面嗎?</translation>
 <translation id="5957613098218939406">更多選項</translation>
 <translation id="5957987129450536192">輕觸靠近設定檔圖片的「隨選朗讀」圖示,然後選取你要聆聽的內容。</translation>
@@ -3939,6 +3946,7 @@
 <translation id="7007648447224463482">在新視窗中開啟所有書籤</translation>
 <translation id="701080569351381435">檢視原始碼</translation>
 <translation id="7014174261166285193">安裝失敗。</translation>
+<translation id="7017004637493394352">再說一次「Ok Google」</translation>
 <translation id="7017219178341817193">新增網頁</translation>
 <translation id="7017354871202642555">無法在視窗建立之後再設定模式。</translation>
 <translation id="7017480957358237747">允許/禁止特定網站;</translation>
@@ -4266,6 +4274,7 @@
     <ph name="BEGIN_PARAGRAPH3" />關閉裝置的主要位置資訊設定即可關閉定位功能。你也可以前往位置資訊設定,將使用 Wi‑Fi、行動網路和感應器的定位功能關閉。<ph name="END_PARAGRAPH3" /></translation>
 <translation id="7517786267097410259">建立密碼 -</translation>
 <translation id="7521387064766892559">JavaScript</translation>
+<translation id="7522255036471229694">說出「Ok Google」</translation>
 <translation id="7525067979554623046">建立</translation>
 <translation id="7529411698175791732">檢查你的網際網路連線。如果問題持續發生,請嘗試登出,然後再次登入。</translation>
 <translation id="7530016656428373557">放電速率 (瓦特)</translation>
@@ -4954,6 +4963,7 @@
 <translation id="8571213806525832805">過去 4 週</translation>
 <translation id="8574990355410201600">一律允許 <ph name="HOST" /> 播放聲音</translation>
 <translation id="8575286410928791436">按住 <ph name="KEY_EQUIVALENT" /> 鍵即可結束</translation>
+<translation id="8578421807258988326">{0,plural, =1{關閉這個視窗}other{關閉所有無痕式視窗}}</translation>
 <translation id="8578639784464423491">不可超過 99 個英文字母</translation>
 <translation id="8579285237314169903">正在同步處理 <ph name="NUMBER_OF_FILES" /> 個項目...</translation>
 <translation id="857943718398505171">已允許 (建議)</translation>
@@ -5307,7 +5317,6 @@
 <translation id="9112748030372401671">變更你的桌布</translation>
 <translation id="9112987648460918699">尋找...</translation>
 <translation id="9114663181201435112">輕鬆登入</translation>
-<translation id="9115487443206954631">管理投放裝置</translation>
 <translation id="9115675100829699941">書籤(&amp;B)</translation>
 <translation id="9116465289595958864">上次修改時間</translation>
 <translation id="9116799625073598554">筆記應用程式</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index c4b8aba..e752d51 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -88,10 +88,10 @@
 <translation id="3180085900771989961">మీ మేనేజర్ తప్పనిసరిగా మిమ్మల్ని Chrome నుండి తీసివేసి, తిరిగి జోడించాలి.</translation>
 <translation id="3251381707915721925"><ph name="NEW_PROFILE_NAME" /> వీక్షించగల వెబ్‌సైట్‌లను సెట్ చేయడానికి, మీరు <ph name="BEGIN_LINK_1" /><ph name="DISPLAY_LINK" /><ph name="END_LINK_1" />ని సందర్శించడం ద్వారా పరిమితులు మరియు సెట్టింగ్‌లను కాన్ఫిగర్ చేయవచ్చు. మీరు డిఫాల్ట్ సెట్టింగ్‌లను మార్చకపోతే, <ph name="NEW_PROFILE_NAME" /> వెబ్‌లో అన్నీ బ్రౌజ్ చేయగలరు.
 
-<ph name="NEW_PROFILE_NAME" />ని మీ ఖాతా ప్రాప్యత చేయనీయకుండా నిరోధించడానికి, మీరు Chromeని ఉపయోగించనప్పుడు మీ ప్రొపైల్‌ను లాక్ చేసి ఉంచేట్లు చూసుకోండి. దీన్ని చేయడానికి, బ్రౌజర్ ఎగువ కుడి మూలన ఉన్న మీ ప్రొఫైల్ పేరును క్లిక్ చేసి, ఆపై "నిష్క్రమించి, చైల్డ్ లాక్ చేయి" ఎంపికను ఎంచుకోండి.
+మీ ఖాతాను యాక్సెస్ చేయనీయకుండా <ph name="NEW_PROFILE_NAME" />ను నిరోధించడానికి, మీరు Chromeని ఉపయోగించనప్పుడు మీ ప్రొఫైల్‌ను లాక్ చేసి ఉంచేటట్లు చూసుకోండి. ఈ పని చేయడానికి, బ్రౌజర్ ఎగువ కుడి మూలన ఉన్న మీ ప్రొఫైల్ పేరును క్లిక్ చేసి, ఆపై "నిష్క్రమించి, చైల్డ్ లాక్ చేయి" ఎంపికను ఎంచుకోండి.
 <ph name="BEGIN_LINK_2" />మరింత తెలుసుకోండి<ph name="END_LINK_2" />
 
-దయచేసి తదుపరి సూచనల కోసం <ph name="ACCOUNT_EMAIL" />లో మీ ఇమెయిల్‌ను చూడండి.</translation>
+తర్వాతి సూచనల కోసం దయచేసి <ph name="ACCOUNT_EMAIL" />లో మీ ఇమెయిల్‌ను చూడండి.</translation>
 <translation id="3282568296779691940">Chromeకు సైన్ ఇన్ చేయండి</translation>
 <translation id="3360895254066713204">Chrome సహాయకారుడు</translation>
 <translation id="3395323229510056640">Chrome OSతో సహాయాన్ని పొందండి</translation>
diff --git a/chrome/browser/android/subresource_filter/test_subresource_filter_publisher.cc b/chrome/browser/android/subresource_filter/test_subresource_filter_publisher.cc
index 8ccf88f4..35f346e2b 100644
--- a/chrome/browser/android/subresource_filter/test_subresource_filter_publisher.cc
+++ b/chrome/browser/android/subresource_filter/test_subresource_filter_publisher.cc
@@ -51,7 +51,7 @@
 }
 
 void OnPublished(std::unique_ptr<base::ScopedTempDir> scoped_temp_dir,
-                 subresource_filter::ContentRulesetService* service,
+                 subresource_filter::RulesetService* service,
                  base::android::ScopedJavaGlobalRef<jobject> publisher) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   // Ensure the callback does not retain |publisher| by resetting it.
@@ -94,7 +94,7 @@
                       reinterpret_cast<const char*>(ruleset_contents.data()),
                       ruleset_size_as_int));
 
-  subresource_filter::ContentRulesetService* service =
+  subresource_filter::RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
   service->SetRulesetPublishedCallbackForTesting(base::BindRepeating(
       &OnPublished, base::Passed(&scoped_temp_dir), service, publisher));
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
index 9b52c66..1abc73b0 100644
--- a/chrome/browser/browser_process.h
+++ b/chrome/browser/browser_process.h
@@ -49,7 +49,7 @@
 }
 
 namespace subresource_filter {
-class ContentRulesetService;
+class RulesetService;
 }
 
 namespace variations {
@@ -244,7 +244,7 @@
 
   // Returns the service providing versioned storage for rules used by the Safe
   // Browsing subresource filter.
-  virtual subresource_filter::ContentRulesetService*
+  virtual subresource_filter::RulesetService*
   subresource_filter_ruleset_service() = 0;
 
   // Returns the service used to provide hints for what optimizations can be
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index a97daaa..3ed0d910 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1010,7 +1010,7 @@
   return NULL;
 }
 
-subresource_filter::ContentRulesetService*
+subresource_filter::RulesetService*
 BrowserProcessImpl::subresource_filter_ruleset_service() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (!created_subresource_filter_ruleset_service_)
@@ -1337,12 +1337,9 @@
       user_data_dir.Append(subresource_filter::kTopLevelDirectoryName)
           .Append(subresource_filter::kIndexedRulesetBaseDirectoryName);
   subresource_filter_ruleset_service_ =
-      std::make_unique<subresource_filter::ContentRulesetService>(
-          blocking_task_runner);
-  subresource_filter_ruleset_service_->SetAndInitializeRulesetService(
       std::make_unique<subresource_filter::RulesetService>(
-          local_state(), background_task_runner,
-          subresource_filter_ruleset_service_.get(), indexed_ruleset_base_dir));
+          local_state(), background_task_runner, indexed_ruleset_base_dir,
+          blocking_task_runner);
 }
 
 void BrowserProcessImpl::CreateOptimizationGuideService() {
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
index ab192b4..5d7e337 100644
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -178,8 +178,8 @@
   safe_browsing::SafeBrowsingService* safe_browsing_service() override;
   safe_browsing::ClientSideDetectionService* safe_browsing_detection_service()
       override;
-  subresource_filter::ContentRulesetService*
-  subresource_filter_ruleset_service() override;
+  subresource_filter::RulesetService* subresource_filter_ruleset_service()
+      override;
   optimization_guide::OptimizationGuideService* optimization_guide_service()
       override;
 
@@ -328,7 +328,7 @@
   scoped_refptr<safe_browsing::SafeBrowsingService> safe_browsing_service_;
 
   bool created_subresource_filter_ruleset_service_ = false;
-  std::unique_ptr<subresource_filter::ContentRulesetService>
+  std::unique_ptr<subresource_filter::RulesetService>
       subresource_filter_ruleset_service_;
 
   bool created_optimization_guide_service_ = false;
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 213f3d3e..9f8692b 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1702,6 +1702,16 @@
 #endif
 }
 
+bool ChromeContentBrowserClient::ShouldSubframesTryToReuseExistingProcess(
+    content::RenderFrameHost* main_frame) {
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+  return ChromeContentBrowserClientExtensionsPart::
+      ShouldSubframesTryToReuseExistingProcess(main_frame);
+#else
+  return true;
+#endif
+}
+
 void ChromeContentBrowserClient::SiteInstanceGotProcess(
     SiteInstance* site_instance) {
   CHECK(site_instance->HasProcess());
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index 628f66a..cc560e0 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -168,6 +168,8 @@
   bool ShouldTryToUseExistingProcessHost(
       content::BrowserContext* browser_context,
       const GURL& url) override;
+  bool ShouldSubframesTryToReuseExistingProcess(
+      content::RenderFrameHost* main_frame) override;
   void SiteInstanceGotProcess(content::SiteInstance* site_instance) override;
   void SiteInstanceDeleting(content::SiteInstance* site_instance) override;
   bool ShouldSwapBrowsingInstancesForNavigation(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 03a17d4..5f593046 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1069,8 +1069,6 @@
     "login/helper.h",
     "login/hwid_checker.cc",
     "login/hwid_checker.h",
-    "login/language_list.cc",
-    "login/language_list.h",
     "login/lock/screen_locker.cc",
     "login/lock/screen_locker.h",
     "login/lock/views_screen_locker.cc",
diff --git a/chrome/browser/chromeos/android_sms/connection_establisher_impl.cc b/chrome/browser/chromeos/android_sms/connection_establisher_impl.cc
index e1e576a..590ea0a 100644
--- a/chrome/browser/chromeos/android_sms/connection_establisher_impl.cc
+++ b/chrome/browser/chromeos/android_sms/connection_establisher_impl.cc
@@ -40,8 +40,8 @@
     ConnectionMode connection_mode) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
   if (is_connected_) {
-    PA_LOG(INFO) << "Connection already exists. Skipped sending start "
-                    "streaming message to service worker.";
+    PA_LOG(VERBOSE) << "Connection already exists. Skipped sending start "
+                       "streaming message to service worker.";
     return;
   }
 
@@ -58,7 +58,7 @@
   }
   msg.encoded_message = msg.owned_encoded_message;
 
-  PA_LOG(INFO) << "Dispatching start streaming message to service worker.";
+  PA_LOG(VERBOSE) << "Dispatching start streaming message to service worker.";
   is_connected_ = true;
   service_worker_context->StartServiceWorkerAndDispatchLongRunningMessage(
       GetAndroidMessagesURL(), std::move(msg),
@@ -70,8 +70,9 @@
   // When message dispatch result callback is called, it means that the service
   // worker resolved it's message handler promise and is not holding a
   // background connection.
-  PA_LOG(INFO) << "Service worker streaming message dispatch returned status: "
-               << status;
+  PA_LOG(VERBOSE)
+      << "Service worker streaming message dispatch returned status: "
+      << status;
   is_connected_ = false;
 }
 
diff --git a/chrome/browser/chromeos/android_sms/connection_manager.cc b/chrome/browser/chromeos/android_sms/connection_manager.cc
index 9ee5d2b..321b7eb 100644
--- a/chrome/browser/chromeos/android_sms/connection_manager.cc
+++ b/chrome/browser/chromeos/android_sms/connection_manager.cc
@@ -92,8 +92,8 @@
   if (is_android_sms_enabled_ == is_enabled)
     return;
 
-  PA_LOG(INFO) << "ConnectionManager::UpdateAndroidSmsFeatureState enabled: "
-               << is_enabled;
+  PA_LOG(VERBOSE) << "ConnectionManager::UpdateAndroidSmsFeatureState enabled: "
+                  << is_enabled;
   if (is_enabled) {
     connection_establisher_->EstablishConnection(
         service_worker_context_,
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
index 87be748..2c4aa46 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
@@ -422,8 +422,7 @@
   }
 }
 
-const std::vector<int32_t>* AccessibilityNodeInfoDataWrapper::GetChildren()
-    const {
+const std::vector<int32_t>* AccessibilityNodeInfoDataWrapper::GetChildren() {
   if (!node_ptr_->int_list_properties)
     return nullptr;
   auto it =
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h
index 387c6f8..c1bfda8 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h
@@ -32,7 +32,7 @@
   void PopulateAXRole(ui::AXNodeData* out_data) const override;
   void PopulateAXState(ui::AXNodeData* out_data) const override;
   void Serialize(ui::AXNodeData* out_data) const override;
-  const std::vector<int32_t>* GetChildren() const override;
+  const std::vector<int32_t>* GetChildren() override;
 
   mojom::AccessibilityNodeInfoData* node() { return node_ptr_; }
 
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.cc b/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.cc
index c30160e..6caf198f 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.cc
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h"
 #include "chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h"
+#include "components/exo/wm_helper.h"
+#include "ui/accessibility/platform/ax_android_constants.h"
 
 namespace arc {
 
@@ -12,6 +14,8 @@
     mojom::AccessibilityWindowInfoData* window)
     : tree_source_(tree_source), window_ptr_(window) {}
 
+AccessibilityWindowInfoDataWrapper::~AccessibilityWindowInfoDataWrapper() {}
+
 bool AccessibilityWindowInfoDataWrapper::IsNode() const {
   return false;
 }
@@ -35,46 +39,108 @@
 }
 
 bool AccessibilityWindowInfoDataWrapper::IsVisibleToUser() const {
-  // TODO(katie): Calculate this from properties.
   return true;
 }
 
 bool AccessibilityWindowInfoDataWrapper::IsFocused() const {
-  // TODO(katie): Calculate this from properties.
-  // Is "input focus" the same as focus?
-  // https://developer.android.com/reference/android/view/accessibility/AccessibilityWindowInfo.html#isFocused()
+  // In Talkback, Android windows themselves cannot be focused. Only individual
+  // nodes within these windows can have focus.
   return false;
 }
 
 bool AccessibilityWindowInfoDataWrapper::CanBeAccessibilityFocused() const {
-  // TODO(katie): Calculate this for windows.
-  // Can windows have a11y focus?
-  return true;
+  // Windows are too generic to be Accessibility focused in Chrome, although
+  // they can be Accessibility focused in Android by virtue of having
+  // accessibility focus on nodes within themselves.
+  return false;
 }
 
 void AccessibilityWindowInfoDataWrapper::PopulateAXRole(
     ui::AXNodeData* out_data) const {
-  // TODO(katie): Populate for windows using the window_type enum.
+  switch (window_ptr_->window_type) {
+    case mojom::AccessibilityWindowType::TYPE_ACCESSIBILITY_OVERLAY:
+      out_data->role = ax::mojom::Role::kWindow;
+      return;
+    case mojom::AccessibilityWindowType::TYPE_APPLICATION:
+      out_data->role = ax::mojom::Role::kApplication;
+      return;
+    case mojom::AccessibilityWindowType::TYPE_INPUT_METHOD:
+      out_data->role = ax::mojom::Role::kKeyboard;
+      return;
+    case mojom::AccessibilityWindowType::TYPE_SPLIT_SCREEN_DIVIDER:
+      // A system window used to divide the screen in split-screen mode. This
+      // type of window is present only in split-screen mode.
+      out_data->role = ax::mojom::Role::kSplitter;
+      return;
+    case mojom::AccessibilityWindowType::TYPE_SYSTEM:
+      out_data->role = ax::mojom::Role::kWindow;
+      return;
+  }
 }
 
 void AccessibilityWindowInfoDataWrapper::PopulateAXState(
     ui::AXNodeData* out_data) const {
-  // TODO(katie): Populate for windows.
+  // ARC++ window states are not reflected in ax::mojom::State, and for the
+  // most part aren't needed.
+  // Focusable in Android simply means a node within the window is focusable.
+  // Since the window itself is not focusable in Android, it doesn't make sense
+  // to include Focusable as an AXState.
 }
 
 void AccessibilityWindowInfoDataWrapper::Serialize(
     ui::AXNodeData* out_data) const {
-  // TODO(katie): Serialize for windows.
-  if (!tree_source_->GetRoot()) {
+  if (!tree_source_->GetRoot())
     return;
+
+  // String properties.
+  std::string title;
+  if (GetProperty(mojom::AccessibilityWindowStringProperty::TITLE, &title)) {
+    out_data->SetName(title);
+    out_data->SetNameFrom(ax::mojom::NameFrom::kTitle);
   }
+
+  // Bounds.
+  exo::WMHelper* wm_helper =
+      exo::WMHelper::HasInstance() ? exo::WMHelper::GetInstance() : nullptr;
+  if (tree_source_->GetRoot()->GetId() != -1 && wm_helper) {
+    aura::Window* active_window = tree_source_->is_notification()
+                                      ? nullptr
+                                      : wm_helper->GetActiveWindow();
+    const gfx::Rect& local_bounds = tree_source_->GetBounds(
+        tree_source_->GetFromId(GetId()), active_window);
+    out_data->location.SetRect(local_bounds.x(), local_bounds.y(),
+                               local_bounds.width(), local_bounds.height());
+  }
+
+  // Not all properties are currently used in Chrome Accessibility.
+
+  // Boolean properties:
+  // Someday we may want to have a IN_PICTURE_IN_PICTURE_MODE state or a
+  // WINDOW_ACTIVE state, or to map the FOCUSED (i.e. has input focus) or
+  // ACCESSIBILITY_FOCUSED (i.e. some node within this window has accessibility
+  // focus) to new types.
+
+  // Integer properties:
+  // We could reflect ARC++ window properties like ANCHOR_NODE_ID,
+  // and LAYER_ORDER in ax::mojom::IntAttributes.
 }
 
-const std::vector<int32_t>* AccessibilityWindowInfoDataWrapper::GetChildren()
-    const {
-  // TODO(katie): Combine the root_node_id with the int_list_properties
-  // of AccessibilityWindowIntListProperty::CHILD_WINDOW_IDS.
-  return nullptr;
+const std::vector<int32_t>* AccessibilityWindowInfoDataWrapper::GetChildren() {
+  if (children_.size() != 0)
+    return &children_;
+
+  // Populate the children vector by combining the child window IDs with the
+  // root node ID.
+  if (window_ptr_->int_list_properties) {
+    auto it = window_ptr_->int_list_properties->find(
+        mojom::AccessibilityWindowIntListProperty::CHILD_WINDOW_IDS);
+    if (it != window_ptr_->int_list_properties->end()) {
+      children_.insert(children_.begin(), it->second.begin(), it->second.end());
+    }
+  }
+  if (window_ptr_->root_node_id)
+    children_.push_back(window_ptr_->root_node_id);
+  return &children_;
 }
 
 bool AccessibilityWindowInfoDataWrapper::GetProperty(
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h b/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h
index 7145664..2dc2355 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ACCESSIBILITY_WINDOW_INFO_DATA_WRAPPER_H_
 #define CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ACCESSIBILITY_WINDOW_INFO_DATA_WRAPPER_H_
 
+#include <vector>
+
 #include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_info_data.h"
 #include "ui/accessibility/ax_node_data.h"
 
@@ -18,6 +20,7 @@
   explicit AccessibilityWindowInfoDataWrapper(
       AXTreeSourceArc* tree_source,
       mojom::AccessibilityWindowInfoData* window);
+  ~AccessibilityWindowInfoDataWrapper() override;
 
   // ArcAccessibilityInfoData overrides.
   bool IsNode() const override;
@@ -31,7 +34,7 @@
   void PopulateAXRole(ui::AXNodeData* out_data) const override;
   void PopulateAXState(ui::AXNodeData* out_data) const override;
   void Serialize(ui::AXNodeData* out_data) const override;
-  const std::vector<int32_t>* GetChildren() const override;
+  const std::vector<int32_t>* GetChildren() override;
 
  private:
   bool GetProperty(mojom::AccessibilityWindowBooleanProperty prop) const;
@@ -45,6 +48,7 @@
 
   AXTreeSourceArc* tree_source_ = nullptr;
   mojom::AccessibilityWindowInfoData* window_ptr_ = nullptr;
+  std::vector<int32_t> children_;
 
   DISALLOW_COPY_AND_ASSIGN(AccessibilityWindowInfoDataWrapper);
 };
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_info_data.h b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_info_data.h
index bb8bd48..168426d 100644
--- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_info_data.h
+++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_info_data.h
@@ -37,7 +37,7 @@
   virtual void PopulateAXRole(ui::AXNodeData* out_data) const = 0;
   virtual void PopulateAXState(ui::AXNodeData* out_data) const = 0;
   virtual void Serialize(ui::AXNodeData* out_data) const = 0;
-  virtual const std::vector<int32_t>* GetChildren() const = 0;
+  virtual const std::vector<int32_t>* GetChildren() = 0;
 };
 
 }  // namespace arc
diff --git a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
index 238b732..bfa6d91 100644
--- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
+++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
@@ -263,6 +263,8 @@
 
   int32_t id = info_data->GetId();
   out_data->id = id;
+  // TODO(katie): this may not hold true with Windows. it's probably the root
+  // window's root node which is a kRootWebArea.
   if (id == root_id_)
     out_data->role = ax::mojom::Role::kRootWebArea;
   else
diff --git a/chrome/browser/chromeos/cryptauth/chrome_cryptauth_service.cc b/chrome/browser/chromeos/cryptauth/chrome_cryptauth_service.cc
index 0063f60..227b28a 100644
--- a/chrome/browser/chromeos/cryptauth/chrome_cryptauth_service.cc
+++ b/chrome/browser/chromeos/cryptauth/chrome_cryptauth_service.cc
@@ -130,8 +130,8 @@
                             weak_ptr_factory_.GetWeakPtr()));
 
   if (!identity_manager_->HasPrimaryAccountWithRefreshToken()) {
-    PA_LOG(INFO) << "Primary account with refresh token not yet available; "
-                 << "waiting before starting CryptAuth managers.";
+    PA_LOG(VERBOSE) << "Primary account with refresh token not yet available; "
+                    << "waiting before starting CryptAuth managers.";
     identity_manager_->AddObserver(this);
     return;
   }
@@ -185,8 +185,8 @@
 
 void ChromeCryptAuthService::OnAuthenticationStateChanged() {
   if (!identity_manager_->HasPrimaryAccountWithRefreshToken()) {
-    PA_LOG(INFO) << "Primary account with refresh token not yet available; "
-                 << "waiting before starting CryptAuth managers.";
+    PA_LOG(VERBOSE) << "Primary account with refresh token not yet available; "
+                    << "waiting before starting CryptAuth managers.";
     return;
   }
 
@@ -213,7 +213,7 @@
   // the CryptAuth back-end when the registration would never actually be used.
   if (!multidevice_setup::AreAnyMultiDeviceFeaturesAllowed(
           profile_->GetPrefs())) {
-    PA_LOG(INFO) << "CryptAuth enrollment is disabled by enterprise policy.";
+    PA_LOG(VERBOSE) << "CryptAuth enrollment is disabled by enterprise policy.";
     return;
   }
 
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.cc
index abbc600..9a4e61f 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.cc
@@ -77,7 +77,7 @@
   wrapped_challenge.set_header_and_body(challenge_);
   wrapped_challenge.set_signature(signature_container.SerializeAsString());
 
-  PA_LOG(INFO) << "Finished wrapping challenge.";
+  PA_LOG(VERBOSE) << "Finished wrapping challenge.";
   callback_.Run(wrapped_challenge.SerializeAsString());
 }
 
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
index 43bd983..06fdf5a 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
@@ -82,20 +82,14 @@
 }
 
 class EasyUnlockService::BluetoothDetector
-    : public device::BluetoothAdapter::Observer,
-      public apps::AppLifetimeMonitor::Observer {
+    : public device::BluetoothAdapter::Observer {
  public:
   explicit BluetoothDetector(EasyUnlockService* service)
-      : service_(service), weak_ptr_factory_(this) {
-    apps::AppLifetimeMonitorFactory::GetForBrowserContext(service_->profile())
-        ->AddObserver(this);
-  }
+      : service_(service), weak_ptr_factory_(this) {}
 
   ~BluetoothDetector() override {
     if (adapter_.get())
       adapter_->RemoveObserver(this);
-    apps::AppLifetimeMonitorFactory::GetForBrowserContext(service_->profile())
-        ->RemoveObserver(this);
   }
 
   void Initialize() {
@@ -128,21 +122,6 @@
       TurnOffBluetoothDiscoverability();
   }
 
-  // apps::AppLifetimeMonitor::Observer:
-  void OnAppDeactivated(content::BrowserContext* context,
-                        const std::string& app_id) override {
-    // TODO(tengs): Refactor the lifetime management to EasyUnlockAppManager.
-    if (app_id == extension_misc::kEasyUnlockAppId)
-      TurnOffBluetoothDiscoverability();
-  }
-
-  void OnAppStop(content::BrowserContext* context,
-                 const std::string& app_id) override {
-    // TODO(tengs): Refactor the lifetime management to EasyUnlockAppManager.
-    if (app_id == extension_misc::kEasyUnlockAppId)
-      TurnOffBluetoothDiscoverability();
-  }
-
   void TurnOffBluetoothDiscoverability() {
     if (adapter_) {
       adapter_->SetDiscoverable(false, base::DoNothing(), base::DoNothing());
@@ -376,7 +355,7 @@
       GetType() == TYPE_REGULAR ? EasyUnlockAuthAttempt::TYPE_UNLOCK
                                 : EasyUnlockAuthAttempt::TYPE_SIGNIN;
   if (auth_attempt_) {
-    PA_LOG(INFO) << "Already attempting auth, skipping this request.";
+    PA_LOG(VERBOSE) << "Already attempting auth, skipping this request.";
     return;
   }
 
@@ -483,14 +462,6 @@
                  weak_ptr_factory_.GetWeakPtr(), account_id, paired_devices));
 }
 
-void EasyUnlockService::AddObserver(EasyUnlockServiceObserver* observer) {
-  observers_.AddObserver(observer);
-}
-
-void EasyUnlockService::RemoveObserver(EasyUnlockServiceObserver* observer) {
-  observers_.RemoveObserver(observer);
-}
-
 void EasyUnlockService::Shutdown() {
   if (shut_down_)
     return;
@@ -646,7 +617,7 @@
   }
 
   if (!proximity_auth_system_) {
-    PA_LOG(INFO) << "Creating ProximityAuthSystem.";
+    PA_LOG(VERBOSE) << "Creating ProximityAuthSystem.";
     proximity_auth_system_.reset(new proximity_auth::ProximityAuthSystem(
         GetType() == TYPE_SIGNIN
             ? proximity_auth::ProximityAuthSystem::SIGN_IN
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h
index 573254a..831aa1a 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h
@@ -12,7 +12,6 @@
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
 #include "build/build_config.h"
 #include "chrome/browser/chromeos/login/easy_unlock/chrome_proximity_auth_client.h"
 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.h"
@@ -51,8 +50,6 @@
 class SecureChannelClient;
 }  // namespace secure_channel
 
-class EasyUnlockServiceObserver;
-
 class EasyUnlockService : public KeyedService {
  public:
   enum Type { TYPE_REGULAR, TYPE_SIGNIN };
@@ -163,9 +160,6 @@
   // hardlock state if the two do not match.
   void CheckCryptohomeKeysAndMaybeHardlock();
 
-  void AddObserver(EasyUnlockServiceObserver* observer);
-  void RemoveObserver(EasyUnlockServiceObserver* observer);
-
   ChromeProximityAuthClient* proximity_auth_client() {
     return &proximity_auth_client_;
   }
@@ -287,8 +281,6 @@
 
   bool tpm_key_checked_;
 
-  base::ObserverList<EasyUnlockServiceObserver>::Unchecked observers_;
-
   base::WeakPtrFactory<EasyUnlockService> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(EasyUnlockService);
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
index 1c40b40..b1f36e8 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
@@ -149,8 +149,8 @@
       !device_sync_client_->is_ready()) {
     // OnEnrollmentFinished() or OnNewDevicesSynced() will call back on this
     // method once |device_sync_client_| is ready.
-    PA_LOG(INFO) << "DeviceSyncClient is not ready yet, delaying "
-                    "UseLoadedRemoteDevices().";
+    PA_LOG(VERBOSE) << "DeviceSyncClient is not ready yet, delaying "
+                       "UseLoadedRemoteDevices().";
     return;
   }
 
@@ -169,7 +169,7 @@
       !is_in_valid_legacy_host_state) {
     // OnFeatureStatesChanged() will call back on this method when feature state
     // changes.
-    PA_LOG(INFO) << "Smart Lock is disabled; aborting.";
+    PA_LOG(VERBOSE) << "Smart Lock is disabled; aborting.";
     SetProximityAuthDevices(GetAccountId(), cryptauth::RemoteDeviceRefList(),
                             base::nullopt /* local_device */);
     return;
@@ -209,7 +209,7 @@
   //   1. New devices were synced on the lock screen.
   //   2. The service was initialized while the login screen is still up.
   if (proximity_auth::ScreenlockBridge::Get()->IsLocked()) {
-    PA_LOG(INFO) << "Deferring device load until screen is unlocked.";
+    PA_LOG(VERBOSE) << "Deferring device load until screen is unlocked.";
     deferring_device_load_ = true;
     return;
   }
@@ -391,7 +391,7 @@
   std::string remote_devices_json;
   JSONStringValueSerializer serializer(&remote_devices_json);
   serializer.Serialize(devices);
-  PA_LOG(INFO) << "Setting RemoteDevices:\n  " << remote_devices_json;
+  PA_LOG(VERBOSE) << "Setting RemoteDevices:\n  " << remote_devices_json;
 
   DictionaryPrefUpdate pairing_update(profile()->GetPrefs(),
                                       prefs::kEasyUnlockPairing);
@@ -733,7 +733,7 @@
   // user is signing in we need to load the remotes. Otherwise, the
   // first time the user locks the screen the feature won't work.
   if (deferring_device_load_) {
-    PA_LOG(INFO) << "Loading deferred devices after screen unlock.";
+    PA_LOG(VERBOSE) << "Loading deferred devices after screen unlock.";
     deferring_device_load_ = false;
     LoadRemoteDevices();
   }
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc
index 0c27275..44f29a9c 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc
@@ -157,7 +157,7 @@
     beacon_seeds.push_back(beacon_seed);
   }
 
-  PA_LOG(INFO) << "Deserialized " << beacon_seeds.size() << " BeaconSeeds.";
+  PA_LOG(VERBOSE) << "Deserialized " << beacon_seeds.size() << " BeaconSeeds.";
   return beacon_seeds;
 }
 
@@ -198,8 +198,8 @@
                         &device_public_key_base64);
   for (const auto& device_data : it->second->devices) {
     if (device_data.public_key == device_public_key_base64) {
-      PA_LOG(INFO) << "Wrapping challenge for " << account_id.Serialize()
-                   << "...";
+      PA_LOG(VERBOSE) << "Wrapping challenge for " << account_id.Serialize()
+                      << "...";
       challenge_wrapper_.reset(new EasyUnlockChallengeWrapper(
           device_data.challenge, channel_binding_data, account_id,
           EasyUnlockTpmKeyManagerFactory::GetInstance()->Get(profile())));
@@ -409,7 +409,7 @@
   EasyUnlockScreenlockStateHandler::HardlockState hardlock_state;
   if (GetPersistedHardlockState(&hardlock_state) &&
       hardlock_state != EasyUnlockScreenlockStateHandler::NO_HARDLOCK) {
-    PA_LOG(INFO) << "Hardlock present, skipping remaining login flow.";
+    PA_LOG(VERBOSE) << "Hardlock present, skipping remaining login flow.";
     return;
   }
 
@@ -503,8 +503,8 @@
 
     std::vector<cryptauth::BeaconSeed> beacon_seeds;
     if (!device.serialized_beacon_seeds.empty()) {
-      PA_LOG(INFO) << "Deserializing BeaconSeeds: "
-                   << device.serialized_beacon_seeds;
+      PA_LOG(VERBOSE) << "Deserializing BeaconSeeds: "
+                      << device.serialized_beacon_seeds;
       beacon_seeds = DeserializeBeaconSeeds(device.serialized_beacon_seeds);
     } else {
       PA_LOG(WARNING) << "No BeaconSeeds were loaded.";
@@ -516,11 +516,11 @@
         0L /* last_update_time_millis */, software_features, beacon_seeds);
 
     remote_devices.push_back(remote_device);
-    PA_LOG(INFO) << "Loaded Remote Device:\n"
-                 << "  user id: " << remote_device.user_id << "\n"
-                 << "  device id: "
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        remote_device.GetDeviceId());
+    PA_LOG(VERBOSE) << "Loaded Remote Device:\n"
+                    << "  user id: " << remote_device.user_id << "\n"
+                    << "  device id: "
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           remote_device.GetDeviceId());
   }
 
   // If |chromeos::features::kMultiDeviceApi| is enabled, both a remote device
diff --git a/chrome/browser/chromeos/login/language_list.cc b/chrome/browser/chromeos/login/language_list.cc
deleted file mode 100644
index 90dc3082..0000000
--- a/chrome/browser/chromeos/login/language_list.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright (c) 2011 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/login/language_list.h"
-
-#include <stddef.h>
-
-#include "base/i18n/rtl.h"
-#include "base/strings/string_split.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace chromeos {
-
-LanguageList::LanguageList() {
-  // Enumerate the languages we know about.
-  const std::vector<std::string>& locale_codes =
-      l10n_util::GetAvailableLocales();
-  InitNativeNames(locale_codes);
-}
-
-LanguageList::~LanguageList() {}
-
-base::string16 LanguageList::GetLanguageNameAt(int index) const {
-  DCHECK_LT(index, languages_count());
-  LocaleDataMap::const_iterator locale_data =
-      native_names_.find(locale_names_[index]);
-  DCHECK(locale_data != native_names_.end());
-
-  // If the name is the same in the native language and local language,
-  // don't show it twice.
-  if (locale_data->second.native_name == locale_names_[index])
-    return locale_data->second.native_name;
-
-  // We must add directionality formatting to both the native name and the
-  // locale name in order to avoid text rendering problems such as misplaced
-  // parentheses or languages appearing in the wrong order.
-  base::string16 locale_name = locale_names_[index];
-  base::i18n::AdjustStringForLocaleDirection(&locale_name);
-
-  base::string16 native_name = locale_data->second.native_name;
-  base::i18n::AdjustStringForLocaleDirection(&native_name);
-
-  // We used to have a localizable template here, but none of translators
-  // changed the format. We also want to switch the order of locale_name
-  // and native_name without going back to translators.
-  std::string formatted_item;
-  base::SStringPrintf(&formatted_item, "%s - %s",
-                      base::UTF16ToUTF8(locale_name).c_str(),
-                      base::UTF16ToUTF8(native_name).c_str());
-  if (base::i18n::IsRTL())
-    // Somehow combo box (even with LAYOUTRTL flag) doesn't get this
-    // right so we add RTL BDO (U+202E) to set the direction
-    // explicitly.
-    formatted_item.insert(0, "\xE2\x80\xAE");  // U+202E = UTF-8 0xE280AE
-  return base::UTF8ToUTF16(formatted_item);
-}
-
-std::string LanguageList::GetLocaleFromIndex(int index) const {
-  DCHECK(static_cast<int>(locale_names_.size()) > index);
-  LocaleDataMap::const_iterator locale_data =
-      native_names_.find(locale_names_[index]);
-  DCHECK(locale_data != native_names_.end());
-  return locale_data->second.locale_code;
-}
-
-int LanguageList::GetIndexFromLocale(const std::string& locale) const {
-  for (size_t i = 0; i < locale_names_.size(); ++i) {
-    LocaleDataMap::const_iterator locale_data =
-        native_names_.find(locale_names_[i]);
-    DCHECK(locale_data != native_names_.end());
-    if (locale_data->second.locale_code == locale)
-      return static_cast<int>(i);
-  }
-  return -1;
-}
-
-void LanguageList::CopySpecifiedLanguagesUp(const std::string& locale_codes) {
-  DCHECK(!locale_names_.empty());
-  for (const std::string& code : base::SplitString(
-           locale_codes, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
-    const int locale_index = GetIndexFromLocale(code);
-    CHECK_NE(locale_index, -1);
-    locale_names_.insert(locale_names_.begin(), locale_names_[locale_index]);
-  }
-}
-
-void LanguageList::InitNativeNames(
-    const std::vector<std::string>& locale_codes) {
-  const std::string app_locale = g_browser_process->GetApplicationLocale();
-  for (size_t i = 0; i < locale_codes.size(); ++i) {
-    const char* locale_code = locale_codes[i].c_str();
-
-    // TODO(jungshik): Even though these strings are used for the UI,
-    // the old code does not add an RTL mark for RTL locales. Make sure
-    // that it's ok without that.
-    base::string16 name_in_current_ui =
-        l10n_util::GetDisplayNameForLocale(locale_code, app_locale, false);
-    base::string16 name_native =
-        l10n_util::GetDisplayNameForLocale(locale_code, locale_code, false);
-
-    locale_names_.push_back(name_in_current_ui);
-    native_names_[name_in_current_ui] =
-        LocaleData(name_native, locale_codes[i]);
-  }
-
-  // Sort using locale specific sorter.
-  l10n_util::SortStrings16(g_browser_process->GetApplicationLocale(),
-                           &locale_names_);
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/language_list.h b/chrome/browser/chromeos/login/language_list.h
deleted file mode 100644
index 6bf23ec..0000000
--- a/chrome/browser/chromeos/login/language_list.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2011 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_LOGIN_LANGUAGE_LIST_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_LANGUAGE_LIST_H_
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/strings/string16.h"
-
-namespace chromeos {
-
-// LanguageList is used to enumerate native names corresponding to the
-// language code (e.g. English (United States) for en-US).
-class LanguageList {
- public:
-  LanguageList();
-  ~LanguageList();
-
-  // Returns the number of locale names.
-  int languages_count() const { return static_cast<int>(locale_names_.size()); }
-
-  // Returns the language for the given |index|.
-  base::string16 GetLanguageNameAt(int index) const;
-
-  // Return the locale for the given |index|. E.g., may return pt-BR.
-  std::string GetLocaleFromIndex(int index) const;
-
-  // Returns the index for the given |locale|. Returns -1 if it's not found.
-  int GetIndexFromLocale(const std::string& locale) const;
-
-  // Duplicates specified languages at the beginning of the list for easier
-  // access.
-  void CopySpecifiedLanguagesUp(const std::string& locale_codes);
-
- private:
-  struct LocaleData {
-    LocaleData() {}
-    LocaleData(const base::string16& name, const std::string& code)
-        : native_name(name), locale_code(code) {}
-
-    base::string16 native_name;
-    std::string locale_code;  // E.g., en-us.
-  };
-
-  typedef std::map<base::string16, LocaleData> LocaleDataMap;
-
-  void InitNativeNames(const std::vector<std::string>& locale_codes);
-
-  // The names of all the locales in the current application locale.
-  std::vector<base::string16> locale_names_;
-
-  // A map of some extra data (LocaleData) keyed off the name of the locale.
-  LocaleDataMap native_names_;
-
-  DISALLOW_COPY_AND_ASSIGN(LanguageList);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_LANGUAGE_LIST_H_
diff --git a/chrome/browser/chromeos/login/screens/discover_screen.cc b/chrome/browser/chromeos/login/screens/discover_screen.cc
index bdacd9081..2c749be6c 100644
--- a/chrome/browser/chromeos/login/screens/discover_screen.cc
+++ b/chrome/browser/chromeos/login/screens/discover_screen.cc
@@ -5,8 +5,11 @@
 #include "chrome/browser/chromeos/login/screens/discover_screen.h"
 
 #include "base/logging.h"
+#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
 #include "chrome/browser/chromeos/login/screens/discover_screen_view.h"
+#include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/ui/ash/tablet_mode_client.h"
+#include "components/prefs/pref_service.h"
 
 namespace chromeos {
 
@@ -27,8 +30,11 @@
 }
 
 void DiscoverScreen::Show() {
+  PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   if (IsPublicSessionOrEphemeralLogin() ||
-      !TabletModeClient::Get()->tablet_mode_enabled()) {
+      !TabletModeClient::Get()->tablet_mode_enabled() ||
+      !chromeos::quick_unlock::IsPinEnabled(prefs) ||
+      chromeos::quick_unlock::IsPinDisabledByPolicy(prefs)) {
     Finish(ScreenExitCode::DISCOVER_FINISHED);
     return;
   }
diff --git a/chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.cc b/chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.cc
index 466b97c..9f9c94e 100644
--- a/chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.cc
+++ b/chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.cc
@@ -71,7 +71,7 @@
       extensions::util::GetInstalledPwaForUrl(
           profile_, chromeos::android_sms::GetAndroidMessagesURL());
   if (!android_sms_pwa) {
-    PA_LOG(INFO) << "No Messages app found. Installing it.";
+    PA_LOG(VERBOSE) << "No Messages app found. Installing it.";
     InstallAndroidSmsApp(true /* launch_on_install */);
     return;
   }
@@ -85,7 +85,7 @@
           profile_, chromeos::android_sms::GetAndroidMessagesURL());
   DCHECK(android_sms_pwa);
 
-  PA_LOG(INFO) << "Messages app Launching...";
+  PA_LOG(VERBOSE) << "Messages app Launching...";
   AppLaunchParams params(
       profile_, android_sms_pwa, extensions::LAUNCH_CONTAINER_WINDOW,
       WindowOpenDisposition::NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL);
@@ -106,7 +106,7 @@
         content_settings::ResourceIdentifier(),
         std::make_unique<base::Value>(ContentSetting::CONTENT_SETTING_ALLOW));
 
-    PA_LOG(INFO) << "Messages app installed! URL: " << app_url;
+    PA_LOG(VERBOSE) << "Messages app installed! URL: " << app_url;
     if (launch_on_install)
       LaunchAndroidSmsApp();
   } else {
diff --git a/chrome/browser/chromeos/multidevice_setup/android_sms_pairing_state_tracker_impl.cc b/chrome/browser/chromeos/multidevice_setup/android_sms_pairing_state_tracker_impl.cc
index 23333ec..1b5e5d1 100644
--- a/chrome/browser/chromeos/multidevice_setup/android_sms_pairing_state_tracker_impl.cc
+++ b/chrome/browser/chromeos/multidevice_setup/android_sms_pairing_state_tracker_impl.cc
@@ -58,7 +58,7 @@
   bool was_previously_paired = was_paired_on_last_update_;
   for (const auto& cookie : cookies) {
     if (cookie.Name() == kMessagesPairStateCookieName) {
-      PA_LOG(INFO) << "Cookie says Messages paired: " << cookie.Value();
+      PA_LOG(VERBOSE) << "Cookie says Messages paired: " << cookie.Value();
       was_paired_on_last_update_ = cookie.Value() == kPairedCookieValue;
       if (was_previously_paired != was_paired_on_last_update_)
         NotifyPairingStateChanged();
diff --git a/chrome/browser/chromeos/tether/tether_service.cc b/chrome/browser/chromeos/tether/tether_service.cc
index 8251a0a..77bab8b1 100644
--- a/chrome/browser/chromeos/tether/tether_service.cc
+++ b/chrome/browser/chromeos/tether/tether_service.cc
@@ -185,8 +185,9 @@
 
   UMA_HISTOGRAM_BOOLEAN("InstantTethering.UserPreference.OnStartup",
                         IsEnabledByPreference());
-  PA_LOG(INFO) << "TetherService has started. Initial user preference value: "
-               << IsEnabledByPreference();
+  PA_LOG(VERBOSE)
+      << "TetherService has started. Initial user preference value: "
+      << IsEnabledByPreference();
 
   if (base::FeatureList::IsEnabled(chromeos::features::kMultiDeviceApi)) {
     if (device_sync_client_->is_ready())
@@ -217,7 +218,7 @@
   if (tether_component_)
     return;
 
-  PA_LOG(INFO) << "Starting up TetherComponent.";
+  PA_LOG(VERBOSE) << "Starting up TetherComponent.";
   tether_component_ =
       chromeos::tether::TetherComponentImpl::Factory::NewInstance(
           cryptauth_service_, device_sync_client_, secure_channel_client_,
@@ -243,7 +244,7 @@
     return;
   }
 
-  PA_LOG(INFO) << "Shutting down TetherComponent.";
+  PA_LOG(VERBOSE) << "Shutting down TetherComponent.";
 
   chromeos::tether::TetherComponent::ShutdownReason shutdown_reason;
   switch (GetTetherFeatureState()) {
@@ -430,7 +431,7 @@
          chromeos::tether::TetherComponent::Status::SHUT_DOWN);
   tether_component_->RemoveObserver(this);
   tether_component_.reset();
-  PA_LOG(INFO) << "TetherComponent was shut down.";
+  PA_LOG(VERBOSE) << "TetherComponent was shut down.";
 
   // It is possible that the Tether TechnologyState was set to ENABLED while the
   // previous TetherComponent instance was shutting down. If that was the case,
@@ -820,8 +821,8 @@
 void TetherService::LogUserPreferenceChanged(bool is_now_enabled) {
   UMA_HISTOGRAM_BOOLEAN("InstantTethering.UserPreference.OnToggle",
                         is_now_enabled);
-  PA_LOG(INFO) << "Tether user preference changed. New value: "
-               << is_now_enabled;
+  PA_LOG(VERBOSE) << "Tether user preference changed. New value: "
+                  << is_now_enabled;
 }
 
 void TetherService::SetTestDoubles(
diff --git a/chrome/browser/component_updater/subresource_filter_component_installer.cc b/chrome/browser/component_updater/subresource_filter_component_installer.cc
index d053493c..cd1ffa3 100644
--- a/chrome/browser/component_updater/subresource_filter_component_installer.cc
+++ b/chrome/browser/component_updater/subresource_filter_component_installer.cc
@@ -82,11 +82,10 @@
       install_dir.Append(subresource_filter::kUnindexedRulesetDataFileName);
   ruleset_info.license_path =
       install_dir.Append(subresource_filter::kUnindexedRulesetLicenseFileName);
-  subresource_filter::ContentRulesetService* content_ruleset_service =
+  subresource_filter::RulesetService* ruleset_service =
       g_browser_process->subresource_filter_ruleset_service();
-  if (content_ruleset_service) {
-    content_ruleset_service->IndexAndStoreAndPublishRulesetIfNeeded(
-        ruleset_info);
+  if (ruleset_service) {
+    ruleset_service->IndexAndStoreAndPublishRulesetIfNeeded(ruleset_info);
   }
 }
 
diff --git a/chrome/browser/component_updater/subresource_filter_component_installer_unittest.cc b/chrome/browser/component_updater/subresource_filter_component_installer_unittest.cc
index 2d14ffd..fd1868f 100644
--- a/chrome/browser/component_updater/subresource_filter_component_installer_unittest.cc
+++ b/chrome/browser/component_updater/subresource_filter_component_installer_unittest.cc
@@ -37,14 +37,15 @@
 
 class TestRulesetService : public subresource_filter::RulesetService {
  public:
-  TestRulesetService(PrefService* local_state,
-                     scoped_refptr<base::SequencedTaskRunner> task_runner,
-                     subresource_filter::ContentRulesetService* content_service,
-                     const base::FilePath& base_dir)
+  TestRulesetService(
+      PrefService* local_state,
+      scoped_refptr<base::SequencedTaskRunner> task_runner,
+      const base::FilePath& base_dir,
+      scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
       : subresource_filter::RulesetService(local_state,
                                            task_runner,
-                                           content_service,
-                                           base_dir) {}
+                                           base_dir,
+                                           blocking_task_runner) {}
 
   ~TestRulesetService() override {}
 
@@ -105,18 +106,13 @@
     subresource_filter::IndexedRulesetVersion::RegisterPrefs(
         pref_service_.registry());
 
-    auto content_service =
-        std::make_unique<subresource_filter::ContentRulesetService>(
-            base::ThreadTaskRunnerHandle::Get());
     auto test_ruleset_service = std::make_unique<TestRulesetService>(
         &pref_service_, base::ThreadTaskRunnerHandle::Get(),
-        content_service.get(), ruleset_service_dir_.GetPath());
+        ruleset_service_dir_.GetPath(), base::ThreadTaskRunnerHandle::Get());
     test_ruleset_service_ = test_ruleset_service.get();
-    content_service->SetAndInitializeRulesetService(
-        std::move(test_ruleset_service));
 
     TestingBrowserProcess::GetGlobal()->SetRulesetService(
-        std::move(content_service));
+        std::move(test_ruleset_service));
     policy_ = std::make_unique<SubresourceFilterComponentInstallerPolicy>();
   }
 
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
index 1f47cbf..2aa1faf 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
@@ -14,6 +14,7 @@
 #include "base/callback_helpers.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
+#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/extensions/api/commands/command_service.h"
@@ -225,17 +226,17 @@
 
 // Creates and returns a SpecificSiteControls object for the given
 // |granted_permissions| and |withheld_permissions|.
-std::unique_ptr<developer::SpecificSiteControls> GetSpecificSiteControls(
-    const PermissionSet& runtime_granted_permissions,
+std::vector<developer::SiteControl> GetSpecificSiteControls(
+    const PermissionSet& granted_permissions,
     const PermissionSet& withheld_permissions) {
-  auto controls = std::make_unique<developer::SpecificSiteControls>();
-  constexpr bool kIncludeApiPermissions = false;
-  controls->has_all_hosts =
-      withheld_permissions.ShouldWarnAllHosts(kIncludeApiPermissions) ||
-      runtime_granted_permissions.ShouldWarnAllHosts(kIncludeApiPermissions);
+  std::vector<developer::SiteControl> controls;
 
+  // NOTE(devlin): This is similar, but not identical, to our host collapsing
+  // for permission warnings. The primary difference is that this will not
+  // collapse permissions for sites with separate TLDs; i.e., google.com and
+  // google.net will remain distinct entities in this list.
   auto get_distinct_hosts = [](const URLPatternSet& patterns) {
-    std::set<std::string> distinct_hosts;
+    std::vector<URLPattern> pathless_hosts;
     for (URLPattern pattern : patterns) {
       // We only allow addition/removal of full hosts (since from a
       // permissions point of view, path is irrelevant). We always make the
@@ -244,27 +245,59 @@
       // TODO(devlin): Investigate, and possibly change the optional
       // permissions API.
       pattern.SetPath("/*");
-      distinct_hosts.insert(pattern.GetAsString());
+      pathless_hosts.push_back(std::move(pattern));
     }
-    return distinct_hosts;
+
+    // Iterate over the list of hosts and add any that aren't entirely contained
+    // by another pattern. This is pretty inefficient, but the list of hosts
+    // should be reasonably small.
+    std::vector<const URLPattern*> distinct_hosts;
+    for (const URLPattern& host : pathless_hosts) {
+      // If the host is fully contained within the set, we don't add it again.
+      bool consumed_by_other = false;
+      for (const URLPattern* added_host : distinct_hosts) {
+        if (added_host->Contains(host)) {
+          consumed_by_other = true;
+          break;
+        }
+      }
+      if (consumed_by_other)
+        continue;
+
+      // Otherwise, add the host. This might mean we get to prune some hosts
+      // from |distinct_hosts|.
+      base::EraseIf(distinct_hosts, [host](const URLPattern* other_host) {
+        return host.Contains(*other_host);
+      });
+
+      distinct_hosts.push_back(&host);
+    }
+
+    std::vector<std::string> distinct_host_strings;
+    distinct_host_strings.reserve(distinct_hosts.size());
+    for (const URLPattern* host : distinct_hosts)
+      distinct_host_strings.push_back(host->GetAsString());
+
+    return distinct_host_strings;
   };
 
-  std::set<std::string> distinct_granted =
-      get_distinct_hosts(runtime_granted_permissions.effective_hosts());
-  std::set<std::string> distinct_withheld =
+  std::vector<std::string> distinct_granted =
+      get_distinct_hosts(granted_permissions.effective_hosts());
+  std::vector<std::string> distinct_withheld =
       get_distinct_hosts(withheld_permissions.effective_hosts());
-  controls->hosts.reserve(distinct_granted.size() + distinct_withheld.size());
+  controls.reserve(distinct_granted.size() + distinct_withheld.size());
+
   for (auto& host : distinct_granted) {
     developer::SiteControl host_control;
     host_control.host = std::move(host);
     host_control.granted = true;
-    controls->hosts.push_back(std::move(host_control));
+    controls.push_back(std::move(host_control));
   }
   for (auto& host : distinct_withheld) {
     developer::SiteControl host_control;
     host_control.host = std::move(host);
     host_control.granted = false;
-    controls->hosts.push_back(std::move(host_control));
+    controls.push_back(std::move(host_control));
   }
 
   return controls;
@@ -316,27 +349,40 @@
                                             extension.GetType()));
   permissions->simple_permissions = get_permission_messages(api_messages);
 
+  auto runtime_host_permissions =
+      std::make_unique<developer::RuntimeHostPermissions>();
+
+  ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(browser_context);
+  // "Effective" granted permissions are stored in different prefs, based on
+  // whether host permissions are withheld.
+  // TODO(devlin): Create a common helper method to retrieve granted prefs based
+  // on whether host permissions are withheld?
+  std::unique_ptr<const PermissionSet> granted_permissions;
   // Add the host access data, including the mode and any runtime-granted
   // hosts.
   if (!permissions_modifier.HasWithheldHostPermissions()) {
-    permissions->host_access = developer::HOST_ACCESS_ON_ALL_SITES;
+    granted_permissions =
+        extension_prefs->GetGrantedPermissions(extension.id());
+    runtime_host_permissions->host_access = developer::HOST_ACCESS_ON_ALL_SITES;
   } else {
-    ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(browser_context);
-    std::unique_ptr<const PermissionSet> runtime_granted_permissions =
+    granted_permissions =
         extension_prefs->GetRuntimeGrantedPermissions(extension.id());
-    if (runtime_granted_permissions->effective_hosts().is_empty()) {
-      // TODO(devlin): This isn't quite right - it's possible the user just
-      // selected "on specific sites" from the dropdown, and hasn't yet added
-      // any sites. We'll need to handle this.
-      // https://crbug.com/844128.
-      permissions->host_access = developer::HOST_ACCESS_ON_CLICK;
-    } else {
-      permissions->host_access = developer::HOST_ACCESS_ON_SPECIFIC_SITES;
-      permissions->specific_site_controls = GetSpecificSiteControls(
-          *runtime_granted_permissions,
-          extension.permissions_data()->withheld_permissions());
-    }
+    runtime_host_permissions->host_access =
+        granted_permissions->effective_hosts().is_empty()
+            ? developer::HOST_ACCESS_ON_CLICK
+            : developer::HOST_ACCESS_ON_SPECIFIC_SITES;
   }
+
+  runtime_host_permissions->hosts = GetSpecificSiteControls(
+      *granted_permissions,
+      extension.permissions_data()->withheld_permissions());
+  constexpr bool kIncludeApiPermissions = false;
+  runtime_host_permissions->has_all_hosts =
+      extension.permissions_data()->withheld_permissions().ShouldWarnAllHosts(
+          kIncludeApiPermissions) ||
+      granted_permissions->ShouldWarnAllHosts(kIncludeApiPermissions);
+
+  permissions->runtime_host_permissions = std::move(runtime_host_permissions);
 }
 
 }  // namespace
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
index 12a9a3e..a49331ea3 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
@@ -162,7 +162,10 @@
             .Build();
 
     ExtensionRegistry::Get(profile())->AddEnabled(extension);
-    PermissionsUpdater(profile()).InitializePermissions(extension.get());
+    PermissionsUpdater updater(profile());
+    updater.InitializePermissions(extension.get());
+    updater.GrantActivePermissions(extension.get());
+
     return extension;
   }
 
@@ -230,6 +233,10 @@
   // Enable error console for testing.
   FeatureSwitch::ScopedOverride error_console_override(
       FeatureSwitch::error_console(), true);
+  // Disable runtime host permissions - they are tested extensively below.
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(
+      extensions_features::kRuntimeHostPermissions);
   profile()->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true);
 
   const char kName[] = "extension name";
@@ -311,8 +318,7 @@
     }
     ++i;
   }
-  EXPECT_EQ(developer::HOST_ACCESS_NONE, info->permissions.host_access);
-  EXPECT_FALSE(info->permissions.specific_site_controls);
+  EXPECT_FALSE(info->permissions.runtime_host_permissions);
 
   ASSERT_EQ(2u, info->runtime_errors.size());
   const api::developer_private::RuntimeError& runtime_error =
@@ -426,8 +432,13 @@
       GenerateExtensionInfo(all_urls_extension->id());
 
   // The extension should be set to run on all sites.
-  EXPECT_EQ(developer::HOST_ACCESS_ON_ALL_SITES, info->permissions.host_access);
-  EXPECT_FALSE(info->permissions.specific_site_controls);
+  ASSERT_TRUE(info->permissions.runtime_host_permissions);
+  const developer::RuntimeHostPermissions* runtime_hosts =
+      info->permissions.runtime_host_permissions.get();
+  EXPECT_EQ(developer::HOST_ACCESS_ON_ALL_SITES, runtime_hosts->host_access);
+  EXPECT_EQ(R"([{"granted":true,"host":"*://*/*"}])",
+            SiteControlsToString(runtime_hosts->hosts));
+  EXPECT_TRUE(runtime_hosts->has_all_hosts);
   // With runtime host permissions, no host permissions are added to
   // |simple_permissions|.
   EXPECT_THAT(info->permissions.simple_permissions, testing::IsEmpty());
@@ -438,22 +449,25 @@
                                                     all_urls_extension);
   permissions_modifier.SetWithholdHostPermissions(true);
   info = GenerateExtensionInfo(all_urls_extension->id());
-  EXPECT_EQ(developer::HOST_ACCESS_ON_CLICK, info->permissions.host_access);
-  EXPECT_FALSE(info->permissions.specific_site_controls);
+  runtime_hosts = info->permissions.runtime_host_permissions.get();
+  EXPECT_EQ(developer::HOST_ACCESS_ON_CLICK, runtime_hosts->host_access);
+  EXPECT_EQ(R"([{"granted":false,"host":"*://*/*"}])",
+            SiteControlsToString(runtime_hosts->hosts));
+  EXPECT_TRUE(runtime_hosts->has_all_hosts);
   EXPECT_THAT(info->permissions.simple_permissions, testing::IsEmpty());
 
   // Granting a host permission should set the extension to run on specific
   // sites, and those sites should be in the specific_site_controls.hosts set.
   permissions_modifier.GrantHostPermission(GURL("https://example.com"));
   info = GenerateExtensionInfo(all_urls_extension->id());
+  runtime_hosts = info->permissions.runtime_host_permissions.get();
   EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
-            info->permissions.host_access);
-  ASSERT_TRUE(info->permissions.specific_site_controls);
+            runtime_hosts->host_access);
   EXPECT_EQ(
       R"([{"granted":true,"host":"https://example.com/*"},)"
       R"({"granted":false,"host":"*://*/*"}])",
-      SiteControlsToString(info->permissions.specific_site_controls->hosts));
-  EXPECT_TRUE(info->permissions.specific_site_controls->has_all_hosts);
+      SiteControlsToString(runtime_hosts->hosts));
+  EXPECT_TRUE(runtime_hosts->has_all_hosts);
   EXPECT_THAT(info->permissions.simple_permissions, testing::IsEmpty());
 
   // An extension that doesn't request any host permissions should not have
@@ -461,11 +475,14 @@
   scoped_refptr<const Extension> no_urls_extension =
       CreateExtension("no urls", ListBuilder().Build(), Manifest::INTERNAL);
   info = GenerateExtensionInfo(no_urls_extension->id());
-  EXPECT_EQ(developer::HOST_ACCESS_NONE, info->permissions.host_access);
-  EXPECT_FALSE(info->permissions.specific_site_controls);
+  EXPECT_FALSE(info->permissions.runtime_host_permissions);
 }
 
 TEST_F(ExtensionInfoGeneratorUnitTest, RuntimeHostPermissionsWithoutFeature) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(
+      extensions_features::kRuntimeHostPermissions);
+
   // Without the runtime host permissions feature enabled, the runtime host
   // permissions entry should always be empty.
   scoped_refptr<const Extension> all_urls_extension = CreateExtension(
@@ -473,8 +490,7 @@
       Manifest::INTERNAL);
   std::unique_ptr<developer::ExtensionInfo> info =
       GenerateExtensionInfo(all_urls_extension->id());
-  EXPECT_EQ(developer::HOST_ACCESS_NONE, info->permissions.host_access);
-  EXPECT_FALSE(info->permissions.specific_site_controls);
+  EXPECT_FALSE(info->permissions.runtime_host_permissions);
   ASSERT_EQ(1u, info->permissions.simple_permissions.size());
   EXPECT_EQ("Read and change all your data on the websites you visit",
             info->permissions.simple_permissions[0].message);
@@ -518,14 +534,16 @@
   // The generated info should use the entirety of the granted permission,
   // which is *://chromium.org/*.
   info = GenerateExtensionInfo(extension->id());
+  ASSERT_TRUE(info->permissions.runtime_host_permissions);
+  const developer::RuntimeHostPermissions* runtime_hosts =
+      info->permissions.runtime_host_permissions.get();
   EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
-            info->permissions.host_access);
-  ASSERT_TRUE(info->permissions.specific_site_controls);
+            runtime_hosts->host_access);
   EXPECT_EQ(
       R"([{"granted":true,"host":"*://chromium.org/*"},)"
       R"({"granted":false,"host":"http://*/*"}])",
-      SiteControlsToString(info->permissions.specific_site_controls->hosts));
-  EXPECT_TRUE(info->permissions.specific_site_controls->has_all_hosts);
+      SiteControlsToString(runtime_hosts->hosts));
+  EXPECT_TRUE(runtime_hosts->has_all_hosts);
 }
 
 // Tests that specific_site_controls is correctly populated when the extension
@@ -560,14 +578,166 @@
   // The generated info should use the entirety of the granted permission,
   // which is *://chromium.org/*.
   info = GenerateExtensionInfo(extension->id());
+  ASSERT_TRUE(info->permissions.runtime_host_permissions);
+  const developer::RuntimeHostPermissions* runtime_hosts =
+      info->permissions.runtime_host_permissions.get();
   EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
-            info->permissions.host_access);
-  ASSERT_TRUE(info->permissions.specific_site_controls);
+            runtime_hosts->host_access);
   EXPECT_EQ(
       R"([{"granted":true,"host":"https://chromium.org/*"},)"
       R"({"granted":false,"host":"https://example.com/*"}])",
-      SiteControlsToString(info->permissions.specific_site_controls->hosts));
-  EXPECT_FALSE(info->permissions.specific_site_controls->has_all_hosts);
+      SiteControlsToString(runtime_hosts->hosts));
+  EXPECT_FALSE(runtime_hosts->has_all_hosts);
+}
+
+// Tests the population of withheld runtime hosts when they overlap with granted
+// patterns.
+TEST_F(ExtensionInfoGeneratorUnitTest, WithheldUrlsOverlapping) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      extensions_features::kRuntimeHostPermissions);
+
+  scoped_refptr<const Extension> extension =
+      CreateExtension("extension",
+                      ListBuilder()
+                          .Append("*://example.com/*")
+                          .Append("https://chromium.org/*")
+                          .Build(),
+                      Manifest::INTERNAL);
+  ScriptingPermissionsModifier modifier(profile(), extension);
+  modifier.SetWithholdHostPermissions(true);
+
+  {
+    std::unique_ptr<developer::ExtensionInfo> info =
+        GenerateExtensionInfo(extension->id());
+    ASSERT_TRUE(info->permissions.runtime_host_permissions);
+    // Initially, no hosts are granted.
+    EXPECT_EQ(
+        R"([{"granted":false,"host":"*://example.com/*"},)"
+        R"({"granted":false,"host":"https://chromium.org/*"}])",
+        SiteControlsToString(
+            info->permissions.runtime_host_permissions->hosts));
+    EXPECT_FALSE(info->permissions.runtime_host_permissions->has_all_hosts);
+    EXPECT_EQ(developer::HOST_ACCESS_ON_CLICK,
+              info->permissions.runtime_host_permissions->host_access);
+  }
+
+  // Grant http://example.com, which is a subset of the requested host pattern
+  // (*://example.com).
+  modifier.GrantHostPermission(GURL("http://example.com/"));
+  {
+    std::unique_ptr<developer::ExtensionInfo> info =
+        GenerateExtensionInfo(extension->id());
+    ASSERT_TRUE(info->permissions.runtime_host_permissions);
+    // We should display that http://example.com is granted, but *://example.com
+    // is still requested. This is technically correct.
+    // TODO(devlin): This is an edge case, so it's okay for it to be a little
+    // rough (as long as it's not incorrect), but it would be nice to polish it
+    // out. Ideally, for extensions requesting specific hosts, we'd only allow
+    // granting/revoking specific patterns (e.g., all example.com sites).
+    EXPECT_EQ(
+        R"([{"granted":true,"host":"http://example.com/*"},)"
+        R"({"granted":false,"host":"*://example.com/*"},)"
+        R"({"granted":false,"host":"https://chromium.org/*"}])",
+        SiteControlsToString(
+            info->permissions.runtime_host_permissions->hosts));
+    EXPECT_FALSE(info->permissions.runtime_host_permissions->has_all_hosts);
+    EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
+              info->permissions.runtime_host_permissions->host_access);
+  }
+
+  // Grant the requested pattern ("*://example.com/*").
+  {
+    URLPattern example_com(Extension::kValidHostPermissionSchemes,
+                           "*://example.com/*");
+    PermissionSet example_com_set(APIPermissionSet(), ManifestPermissionSet(),
+                                  URLPatternSet({example_com}),
+                                  URLPatternSet({example_com}));
+    PermissionsUpdater(profile()).GrantRuntimePermissions(*extension,
+                                                          example_com_set);
+  }
+
+  {
+    std::unique_ptr<developer::ExtensionInfo> info =
+        GenerateExtensionInfo(extension->id());
+    ASSERT_TRUE(info->permissions.runtime_host_permissions);
+    // The http://example.com/* pattern should be omitted, since it's consumed
+    // by the *://example.com/* pattern.
+    EXPECT_EQ(
+        R"([{"granted":true,"host":"*://example.com/*"},)"
+        R"({"granted":false,"host":"https://chromium.org/*"}])",
+        SiteControlsToString(
+            info->permissions.runtime_host_permissions->hosts));
+    EXPECT_FALSE(info->permissions.runtime_host_permissions->has_all_hosts);
+    EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
+              info->permissions.runtime_host_permissions->host_access);
+  }
+
+  // Grant permission beyond what was requested (*://*.example.com, when
+  // subdomains weren't in the extension manifest).
+  {
+    URLPattern example_com(Extension::kValidHostPermissionSchemes,
+                           "*://*.example.com/*");
+    PermissionSet example_com_set(APIPermissionSet(), ManifestPermissionSet(),
+                                  URLPatternSet({example_com}),
+                                  URLPatternSet({example_com}));
+    PermissionsUpdater(profile()).GrantRuntimePermissions(*extension,
+                                                          example_com_set);
+  }
+
+  {
+    std::unique_ptr<developer::ExtensionInfo> info =
+        GenerateExtensionInfo(extension->id());
+    ASSERT_TRUE(info->permissions.runtime_host_permissions);
+    // The full granted pattern should be visible.
+    EXPECT_EQ(
+        R"([{"granted":true,"host":"*://*.example.com/*"},)"
+        R"({"granted":false,"host":"https://chromium.org/*"}])",
+        SiteControlsToString(
+            info->permissions.runtime_host_permissions->hosts));
+    EXPECT_FALSE(info->permissions.runtime_host_permissions->has_all_hosts);
+    EXPECT_EQ(developer::HOST_ACCESS_ON_SPECIFIC_SITES,
+              info->permissions.runtime_host_permissions->host_access);
+  }
+}
+
+// Tests the population of withheld runtime hosts when they overlap with granted
+// patterns.
+TEST_F(ExtensionInfoGeneratorUnitTest,
+       WithheldUrlsOverlappingWithContentScript) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      extensions_features::kRuntimeHostPermissions);
+
+  scoped_refptr<const Extension> extension =
+      ExtensionBuilder("extension")
+          .AddPermissions({"*://example.com/*", "*://chromium.org/*"})
+          .AddContentScript("script.js", {"*://example.com/foo"})
+          .Build();
+  {
+    ExtensionRegistry::Get(profile())->AddEnabled(extension);
+    PermissionsUpdater updater(profile());
+    updater.InitializePermissions(extension.get());
+    updater.GrantActivePermissions(extension.get());
+  }
+
+  ScriptingPermissionsModifier modifier(profile(), extension);
+  modifier.SetWithholdHostPermissions(true);
+
+  {
+    std::unique_ptr<developer::ExtensionInfo> info =
+        GenerateExtensionInfo(extension->id());
+    ASSERT_TRUE(info->permissions.runtime_host_permissions);
+    // Initially, no hosts are granted.
+    EXPECT_EQ(
+        R"([{"granted":false,"host":"*://chromium.org/*"},)"
+        R"({"granted":false,"host":"*://example.com/*"}])",
+        SiteControlsToString(
+            info->permissions.runtime_host_permissions->hosts));
+    EXPECT_FALSE(info->permissions.runtime_host_permissions->has_all_hosts);
+    EXPECT_EQ(developer::HOST_ACCESS_ON_CLICK,
+              info->permissions.runtime_host_permissions->host_access);
+  }
 }
 
 // Test that file:// access checkbox does not show up when the user can't
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
index 2e4dfce..f00deb7 100644
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
@@ -38,6 +38,7 @@
 #include "content/public/browser/browser_url_handler.h"
 #include "content/public/browser/child_process_security_policy.h"
 #include "content/public/browser/page_navigator.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/resource_dispatcher_host.h"
@@ -606,6 +607,32 @@
 
 // static
 bool ChromeContentBrowserClientExtensionsPart::
+    ShouldSubframesTryToReuseExistingProcess(
+        content::RenderFrameHost* main_frame) {
+  DCHECK(!main_frame->GetParent());
+
+  // Most out-of-process iframes aggressively look for a random same-site
+  // process to reuse if possible, to keep the process count low. Skip this for
+  // web iframes inside extensions (not including hosted apps), since the
+  // workload here tends to be different and we want to avoid slowing down
+  // normal web pages with misbehaving extension-related content.
+  //
+  // Note that this does not prevent process sharing with tabs when over the
+  // process limit, and OOPIFs from tabs (which will aggressively look for
+  // existing processes) may still join the process of an extension's web
+  // iframe.  This mainly reduces the likelihood of problems with main frames
+  // and makes it more likely that the subframe process will be shown near the
+  // extension in Chrome's task manager for blame purposes. See
+  // https://crbug.com/899418.
+  const Extension* extension =
+      ExtensionRegistry::Get(main_frame->GetSiteInstance()->GetBrowserContext())
+          ->enabled_extensions()
+          .GetExtensionOrAppByURL(main_frame->GetSiteInstance()->GetSiteURL());
+  return !extension || !extension->is_extension();
+}
+
+// static
+bool ChromeContentBrowserClientExtensionsPart::
     ShouldSwapBrowsingInstancesForNavigation(SiteInstance* site_instance,
                                              const GURL& current_url,
                                              const GURL& new_url) {
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h
index 8668fc39..aeded10 100644
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h
@@ -17,6 +17,7 @@
 
 namespace content {
 struct Referrer;
+class RenderFrameHost;
 class RenderProcessHost;
 class ResourceContext;
 class VpnServiceProxy;
@@ -61,6 +62,8 @@
                              const GURL& site_url);
   static bool ShouldTryToUseExistingProcessHost(Profile* profile,
                                                 const GURL& url);
+  static bool ShouldSubframesTryToReuseExistingProcess(
+      content::RenderFrameHost* main_frame);
   static bool ShouldSwapBrowsingInstancesForNavigation(
       content::SiteInstance* site_instance,
       const GURL& current_url,
diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index ded03802..a0612f8d 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -1647,6 +1647,61 @@
   }
 }
 
+// Verify that web iframes on extension frames do not attempt to aggressively
+// reuse existing processes for the same site.  This helps prevent a
+// misbehaving web iframe on an extension from slowing down other processes.
+// See https://crbug.com/899418.
+IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
+                       WebSubframeOnExtensionDoesNotReuseExistingProcess) {
+  // This test matters only *with* --site-per-process.  It depends on process
+  // reuse logic that subframes use to look for existing processes, but that
+  // logic is only turned on for sites that require a dedicated process.
+  if (!content::AreAllSitesIsolatedForTesting())
+    return;
+
+  // Create a simple extension with a background page that has an empty iframe.
+  const Extension* extension = CreateExtension("Extension", true);
+  embedded_test_server()->ServeFilesFromDirectory(extension->path());
+  ASSERT_TRUE(embedded_test_server()->Start());
+
+  // Navigate main tab to a web page on foo.com.
+  GURL foo_url(embedded_test_server()->GetURL("foo.com", "/title1.html"));
+  NavigateToURL(foo_url);
+  content::WebContents* tab =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  EXPECT_EQ(foo_url, tab->GetLastCommittedURL());
+
+  // So far, there should be two extension frames: one for the background page,
+  // one for the empty subframe on it.
+  ProcessManager* pm = ProcessManager::Get(profile());
+  EXPECT_EQ(2u, pm->GetAllFrames().size());
+  EXPECT_EQ(2u, pm->GetRenderFrameHostsForExtension(extension->id()).size());
+
+  // Navigate the subframe on the extension background page to foo.com, and
+  // wait for the old subframe to go away.
+  ExtensionHost* background_host =
+      pm->GetBackgroundHostForExtension(extension->id());
+  content::RenderFrameHost* background_rfh =
+      background_host->host_contents()->GetMainFrame();
+  content::RenderFrameHost* extension_subframe =
+      ChildFrameAt(background_rfh, 0);
+  content::RenderFrameDeletedObserver deleted_observer(extension_subframe);
+  EXPECT_TRUE(
+      content::ExecJs(extension_subframe,
+                      content::JsReplace("window.location = $1;", foo_url)));
+  deleted_observer.WaitUntilDeleted();
+
+  // There should now only be one extension frame for the background page.  The
+  // subframe should've swapped processes and should now be a web frame.
+  EXPECT_EQ(1u, pm->GetAllFrames().size());
+  EXPECT_EQ(1u, pm->GetRenderFrameHostsForExtension(extension->id()).size());
+  content::RenderFrameHost* subframe = ChildFrameAt(background_rfh, 0);
+  EXPECT_EQ(foo_url, subframe->GetLastCommittedURL());
+
+  // Verify that the subframe did *not* reuse the existing foo.com process.
+  EXPECT_NE(tab->GetMainFrame()->GetProcess(), subframe->GetProcess());
+}
+
 // Test to verify that loading a resource other than an icon file is
 // disallowed for hosted apps, while icons are allowed.
 // See https://crbug.com/717626.
diff --git a/chrome/browser/extensions/scripting_permissions_modifier_unittest.cc b/chrome/browser/extensions/scripting_permissions_modifier_unittest.cc
index 83ac170..61d4195d 100644
--- a/chrome/browser/extensions/scripting_permissions_modifier_unittest.cc
+++ b/chrome/browser/extensions/scripting_permissions_modifier_unittest.cc
@@ -72,18 +72,23 @@
       extension.permissions_data()->active_permissions().explicit_hosts());
 }
 
-class RuntimeHostPermissionsEnabledScope {
+class RuntimeHostPermissionsForcedScope {
  public:
-  RuntimeHostPermissionsEnabledScope() {
-    feature_list_.InitAndEnableFeature(
-        extensions_features::kRuntimeHostPermissions);
+  explicit RuntimeHostPermissionsForcedScope(bool enabled) {
+    if (enabled) {
+      feature_list_.InitAndEnableFeature(
+          extensions_features::kRuntimeHostPermissions);
+    } else {
+      feature_list_.InitAndDisableFeature(
+          extensions_features::kRuntimeHostPermissions);
+    }
   }
-  ~RuntimeHostPermissionsEnabledScope() {}
+  ~RuntimeHostPermissionsForcedScope() {}
 
  private:
   base::test::ScopedFeatureList feature_list_;
 
-  DISALLOW_COPY_AND_ASSIGN(RuntimeHostPermissionsEnabledScope);
+  DISALLOW_COPY_AND_ASSIGN(RuntimeHostPermissionsForcedScope);
 };
 
 void InitializeExtensionPermissions(Profile* profile,
@@ -101,7 +106,7 @@
   InitializeEmptyExtensionService();
 
   // Permissions can only be withheld with the appropriate feature turned on.
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
 
   std::vector<std::string> test_cases[] = {
       {"http://www.google.com/*"},
@@ -176,7 +181,7 @@
   InitializeEmptyExtensionService();
 
   // Permissions can only be withheld with the appropriate feature turned on.
-  auto enabled_scope = std::make_unique<RuntimeHostPermissionsEnabledScope>();
+  auto forced_scope = std::make_unique<RuntimeHostPermissionsForcedScope>(true);
 
   scoped_refptr<const Extension> extension =
       ExtensionBuilder("a")
@@ -205,7 +210,8 @@
               testing::UnorderedElementsAre(URLPattern::kAllUrlsPattern));
 
   // Remove the switch. The extension should have permission again.
-  enabled_scope.reset();
+  forced_scope.reset();  // Let the old scope destruct before creating another.
+  forced_scope = std::make_unique<RuntimeHostPermissionsForcedScope>(false);
   updater.InitializePermissions(extension.get());
   EXPECT_FALSE(modifier.CanAffectExtension());
   EXPECT_THAT(GetEffectivePatternsAsStrings(*extension),
@@ -215,7 +221,8 @@
 
   // Reapply the switch; the extension should go back to having permissions
   // withheld.
-  enabled_scope = std::make_unique<RuntimeHostPermissionsEnabledScope>();
+  forced_scope.reset();  // Let the old scope destruct before creating another.
+  forced_scope = std::make_unique<RuntimeHostPermissionsForcedScope>(true);
   updater.InitializePermissions(extension.get());
   EXPECT_TRUE(modifier.HasWithheldHostPermissions());
   EXPECT_THAT(GetEffectivePatternsAsStrings(*extension), testing::IsEmpty());
@@ -228,7 +235,7 @@
   InitializeEmptyExtensionService();
 
   // Permissions can only be withheld with the appropriate feature turned on.
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
 
   scoped_refptr<const Extension> extension =
       ExtensionBuilder("extension")
@@ -288,7 +295,7 @@
 }
 
 TEST_F(ScriptingPermissionsModifierUnitTest, CanAffectExtensionByLocation) {
-  auto enabled_scope = std::make_unique<RuntimeHostPermissionsEnabledScope>();
+  auto forced_scope = std::make_unique<RuntimeHostPermissionsForcedScope>(true);
 
   InitializeEmptyExtensionService();
 
@@ -313,7 +320,8 @@
         << test_case.location;
   }
 
-  enabled_scope.reset();
+  forced_scope.reset();  // Let the old scope destruct before creating another.
+  forced_scope = std::make_unique<RuntimeHostPermissionsForcedScope>(false);
 
   // With the feature disabled, no extension should be able to be affected.
   for (const auto& test_case : test_cases) {
@@ -331,7 +339,7 @@
 TEST_F(ScriptingPermissionsModifierUnitTest,
        ExtensionsInitializedWithSavedRuntimeGrantedHostPermissionsAcrossLoad) {
   // Permissions can only be withheld with the appropriate feature turned on.
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
 
   InitializeEmptyExtensionService();
 
@@ -403,7 +411,7 @@
 // hosts granted through the ScriptingPermissionsModifier.
 TEST_F(ScriptingPermissionsModifierUnitTest,
        RemoveAllGrantedHostPermissions_GrantedHosts) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -430,7 +438,7 @@
 // don't request <all_urls>.
 TEST_F(ScriptingPermissionsModifierUnitTest,
        RemoveAllGrantedHostPermissions_GrantedHostsForNonAllUrlsExtension) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -458,7 +466,7 @@
 // granted optional host permissions.
 TEST_F(ScriptingPermissionsModifierUnitTest,
        RemoveAllGrantedHostPermissions_GrantedOptionalPermissions) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -494,7 +502,7 @@
 // wants to run on a subset of that host.
 TEST_F(ScriptingPermissionsModifierUnitTest,
        GrantingHostPermissionsBeyondRequested) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   DictionaryBuilder content_script;
@@ -544,7 +552,7 @@
 }
 
 TEST_F(ScriptingPermissionsModifierUnitTest, GetSiteAccess_AllHostsExtension) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -629,7 +637,7 @@
 
 TEST_F(ScriptingPermissionsModifierUnitTest,
        GetSiteAccess_AllHostsLikeExtension) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -670,7 +678,7 @@
 }
 
 TEST_F(ScriptingPermissionsModifierUnitTest, GetSiteAccess_SpecificSites) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -713,7 +721,7 @@
 
 TEST_F(ScriptingPermissionsModifierUnitTest,
        GetSiteAccess_GrantedButNotRequested) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -747,7 +755,7 @@
 // Tests that for the purposes of displaying an extension's site access to the
 // user (or granting/revoking permissions), we ignore paths in the URL.
 TEST_F(ScriptingPermissionsModifierUnitTest, GetSiteAccess_IgnorePaths) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
@@ -787,7 +795,7 @@
 // to that host.
 TEST_F(ScriptingPermissionsModifierUnitTest,
        RemoveHostAccess_RemovesOverlappingPatterns) {
-  RuntimeHostPermissionsEnabledScope enabled_scope;
+  RuntimeHostPermissionsForcedScope enabled_scope(true);
   InitializeEmptyExtensionService();
 
   scoped_refptr<const Extension> extension =
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_browsertest.cc b/chrome/browser/navigation_predictor/navigation_predictor_browsertest.cc
index 602f7f9..f4b0280f 100644
--- a/chrome/browser/navigation_predictor/navigation_predictor_browsertest.cc
+++ b/chrome/browser/navigation_predictor/navigation_predictor_browsertest.cc
@@ -6,20 +6,47 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "chrome/browser/metrics/subprocess_metrics_provider.h"
+#include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "content/public/test/browser_test_utils.h"
+#include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "third_party/blink/public/common/features.h"
 #include "url/gurl.h"
 
+namespace {
+
+// Retries fetching |histogram_name| until it contains at least |count| samples.
+void RetryForHistogramUntilCountReached(base::HistogramTester* histogram_tester,
+                                        const std::string& histogram_name,
+                                        size_t count) {
+  base::RunLoop().RunUntilIdle();
+  for (size_t attempt = 0; attempt < 3; ++attempt) {
+    const std::vector<base::Bucket> buckets =
+        histogram_tester->GetAllSamples(histogram_name);
+    size_t total_count = 0;
+    for (const auto& bucket : buckets)
+      total_count += bucket.count;
+    if (total_count >= count)
+      return;
+    content::FetchHistogramsFromChildProcesses();
+    SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+    base::RunLoop().RunUntilIdle();
+  }
+}
+
+}  // namespace
+
 class NavigationPredictorBrowserTest
-    : public InProcessBrowserTest,
+    : public subresource_filter::SubresourceFilterBrowserTest,
       public testing::WithParamInterface<bool> {
  public:
-  NavigationPredictorBrowserTest() {
+  NavigationPredictorBrowserTest()
+      : subresource_filter::SubresourceFilterBrowserTest() {
     const std::vector<base::Feature> features = {
         blink::features::kRecordAnchorMetricsVisible,
         blink::features::kRecordAnchorMetricsClicked};
@@ -34,7 +61,12 @@
     test_server_.ServeFilesFromSourceDirectory(
         "chrome/test/data/navigation_predictor");
     ASSERT_TRUE(test_server_.Start());
-    InProcessBrowserTest::SetUp();
+    subresource_filter::SubresourceFilterBrowserTest::SetUp();
+  }
+
+  void SetUpOnMainThread() override {
+    subresource_filter::SubresourceFilterBrowserTest::SetUpOnMainThread();
+    host_resolver()->ClearRules();
   }
 
   const GURL GetTestURL(const char* file) const {
@@ -76,6 +108,68 @@
   }
 }
 
+// Test that anchor elements within an iframe tagged as an ad are discarded when
+// predicting next navigation.
+IN_PROC_BROWSER_TEST_P(NavigationPredictorBrowserTest, PipelineAdsFrameTagged) {
+  // iframe_ads_simple_page_with_anchors.html is an iframe referenced by
+  // page_with_ads_iframe.html.
+  ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix(
+      "iframe_ads_simple_page_with_anchors.html"));
+
+  base::HistogramTester histogram_tester;
+
+  GURL url = GetTestURL("/page_with_ads_iframe.html");
+  ui_test_utils::NavigateToURL(browser(), url);
+  base::RunLoop().RunUntilIdle();
+
+  if (base::FeatureList::IsEnabled(
+          blink::features::kRecordAnchorMetricsVisible)) {
+    histogram_tester.ExpectUniqueSample(
+        "AnchorElementMetrics.Visible.NumberOfAnchorElements", 2, 1);
+
+    RetryForHistogramUntilCountReached(
+        &histogram_tester, "AnchorElementMetrics.IsAdFrameElement", 4);
+
+    histogram_tester.ExpectTotalCount("AnchorElementMetrics.IsAdFrameElement",
+                                      4);
+    histogram_tester.ExpectBucketCount("AnchorElementMetrics.IsAdFrameElement",
+                                       0 /* false */, 2);
+    histogram_tester.ExpectBucketCount("AnchorElementMetrics.IsAdFrameElement",
+                                       1 /* true */, 2);
+
+  } else {
+    histogram_tester.ExpectTotalCount(
+        "AnchorElementMetrics.Visible.NumberOfAnchorElements", 0);
+  }
+}
+
+// Test that anchor elements within an iframe not tagged as ad are not discarded
+// when predicting next navigation.
+IN_PROC_BROWSER_TEST_P(NavigationPredictorBrowserTest,
+                       PipelineAdsFrameNotTagged) {
+  base::HistogramTester histogram_tester;
+
+  GURL url = GetTestURL("/page_with_ads_iframe.html");
+  ui_test_utils::NavigateToURL(browser(), url);
+  base::RunLoop().RunUntilIdle();
+
+  if (base::FeatureList::IsEnabled(
+          blink::features::kRecordAnchorMetricsVisible)) {
+    histogram_tester.ExpectUniqueSample(
+        "AnchorElementMetrics.Visible.NumberOfAnchorElements", 4, 1);
+
+    RetryForHistogramUntilCountReached(
+        &histogram_tester, "AnchorElementMetrics.IsAdFrameElement", 4);
+
+    histogram_tester.ExpectUniqueSample("AnchorElementMetrics.IsAdFrameElement",
+                                        0 /* false */, 4);
+
+  } else {
+    histogram_tester.ExpectTotalCount(
+        "AnchorElementMetrics.Visible.NumberOfAnchorElements", 0);
+  }
+}
+
 // Test that navigation score of anchor elements can be calculated on page load.
 IN_PROC_BROWSER_TEST_P(NavigationPredictorBrowserTest, NavigationScore) {
   base::HistogramTester histogram_tester;
diff --git a/chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc b/chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc
index 7448895..3d785a0 100644
--- a/chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc
+++ b/chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc
@@ -27,7 +27,9 @@
 
   // testing::Test:
   void SetUp() override {
-    test_clock().SetNow(base::Time::Now().LocalMidnight());
+    base::Time epoch;
+    ASSERT_TRUE(base::Time::FromUTCString("1 Jan 1994 GMT", &epoch));
+    test_clock().SetNow(epoch.LocalMidnight());
     OfflineMetricsCollectorImpl::RegisterPrefs(pref_service_.registry());
     Reload();
   }
diff --git a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
index 31e9598..27cba13b 100644
--- a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
+++ b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
@@ -20,6 +20,7 @@
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
+#include "services/metrics/public/cpp/ukm_source_id.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom.h"
 #include "url/gurl.h"
@@ -84,6 +85,9 @@
 
   if (hints.empty())
     return;
+
+  hints_ptr->ukm_source_id = ukm::ConvertToSourceId(
+      navigation_handle->GetNavigationId(), ukm::SourceIdType::NAVIGATION_ID);
   for (const std::string& hint : hints)
     hints_ptr->subresources_to_block.push_back(hint);
 
diff --git a/chrome/browser/profiling_host/background_profiling_triggers.cc b/chrome/browser/profiling_host/background_profiling_triggers.cc
index b2ceeb4b..5865baac 100644
--- a/chrome/browser/profiling_host/background_profiling_triggers.cc
+++ b/chrome/browser/profiling_host/background_profiling_triggers.cc
@@ -44,7 +44,7 @@
 const size_t kBrowserProcessMallocTriggerKb = 400 * 1024;    // 400 MB
 const size_t kGPUProcessMallocTriggerKb = 400 * 1024;        // 400 MB
 const size_t kRendererProcessMallocTriggerKb = 500 * 1024;   // 500 MB
-const size_t kUtilityProcessMallocTriggerKb = 400 * 1024;    // 400 MB
+const size_t kUtilityProcessMallocTriggerKb = 250 * 1024;    // 250 MB
 
 // If memory usage has increased by 500MB since the last report, send another.
 const uint32_t kHighWaterMarkThresholdKb = 500 * 1024;  // 500 MB
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
index 47f57d7..a68787a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
@@ -383,7 +383,7 @@
 <translation id="3930498801443296724">Textzitat</translation>
 <translation id="3941269780691800708">Text unter dem Mauszeiger vorlesen.</translation>
 <translation id="3962990492275676168">Ab der aktuellen Position lesen</translation>
-<translation id="3989324057180830702">tgl btn</translation>
+<translation id="3989324057180830702">Ein/Aus</translation>
 <translation id="4004802134384979325">Aktiviert</translation>
 <translation id="4006140876663370126">img</translation>
 <translation id="4038349100599457191">Steuerung für Monat</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
index d348e15..ae90fd8 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
@@ -384,7 +384,7 @@
 <translation id="3930498801443296724">Cita inicial</translation>
 <translation id="3941269780691800708">Pronunciar el texto cuando pasas el puntero del mouse</translation>
 <translation id="3962990492275676168">Comenzar a leer desde la ubicación actual</translation>
-<translation id="3989324057180830702">tgl btn</translation>
+<translation id="3989324057180830702">btn act</translation>
 <translation id="4004802134384979325">seleccionada</translation>
 <translation id="4006140876663370126">img</translation>
 <translation id="4038349100599457191">Control de mes</translation>
diff --git a/chrome/browser/resources/md_extensions/detail_view.html b/chrome/browser/resources/md_extensions/detail_view.html
index a52aae0..98315e4b 100644
--- a/chrome/browser/resources/md_extensions/detail_view.html
+++ b/chrome/browser/resources/md_extensions/detail_view.html
@@ -329,9 +329,9 @@
                 </li>
               </template>
             </ul>
-            <template is="dom-if" if="[[showRuntimeHostPermissions_(data.*)]]">
+            <template is="dom-if" if="[[hasRuntimeHostPermissions_(data.*)]]">
               <extensions-runtime-host-permissions
-                  permissions="[[data.permissions]]"
+                  permissions="[[data.permissions.runtimeHostPermissions]]"
                   delegate="[[delegate]]"
                   item-id="[[data.id]]">
               </extensions-runtime-host-permissions>
diff --git a/chrome/browser/resources/md_extensions/detail_view.js b/chrome/browser/resources/md_extensions/detail_view.js
index 3e520e2..327a7c4 100644
--- a/chrome/browser/resources/md_extensions/detail_view.js
+++ b/chrome/browser/resources/md_extensions/detail_view.js
@@ -292,15 +292,15 @@
      */
     hasPermissions_: function() {
       return this.data.permissions.simplePermissions.length > 0 ||
-          !!this.data.permissions.hostAccess;
+          this.hasRuntimeHostPermissions_();
     },
 
     /**
      * @return {boolean}
      * @private
      */
-    showRuntimeHostPermissions_: function() {
-      return !!this.data.permissions.hostAccess;
+    hasRuntimeHostPermissions_: function() {
+      return !!this.data.permissions.runtimeHostPermissions;
     },
   });
 
diff --git a/chrome/browser/resources/md_extensions/runtime_host_permissions.html b/chrome/browser/resources/md_extensions/runtime_host_permissions.html
index 25ebeda..4134878 100644
--- a/chrome/browser/resources/md_extensions/runtime_host_permissions.html
+++ b/chrome/browser/resources/md_extensions/runtime_host_permissions.html
@@ -81,7 +81,7 @@
       </div>
       <ul id="hosts">
         <template is="dom-repeat"
-            items="[[getRuntimeHosts_(permissions.specificSiteControls)]]">
+            items="[[getRuntimeHosts_(permissions.hosts)]]">
           <li>
             <div>[[item]]</div>
             <paper-icon-button-light class="icon-more-vert">
diff --git a/chrome/browser/resources/md_extensions/runtime_host_permissions.js b/chrome/browser/resources/md_extensions/runtime_host_permissions.js
index 18d98e11..e4e7a52 100644
--- a/chrome/browser/resources/md_extensions/runtime_host_permissions.js
+++ b/chrome/browser/resources/md_extensions/runtime_host_permissions.js
@@ -11,7 +11,7 @@
     properties: {
       /**
        * The underlying permissions data.
-       * @type {chrome.developerPrivate.Permissions}
+       * @type {chrome.developerPrivate.RuntimeHostPermissions}
        */
       permissions: Object,
 
@@ -101,7 +101,8 @@
           /** @type {chrome.developerPrivate.HostAccess} */ (select.value);
 
       if (access == chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES &&
-          !this.permissions.specificSiteControls) {
+          this.permissions.hostAccess !=
+              chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES) {
         // If the user is transitioning to the "on specific sites" option, show
         // the "add host" dialog. This serves two purposes:
         // - The user is prompted to add a host immediately, since otherwise
@@ -110,7 +111,7 @@
         //   specific sites" is by checking if there are any specific sites.
         //   This ensures there will be at least one, so that the host access
         //   is properly calculated.
-        this.oldHostAccess_ = assert(this.permissions.hostAccess);
+        this.oldHostAccess_ = this.permissions.hostAccess;
         this.doShowHostDialog_(select, null);
       } else {
         this.delegate.setItemHostAccess(this.itemId, access);
@@ -122,8 +123,7 @@
      * @private
      */
     showSpecificSites_: function() {
-      return this.permissions &&
-          this.permissions.hostAccess ==
+      return this.permissions.hostAccess ==
           chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES;
     },
 
@@ -133,14 +133,13 @@
      * @private
      */
     getRuntimeHosts_: function() {
-      if (!this.permissions.specificSiteControls)
+      if (!this.permissions.hosts)
         return [];
 
       // Only show granted hosts in the list.
       // TODO(devlin): For extensions that request a finite set of hosts,
       // display them in a toggle list. https://crbug.com/891803.
-      return this.permissions.specificSiteControls.hosts
-          .filter(control => control.granted)
+      return this.permissions.hosts.filter(control => control.granted)
           .map(control => control.host)
           .sort();
     },
diff --git a/chrome/browser/resources/settings/site_settings/site_list.html b/chrome/browser/resources/settings/site_settings/site_list.html
index 7cf4601..4588b553 100644
--- a/chrome/browser/resources/settings/site_settings/site_list.html
+++ b/chrome/browser/resources/settings/site_settings/site_list.html
@@ -78,7 +78,8 @@
         </iron-list>
       </div>
     </div>
-    <paper-tooltip id="tooltip" manual-mode position="top">
+    <paper-tooltip id="tooltip" fit-to-visible-bounds manual-mode
+        position="top">
       [[tooltipText_]]
     </paper-tooltip>
     <template is="dom-if" if="[[showEditExceptionDialog_]]" restamp>
diff --git a/chrome/browser/resources/settings/site_settings/site_list.js b/chrome/browser/resources/settings/site_settings/site_list.js
index df689561..c80c55b 100644
--- a/chrome/browser/resources/settings/site_settings/site_list.js
+++ b/chrome/browser/resources/settings/site_settings/site_list.js
@@ -242,8 +242,15 @@
     // potential targets. Since paper-tooltip does not expose a public property
     // or method to update the target, the private property |_target| is
     // updated directly.
-    this.$.tooltip._target = target;
-    /** @type {{updatePosition: Function}} */ (this.$.tooltip).updatePosition();
+    const tooltip = this.$.tooltip;
+    /** @type {{updatePosition: Function}} */ (tooltip).updatePosition();
+    tooltip._target = target;
+    const parentRect = tooltip.offsetParent.getBoundingClientRect();
+    const rect = tooltip.getBoundingClientRect();
+    if (parentRect.left + parentRect.width < rect.left + rect.width) {
+      tooltip.style.right = '0';
+      tooltip.style.left = 'auto';
+    }
     const hide = () => {
       this.$.tooltip.hide();
       target.removeEventListener('mouseleave', hide);
diff --git a/chrome/browser/site_details_browsertest.cc b/chrome/browser/site_details_browsertest.cc
index 67ef39e..8014598f 100644
--- a/chrome/browser/site_details_browsertest.cc
+++ b/chrome/browser/site_details_browsertest.cc
@@ -857,17 +857,13 @@
                   "SiteIsolation.IsolateExtensionsProcessCountNoLimit"),
               HasOneSample(4));
 
-  // As part of https://crbug.com/512560, subframes that require a dedicated
-  // process started reusing existing processes when possible, so under
-  // --site-per-process, tab1's web iframe will share the process with tab2's
-  // web iframe, since they have the same site. This won't affect
-  // --isolate-extensions, because the web iframe's site won't require a
-  // dedicated process in that mode. Hence, with site-per-process, there should
-  // be three total renderer processes: one for the two web iframes, one for
-  // extension3, and one for extension 1's background page. With only
-  // --isolate-extensions, there should be four total renderer processes, as
-  // each web iframe will go into its own process.
-  EXPECT_THAT(GetRenderProcessCount(), DependingOnPolicy(2, 4, 3));
+  // There should be four total renderer processes: one for each of the two web
+  // iframes, one for extension3, and one for extension 1's background page.
+  // Note that the optimization in https://crbug.com/512560, where subframes
+  // that require a dedicated process reuse existing processes where possible,
+  // does not apply to web iframes in extensions anymore -- see
+  // https://crbug.com/899418.
+  EXPECT_THAT(GetRenderProcessCount(), DependingOnPolicy(2, 4, 4));
   EXPECT_THAT(details->GetOutOfProcessIframeCount(),
               DependingOnPolicy(0, 2, 2));
 }
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
index 7ed823e..7f42b8a 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -46,10 +46,10 @@
           Profile::FromBrowserContext(web_contents->GetBrowserContext()));
   settings_manager_ = context->settings_manager();
 
-  subresource_filter::ContentRulesetService* ruleset_service =
+  subresource_filter::RulesetService* ruleset_service =
       g_browser_process->subresource_filter_ruleset_service();
   subresource_filter::VerifiedRulesetDealer::Handle* dealer =
-      ruleset_service ? ruleset_service->ruleset_dealer() : nullptr;
+      ruleset_service ? ruleset_service->GetRulesetDealer() : nullptr;
   throttle_manager_ = std::make_unique<
       subresource_filter::ContentSubresourceFilterThrottleManager>(
       this, dealer, web_contents);
diff --git a/chrome/browser/subresource_filter/ruleset_browsertest.cc b/chrome/browser/subresource_filter/ruleset_browsertest.cc
index 8f99379..d84ba9a2 100644
--- a/chrome/browser/subresource_filter/ruleset_browsertest.cc
+++ b/chrome/browser/subresource_filter/ruleset_browsertest.cc
@@ -22,29 +22,10 @@
 
 const mojom::ActivationState kDisabled;
 
-void OpenAndPublishRuleset(ContentRulesetService* content_ruleset_service,
-                           const base::FilePath& path) {
-  base::File index_file;
-  base::RunLoop open_loop;
-  auto open_callback = base::BindRepeating(
-      [](base::OnceClosure quit_closure, base::File* out, base::File result) {
-        *out = std::move(result);
-        std::move(quit_closure).Run();
-      },
-      open_loop.QuitClosure(), &index_file);
-  IndexedRulesetVersion version =
-      content_ruleset_service->GetMostRecentlyIndexedVersion();
-  content_ruleset_service->TryOpenAndSetRulesetFile(path, version.checksum,
-                                                    std::move(open_callback));
-  open_loop.Run();
-  ASSERT_TRUE(index_file.IsValid());
-  content_ruleset_service->PublishNewRulesetVersion(std::move(index_file));
-}
-
 RulesetVerificationStatus GetRulesetVerification() {
-  ContentRulesetService* service =
+  RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
-  VerifiedRulesetDealer::Handle* dealer_handle = service->ruleset_dealer();
+  VerifiedRulesetDealer::Handle* dealer_handle = service->GetRulesetDealer();
 
   auto callback_method = [](base::OnceClosure quit_closure,
                             RulesetVerificationStatus* status,
@@ -73,11 +54,11 @@
   base::HistogramTester histogram_tester;
   ASSERT_NO_FATAL_FAILURE(
       SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
-  ContentRulesetService* service =
+  RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
-  ASSERT_TRUE(service->ruleset_dealer());
+  ASSERT_TRUE(service->GetRulesetDealer());
   auto ruleset_handle =
-      std::make_unique<VerifiedRuleset::Handle>(service->ruleset_dealer());
+      std::make_unique<VerifiedRuleset::Handle>(service->GetRulesetDealer());
   AsyncDocumentSubresourceFilter::InitializationParams params(
       GURL("https://example.com/"), mojom::ActivationLevel::kEnabled, false);
 
@@ -98,11 +79,11 @@
 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, NoRuleset_NoActivation) {
   base::HistogramTester histogram_tester;
   // Do not set the ruleset, which results in an invalid ruleset.
-  ContentRulesetService* service =
+  RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
-  ASSERT_TRUE(service->ruleset_dealer());
+  ASSERT_TRUE(service->GetRulesetDealer());
   auto ruleset_handle =
-      std::make_unique<VerifiedRuleset::Handle>(service->ruleset_dealer());
+      std::make_unique<VerifiedRuleset::Handle>(service->GetRulesetDealer());
   AsyncDocumentSubresourceFilter::InitializationParams params(
       GURL("https://example.com/"), mojom::ActivationLevel::kEnabled, false);
 
@@ -123,7 +104,7 @@
   ASSERT_NO_FATAL_FAILURE(
       ruleset_creator.CreateRulesetToDisallowURLsWithManySuffixes(
           kTestRulesetSuffix, kNumberOfRules, &test_ruleset_pair));
-  ContentRulesetService* service =
+  RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
 
   // Publish the good ruleset.
@@ -137,10 +118,10 @@
   testing::TestRuleset::CorruptByFilling(test_ruleset_pair.indexed, 28250,
                                          28251, 32);
   OpenAndPublishRuleset(service, test_ruleset_pair.indexed.path);
-  ASSERT_TRUE(service->ruleset_dealer());
+  ASSERT_TRUE(service->GetRulesetDealer());
 
   auto ruleset_handle =
-      std::make_unique<VerifiedRuleset::Handle>(service->ruleset_dealer());
+      std::make_unique<VerifiedRuleset::Handle>(service->GetRulesetDealer());
   AsyncDocumentSubresourceFilter::InitializationParams params(
       GURL("https://example.com/"), mojom::ActivationLevel::kEnabled, false);
 
@@ -183,13 +164,13 @@
 
   // Just publish the corrupt indexed file directly, to simulate it being
   // corrupt on startup.
-  ContentRulesetService* service =
+  RulesetService* service =
       g_browser_process->subresource_filter_ruleset_service();
-  ASSERT_TRUE(service->ruleset_dealer());
+  ASSERT_TRUE(service->GetRulesetDealer());
   OpenAndPublishRuleset(service, test_ruleset_pair.indexed.path);
 
   auto ruleset_handle =
-      std::make_unique<VerifiedRuleset::Handle>(service->ruleset_dealer());
+      std::make_unique<VerifiedRuleset::Handle>(service->GetRulesetDealer());
   AsyncDocumentSubresourceFilter::InitializationParams params(
       GURL("https://example.com/"), mojom::ActivationLevel::kEnabled, false);
 
diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
index 686c8c4..4371ad2b 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/safe_browsing/test_safe_browsing_database_helper.h"
 #include "chrome/browser/subresource_filter/subresource_filter_profile_context.h"
 #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h"
+#include "chrome/browser/subresource_filter/test_ruleset_publisher.h"
 #include "chrome/browser/ui/blocked_content/safe_browsing_triggered_popup_blocker.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
@@ -217,6 +218,27 @@
       test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed));
 }
 
+
+void SubresourceFilterBrowserTest::OpenAndPublishRuleset(
+    RulesetService* ruleset_service,
+    const base::FilePath& indexed_ruleset_path) {
+  base::File index_file;
+  base::RunLoop open_loop;
+  auto open_callback = base::BindOnce(
+      [](base::OnceClosure quit_closure, base::File* out, base::File result) {
+        *out = std::move(result);
+        std::move(quit_closure).Run();
+      },
+      open_loop.QuitClosure(), &index_file);
+  IndexedRulesetVersion version =
+      ruleset_service->GetMostRecentlyIndexedVersion();
+  ruleset_service->GetRulesetDealer()->TryOpenAndSetRulesetFile(
+      indexed_ruleset_path, version.checksum, std::move(open_callback));
+  open_loop.Run();
+  ASSERT_TRUE(index_file.IsValid());
+  ruleset_service->OnRulesetSet(std::move(index_file));
+}
+
 void SubresourceFilterBrowserTest::ResetConfiguration(Configuration config) {
   scoped_configuration_.ResetConfiguration(std::move(config));
 }
diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
index 41a907e..d63e1d0e 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
+++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
@@ -36,6 +36,8 @@
 
 namespace subresource_filter {
 
+class RulesetService;
+
 class SubresourceFilterBrowserTest : public InProcessBrowserTest {
  public:
   SubresourceFilterBrowserTest();
@@ -88,6 +90,11 @@
 
   void SetRulesetWithRules(const std::vector<proto::UrlRule>& rules);
 
+  // Re-initializes the ruleset_service by opening the ruleset file provided
+  // by indexed_ruleset_path and publishing it.
+  void OpenAndPublishRuleset(RulesetService* ruleset_service,
+                             const base::FilePath& indexed_ruleset_path);
+
   void ResetConfiguration(Configuration config);
 
   void ResetConfigurationToEnableOnPhishingSites(
diff --git a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
index 4c5a1806..4fcb53c 100644
--- a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
@@ -89,15 +89,11 @@
   // 2. Navigation simulator uses this knowledge. It knows that
   //    |AsyncDocumentSubresourceFilter| posts core initialization tasks on
   //    blocking task runner and this it is the current thread task runner.
-  auto content_service =
-      std::make_unique<subresource_filter::ContentRulesetService>(
-          base::ThreadTaskRunnerHandle::Get());
   auto ruleset_service = std::make_unique<subresource_filter::RulesetService>(
       &pref_service_, base::ThreadTaskRunnerHandle::Get(),
-      content_service.get(), ruleset_service_dir_.GetPath());
-  content_service->SetAndInitializeRulesetService(std::move(ruleset_service));
+      ruleset_service_dir_.GetPath(), base::ThreadTaskRunnerHandle::Get());
   TestingBrowserProcess::GetGlobal()->SetRulesetService(
-      std::move(content_service));
+      std::move(ruleset_service));
 
   // Publish the test ruleset.
   subresource_filter::testing::TestRulesetCreator ruleset_creator;
diff --git a/chrome/browser/subresource_filter/test_ruleset_publisher.cc b/chrome/browser/subresource_filter/test_ruleset_publisher.cc
index 6547d82..acfeb97 100644
--- a/chrome/browser/subresource_filter/test_ruleset_publisher.cc
+++ b/chrome/browser/subresource_filter/test_ruleset_publisher.cc
@@ -19,21 +19,18 @@
 class RulesetDistributionListener {
  public:
   RulesetDistributionListener()
-      : content_service_(
-            g_browser_process->subresource_filter_ruleset_service()) {
-    content_service_->SetRulesetPublishedCallbackForTesting(
-        run_loop_.QuitClosure());
+      : service_(g_browser_process->subresource_filter_ruleset_service()) {
+    service_->SetRulesetPublishedCallbackForTesting(run_loop_.QuitClosure());
   }
 
   ~RulesetDistributionListener() {
-    content_service_->SetRulesetPublishedCallbackForTesting(
-        base::OnceClosure());
+    service_->SetRulesetPublishedCallbackForTesting(base::OnceClosure());
   }
 
   void AwaitDistribution() { run_loop_.Run(); }
 
  private:
-  ContentRulesetService* content_service_;
+  RulesetService* service_;
   base::RunLoop run_loop_;
 
   DISALLOW_COPY_AND_ASSIGN(RulesetDistributionListener);
diff --git a/chrome/browser/translate/android/translate_bridge.cc b/chrome/browser/translate/android/translate_bridge.cc
index d4d1272..12d7b0d 100644
--- a/chrome/browser/translate/android/translate_bridge.cc
+++ b/chrome/browser/translate/android/translate_bridge.cc
@@ -4,13 +4,13 @@
 
 #include "base/android/jni_string.h"
 #include "chrome/browser/translate/chrome_translate_client.h"
+#include "components/language/core/common/language_experiments.h"
 #include "components/translate/core/browser/translate_manager.h"
+#include "components/translate/core/browser/translate_prefs.h"
 #include "content/public/browser/web_contents.h"
 #include "jni/TranslateBridge_jni.h"
 
-static void JNI_TranslateBridge_Translate(
-    JNIEnv* env,
-    const base::android::JavaParamRef<jclass>& jcaller,
+static translate::TranslateManager* GetTranslateManager(
     const base::android::JavaParamRef<jobject>& j_web_contents) {
   content::WebContents* web_contents =
       content::WebContents::FromJavaWebContents(j_web_contents);
@@ -20,6 +20,14 @@
   translate::TranslateManager* manager =
       chrome_translate_client->GetTranslateManager();
   DCHECK(manager);
+  return manager;
+}
+
+static void JNI_TranslateBridge_Translate(
+    JNIEnv* env,
+    const base::android::JavaParamRef<jclass>& jcaller,
+    const base::android::JavaParamRef<jobject>& j_web_contents) {
+  translate::TranslateManager* manager = GetTranslateManager(j_web_contents);
   manager->InitiateManualTranslation();
 }
 
@@ -27,6 +35,14 @@
     JNIEnv* env,
     const base::android::JavaParamRef<jclass>& jcaller,
     const base::android::JavaParamRef<jobject>& j_web_contents) {
+  translate::TranslateManager* manager = GetTranslateManager(j_web_contents);
+  return manager->CanManuallyTranslate();
+}
+
+static jboolean JNI_TranslateBridge_ShouldShowManualTranslateIPH(
+    JNIEnv* env,
+    const base::android::JavaParamRef<jclass>& jcaller,
+    const base::android::JavaParamRef<jobject>& j_web_contents) {
   content::WebContents* web_contents =
       content::WebContents::FromJavaWebContents(j_web_contents);
   ChromeTranslateClient* chrome_translate_client =
@@ -35,5 +51,14 @@
   translate::TranslateManager* manager =
       chrome_translate_client->GetTranslateManager();
   DCHECK(manager);
-  return manager->CanManuallyTranslate();
+
+  const std::string page_lang = manager->GetLanguageState().original_language();
+  std::unique_ptr<translate::TranslatePrefs> translate_prefs(
+      chrome_translate_client->GetTranslatePrefs());
+
+  return base::StartsWith(page_lang, "en",
+                          base::CompareCase::INSENSITIVE_ASCII) &&
+         language::ShouldForceTriggerTranslateOnEnglishPages(
+             translate_prefs->GetForceTriggerOnEnglishPagesCount()) &&
+         manager->GetLanguageState().translate_enabled();
 }
diff --git a/chrome/browser/ui/ash/network/network_state_notifier.cc b/chrome/browser/ui/ash/network/network_state_notifier.cc
index c0c2f30..85961f8 100644
--- a/chrome/browser/ui/ash/network/network_state_notifier.cc
+++ b/chrome/browser/ui/ash/network/network_state_notifier.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/ui/ash/system_tray_client.h"
 #include "chrome/grit/generated_resources.h"
 #include "chromeos/network/network_configuration_handler.h"
+#include "chromeos/network/network_connect.h"
 #include "chromeos/network/network_connection_handler.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
@@ -263,7 +264,7 @@
     ShowErrorNotification(
         cellular->path(), kNetworkOutOfCreditsNotificationId, cellular->type(),
         l10n_util::GetStringUTF16(IDS_NETWORK_OUT_OF_CREDITS_TITLE), error_msg,
-        base::Bind(&NetworkStateNotifier::ShowNetworkSettings,
+        base::Bind(&NetworkStateNotifier::ShowMobileSetup,
                    weak_ptr_factory_.GetWeakPtr(), cellular->guid()));
   }
 }
@@ -505,4 +506,8 @@
   }
 }
 
+void NetworkStateNotifier::ShowMobileSetup(const std::string& network_id) {
+  NetworkConnect::Get()->ShowMobileSetup(network_id);
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/ui/ash/network/network_state_notifier.h b/chrome/browser/ui/ash/network/network_state_notifier.h
index bb8ff00..57d1aff 100644
--- a/chrome/browser/ui/ash/network/network_state_notifier.h
+++ b/chrome/browser/ui/ash/network/network_state_notifier.h
@@ -95,6 +95,9 @@
   // Shows the network settings for |network_id|.
   void ShowNetworkSettings(const std::string& network_id);
 
+  // Shows the mobile setup dialog for |network_id|.
+  void ShowMobileSetup(const std::string& network_id);
+
   std::string last_default_network_;
   bool did_show_out_of_credits_;
   base::Time out_of_credits_notify_time_;
diff --git a/chrome/browser/ui/ash/network/tether_notification_presenter.cc b/chrome/browser/ui/ash/network/tether_notification_presenter.cc
index 0134863..7153fcf 100644
--- a/chrome/browser/ui/ash/network/tether_notification_presenter.cc
+++ b/chrome/browser/ui/ash/network/tether_notification_presenter.cc
@@ -125,9 +125,9 @@
 void TetherNotificationPresenter::NotifyPotentialHotspotNearby(
     cryptauth::RemoteDeviceRef remote_device,
     int signal_strength) {
-  PA_LOG(INFO) << "Displaying \"potential hotspot nearby\" notification for "
-               << "device with name \"" << remote_device.name() << "\". "
-               << "Notification ID = " << kPotentialHotspotNotificationId;
+  PA_LOG(VERBOSE) << "Displaying \"potential hotspot nearby\" notification for "
+                  << "device with name \"" << remote_device.name() << "\". "
+                  << "Notification ID = " << kPotentialHotspotNotificationId;
 
   hotspot_nearby_device_id_ =
       std::make_unique<std::string>(remote_device.GetDeviceId());
@@ -148,9 +148,9 @@
 }
 
 void TetherNotificationPresenter::NotifyMultiplePotentialHotspotsNearby() {
-  PA_LOG(INFO) << "Displaying \"potential hotspot nearby\" notification for "
-               << "multiple devices. Notification ID = "
-               << kPotentialHotspotNotificationId;
+  PA_LOG(VERBOSE) << "Displaying \"potential hotspot nearby\" notification for "
+                  << "multiple devices. Notification ID = "
+                  << kPotentialHotspotNotificationId;
 
   hotspot_nearby_device_id_.reset();
 
@@ -185,8 +185,8 @@
 void TetherNotificationPresenter::NotifySetupRequired(
     const std::string& device_name,
     int signal_strength) {
-  PA_LOG(INFO) << "Displaying \"setup required\" notification. Notification "
-               << "ID = " << kSetupRequiredNotificationId;
+  PA_LOG(VERBOSE) << "Displaying \"setup required\" notification. Notification "
+                  << "ID = " << kSetupRequiredNotificationId;
 
   ShowNotification(CreateNotification(
       kSetupRequiredNotificationId,
@@ -204,8 +204,8 @@
 
 void TetherNotificationPresenter::NotifyConnectionToHostFailed() {
   const std::string id = kActiveHostNotificationId;
-  PA_LOG(INFO) << "Displaying \"connection attempt failed\" notification. "
-               << "Notification ID = " << id;
+  PA_LOG(VERBOSE) << "Displaying \"connection attempt failed\" notification. "
+                  << "Notification ID = " << id;
 
   ShowNotification(message_center::Notification::CreateSystemNotification(
       message_center::NotificationType::NOTIFICATION_TYPE_SIMPLE, id,
@@ -240,8 +240,8 @@
         "InstantTethering.NotificationInteractionType",
         TetherNotificationPresenter::NOTIFICATION_BUTTON_TAPPED_HOST_NEARBY,
         TetherNotificationPresenter::NOTIFICATION_INTERACTION_TYPE_MAX);
-    PA_LOG(INFO) << "\"Potential hotspot nearby\" notification button was "
-                 << "clicked.";
+    PA_LOG(VERBOSE) << "\"Potential hotspot nearby\" notification button was "
+                    << "clicked.";
     network_connect_->ConnectToNetworkId(*hotspot_nearby_device_id_);
     RemoveNotificationIfVisible(kPotentialHotspotNotificationId);
     return;
@@ -326,8 +326,9 @@
 void TetherNotificationPresenter::OpenSettingsAndRemoveNotification(
     const std::string& settings_subpage,
     const std::string& notification_id) {
-  PA_LOG(INFO) << "Notification with ID " << notification_id << " was clicked. "
-               << "Opening settings subpage: " << settings_subpage;
+  PA_LOG(VERBOSE) << "Notification with ID " << notification_id
+                  << " was clicked. "
+                  << "Opening settings subpage: " << settings_subpage;
 
   settings_ui_delegate_->ShowSettingsSubPageForProfile(profile_,
                                                        settings_subpage);
diff --git a/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc b/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
index 199c25e2..3cde2e7 100644
--- a/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
+++ b/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
@@ -427,15 +427,18 @@
   ASSERT_EQ(1, GetBlockedContentsCount());
 }
 
-IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, PopupsLaunchWhenTabIsClosed) {
+IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, NoPopupsLaunchWhenTabIsClosed) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       switches::kDisablePopupBlocking);
   GURL url(
       embedded_test_server()->GetURL("/popup_blocker/popup-on-unload.html"));
   ui_test_utils::NavigateToURL(browser(), url);
 
-  NavigateAndCheckPopupShown(embedded_test_server()->GetURL("/popup_blocker/"),
-                             kExpectPopup);
+  GURL url2(embedded_test_server()->GetURL("/popup_blocker/"));
+  ui_test_utils::NavigateToURL(browser(), url2);
+
+  // Expect no popup.
+  ASSERT_EQ(1u, chrome::GetBrowserCount(browser()->profile()));
 }
 
 // Verify that when you unblock popup, the popup shows in history and omnibox.
diff --git a/chrome/browser/ui/libgtkui/gtk_util.cc b/chrome/browser/ui/libgtkui/gtk_util.cc
index 29db519..42b8ac9 100644
--- a/chrome/browser/ui/libgtkui/gtk_util.cc
+++ b/chrome/browser/ui/libgtkui/gtk_util.cc
@@ -31,6 +31,8 @@
 
 namespace {
 
+const char kAuraTransientParent[] = "aura-transient-parent";
+
 void CommonInitFromCommandLine(const base::CommandLine& command_line) {
 #if GTK_CHECK_VERSION(3, 90, 0)
   gtk_init();
@@ -136,6 +138,19 @@
   XSetTransientForHint(GDK_WINDOW_XDISPLAY(gdk_window),
                        GDK_WINDOW_XID(gdk_window),
                        parent->GetHost()->GetAcceleratedWidget());
+
+  // We also set the |parent| as a property of |dialog|, so that we can unlink
+  // the two later.
+  g_object_set_data(G_OBJECT(dialog), kAuraTransientParent, parent);
+}
+
+aura::Window* GetAuraTransientParent(GtkWidget* dialog) {
+  return reinterpret_cast<aura::Window*>(
+      g_object_get_data(G_OBJECT(dialog), kAuraTransientParent));
+}
+
+void ClearAuraTransientParent(GtkWidget* dialog) {
+  g_object_set_data(G_OBJECT(dialog), kAuraTransientParent, nullptr);
 }
 
 void ParseButtonLayout(const std::string& button_string,
diff --git a/chrome/browser/ui/libgtkui/gtk_util.h b/chrome/browser/ui/libgtkui/gtk_util.h
index 7a9b047..32b0a39 100644
--- a/chrome/browser/ui/libgtkui/gtk_util.h
+++ b/chrome/browser/ui/libgtkui/gtk_util.h
@@ -53,6 +53,12 @@
 // it above |parent|. Do nothing if |parent| is nullptr.
 void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
 
+// Gets the transient parent aura window for |dialog|.
+aura::Window* GetAuraTransientParent(GtkWidget* dialog);
+
+// Clears the transient parent for |dialog|.
+void ClearAuraTransientParent(GtkWidget* dialog);
+
 // Parses |button_string| into |leading_buttons| and
 // |trailing_buttons|.  The string is of the format
 // "<button>*:<button*>", for example, "close:minimize:maximize".
diff --git a/chrome/browser/ui/libgtkui/print_dialog_gtk.cc b/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
index ecc47ab..d8b8d21 100644
--- a/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+++ b/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
@@ -180,8 +180,11 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   if (dialog_) {
-    if (parent_)
-      parent_->RemoveObserver(this);
+    aura::Window* parent = libgtkui::GetAuraTransientParent(dialog_);
+    if (parent) {
+      parent->RemoveObserver(this);
+      libgtkui::ClearAuraTransientParent(dialog_);
+    }
     gtk_widget_destroy(dialog_);
     dialog_ = nullptr;
   }
@@ -311,7 +314,6 @@
 
   dialog_ = gtk_print_unix_dialog_new(nullptr, nullptr);
   libgtkui::SetGtkTransientForAura(dialog_, parent_view);
-  parent_ = parent_view;
   if (parent_view)
     parent_view->AddObserver(this);
   g_signal_connect(dialog_, "delete-event",
@@ -525,8 +527,9 @@
 }
 
 void PrintDialogGtk::OnWindowDestroying(aura::Window* window) {
-  DCHECK_EQ(parent_, window);
-  parent_ = nullptr;
+  DCHECK_EQ(libgtkui::GetAuraTransientParent(dialog_), window);
+
+  libgtkui::ClearAuraTransientParent(dialog_);
   window->RemoveObserver(this);
   if (callback_)
     std::move(callback_).Run(PrintingContextLinux::CANCEL);
diff --git a/chrome/browser/ui/libgtkui/print_dialog_gtk.h b/chrome/browser/ui/libgtkui/print_dialog_gtk.h
index c1c7a2ff..08d1f17 100644
--- a/chrome/browser/ui/libgtkui/print_dialog_gtk.h
+++ b/chrome/browser/ui/libgtkui/print_dialog_gtk.h
@@ -84,8 +84,6 @@
   GtkPageSetup* page_setup_ = nullptr;
   GtkPrinter* printer_ = nullptr;
 
-  aura::Window* parent_ = nullptr;
-
   base::FilePath path_to_pdf_;
 
   DISALLOW_COPY_AND_ASSIGN(PrintDialogGtk);
diff --git a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc
index 3d8d930..5cab3f9e 100644
--- a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc
+++ b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc
@@ -62,6 +62,12 @@
   delete file_extension;
 }
 
+// Runs DesktopWindowTreeHostX11::EnableEventListening() when the file-picker
+// is closed.
+void OnFilePickerDestroy(base::Closure* callback) {
+  callback->Run();
+}
+
 }  // namespace
 
 namespace libgtkui {
@@ -86,16 +92,17 @@
     : SelectFileDialogImpl(listener, std::move(policy)), preview_(nullptr) {}
 
 SelectFileDialogImplGTK::~SelectFileDialogImplGTK() {
-  while (!dialogs_.empty())
-    DestroyDialog(dialogs_.begin()->first);
+  for (std::set<aura::Window*>::iterator iter = parents_.begin();
+       iter != parents_.end(); ++iter) {
+    (*iter)->RemoveObserver(this);
+  }
+  while (dialogs_.begin() != dialogs_.end()) {
+    gtk_widget_destroy(*(dialogs_.begin()));
+  }
 }
 
 bool SelectFileDialogImplGTK::IsRunning(gfx::NativeWindow parent_window) const {
-  for (auto& pair : dialogs_) {
-    if (pair.second->parent == parent_window)
-      return true;
-  }
-  return false;
+  return parents_.find(parent_window) != parents_.end();
 }
 
 bool SelectFileDialogImplGTK::HasMultipleFileTypeChoicesImpl() {
@@ -104,11 +111,17 @@
 
 void SelectFileDialogImplGTK::OnWindowDestroying(aura::Window* window) {
   // Remove the |parent| property associated with the |dialog|.
-  for (auto& pair : dialogs_) {
-    if (pair.second->parent == window) {
-      pair.second->parent = nullptr;
-      window->RemoveObserver(this);
-    }
+  for (std::set<GtkWidget*>::iterator it = dialogs_.begin();
+       it != dialogs_.end(); ++it) {
+    aura::Window* parent = GetAuraTransientParent(*it);
+    if (parent == window)
+      ClearAuraTransientParent(*it);
+  }
+
+  std::set<aura::Window*>::iterator iter = parents_.find(window);
+  if (iter != parents_.end()) {
+    (*iter)->RemoveObserver(this);
+    parents_.erase(iter);
   }
 }
 
@@ -122,12 +135,10 @@
     const base::FilePath::StringType& default_extension,
     gfx::NativeWindow owning_window,
     void* params) {
-  std::unique_ptr<WidgetData> widget_data = std::make_unique<WidgetData>();
-
   type_ = type;
   if (owning_window) {
     owning_window->AddObserver(this);
-    widget_data->parent = owning_window;
+    parents_.insert(owning_window);
   }
 
   std::string title_string = base::UTF16ToUTF8(title);
@@ -160,6 +171,7 @@
   }
   g_signal_connect(dialog, "delete-event",
                    G_CALLBACK(gtk_widget_hide_on_delete), nullptr);
+  dialogs_.insert(dialog);
 
   preview_ = gtk_image_new();
   g_signal_connect(dialog, "destroy", G_CALLBACK(OnFileChooserDestroyThunk),
@@ -168,7 +180,7 @@
                    this);
   gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog), preview_);
 
-  widget_data->params = params;
+  params_map_[dialog] = params;
 
   // Disable input events handling in the host window to make this dialog modal.
   if (owning_window) {
@@ -178,16 +190,20 @@
       // been captured and by turning off event listening, it is never
       // released. So we manually ensure there is no current capture.
       host->ReleaseCapture();
-      widget_data->enable_event_listening =
+      std::unique_ptr<base::Closure> callback =
           views::DesktopWindowTreeHostX11::GetHostForXID(
               host->GetAcceleratedWidget())
               ->DisableEventListening();
+      // OnFilePickerDestroy() is called when |dialog| destroyed, which allows
+      // to invoke the callback function to re-enable event handling on the
+      // owning window.
+      g_object_set_data_full(
+          G_OBJECT(dialog), "callback", callback.release(),
+          reinterpret_cast<GDestroyNotify>(OnFilePickerDestroy));
       gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
     }
   }
 
-  dialogs_[dialog] = std::move(widget_data);
-
 #if !GTK_CHECK_VERSION(3, 90, 0)
   gtk_widget_show_all(dialog);
 #endif
@@ -272,9 +288,9 @@
     GSList* filters = gtk_file_chooser_list_filters(GTK_FILE_CHOOSER(dialog));
     int idx = g_slist_index(filters, selected_filter);
     g_slist_free(filters);
-    listener_->FileSelected(path, idx + 1, GetParamsForDialog(dialog));
+    listener_->FileSelected(path, idx + 1, PopParamsForDialog(dialog));
   }
-  DestroyDialog(dialog);
+  gtk_widget_destroy(dialog);
 }
 
 void SelectFileDialogImplGTK::MultiFilesSelected(
@@ -283,15 +299,15 @@
   *last_opened_path_ = files[0].DirName();
 
   if (listener_)
-    listener_->MultiFilesSelected(files, GetParamsForDialog(dialog));
-  DestroyDialog(dialog);
+    listener_->MultiFilesSelected(files, PopParamsForDialog(dialog));
+  gtk_widget_destroy(dialog);
 }
 
 void SelectFileDialogImplGTK::FileNotSelected(GtkWidget* dialog) {
-  void* params = GetParamsForDialog(dialog);
+  void* params = PopParamsForDialog(dialog);
   if (listener_)
     listener_->FileSelectionCanceled(params);
-  DestroyDialog(dialog);
+  gtk_widget_destroy(dialog);
 }
 
 GtkWidget* SelectFileDialogImplGTK::CreateFileOpenHelper(
@@ -438,37 +454,12 @@
   return dialog;
 }
 
-void SelectFileDialogImplGTK::DestroyDialog(GtkWidget* dialog) {
-  if (dialogs_.find(dialog) == dialogs_.end())
-    return;
-
-  // Ensure all signals associated with |dialog| that point back to |this| get
-  // cleaned up so there's no possibility of calling back into |this| after it
-  // gets destroyed.
-  gulong signal = 0;
-  while ((signal = g_signal_handler_find(dialog, G_SIGNAL_MATCH_DATA, 0, 0,
-                                         nullptr, nullptr, this))) {
-    g_signal_handler_disconnect(dialog, signal);
-  }
-
-  gtk_widget_destroy(dialog);
-  OnFileChooserDestroyInternal(dialog);
-}
-
-void SelectFileDialogImplGTK::OnFileChooserDestroyInternal(GtkWidget* dialog) {
-  CHECK(dialog);
-  // |parent| can be nullptr when closing the host window
-  // while opening the file-picker.
-  aura::Window* parent = dialogs_[dialog]->parent;
-  if (parent)
-    parent->RemoveObserver(this);
-  std::move(*dialogs_[dialog]->enable_event_listening).Run();
-  dialogs_.erase(dialog);
-}
-
-void* SelectFileDialogImplGTK::GetParamsForDialog(GtkWidget* dialog) {
-  DCHECK(dialogs_.find(dialog) != dialogs_.end());
-  return dialogs_[dialog]->params;
+void* SelectFileDialogImplGTK::PopParamsForDialog(GtkWidget* dialog) {
+  std::map<GtkWidget*, void*>::iterator iter = params_map_.find(dialog);
+  DCHECK(iter != params_map_.end());
+  void* params = iter->second;
+  params_map_.erase(iter);
+  return params;
 }
 
 bool SelectFileDialogImplGTK::IsCancelResponse(gint response_id) {
@@ -512,20 +503,17 @@
 void SelectFileDialogImplGTK::OnSelectSingleFileDialogResponse(
     GtkWidget* dialog,
     int response_id) {
-  scoped_refptr<SelectFileDialogImplGTK> keep_alive{this};
   SelectSingleFileHelper(dialog, response_id, false);
 }
 
 void SelectFileDialogImplGTK::OnSelectSingleFolderDialogResponse(
     GtkWidget* dialog,
     int response_id) {
-  scoped_refptr<SelectFileDialogImplGTK> keep_alive{this};
   SelectSingleFileHelper(dialog, response_id, true);
 }
 
 void SelectFileDialogImplGTK::OnSelectMultiFileDialogResponse(GtkWidget* dialog,
                                                               int response_id) {
-  scoped_refptr<SelectFileDialogImplGTK> keep_alive{this};
   if (IsCancelResponse(response_id)) {
     FileNotSelected(dialog);
     return;
@@ -555,12 +543,23 @@
 }
 
 void SelectFileDialogImplGTK::OnFileChooserDestroy(GtkWidget* dialog) {
-  scoped_refptr<SelectFileDialogImplGTK> keep_alive{this};
-  OnFileChooserDestroyInternal(dialog);
+  dialogs_.erase(dialog);
+
+  // |parent| can be nullptr when closing the host window
+  // while opening the file-picker.
+  aura::Window* parent = GetAuraTransientParent(dialog);
+  if (!parent)
+    return;
+  std::set<aura::Window*>::iterator iter = parents_.find(parent);
+  if (iter != parents_.end()) {
+    (*iter)->RemoveObserver(this);
+    parents_.erase(iter);
+  } else {
+    NOTREACHED();
+  }
 }
 
 void SelectFileDialogImplGTK::OnUpdatePreview(GtkWidget* chooser) {
-  scoped_refptr<SelectFileDialogImplGTK> keep_alive{this};
   gchar* filename =
       gtk_file_chooser_get_preview_filename(GTK_FILE_CHOOSER(chooser));
   if (!filename) {
@@ -591,8 +590,4 @@
                                              pixbuf ? TRUE : FALSE);
 }
 
-SelectFileDialogImplGTK::WidgetData::WidgetData() {}
-
-SelectFileDialogImplGTK::WidgetData::~WidgetData() {}
-
 }  // namespace libgtkui
diff --git a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.h b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.h
index 53eaeac8..1022a01 100644
--- a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.h
+++ b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.h
@@ -5,7 +5,6 @@
 #ifndef CHROME_BROWSER_UI_LIBGTKUI_SELECT_FILE_DIALOG_IMPL_GTK_H_
 #define CHROME_BROWSER_UI_LIBGTKUI_SELECT_FILE_DIALOG_IMPL_GTK_H_
 
-#include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "chrome/browser/ui/libgtkui/gtk_util.h"
 #include "chrome/browser/ui/libgtkui/select_file_dialog_impl.h"
@@ -40,20 +39,6 @@
 
  private:
   friend class FilePicker;
-
-  struct WidgetData {
-    WidgetData();
-    ~WidgetData();
-
-    // User data that we pass back to |listener_| once the result of the select
-    // file/folder action is known.
-    void* params = nullptr;
-
-    aura::Window* parent = nullptr;
-
-    std::unique_ptr<base::OnceClosure> enable_event_listening;
-  };
-
   bool HasMultipleFileTypeChoicesImpl() override;
 
   // Overridden from aura::WindowObserver:
@@ -91,8 +76,9 @@
                                 const base::FilePath& default_path,
                                 gfx::NativeWindow parent);
 
-  // Returns the |params| associated with |dialog|.
-  void* GetParamsForDialog(GtkWidget* dialog);
+  // Removes and returns the |params| associated with |dialog| from
+  // |params_map_|.
+  void* PopParamsForDialog(GtkWidget* dialog);
 
   // Check whether response_id corresponds to the user cancelling/closing the
   // dialog. Used as a helper for the below callbacks.
@@ -109,16 +95,6 @@
                                   const base::FilePath& default_path,
                                   gfx::NativeWindow parent);
 
-  // Destroys the widget and deallocates all resources for dialogs_[dialog].
-  void DestroyDialog(GtkWidget* dialog);
-
-  // Deallocates all resources for dialogs_[dialog].
-  void OnFileChooserDestroyInternal(GtkWidget* dialog);
-
-  // The below callbacks may only be called from GTK, otherwise it's possible
-  // that the keep_alive scoped_refptr's will double-destruct |this|
-  // (https://crbug.com/897999).
-
   // Callback for when the user responds to a Save As or Open File dialog.
   CHROMEG_CALLBACK_1(SelectFileDialogImplGTK,
                      void,
@@ -152,11 +128,17 @@
                      OnUpdatePreview,
                      GtkWidget*);
 
+  // A map from dialog windows to the |params| user data associated with them.
+  std::map<GtkWidget*, void*> params_map_;
+
   // The GtkImage widget for showing previews of selected images.
   GtkWidget* preview_;
 
   // All our dialogs.
-  base::flat_map<GtkWidget*, std::unique_ptr<WidgetData>> dialogs_;
+  std::set<GtkWidget*> dialogs_;
+
+  // The set of all parent windows for which we are currently running dialogs.
+  std::set<aura::Window*> parents_;
 
   DISALLOW_COPY_AND_ASSIGN(SelectFileDialogImplGTK);
 };
diff --git a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc
index 9b88f59..ddd01834 100644
--- a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc
+++ b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc
@@ -55,7 +55,7 @@
         static_cast<SelectFileDialogImplGTK*>(select_file_dialog_.get());
 
     while (!file_dialog->dialogs_.empty())
-      gtk_widget_destroy(file_dialog->dialogs_.begin()->first);
+      gtk_widget_destroy(*(file_dialog->dialogs_.begin()));
 
     select_file_dialog_->ListenerDestroyed();
   }
@@ -85,7 +85,7 @@
   GtkFileChooser* getChooser() {
     auto* dialog =
         static_cast<SelectFileDialogImplGTK*>(select_file_dialog_.get());
-    return GTK_FILE_CHOOSER(dialog->dialogs_.begin()->first);
+    return GTK_FILE_CHOOSER(*(dialog->dialogs_.begin()));
   }
 
   DISALLOW_COPY_AND_ASSIGN(FilePicker);
diff --git a/chrome/browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc b/chrome/browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc
index db3a1012..0bc450b 100644
--- a/chrome/browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc
+++ b/chrome/browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc
@@ -51,7 +51,7 @@
 
 
     while (!file_dialog->dialogs_.empty())
-      gtk_widget_destroy(file_dialog->dialogs_.begin()->first);
+      gtk_widget_destroy(*(file_dialog->dialogs_.begin()));
   }
 
   // SelectFileDialog::Listener implementation.
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
index 1a9a55c..5318d54 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
@@ -82,9 +82,6 @@
 // The indicator for teleported windows has 8 DIPs before and below it.
 constexpr int kProfileIndicatorPadding = 8;
 
-// The indicator for teleported windows is 24 DIP on a side.
-constexpr int kProfileIndicatorSize = 24;
-
 bool IsV1AppBackButtonEnabled() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
       ash::switches::kAshEnableV1AppBackButton);
@@ -737,7 +734,7 @@
 int BrowserNonClientFrameViewAsh::GetTabStripLeftInset() const {
   int left_inset = frame_values().normal_insets.left();
   if (profile_indicator_icon_)
-    left_inset += kProfileIndicatorPadding + kProfileIndicatorSize;
+    left_inset += kProfileIndicatorPadding + profile_indicator_icon_->width();
   return left_inset;
 }
 
@@ -874,19 +871,22 @@
 void BrowserNonClientFrameViewAsh::UpdateProfileIcons() {
   View* root_view = frame()->GetRootView();
   if (ShouldShowProfileIndicatorIcon()) {
+    bool needs_layout = !profile_indicator_icon_;
     if (!profile_indicator_icon_) {
       profile_indicator_icon_ = new ProfileIndicatorIcon();
       AddChildView(profile_indicator_icon_);
-      if (root_view) {
-        // Adding a child does not invalidate the layout.
-        InvalidateLayout();
-        root_view->Layout();
-      }
     }
 
-    profile_indicator_icon_->SetIcon(gfx::Image(
-        GetAvatarImageForContext(browser_view()->browser()->profile())));
-    profile_indicator_icon_->set_stroke_color(GetToolbarTopSeparatorColor());
+    gfx::Image image(
+        GetAvatarImageForContext(browser_view()->browser()->profile()));
+    profile_indicator_icon_->SetSize(image.Size());
+    profile_indicator_icon_->SetIcon(image);
+
+    if (needs_layout && root_view) {
+      // Adding a child does not invalidate the layout.
+      InvalidateLayout();
+      root_view->Layout();
+    }
   } else if (profile_indicator_icon_) {
     delete profile_indicator_icon_;
     profile_indicator_icon_ = nullptr;
@@ -897,12 +897,15 @@
 
 void BrowserNonClientFrameViewAsh::LayoutProfileIndicator() {
   DCHECK(profile_indicator_icon_);
-  const int bottom = GetTopInset(false) + browser_view()->GetTabStripHeight() -
-                     kProfileIndicatorPadding;
-  profile_indicator_icon_->SetBounds(
-      kProfileIndicatorPadding, bottom - kProfileIndicatorSize,
-      kProfileIndicatorSize, kProfileIndicatorSize);
+  const int frame_height =
+      GetTopInset(false) + browser_view()->GetTabStripHeight();
+  profile_indicator_icon_->SetPosition(
+      gfx::Point(kProfileIndicatorPadding,
+                 (frame_height - profile_indicator_icon_->height()) / 2));
   profile_indicator_icon_->SetVisible(true);
+
+  // The layout size is set along with the image.
+  DCHECK_LE(profile_indicator_icon_->height(), frame_height);
 }
 
 ws::Id BrowserNonClientFrameViewAsh::GetServerWindowId() const {
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
index 9c1ec40..a5b83a4 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
@@ -229,6 +229,11 @@
   return GetSizeForLabelWidth(label_->GetPreferredSize().width());
 }
 
+void IconLabelBubbleView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
+  ink_drop_container_->SetBoundsRect(CalculateInkDropContainerBounds());
+  views::Button::OnBoundsChanged(previous_bounds);
+}
+
 void IconLabelBubbleView::Layout() {
   // We may not have horizontal room for both the image and the trailing
   // padding. When the view is expanding (or showing-label steady state), the
@@ -266,12 +271,7 @@
   separator_view_->SetBounds(separator_x, separator_bounds.y(), separator_width,
                              separator_height);
 
-  gfx::Rect ink_drop_bounds = GetLocalBounds();
-  if (ShouldShowSeparator()) {
-    ink_drop_bounds.set_width(ink_drop_bounds.width() -
-                              GetEndPaddingWithSeparator());
-  }
-
+  gfx::Rect ink_drop_bounds = CalculateInkDropContainerBounds();
   ink_drop_container_->SetBoundsRect(ink_drop_bounds);
 
   if (focus_ring() && !ink_drop_bounds.IsEmpty()) {
@@ -563,3 +563,10 @@
   GetInkDrop()->SetShowHighlightOnHover(false);
   GetInkDrop()->SetShowHighlightOnFocus(false);
 }
+
+gfx::Rect IconLabelBubbleView::CalculateInkDropContainerBounds() const {
+  gfx::Rect ink_drop_bounds = GetLocalBounds();
+  if (ShouldShowSeparator())
+    ink_drop_bounds.Inset(0, 0, GetEndPaddingWithSeparator(), 0);
+  return ink_drop_bounds;
+}
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
index cc256bd8..f1f4134 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
@@ -132,6 +132,7 @@
 
   // views::Button:
   gfx::Size CalculatePreferredSize() const override;
+  void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
   void Layout() override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
@@ -230,6 +231,8 @@
   // called directly, use AnimateOut() instead, which handles label visibility.
   void HideAnimation();
 
+  gfx::Rect CalculateInkDropContainerBounds() const;
+
   // The contents of the bubble.
   views::ImageView* image_;
   views::Label* label_;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index 063ef426..2de2ca4 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -243,14 +243,14 @@
   }
 }
 
-bool OmniboxViewViews::SelectionAtBeginning() {
+bool OmniboxViewViews::SelectionAtBeginning() const {
   const gfx::Range sel = GetSelectedRange();
-  return sel.GetMin() == 0;
+  return sel.GetMax() == 0;
 }
 
-bool OmniboxViewViews::SelectionAtEnd() {
+bool OmniboxViewViews::SelectionAtEnd() const {
   const gfx::Range sel = GetSelectedRange();
-  return sel.GetMax() == text().size();
+  return sel.GetMin() == text().size();
 }
 
 void OmniboxViewViews::EmphasizeURLComponents() {
@@ -551,14 +551,33 @@
       controller()->GetLocationBarModel()->GetSecurityLevel(false);
 }
 
-bool OmniboxViewViews::AtEndWithTabMatch() {
+// The following 2 methods implement the following table, which attempts to
+// handle left and right arrow keys versus LTR/RTL text and UI (which can be
+// different) as expected.
+//
+// LTR UI, LTR text, right arrow, at end (rightmost) - focuses
+// LTR UI, LTR text, left arrow, (regardless) - unfocuses
+// LTR UI, RTL text, right arrow, at beginning (rightmost) - focuses
+// LTR UI, RTL text, left arrow, (regardless) - unfocuses
+//
+// RTL UI, RTL text, left arrow, at end (leftmost) - focuses
+// RTL UI, RTL text, right arrow, (regardless) - unfocuses
+// RTL UI, LTR text, left arrow, at beginning (leftmost) - focuses
+// RTL UI, LTR text, right arrow, (regardless) - unfocuses
+
+bool OmniboxViewViews::TextAndUIDirectionMatch() const {
+  // If text and UI direction are RTL, or both aren't.
+  return (GetRenderText()->GetDisplayTextDirection() ==
+          base::i18n::RIGHT_TO_LEFT) == base::i18n::IsRTL();
+}
+
+bool OmniboxViewViews::AtEndWithTabMatch() const {
   if (model()->popup_model() &&  // Can be null in tests.
       model()->popup_model()->SelectedLineHasTabMatch()) {
-    const bool text_and_ui_direction_match =
-        (GetRenderText()->GetDisplayTextDirection() ==
-         base::i18n::RIGHT_TO_LEFT) == base::i18n::IsRTL();
-    return text_and_ui_direction_match ? SelectionAtEnd()
-                                       : SelectionAtBeginning();
+    // When text and UI direction match, 'end' is as expected,
+    // otherwise we use beginning.
+    return TextAndUIDirectionMatch() ? SelectionAtEnd()
+                                     : SelectionAtBeginning();
   }
   return false;
 }
@@ -644,8 +663,8 @@
       match, display_text, model()->popup_model()->selected_line(),
       model()->result().size(), is_tab_switch_button_focused,
       &friendly_suggestion_text_prefix_length_);
-  SetWindowTextAndCaretPos(display_text, display_text.length(), false,
-                           notify_text_changed);
+  int caret_pos = TextAndUIDirectionMatch() ? display_text.length() : 0;
+  SetWindowTextAndCaretPos(display_text, caret_pos, false, notify_text_changed);
 #if defined(OS_MACOSX)
   // On macOS, the text field value changed notification is not
   // announced, so we need to explicitly announce the suggestion text.
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
index 1d7cb9be..af289e4 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -91,9 +91,10 @@
   // "Search Google or type a URL" when the Omnibox is empty and unfocused.
   void InstallPlaceholderText();
 
-  // Indicates if the cursor is at one end. Accounts for text direction.
-  bool SelectionAtBeginning();
-  bool SelectionAtEnd();
+  // Indicates if the cursor is at one end of the input. Requires that both
+  // ends of the selection reside there.
+  bool SelectionAtBeginning() const;
+  bool SelectionAtEnd() const;
 
   // OmniboxView:
   void EmphasizeURLComponents() override;
@@ -191,8 +192,14 @@
   // steady-state elisions).  |gesture| is the user gesture causing unelision.
   bool UnapplySteadyStateElisions(UnelisionGesture gesture);
 
-  // Helper function for MaybeFocusTabButton() and MaybeUnfocusTabButton().
-  bool AtEndWithTabMatch();
+  // Informs if text and UI direction match (otherwise what "at end" means must
+  // flip.)
+  bool TextAndUIDirectionMatch() const;
+
+  // Returns true if the caret is completely at the end of the input, and if
+  // there's a tab match present. Helper function for MaybeFocusTabButton()
+  // and MaybeUnfocusTabButton().
+  bool AtEndWithTabMatch() const;
 
   // Attempts to either focus or unfocus the tab switch button (tests if all
   // conditions are met and makes necessary subroutine call) and returns
diff --git a/chrome/browser/ui/views/profiles/profile_indicator_icon.cc b/chrome/browser/ui/views/profiles/profile_indicator_icon.cc
index e3c1182..2e8a497 100644
--- a/chrome/browser/ui/views/profiles/profile_indicator_icon.cc
+++ b/chrome/browser/ui/views/profiles/profile_indicator_icon.cc
@@ -45,22 +45,6 @@
   canvas->DrawImageInt(modified_icon_, 0, 0, modified_icon_.width(),
                        modified_icon_.height(), dst_x, dst_y, dst_width,
                        dst_height, false);
-
-  if (stroke_color_ == SK_ColorTRANSPARENT)
-    return;
-
-  // Draw a 1px circular stroke (regardless of DSF) around the avatar icon.
-  const gfx::PointF center((dst_x + dst_width) / 2.0f,
-                           (dst_y + dst_height) / 2.0f);
-  cc::PaintFlags paint_flags;
-  paint_flags.setAntiAlias(true);
-  paint_flags.setStyle(cc::PaintFlags::kStroke_Style);
-  paint_flags.setColor(stroke_color_);
-  paint_flags.setStrokeWidth(1.0f / canvas->image_scale());
-  // Reduce the radius by 0.5f such that the circle overlaps with the edge of
-  // the image.
-  const float radius = (dst_width + dst_height) / 4.0f;
-  canvas->DrawCircle(center, radius - 0.5f, paint_flags);
 }
 
 void ProfileIndicatorIcon::SetIcon(const gfx::Image& icon) {
diff --git a/chrome/browser/ui/views/profiles/profile_indicator_icon.h b/chrome/browser/ui/views/profiles/profile_indicator_icon.h
index 4f1ee76..5cc443a 100644
--- a/chrome/browser/ui/views/profiles/profile_indicator_icon.h
+++ b/chrome/browser/ui/views/profiles/profile_indicator_icon.h
@@ -33,15 +33,10 @@
   // to Chrome avatar icons, will be resized and modified for the title bar.
   void SetIcon(const gfx::Image& icon);
 
-  // Sets the color to use for drawing a circular stroke around the icon image.
-  // Use SK_ColorTRANSPARENT not to draw any stroke.
-  void set_stroke_color(SkColor color) { stroke_color_ = color; }
-
  private:
   gfx::Image base_icon_;
   gfx::ImageSkia modified_icon_;
   int old_height_ = 0;
-  SkColor stroke_color_ = SK_ColorTRANSPARENT;
   DISALLOW_COPY_AND_ASSIGN(ProfileIndicatorIcon);
 };
 
diff --git a/chrome/browser/ui/views/tabs/new_tab_button.cc b/chrome/browser/ui/views/tabs/new_tab_button.cc
index c6f36b4..6a90a21d 100644
--- a/chrome/browser/ui/views/tabs/new_tab_button.cc
+++ b/chrome/browser/ui/views/tabs/new_tab_button.cc
@@ -225,7 +225,6 @@
 void NewTabButton::OnBoundsChanged(const gfx::Rect& previous_bounds) {
   const gfx::Size ink_drop_size = GetContentsBounds().size();
   GetInkDrop()->HostSizeChanged(ink_drop_size);
-  UpdateInkDropMaskLayerSize(ink_drop_size);
 }
 
 bool NewTabButton::GetHitTestMask(gfx::Path* mask) const {
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
index 3ef57bc..185dc5e 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
@@ -137,8 +137,8 @@
   std::unique_ptr<base::DictionaryValue> page_content_dictionary =
       GeneratePageContentDataDictionary();
   DCHECK(page_content_dictionary);
-  PA_LOG(INFO) << "Updating MultiDevice settings page content with: "
-               << *page_content_dictionary << ".";
+  PA_LOG(VERBOSE) << "Updating MultiDevice settings page content with: "
+                  << *page_content_dictionary << ".";
   FireWebUIListener("settings.updateMultidevicePageContentData",
                     *page_content_dictionary);
 }
@@ -166,8 +166,8 @@
   std::unique_ptr<base::DictionaryValue> page_content_dictionary =
       GeneratePageContentDataDictionary();
   DCHECK(page_content_dictionary);
-  PA_LOG(INFO) << "Responding to getPageContentData() request with: "
-               << *page_content_dictionary << ".";
+  PA_LOG(VERBOSE) << "Responding to getPageContentData() request with: "
+                  << *page_content_dictionary << ".";
 
   ResolveJavascriptCallback(base::Value(callback_id), *page_content_dictionary);
 }
@@ -213,7 +213,6 @@
 }
 
 void MultideviceHandler::HandleSetUpAndroidSms(const base::ListValue* args) {
-  PA_LOG(INFO) << "SetUpSMS triggered.";
   DCHECK(args->empty());
   android_sms_app_helper_->InstallAndLaunchAndroidSmsApp();
 }
diff --git a/chrome/common/extensions/api/developer_private.idl b/chrome/common/extensions/api/developer_private.idl
index a63582e..2cd288d6 100644
--- a/chrome/common/extensions/api/developer_private.idl
+++ b/chrome/common/extensions/api/developer_private.idl
@@ -201,10 +201,13 @@
     boolean granted;
   };
 
-  dictionary SpecificSiteControls {
+  dictionary RuntimeHostPermissions {
     // True if |hosts| contains an all hosts like pattern.
     boolean hasAllHosts;
 
+    // The current HostAccess setting for the extension.
+    HostAccess hostAccess;
+
     // The site controls for all granted and requested patterns.
     SiteControl[] hosts;
   };
@@ -213,12 +216,8 @@
     Permission[] simplePermissions;
 
     // Only populated for extensions that can be affected by the runtime host
-    // permissions feature.The current host access.
-    HostAccess? hostAccess;
-
-    // Only populated for extensions affected by the runtime host
-    // permissions feature and |hostAccess| is equal to ON_SPECIFIC_SITES.
-    SpecificSiteControls? specificSiteControls;
+    // permissions feature.
+    RuntimeHostPermissions? runtimeHostPermissions;
   };
 
   dictionary ExtensionInfo {
diff --git a/chrome/common/extensions/extension_constants.cc b/chrome/common/extensions/extension_constants.cc
index 65afef42..6ef7084 100644
--- a/chrome/common/extensions/extension_constants.cc
+++ b/chrome/common/extensions/extension_constants.cc
@@ -25,7 +25,6 @@
 const char kDataSaverExtensionId[] = "pfmgfdlgomnbgkofeojodiodmgpgmkac";
 const char kDriveExtensionId[] = "ghbmnnjooekpmoecnnnilnnbdlolhkhi";
 const char kDriveHostedAppId[] = "apdfllckaahabafndbhieahigkjlhalf";
-const char kEasyUnlockAppId[] = "mkaemigholebcgchlkbankmihknojeak";
 const char kEnterpriseWebStoreAppId[] = "afchcafgojfnemjkcbhfekplkmjaldaa";
 const char kGmailAppId[] = "pjkljhegncpnkpknbcohdijeoejaedia";
 const char kGoogleDocAppId[] = "aohghmighlieiainnegkcijnfilokake";
diff --git a/chrome/common/extensions/extension_constants.h b/chrome/common/extensions/extension_constants.h
index fbedb89..96da8008 100644
--- a/chrome/common/extensions/extension_constants.h
+++ b/chrome/common/extensions/extension_constants.h
@@ -48,9 +48,6 @@
 // The extension id of the Drive hosted app.
 extern const char kDriveHostedAppId[];
 
-// The extension id of the Easy Unlock component application.
-extern const char kEasyUnlockAppId[];
-
 // The extension id of the Enterprise Web Store component application.
 extern const char kEnterpriseWebStoreAppId[];
 
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
index 96f802d9..b9df528 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="am">
 <translation id="1296843352074373664">የGoogle ተጠቃሚ</translation>
 <translation id="1383286653814676580">የGoogle ምስክርነት አቅራቢ መግቢያ ገጽን ለማሄድ ስራ ላይ ይውላል።</translation>
+<translation id="195232392645680541">የGoogle መለያዎን ተጠቅመው ይግቡ።</translation>
+<translation id="3623301090691182018">የGoogle መለያ መግቢያ</translation>
+<translation id="4057329986137569701">አንድ ውስጣዊ ስህተት ተከስቷል።</translation>
+<translation id="4128734677223009352">ወደ Google መለያዎ መግባት አልተሳካም። ኮምፒውተሩ የበይነመረብ ግንኙነት እንዳለው ያረጋግጡ፣ ከዚያ እንደገና ይሞክሩ።</translation>
+<translation id="4307406925561182259">የተዘመነው የGoogle መለያ የይለፍ ቃልዎን በመጠቀም በመለያ ይግቡ።</translation>
+<translation id="6613125771987245372">በዚህ የGoogle መለያ መግባት አይፈቀድም። የተለየ መለያ ይሞክሩ።</translation>
 <translation id="8474372283141585908">የGoogle ምስክርነት አቅራቢ</translation>
 <translation id="866458870819756755">ተጠቃሚ ሊፈጠር አልቻለም።</translation>
 <translation id="8860262547644202689">የGoogle ምስክርነት አቅራቢ አጋዥ</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
index a9782128..93bdafb6 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ar">
 <translation id="1296843352074373664">‏مستخدم Google</translation>
 <translation id="1383286653814676580">‏يُستخدم لتشغيل صفحة تسجيل الدخول لمقدِّم بيانات الاعتماد في Google.</translation>
+<translation id="195232392645680541">‏سجِّل الدخول باستخدام حسابك على Google.</translation>
+<translation id="3623301090691182018">‏تسجيل الدخول إلى حساب Google</translation>
+<translation id="4057329986137569701">حدث خطأ داخلي.</translation>
+<translation id="4128734677223009352">‏تعذّر تسجيل الدخول إلى حسابك على Google. يُرجى التأكُّد من اتصال جهاز الكمبيوتر بالإنترنت ثم أعد المحاولة.</translation>
+<translation id="4307406925561182259">‏سجِّل الدخول باستخدام كلمة المرور المُحدَّثة لحسابك على Google.</translation>
+<translation id="6613125771987245372">‏لا يُسمَح بتسجيل الدخول باستخدام حساب Google هذا. يُرجى استخدام حساب آخر.</translation>
 <translation id="8474372283141585908">‏مقدِّم بيانات الاعتماد في Google</translation>
 <translation id="866458870819756755">تعذَّر إنشاء مستخدم.</translation>
 <translation id="8860262547644202689">‏مساعد مقدِّم بيانات الاعتماد في Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
index 9d17872..586e92c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="bg">
 <translation id="1296843352074373664">Потребител на Google</translation>
 <translation id="1383286653814676580">Служи за стартиране на страницата за вход за доставчика на идентификационни данни за Google.</translation>
+<translation id="195232392645680541">Влезте с профила си в Google.</translation>
+<translation id="3623301090691182018">Влизане в профил в Google</translation>
+<translation id="4057329986137569701">Възникна вътрешна грешка.</translation>
+<translation id="4128734677223009352">Влизането в профила ви в Google не бе успешно. Уверете се, че компютърът е свързан с интернет, и опитайте отново.</translation>
+<translation id="4307406925561182259">Влезте с актуализираната парола за профила си в Google.</translation>
+<translation id="6613125771987245372">Влизането с този профил в Google не е разрешено. Опитайте с друг.</translation>
 <translation id="8474372283141585908">Доставчик на идентификационни данни за Google</translation>
 <translation id="866458870819756755">Създаването на потребител не бе успешно.</translation>
 <translation id="8860262547644202689">Помощник на доставчика на идентификационни данни за Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
index 28fd20b..6b9b651 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="bn">
 <translation id="1296843352074373664">Google ব্যবহারকারী</translation>
 <translation id="1383286653814676580">Google ক্রেডেনশিয়াল প্রোভাইডার সাইন-ইন পৃষ্ঠা চালানোর জন্য ব্যবহার করা হয়।</translation>
+<translation id="195232392645680541">আপনার Google অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করুন।</translation>
+<translation id="3623301090691182018">Google অ্যাকাউন্ট সাইন-ইন করুন</translation>
+<translation id="4057329986137569701">একটি অভ্যন্তরীণ সমস্যা হয়েছে।</translation>
+<translation id="4128734677223009352">আপনার Google অ্যাকাউন্টে সাইন-ইন করা যায়নি। কম্পিউটারে ইন্টারনেট কানেকশন আছে কিনা তা দেখে নিয়ে আবার চেষ্টা করুন।</translation>
+<translation id="4307406925561182259">আপডেট হওয়া Google অ্যাকাউন্টের পাসওয়ার্ড ব্যবহার করে সাইন-ইন করুন।</translation>
+<translation id="6613125771987245372">এই Google অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করা যাবে না। অন্য একটি অ্যাকাউন্ট ব্যবহার করে দেখুন।</translation>
 <translation id="8474372283141585908">Google ক্রেডেনশিয়াল প্রোভাইডার</translation>
 <translation id="866458870819756755">ব্যবহারকারী তৈরি করা যায়নি।</translation>
 <translation id="8860262547644202689">Google ক্রেডেনশিয়াল প্রোভাইডার হেল্পার</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
index 7557548..e0ab523 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="cs">
 <translation id="1296843352074373664">Uživatel Googlu</translation>
 <translation id="1383286653814676580">Používá se ke spuštění přihlašovací stránky poskytovatele identifikačních údajů Google.</translation>
+<translation id="195232392645680541">Přihlaste se pomocí účtu Google.</translation>
+<translation id="3623301090691182018">Přihlášení k účtu Google</translation>
+<translation id="4057329986137569701">Došlo k interní chybě.</translation>
+<translation id="4128734677223009352">Přihlášení k účtu Google se nezdařilo. Zkontrolujte, zda je počítač připojen k internetu, a potom to zkuste znovu.</translation>
+<translation id="4307406925561182259">Přihlaste se pomocí aktualizovaného hesla svého účtu Google.</translation>
+<translation id="6613125771987245372">Přihlášení pomocí tohoto účtu Google není povoleno. Zkuste jiný účet.</translation>
 <translation id="8474372283141585908">Poskytovatel identifikačních údajů Google</translation>
 <translation id="866458870819756755">Uživatele se nepodařilo vytvořit.</translation>
 <translation id="8860262547644202689">Pomocný nástroj poskytovatele identifikačních údajů Google</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 66e2f9b..5f7cf69 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="es-419">
 <translation id="1296843352074373664">Usuario de Google</translation>
 <translation id="1383286653814676580">Se usa para ejecutar la página de acceso del proveedor de credenciales de Google.</translation>
+<translation id="195232392645680541">Accede con tu Cuenta de Google.</translation>
+<translation id="3623301090691182018">Acceso con la Cuenta de Google</translation>
+<translation id="4057329986137569701">Ocurrió un error interno.</translation>
+<translation id="4128734677223009352">No pudiste acceder a tu Cuenta de Google. Asegúrate de que la computadora tenga una conexión a Internet y vuelve a intentarlo.</translation>
+<translation id="4307406925561182259">Accede con la contraseña actualizada de tu Cuenta de Google.</translation>
+<translation id="6613125771987245372">No se permite acceder con esta Cuenta de Google. Intenta usar una cuenta diferente.</translation>
 <translation id="8474372283141585908">Proveedor de credenciales de Google</translation>
 <translation id="866458870819756755">No se pudo crear el usuario.</translation>
 <translation id="8860262547644202689">Asistente del proveedor de credenciales de Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
index 14639de2..c94e748 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="es">
 <translation id="1296843352074373664">Usuario de Google</translation>
 <translation id="1383286653814676580">Se usa para ejecutar la página de inicio de sesión de Google Credential Provider.</translation>
+<translation id="195232392645680541">Inicia sesión con tu cuenta de Google.</translation>
+<translation id="3623301090691182018">Inicio de sesión en la cuenta de Google</translation>
+<translation id="4057329986137569701">Se ha producido un error interno.</translation>
+<translation id="4128734677223009352">Se ha producido un error al iniciar sesión con tu cuenta de Google. Asegúrate de que el ordenador está conectado a Internet e inténtalo de nuevo.</translation>
+<translation id="4307406925561182259">Inicia sesión con la contraseña actualizada de tu cuenta de Google.</translation>
+<translation id="6613125771987245372">No se permite iniciar sesión con esta cuenta de Google, así que inténtalo con otra.</translation>
 <translation id="8474372283141585908">Google Credential Provider</translation>
 <translation id="866458870819756755">No se ha podido crear el usuario.</translation>
 <translation id="8860262547644202689">Asistente de Google Credential Provider</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
index a551bce..533b9d26 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="fa">
 <translation id="1296843352074373664">‏کاربر Google</translation>
 <translation id="1383286653814676580">‏برای اجرای صفحه ورود به سیستم «ارائه‌دهنده اطلاعات کاربری Google» استفاده می‌شود.</translation>
+<translation id="195232392645680541">‏با استفاده از حساب Google خود به سیستم وارد شوید.</translation>
+<translation id="3623301090691182018">‏ورود به سیستم حساب Google</translation>
+<translation id="4057329986137569701">خطای داخلی روی داد.</translation>
+<translation id="4128734677223009352">‏ورود به سیستم حساب Google انجام نشد. مطمئن شوید رایانه اتصال اینترنت داشته باشد و سپس دوباره امتحان کنید.</translation>
+<translation id="4307406925561182259">‏با گذرواژه به‌روزرسانی‌شده حساب Google خود به سیستم وارد شوید.</translation>
+<translation id="6613125771987245372">‏ورود به سیستم با حساب Google مجاز نیست. حساب دیگری را امتحان کنید.</translation>
 <translation id="8474372283141585908">‏ارائه‌دهنده اطلاعات کاربری Google</translation>
 <translation id="866458870819756755">کاربر ایجاد نشد.</translation>
 <translation id="8860262547644202689">‏راهنمای ارائه‌دهنده اطلاعات کاربری Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
index cf79519..26b5195 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="fil">
 <translation id="1296843352074373664">Google user</translation>
 <translation id="1383286653814676580">Ginagamit para paganahin ang page sa pag-sign in ng Google Credential Provider.</translation>
+<translation id="195232392645680541">Mag-sign in gamit ang iyong Google Account.</translation>
+<translation id="3623301090691182018">Pag-sign in sa Google Account</translation>
+<translation id="4057329986137569701">Nagkaroon ng internal na error.</translation>
+<translation id="4128734677223009352">Hindi naging matagumpay ang pag-sign in sa iyong Google Account. Tiyaking may koneksyon sa internet ang computer, pagkatapos ay subukang muli.</translation>
+<translation id="4307406925561182259">Mag-sign in gamit ang iyong na-update na password sa Google Account.</translation>
+<translation id="6613125771987245372">Hindi pinapahintulutan ang pag-sign in gamit ang Google Account na ito. Sumubok ng ibang account.</translation>
 <translation id="8474372283141585908">Google Credential Provider</translation>
 <translation id="866458870819756755">Hindi makagawa ng user.</translation>
 <translation id="8860262547644202689">Helper ng Google Credential Provider</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
index c529e9c2d..697b865 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="gu">
 <translation id="1296843352074373664">Google વપરાશકર્તા</translation>
 <translation id="1383286653814676580">Google લૉગ ઇન વિગત પ્રદાતા સાઇન ઇન પેજ ચલાવવા માટે ઉપયોગમાં લેવામાં આવે છે.</translation>
+<translation id="195232392645680541">તમારા Google એકાઉન્ટનો ઉપયોગ કરીને સાઇન ઇન કરો.</translation>
+<translation id="3623301090691182018">Google એકાઉન્ટ સાઇન-ઇન</translation>
+<translation id="4057329986137569701">કોઈ આંતરિક ભૂલ આવી.</translation>
+<translation id="4128734677223009352">તમારા Google એકાઉન્ટમાં સાઇન ઇન કરવામાં નિષ્ફળ થયાં. કમ્પ્યુટરમાં ઇન્ટરનેટ કનેક્શન હોવાની ખાતરી કરો, પછી ફરી પ્રયાસ કરો.</translation>
+<translation id="4307406925561182259">તમારા અપડેટ કરેલા Google એકાઉન્ટ પાસવર્ડનો ઉપયોગ કરીને સાઇન ઇન કરો.</translation>
+<translation id="6613125771987245372">આ Google એકાઉન્ટ વડે સાઇન ઇન કરવાની મંજૂરી નથી. અલગ એકાઉન્ટ અજમાવો.</translation>
 <translation id="8474372283141585908">Google લૉગ ઇન વિગત પ્રદાતા</translation>
 <translation id="866458870819756755">વપરાશકર્તા બનાવી શકાયો નથી.</translation>
 <translation id="8860262547644202689">Google લૉગ ઇન વિગત પ્રદાતા સહાયક</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
index 64543b3..8f8317ab 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="hi">
 <translation id="1296843352074373664">Google उपयोगकर्ता</translation>
 <translation id="1383286653814676580">'Google क्रेडेंशियल देने वाला' साइन इन पेज चलाने के लिए इस्तेमाल किया जाता है.</translation>
+<translation id="195232392645680541">अपने Google खाते का इस्तेमाल करके साइन इन करें.</translation>
+<translation id="3623301090691182018">Google खाता साइन-इन</translation>
+<translation id="4057329986137569701">कोई आंतरिक गड़बड़ी हुई.</translation>
+<translation id="4128734677223009352">आपके Google खाते में साइन इन नहीं हो पाया. पक्का कर लें कि कंप्यूटर इंटरनेट कनेक्शन से जुड़ा हुआ है, उसके बाद फिर से कोशिश करें.</translation>
+<translation id="4307406925561182259">अपने Google खाते के अपडेट किए गए पासवर्ड का इस्तेमाल करके साइन इन करें.</translation>
+<translation id="6613125771987245372">इस Google खाते से साइन इन नहीं किया जा सकता. कोई दूसरा खाता आज़माएं.</translation>
 <translation id="8474372283141585908">Google क्रेडेंशियल देने वाला</translation>
 <translation id="866458870819756755">उपयोगकर्ता बनाया नहीं जा सका.</translation>
 <translation id="8860262547644202689">Google क्रेडेंशियल देने वाला सहायक</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
index d028299..143d150 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="id">
 <translation id="1296843352074373664">Pengguna Google</translation>
 <translation id="1383286653814676580">Digunakan untuk menjalankan halaman login Penyedia Kredensial Google.</translation>
+<translation id="195232392645680541">Login menggunakan Akun Google Anda.</translation>
+<translation id="3623301090691182018">Info login Akun Google</translation>
+<translation id="4057329986137569701">Terjadi error internal.</translation>
+<translation id="4128734677223009352">Gagal login ke Akun Google Anda. Pastikan komputer memiliki sambungan internet, lalu coba lagi.</translation>
+<translation id="4307406925561182259">Login menggunakan sandi Akun Google Anda yang telah diperbarui.</translation>
+<translation id="6613125771987245372">Login dengan Akun Google ini tidak diizinkan. Harap coba akun lain.</translation>
 <translation id="8474372283141585908">Penyedia Kredensial Google</translation>
 <translation id="866458870819756755">Tidak dapat membuat pengguna.</translation>
 <translation id="8860262547644202689">Bantuan Penyedia Kredensial Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
index e0b59cd..b088ae4 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ja">
 <translation id="1296843352074373664">Google ユーザー</translation>
 <translation id="1383286653814676580">Google 認証プロバイダのログインページを実行するために使用します。</translation>
+<translation id="195232392645680541">Google アカウントでログインします。</translation>
+<translation id="3623301090691182018">Google アカウントでのログイン</translation>
+<translation id="4057329986137569701">内部エラーが発生しました。</translation>
+<translation id="4128734677223009352">Google アカウントにログインできませんでした。パソコンがインターネットに接続していることを確認してから、もう一度お試しください。</translation>
+<translation id="4307406925561182259">更新した Google アカウントのパスワードでログインします。</translation>
+<translation id="6613125771987245372">この Google アカウントでのログインは許可されていません。別のアカウントでお試しください。</translation>
 <translation id="8474372283141585908">Google 認証プロバイダ</translation>
 <translation id="866458870819756755">ユーザーを作成できませんでした。</translation>
 <translation id="8860262547644202689">Google 認証プロバイダ ヘルパー</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
index f9fe91a..56c0127 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="kn">
 <translation id="1296843352074373664">Google ಬಳಕೆದಾರ</translation>
 <translation id="1383286653814676580">Google ರುಜುವಾತು ಪೂರೈಕೆದಾರರ ಸೈನ್ ಇನ್ ಪುಟವನ್ನು ಚಲಾಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.</translation>
+<translation id="195232392645680541">ನಿಮ್ಮ Google ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
+<translation id="3623301090691182018">Google ಖಾತೆ ಸೈನ್-ಇನ್</translation>
+<translation id="4057329986137569701">ಆಂತರಿಕ ದೋಷ ಸಂಭವಿಸಿದೆ.</translation>
+<translation id="4128734677223009352">ನಿಮ್ಮ Google ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ. ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ, ತದನಂತರ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
+<translation id="4307406925561182259">ನಿಮ್ಮ ಅಪ್‌ಡೇಟ್ ಆಗಿರುವ Google ಖಾತೆಯ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
+<translation id="6613125771987245372">ಈ Google ಖಾತೆಯ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಲು ಅನುಮತಿಸಲಾಗಿಲ್ಲ. ಬೇರೊಂದು ಖಾತೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ.</translation>
 <translation id="8474372283141585908">Google ರುಜುವಾತು ಪೂರೈಕೆದಾರ</translation>
 <translation id="866458870819756755">ಬಳಕೆದಾರರೊಬ್ಬರನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ.</translation>
 <translation id="8860262547644202689">Google ರುಜುವಾತು ಪೂರೈಕೆದಾರ ಸಹಾಯಕ</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
index 1161007..293466b8 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ko">
 <translation id="1296843352074373664">Google 사용자</translation>
 <translation id="1383286653814676580">Google 사용자 인증 정보 제공업체 로그인 페이지에 사용됩니다.</translation>
+<translation id="195232392645680541">Google 계정으로 로그인하세요.</translation>
+<translation id="3623301090691182018">Google 계정 로그인</translation>
+<translation id="4057329986137569701">내부 오류가 발생했습니다.</translation>
+<translation id="4128734677223009352">Google 계정에 로그인하지 못했습니다. 컴퓨터가 인터넷에 연결되어 있는지 확인한 후 다시 시도해 보세요.</translation>
+<translation id="4307406925561182259">업데이트된 Google 계정 비밀번호를 사용하여 로그인하세요.</translation>
+<translation id="6613125771987245372">이 Google 계정으로는 로그인할 수 없습니다. 다른 계정을 사용해 보세요.</translation>
 <translation id="8474372283141585908">Google 사용자 인증 정보 제공업체</translation>
 <translation id="866458870819756755">사용자를 만들 수 없습니다.</translation>
 <translation id="8860262547644202689">Google 사용자 인증 정보 제공업체 도우미</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
index 1f2944a..e5da32e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ml">
 <translation id="1296843352074373664">Google ഉപയോക്താവ്</translation>
 <translation id="1383286653814676580">Google ക്രെഡൻഷ്യൽ പ്രൊവൈഡർ സൈൻ ഇൻ പേജ് റൺ ചെയ്യാൻ ഉപയോഗിച്ചു.</translation>
+<translation id="195232392645680541">നിങ്ങളുടെ Google അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക.</translation>
+<translation id="3623301090691182018">Google അക്കൗണ്ട് സൈന്‍ ഇന്‍ ചെയ്യല്‍</translation>
+<translation id="4057329986137569701">ഒരു ആന്തരിക പിശക് സംഭവിച്ചു.</translation>
+<translation id="4128734677223009352">Google അക്കൗണ്ടിലേക്ക് സൈന്‍ ഇന്‍ ചെയ്യാനായില്ല. കമ്പ്യൂട്ടറില്‍ ഇന്റർനെറ്റ് കണക്ഷനുണ്ടെന്ന് ഉറപ്പാക്കിയ ശേഷം വീണ്ടും ശ്രമിക്കുക.</translation>
+<translation id="4307406925561182259">നിങ്ങളുടെ അപ്ഡേറ്റ് ചെയ്‌ത Google അക്കൗണ്ട് പാസ്‌വേഡ് ഉപയോഗിച്ച് സൈന്‍ ഇന്‍ ചെയ്യുക.</translation>
+<translation id="6613125771987245372">ഈ Google അക്കൗണ്ട് ഉപയോഗിച്ചുള്ള സൈന്‍ ഇന്‍ ചെയ്യല്‍ അനുവദനീയമല്ല. മറ്റൊരു അക്കൗണ്ട് പരീക്ഷിക്കുക.</translation>
 <translation id="8474372283141585908">Google ക്രെഡന്‍ഷ്യല്‍ പ്രൊവൈഡർ</translation>
 <translation id="866458870819756755">ഒരു ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാനായില്ല.</translation>
 <translation id="8860262547644202689">Google ക്രെഡന്‍ഷ്യല്‍ പ്രൊവൈഡർ സഹായി‌</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
index c29493d..1693c84 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="mr">
 <translation id="1296843352074373664">Google वापरकर्ता</translation>
 <translation id="1383286653814676580">Google क्रेडेंशियल पुरवठादार साइन इन पेज रन करण्यासाठी वापरले.</translation>
+<translation id="195232392645680541">तुमचे Google खाते वापरून साइन इन करा</translation>
+<translation id="3623301090691182018">Google खाते साइन इन</translation>
+<translation id="4057329986137569701">अंतर्गत एरर आली.</translation>
+<translation id="4128734677223009352">तुमच्या Google खातेमध्ये साइन इन करता आले नाही. कॉंप्युटरमध्ये इंटरनेट कनेक्शन असल्याची खात्री करा, नंतर पुन्हा प्रयत्न करा.</translation>
+<translation id="4307406925561182259">तुमचे अपडेट केलेले Google खाते पासवर्ड वापरून साइन इन करा.</translation>
+<translation id="6613125771987245372">या Google खाते सह साइन इन करण्याची अनुमती आहे. वेगळे खाते वापरून पाहा.</translation>
 <translation id="8474372283141585908">Google क्रेडेंशियल पुरवठादार</translation>
 <translation id="866458870819756755">वापरकर्ता तयार करता आला नाही.</translation>
 <translation id="8860262547644202689">Google क्रेडेंशियल पुरवठादार मदतनीस</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
index 625b4f1..6c6ea65 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ms">
 <translation id="1296843352074373664">Pengguna Google</translation>
 <translation id="1383286653814676580">Digunakan untuk menjalankan halaman log masuk Penyedia Bukti Kelayakan Google.</translation>
+<translation id="195232392645680541">Log masuk menggunakan Akaun Google anda.</translation>
+<translation id="3623301090691182018">Log masuk Akaun Google</translation>
+<translation id="4057329986137569701">Ralat dalaman telah berlaku.</translation>
+<translation id="4128734677223009352">Gagal untuk log masuk ke Akaun Google anda. Pastikan komputer mempunyai sambungan Internet, kemudian cuba lagi.</translation>
+<translation id="4307406925561182259">Log masuk menggunakan kata laluan Akaun Google anda yang dikemas kini.</translation>
+<translation id="6613125771987245372">Log masuk dengan Akaun Google ini tidak dibenarkan. Cuba akaun lain.</translation>
 <translation id="8474372283141585908">Penyedia Bukti Kelayakan Google</translation>
 <translation id="866458870819756755">Pengguna tidak dapat dibuat.</translation>
 <translation id="8860262547644202689">Pembantu Penyedia Bukti Kelayakan Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
index 3fc5271..6c1230a1 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="no">
 <translation id="1296843352074373664">Google-bruker</translation>
 <translation id="1383286653814676580">Brukes til å kjøre påloggingssiden for Google-legitimasjonsleverandøren.</translation>
+<translation id="195232392645680541">Logg på med Google-kontoen din.</translation>
+<translation id="3623301090691182018">Pålogging til Google-konto</translation>
+<translation id="4057329986137569701">Det oppsto en intern feil.</translation>
+<translation id="4128734677223009352">Kunne ikke logge på Google-kontoen din. Sørg for at datamaskinen har en gyldig internettilkobling, og prøv på nytt.</translation>
+<translation id="4307406925561182259">Logg på med det oppdaterte passordet for Google-kontoen din.</translation>
+<translation id="6613125771987245372">Du kan ikke logge på med denne Google-kontoen. Prøv en annen konto.</translation>
 <translation id="8474372283141585908">Google-legitimasjonsleverandør</translation>
 <translation id="866458870819756755">Kunne ikke opprette bruker.</translation>
 <translation id="8860262547644202689">Hjelpefunksjon for Google-legitimasjonsleverandør</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
index 3456fb2cd..2fb0f38 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="pl">
 <translation id="1296843352074373664">Użytkownik Google</translation>
 <translation id="1383286653814676580">Używane do uruchamiania strony logowania dostawcy danych uwierzytelniających Google.</translation>
+<translation id="195232392645680541">Zaloguj się, używając swojego konta Google.</translation>
+<translation id="3623301090691182018">Logowanie się na konto Google</translation>
+<translation id="4057329986137569701">Wystąpił błąd wewnętrzny.</translation>
+<translation id="4128734677223009352">Nie udało się zalogować na to konto Google. Sprawdź, czy komputer jest połączony z internetem, i spróbuj jeszcze raz.</translation>
+<translation id="4307406925561182259">Zaloguj się, używając aktualnego hasła do konta Google.</translation>
+<translation id="6613125771987245372">Logowanie na to konto Google jest niedozwolone. Użyj innego konta.</translation>
 <translation id="8474372283141585908">Dostawca danych uwierzytelniających Google</translation>
 <translation id="866458870819756755">Nie udało się utworzyć użytkownika.</translation>
 <translation id="8860262547644202689">Konto pomocnicze dostawcy danych uwierzytelniających Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
index 55ef6af5..d20c9ffe0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ro">
 <translation id="1296843352074373664">Utilizator Google</translation>
 <translation id="1383286653814676580">Folosit pentru a afișa pagina de conectare la furnizorul de date de conectare la Google.</translation>
+<translation id="195232392645680541">Conectează-te folosind Contul Google.</translation>
+<translation id="3623301090691182018">Conectare cu un Cont Google</translation>
+<translation id="4057329986137569701">A apărut o eroare internă.</translation>
+<translation id="4128734677223009352">Conectarea la Contul Google nu a reușit. Asigură-te că acest computer e conectat la internet, apoi încearcă din nou.</translation>
+<translation id="4307406925561182259">Conectează-te folosind parola actualizată pentru Contul Google.</translation>
+<translation id="6613125771987245372">Conectarea cu acest Cont Google nu este permisă. Încearcă un alt cont.</translation>
 <translation id="8474372283141585908">Furnizor de date de conectare la Google</translation>
 <translation id="866458870819756755">Nu s-a putut crea un utilizator.</translation>
 <translation id="8860262547644202689">Asistentul furnizorului de date de conectare la Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
index 7ed4317..27e0ade77 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="sk">
 <translation id="1296843352074373664">Používateľ Googlu</translation>
 <translation id="1383286653814676580">Používa sa na spúšťanie prihlasovacej stránky poskytovateľa poverení Google</translation>
+<translation id="195232392645680541">Prihláste sa pomocou účtu Google.</translation>
+<translation id="3623301090691182018">Prihlásenie do účtu Google</translation>
+<translation id="4057329986137569701">Vyskytla sa interná chyba.</translation>
+<translation id="4128734677223009352">Nepodarilo sa prihlásiť do účtu Google. Skontrolujte, či má počítač internetové pripojenie, a potom to skúste znova.</translation>
+<translation id="4307406925561182259">Prihláste sa pomocou aktualizovaného hesla účtu Google.</translation>
+<translation id="6613125771987245372">Prihlasovanie pomocou tohto účtu Google je zakázané. Vyskúšajte iný účet.</translation>
 <translation id="8474372283141585908">Poskytovateľ poverení Google</translation>
 <translation id="866458870819756755">Používateľa sa nepodarilo vytvoriť.</translation>
 <translation id="8860262547644202689">Pomocník pre poskytovateľa poverení Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
index 776574c..a316ba67 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="ta">
 <translation id="1296843352074373664">Google பயனர்</translation>
 <translation id="1383286653814676580">Google அனுமதிச் சான்று வழங்குநர் உள்நுழைவுப் பக்கத்தை இயக்கப் பயன்படுத்தப்படுகிறது.</translation>
+<translation id="195232392645680541">Google கணக்கைப் பயன்படுத்தி உள்நுழைக.</translation>
+<translation id="3623301090691182018">Google கணக்கு உள்நுழைவு</translation>
+<translation id="4057329986137569701">அகப்பிழை ஏற்பட்டது.</translation>
+<translation id="4128734677223009352">உங்கள் Google கணக்கில் உள்நுழைய முடியவில்லை. கம்ப்யூட்டரில் இணைய இணைப்பு உள்ளதா என்பதைச் சரிபார்த்து, மீண்டும் முயலவும்.</translation>
+<translation id="4307406925561182259">உங்கள் Google கணக்கின் புதுப்பிக்கப்பட்ட கடவுச்சொல்லைப் பயன்படுத்தி உள்நுழையவும்.</translation>
+<translation id="6613125771987245372">இந்த Google கணக்கைப் பயன்படுத்தி உள்நுழைய அனுமதியில்லை. வேறொரு கணக்கைப் பயன்படுத்தவும்.</translation>
 <translation id="8474372283141585908">Google அனுமதிச் சான்று வழங்குநர்</translation>
 <translation id="866458870819756755">பயனரை உருவாக்க முடியவில்லை.</translation>
 <translation id="8860262547644202689">Google அனுமதிச் சான்று வழங்குநர் உதவி</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
index 93ce65b7..b3260815 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="te">
 <translation id="1296843352074373664">Google వినియోగదారు</translation>
 <translation id="1383286653814676580">Google ఆధారాల ప్రదాత సైన్ ఇన్ పేజీని అమలు చేయడానికి ఉపయోగించబడుతుంది.</translation>
+<translation id="195232392645680541">మీ Google ఖాతాను ఉపయోగించి సైన్ ఇన్ చేయండి.</translation>
+<translation id="3623301090691182018">Google ఖాతా సైన్ ఇన్</translation>
+<translation id="4057329986137569701">అంతర్గత ఎర్రర్ ఏర్పడింది.</translation>
+<translation id="4128734677223009352">మీ Google ఖాతాకు సైన్ ఇన్ చేయడం విఫలమైంది. కంప్యూటర్‌లో ఇంటర్నెట్ కనెక్షన్ ఉన్నట్లు నిర్ధారించుకున్న తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
+<translation id="4307406925561182259">మీ అప్‌డేట్ చేయబడిన Google ఖాతా పాస్‌వర్డ్‌ని ఉపయోగించి సైన్ ఇన్ చేయండి.</translation>
+<translation id="6613125771987245372">ఈ Google ఖాతాని ఉపయోగించి సైన్ ఇన్ చేయడానికి అనుమతి లేదు. మరో ఖాతాతో ప్రయత్నించండి.</translation>
 <translation id="8474372283141585908">Google ఆధారాల ప్రదాత</translation>
 <translation id="866458870819756755">వినియోగదారుని సృష్టించడం సాధ్యం కాలేదు.</translation>
 <translation id="8860262547644202689">Google ఆధారాల ప్రదాత హెల్పర్</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
index ee58c00..1d54a24 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="th">
 <translation id="1296843352074373664">ผู้ใช้ Google</translation>
 <translation id="1383286653814676580">ใช้เพื่อเรียกใช้หน้าการลงชื่อเข้าใช้ของผู้ให้บริการข้อมูลรับรอง Google</translation>
+<translation id="195232392645680541">ลงชื่อเข้าใช้ด้วยบัญชี Google</translation>
+<translation id="3623301090691182018">การลงชื่อเข้าใช้บัญชี Google</translation>
+<translation id="4057329986137569701">เกิดข้อผิดพลาดภายใน</translation>
+<translation id="4128734677223009352">ลงชื่อเข้าใช้บัญชี Google ไม่สำเร็จ ตรวจสอบว่าคอมพิวเตอร์มีการเชื่อมต่ออินเทอร์เน็ต แล้วลองอีกครั้ง</translation>
+<translation id="4307406925561182259">ลงชื่อเข้าใช้ด้วยรหัสผ่านบัญชี Google ที่อัปเดต</translation>
+<translation id="6613125771987245372">ไม่อนุญาตให้ลงชื่อเข้าใช้ด้วยบัญชี Google นี้ ลองใช้บัญชีอื่น</translation>
 <translation id="8474372283141585908">ผู้ให้บริการข้อมูลรับรอง Google</translation>
 <translation id="866458870819756755">สร้างผู้ใช้ไม่ได้</translation>
 <translation id="8860262547644202689">โปรแกรมช่วยผู้ให้บริการข้อมูลรับรอง Google</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
index 85aeb8b..768304a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="tr">
 <translation id="1296843352074373664">Google kullanıcısı</translation>
 <translation id="1383286653814676580">Google Kimlik Bilgisi Sağlayıcısı oturum açma sayfasını çalıştırmak için kullanılır.</translation>
+<translation id="195232392645680541">Google Hesabınızı kullanarak oturum açın.</translation>
+<translation id="3623301090691182018">Google Hesabında oturum açın</translation>
+<translation id="4057329986137569701">Dahili bir hata oluştu.</translation>
+<translation id="4128734677223009352">Google Hesabınızda oturum açılamadı. Bilgisayarın internete bağlı olduğundan emin olun, sonra tekrar deneyin.</translation>
+<translation id="4307406925561182259">Güncellenmiş Google Hesabı şifrenizi kullanarak oturum açın.</translation>
+<translation id="6613125771987245372">Bu Google Hesabı ile oturum açmaya izin verilmiyor. Farklı bir hesapla oturum açmayı deneyin.</translation>
 <translation id="8474372283141585908">Google Kimlik Bilgisi Sağlayıcısı</translation>
 <translation id="866458870819756755">Kullanıcı oluşturulamadı.</translation>
 <translation id="8860262547644202689">Google Kimlik Bilgisi Sağlayıcısı Yardımcısı</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
index e35ce82..7d637ee 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="vi">
 <translation id="1296843352074373664">Người dùng Google</translation>
 <translation id="1383286653814676580">Dùng để chạy trang đăng nhập vào Nhà cung cấp chứng chỉ Google.</translation>
+<translation id="195232392645680541">Đăng nhập bằng Tài khoản Google của bạn.</translation>
+<translation id="3623301090691182018">Đăng nhập vào Tài khoản Google</translation>
+<translation id="4057329986137569701">Đã xảy ra lỗi nội bộ.</translation>
+<translation id="4128734677223009352">Không đăng nhập được vào Tài khoản Google của bạn. Hãy đảm bảo rằng máy tính này đã kết nối Internet rồi thử lại.</translation>
+<translation id="4307406925561182259">Đăng nhập bằng mật khẩu đã cập nhật của Tài khoản Google của bạn.</translation>
+<translation id="6613125771987245372">Bạn không được phép đăng nhập bằng Tài khoản Google này. Hãy thử tài khoản khác.</translation>
 <translation id="8474372283141585908">Nhà cung cấp chứng chỉ Google</translation>
 <translation id="866458870819756755">Không thể tạo người dùng.</translation>
 <translation id="8860262547644202689">Trình trợ giúp của Nhà cung cấp chứng chỉ Google</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 f72f2f7..dec12b0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="zh-CN">
 <translation id="1296843352074373664">Google 用户</translation>
 <translation id="1383286653814676580">用于运行 Google Credential Provider 登录页面。</translation>
+<translation id="195232392645680541">使用您的 Google 帐号登录。</translation>
+<translation id="3623301090691182018">Google 帐号登录</translation>
+<translation id="4057329986137569701">发生了内部错误。</translation>
+<translation id="4128734677223009352">未能成功登录您的 Google 帐号。请确保计算机已连接到互联网,然后重试。</translation>
+<translation id="4307406925561182259">请使用更新后的 Google 帐号密码登录。</translation>
+<translation id="6613125771987245372">不允许使用此 Google 帐号登录。请尝试改用其他帐号。</translation>
 <translation id="8474372283141585908">Google Credential Provider</translation>
 <translation id="866458870819756755">无法创建用户。</translation>
 <translation id="8860262547644202689">Google Credential Provider 助手</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 58538bb..aa791ae 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
@@ -3,6 +3,12 @@
 <translationbundle lang="zh-TW">
 <translation id="1296843352074373664">Google 使用者</translation>
 <translation id="1383286653814676580">用於執行 Google 憑證提供者登入頁面。</translation>
+<translation id="195232392645680541">使用你的 Google 帳戶登入。</translation>
+<translation id="3623301090691182018">登入 Google 帳戶</translation>
+<translation id="4057329986137569701">發生內部錯誤。</translation>
+<translation id="4128734677223009352">Google 帳戶登入失敗。請確認電腦已連上網際網路,然後再試一次。</translation>
+<translation id="4307406925561182259">使用更新後的 Google 帳戶密碼登入。</translation>
+<translation id="6613125771987245372">無法使用這個 Google 帳戶登入。請嘗試使用其他帳戶。</translation>
 <translation id="8474372283141585908">Google 憑證提供者</translation>
 <translation id="866458870819756755">無法建立使用者。</translation>
 <translation id="8860262547644202689">Google 憑證提供者小幫手</translation>
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 85fad62a..8a747378 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -69,9 +69,6 @@
   testonly = true
 
   sources = [
-    "base/chrome_process_util.cc",
-    "base/chrome_process_util.h",
-    "base/chrome_process_util_mac.cc",
     "base/chrome_render_view_host_test_harness.cc",
     "base/chrome_render_view_host_test_harness.h",
     "base/chrome_test_launcher.cc",
@@ -2070,7 +2067,7 @@
         "../browser/supervised_user/supervised_user_service_browsertest.cc",
       ]
     }
-    if (is_desktop_linux && is_asan && is_lsan) {
+    if (is_linux && is_asan && is_lsan) {
       # TODO(crbug.com/793426): Fix the flakiness on Linux Asan Lsan bot.
       sources -= [ "../browser/media/encrypted_media_browsertest.cc" ]
     }
diff --git a/chrome/test/base/chrome_process_util.cc b/chrome/test/base/chrome_process_util.cc
deleted file mode 100644
index 40f4df3..0000000
--- a/chrome/test/base/chrome_process_util.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2011 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/chrome_process_util.h"
-
-#include <set>
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/macros.h"
-#include "base/process/process.h"
-#include "base/process/process_iterator.h"
-#include "base/process/process_metrics.h"
-#include "base/stl_util.h"
-#include "base/time/time.h"
-#include "build/build_config.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/test/base/test_switches.h"
-#include "content/public/common/result_codes.h"
-
-using base::TimeDelta;
-using base::TimeTicks;
-
-void TerminateAllChromeProcesses(const ChromeProcessList& process_pids) {
-  for (auto pid : process_pids) {
-    base::Process process = base::Process::Open(pid);
-    if (process.IsValid()) {
-      // Ignore processes for which we can't open the handle. We don't
-      // guarantee that all processes will terminate, only try to do so.
-      process.Terminate(content::RESULT_CODE_KILLED, true);
-    }
-  }
-}
-
-class ChildProcessFilter : public base::ProcessFilter {
- public:
-  explicit ChildProcessFilter(base::ProcessId parent_pid)
-      : parent_pids_(&parent_pid, (&parent_pid) + 1) {}
-
-  explicit ChildProcessFilter(const std::vector<base::ProcessId>& parent_pids)
-      : parent_pids_(parent_pids.begin(), parent_pids.end()) {}
-
-  bool Includes(const base::ProcessEntry& entry) const override {
-    return base::ContainsKey(parent_pids_, entry.parent_pid());
-  }
-
- private:
-  const std::set<base::ProcessId> parent_pids_;
-
-  DISALLOW_COPY_AND_ASSIGN(ChildProcessFilter);
-};
-
-ChromeProcessList GetRunningChromeProcesses(base::ProcessId browser_pid) {
-  const base::FilePath::CharType* executable_name =
-      chrome::kBrowserProcessExecutableName;
-  ChromeProcessList result;
-  if (browser_pid == static_cast<base::ProcessId>(-1))
-    return result;
-
-  ChildProcessFilter filter(browser_pid);
-  base::NamedProcessIterator it(executable_name, &filter);
-  while (const base::ProcessEntry* process_entry = it.NextProcessEntry()) {
-    result.push_back(process_entry->pid());
-  }
-
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
-  // On Unix we might be running with a zygote process for the renderers.
-  // Because of that we sweep the list of processes again and pick those which
-  // are children of one of the processes that we've already seen.
-  {
-    ChildProcessFilter filter(result);
-    base::NamedProcessIterator it(executable_name, &filter);
-    while (const base::ProcessEntry* process_entry = it.NextProcessEntry())
-      result.push_back(process_entry->pid());
-  }
-#endif  // defined(OS_POSIX) && !defined(OS_MACOSX)
-
-#if defined(OS_POSIX)
-  // On Mac OS X we run the subprocesses with a different bundle, and
-  // on Linux via /proc/self/exe, so they end up with a different
-  // name.  We must collect them in a second pass.
-  {
-    base::FilePath::StringType name = chrome::kHelperProcessExecutableName;
-    ChildProcessFilter filter(browser_pid);
-    base::NamedProcessIterator it(name, &filter);
-    while (const base::ProcessEntry* process_entry = it.NextProcessEntry())
-      result.push_back(process_entry->pid());
-  }
-#endif  // defined(OS_POSIX)
-
-  result.push_back(browser_pid);
-
-  return result;
-}
-
-ChromeTestProcessMetrics::~ChromeTestProcessMetrics() {}
-
-ChromeTestProcessMetrics::ChromeTestProcessMetrics(
-    base::ProcessHandle process) {
-#if defined(OS_MACOSX)
-  process_metrics_ =
-      base::ProcessMetrics::CreateProcessMetrics(process, nullptr);
-#else
-  process_metrics_ = base::ProcessMetrics::CreateProcessMetrics(process);
-#endif
-  process_handle_ = process;
-}
-
-bool ChromeTestProcessMetrics::GetIOCounters(base::IoCounters* io_counters) {
-  return process_metrics_->GetIOCounters(io_counters);
-}
diff --git a/chrome/test/base/chrome_process_util.h b/chrome/test/base/chrome_process_util.h
deleted file mode 100644
index 3471ce6..0000000
--- a/chrome/test/base/chrome_process_util.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2011 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_CHROME_PROCESS_UTIL_H_
-#define CHROME_TEST_BASE_CHROME_PROCESS_UTIL_H_
-
-#include <stddef.h>
-
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/process/process_handle.h"
-#include "base/process/process_metrics.h"
-#include "build/build_config.h"
-
-using ChromeProcessList = std::vector<base::ProcessId>;
-
-// Returns a vector of PIDs of all chrome processes (main and renderers etc)
-// based on |browser_pid|, the PID of the main browser process.
-ChromeProcessList GetRunningChromeProcesses(base::ProcessId browser_pid);
-
-// Attempts to terminate all chrome processes in |process_list|.
-void TerminateAllChromeProcesses(const ChromeProcessList& process_list);
-
-// A wrapper class for tests to use in fetching process metrics.
-// Delegates everything we need to base::ProcessMetrics, except
-// memory stats on Mac (which have to parse ps output due to privilege
-// restrictions, behavior we don't want in base).  Long-term, if
-// the production base::ProcessMetrics gets updated to return
-// acceptable metrics on Mac, this class should disappear.
-class ChromeTestProcessMetrics {
- public:
-  static ChromeTestProcessMetrics* CreateProcessMetrics(
-        base::ProcessHandle process) {
-    return new ChromeTestProcessMetrics(process);
-  }
-
-  bool GetIOCounters(base::IoCounters* io_counters);
-
-  base::ProcessHandle process_handle_;
-
-  ~ChromeTestProcessMetrics();
-
- private:
-  explicit ChromeTestProcessMetrics(base::ProcessHandle process);
-
-  std::unique_ptr<base::ProcessMetrics> process_metrics_;
-
-  DISALLOW_COPY_AND_ASSIGN(ChromeTestProcessMetrics);
-};
-
-#if defined(OS_MACOSX)
-
-// These types and API are here to fetch the information about a set of running
-// processes by ID on the Mac.  There are also APIs in base, but fetching the
-// information for another process requires privileges that a normal executable
-// does not have.  This API fetches the data by spawning ps (which is setuid so
-// it has the needed privileges) and processing its output. The API is provided
-// here because we don't want code spawning processes like this in base, where
-// someone writing cross platform code might use it without realizing that it's
-// a heavyweight call on the Mac.
-
-struct MacChromeProcessInfo {
-  base::ProcessId pid;
-  int rsz_in_kb;
-  int vsz_in_kb;
-};
-
-using MacChromeProcessInfoList = std::vector<MacChromeProcessInfo>;
-
-// Any ProcessId that info can't be found for will be left out.
-MacChromeProcessInfoList GetRunningMacProcessInfo(
-    const ChromeProcessList& process_list);
-
-#endif  // defined(OS_MACOSX)
-
-#endif  // CHROME_TEST_BASE_CHROME_PROCESS_UTIL_H_
diff --git a/chrome/test/base/chrome_process_util_mac.cc b/chrome/test/base/chrome_process_util_mac.cc
deleted file mode 100644
index 61e06ee..0000000
--- a/chrome/test/base/chrome_process_util_mac.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011 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/chrome_process_util.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/process/launch.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-
-MacChromeProcessInfoList GetRunningMacProcessInfo(
-    const ChromeProcessList& process_list) {
-  MacChromeProcessInfoList result;
-
-  // Build up the ps command line
-  std::vector<std::string> cmdline;
-  cmdline.push_back("ps");
-  cmdline.push_back("-o");
-  cmdline.push_back("pid=,rss=,vsz=");  // fields we need, no headings
-  ChromeProcessList::const_iterator process_iter;
-  for (process_iter = process_list.begin();
-       process_iter != process_list.end();
-       ++process_iter) {
-    cmdline.push_back("-p");
-    cmdline.push_back(base::IntToString(*process_iter));
-  }
-
-  // Invoke it
-  std::string ps_output;
-  if (!base::GetAppOutput(base::CommandLine(cmdline), &ps_output))
-    return result;  // All the pids might have exited
-
-  // Process the results.
-  for (const std::string& raw_line : base::SplitString(
-           ps_output, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
-    std::string line(base::CollapseWhitespaceASCII(raw_line, false));
-    std::vector<base::StringPiece> values = base::SplitStringPiece(
-        line, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-    if (values.size() == 3) {
-      MacChromeProcessInfo proc_info;
-      int pid;
-      base::StringToInt(values[0], &pid);
-      proc_info.pid = pid;
-      base::StringToInt(values[1], &proc_info.rsz_in_kb);
-      base::StringToInt(values[2], &proc_info.vsz_in_kb);
-      if (proc_info.pid && proc_info.rsz_in_kb && proc_info.vsz_in_kb)
-        result.push_back(proc_info);
-    }
-  }
-
-  return result;
-}
diff --git a/chrome/test/base/testing_browser_process.cc b/chrome/test/base/testing_browser_process.cc
index e4aec28..00be53e 100644
--- a/chrome/test/base/testing_browser_process.cc
+++ b/chrome/test/base/testing_browser_process.cc
@@ -272,7 +272,7 @@
   return nullptr;
 }
 
-subresource_filter::ContentRulesetService*
+subresource_filter::RulesetService*
 TestingBrowserProcess::subresource_filter_ruleset_service() {
   return subresource_filter_ruleset_service_.get();
 }
@@ -507,9 +507,8 @@
 }
 
 void TestingBrowserProcess::SetRulesetService(
-    std::unique_ptr<subresource_filter::ContentRulesetService>
-        content_ruleset_service) {
-  subresource_filter_ruleset_service_.swap(content_ruleset_service);
+    std::unique_ptr<subresource_filter::RulesetService> ruleset_service) {
+  subresource_filter_ruleset_service_.swap(ruleset_service);
 }
 
 void TestingBrowserProcess::SetOptimizationGuideService(
diff --git a/chrome/test/base/testing_browser_process.h b/chrome/test/base/testing_browser_process.h
index 6d0b415..c73492d2 100644
--- a/chrome/test/base/testing_browser_process.h
+++ b/chrome/test/base/testing_browser_process.h
@@ -95,8 +95,8 @@
   safe_browsing::SafeBrowsingService* safe_browsing_service() override;
   safe_browsing::ClientSideDetectionService* safe_browsing_detection_service()
       override;
-  subresource_filter::ContentRulesetService*
-  subresource_filter_ruleset_service() override;
+  subresource_filter::RulesetService* subresource_filter_ruleset_service()
+      override;
   optimization_guide::OptimizationGuideService* optimization_guide_service()
       override;
   net::URLRequestContextGetter* system_request_context() override;
@@ -145,8 +145,7 @@
   void SetIOThread(IOThread* io_thread);
   void SetSafeBrowsingService(safe_browsing::SafeBrowsingService* sb_service);
   void SetRulesetService(
-      std::unique_ptr<subresource_filter::ContentRulesetService>
-          ruleset_service);
+      std::unique_ptr<subresource_filter::RulesetService> ruleset_service);
   void SetOptimizationGuideService(
       std::unique_ptr<optimization_guide::OptimizationGuideService>
           optimization_guide_service);
@@ -191,7 +190,7 @@
 #endif
 
   scoped_refptr<safe_browsing::SafeBrowsingService> sb_service_;
-  std::unique_ptr<subresource_filter::ContentRulesetService>
+  std::unique_ptr<subresource_filter::RulesetService>
       subresource_filter_ruleset_service_;
   std::unique_ptr<optimization_guide::OptimizationGuideService>
       optimization_guide_service_;
diff --git a/chrome/test/data/navigation_predictor/iframe_ads_simple_page_with_anchors.html b/chrome/test/data/navigation_predictor/iframe_ads_simple_page_with_anchors.html
new file mode 100644
index 0000000..81d9127c
--- /dev/null
+++ b/chrome/test/data/navigation_predictor/iframe_ads_simple_page_with_anchors.html
@@ -0,0 +1,8 @@
+<html>
+  <head>
+  </head>
+  <body>
+    <a id="google" href="https://google2.com">Google</a>
+    <a id="example_ad" href="https://example.com/included_script.js">Example</a>
+  </body>
+</html>
\ No newline at end of file
diff --git a/chrome/test/data/navigation_predictor/page_with_ads_iframe.html b/chrome/test/data/navigation_predictor/page_with_ads_iframe.html
new file mode 100644
index 0000000..a0f9756
--- /dev/null
+++ b/chrome/test/data/navigation_predictor/page_with_ads_iframe.html
@@ -0,0 +1,9 @@
+<html>
+  <head>
+  </head>
+  <body>
+    <a id="google" href="https://google.com">Google</a>
+    <a id="example" href="https://example.com">Example</a>
+    <iframe src="iframe_ads_simple_page_with_anchors.html"></iframe>
+  </body>
+</html>
\ No newline at end of file
diff --git a/chrome/test/data/webui/extensions/detail_view_test.js b/chrome/test/data/webui/extensions/detail_view_test.js
index a4fb5675..f38d22a 100644
--- a/chrome/test/data/webui/extensions/detail_view_test.js
+++ b/chrome/test/data/webui/extensions/detail_view_test.js
@@ -167,9 +167,15 @@
 
       // Adding any runtime host permissions should result in the runtime host
       // controls becoming visible.
-      item.set(
-          'data.permissions.hostAccess',
-          chrome.developerPrivate.HostAccess.ON_CLICK);
+      const allSitesPermissions = {
+        simplePermissions: [],
+        runtimeHostPermissions: {
+          hosts: [{granted: false, host: '<all_urls>'}],
+          hasAllHosts: true,
+          hostAccess: chrome.developerPrivate.HostAccess.ON_CLICK,
+        },
+      };
+      item.set('data.permissions', allSitesPermissions);
       Polymer.dom.flush();
       expectTrue(testIsVisible('extensions-runtime-host-permissions'));
     });
diff --git a/chrome/test/data/webui/extensions/runtime_host_permissions_test.js b/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
index a86b2a6a..49f6ed6 100644
--- a/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
+++ b/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
@@ -25,8 +25,9 @@
 
   test('permissions display', function() {
     const permissions = {
-      simplePermissions: ['permission 1', 'permission 2'],
       hostAccess: HostAccess.ON_CLICK,
+      hasAllHosts: true,
+      hosts: [{granted: false, host: 'https://*/*'}],
     };
 
     element.set('permissions', permissions);
@@ -51,13 +52,10 @@
     // Setting the mode to on specific sites should display the runtime hosts
     // list.
     element.set('permissions.hostAccess', HostAccess.ON_SPECIFIC_SITES);
-    element.set('permissions.specificSiteControls', {
-      hasAllHosts: false,
-      hosts: [
-        {host: 'https://example.com', granted: true},
-        {host: 'https://chromium.org', granted: true}
-      ],
-    });
+    element.set('permissions.hosts', [
+      {host: 'https://example.com', granted: true},
+      {host: 'https://chromium.org', granted: true}
+    ]);
     Polymer.dom.flush();
     expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.value);
     expectTrue(testIsVisible('#hosts'));
@@ -67,8 +65,9 @@
 
   test('permissions selection', function() {
     const permissions = {
-      simplePermissions: ['permission 1', 'permission 2'],
       hostAccess: HostAccess.ON_CLICK,
+      hasAllHosts: true,
+      hosts: [{granted: false, host: 'https://*.com/*'}],
     };
 
     element.set('permissions', permissions);
@@ -101,6 +100,8 @@
   test('on select sites cancel', function() {
     const permissions = {
       hostAccess: HostAccess.ON_CLICK,
+      hasAllHosts: true,
+      hosts: [{granted: false, host: 'https://*/*'}],
     };
 
     element.permissions = permissions;
@@ -131,8 +132,9 @@
 
   test('on select sites accept', function() {
     const permissions = {
-      simplePermissions: ['permission 1', 'permission 2'],
       hostAccess: HostAccess.ON_CLICK,
+      hasAllHosts: true,
+      hosts: [{granted: false, host: 'https://*/*'}],
     };
 
     element.set('permissions', permissions);
@@ -169,15 +171,13 @@
 
   test('clicking add host triggers dialog', function() {
     const permissions = {
-      simplePermissions: [],
       hostAccess: HostAccess.ON_SPECIFIC_SITES,
-      specificSiteControls: {
-        hasAllHosts: false,
-        hosts: [
-          {host: 'https://www.example.com/*', granted: true},
-          {host: 'https://*.google.com', granted: false}
-        ],
-      },
+      hasAllHosts: true,
+      hosts: [
+        {host: 'https://www.example.com/*', granted: true},
+        {host: 'https://*.google.com', granted: false},
+        {host: '*://*.com/*', granted: false},
+      ],
     };
 
     element.set('permissions', permissions);
@@ -198,15 +198,13 @@
 
   test('removing runtime host permissions', function() {
     const permissions = {
-      simplePermissions: [],
       hostAccess: HostAccess.ON_SPECIFIC_SITES,
-      specificSiteControls: {
-        hasAllHosts: false,
-        hosts: [
-          {host: 'https://example.com', granted: true},
-          {host: 'https://chromium.org', granted: true}
-        ],
-      },
+      hasAllHosts: true,
+      hosts: [
+        {host: 'https://example.com', granted: true},
+        {host: 'https://chromium.org', granted: true},
+        {host: '*://*.com/*', granted: false},
+      ],
     };
     element.set('permissions', permissions);
     Polymer.dom.flush();
@@ -231,15 +229,13 @@
 
   test('clicking edit host triggers dialog', function() {
     const permissions = {
-      simplePermissions: [],
       hostAccess: HostAccess.ON_SPECIFIC_SITES,
-      specificSiteControls: {
-        hasAllHosts: false,
-        hosts: [
-          {host: 'https://example.com', granted: true},
-          {host: 'https://chromium.org', granted: true}
-        ],
-      },
+      hasAllHosts: true,
+      hosts: [
+        {host: 'https://example.com', granted: true},
+        {host: 'https://chromium.org', granted: true},
+        {host: '*://*.com/*', granted: false},
+      ],
     };
     element.set('permissions', permissions);
     Polymer.dom.flush();
diff --git a/chromecast/browser/devtools/remote_debugging_server.cc b/chromecast/browser/devtools/remote_debugging_server.cc
index 7d07ef5..6ac20e5 100644
--- a/chromecast/browser/devtools/remote_debugging_server.cc
+++ b/chromecast/browser/devtools/remote_debugging_server.cc
@@ -26,6 +26,8 @@
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/common/user_agent.h"
+#include "net/base/ip_address.h"
+#include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
 #include "net/log/net_log_source.h"
 #include "net/socket/tcp_server_socket.h"
@@ -75,15 +77,16 @@
 #else
 class TCPServerSocketFactory : public content::DevToolsSocketFactory {
  public:
-  TCPServerSocketFactory(const std::string& address, uint16_t port)
-      : address_(address), port_(port) {}
+  explicit TCPServerSocketFactory(const net::IPEndPoint& endpoint)
+      : endpoint_(endpoint) {}
 
  private:
   // content::DevToolsSocketFactory.
   std::unique_ptr<net::ServerSocket> CreateForHttpServer() override {
     std::unique_ptr<net::ServerSocket> socket(
         new net::TCPServerSocket(nullptr, net::NetLogSource()));
-    if (socket->ListenWithAddressAndPort(address_, port_, kBackLog) != net::OK)
+
+    if (socket->Listen(endpoint_, kBackLog) != net::OK)
       return std::unique_ptr<net::ServerSocket>();
 
     return socket;
@@ -94,8 +97,7 @@
     return nullptr;
   }
 
-  std::string address_;
-  uint16_t port_;
+  const net::IPEndPoint endpoint_;
 
   DISALLOW_COPY_AND_ASSIGN(TCPServerSocketFactory);
 };
@@ -113,8 +115,9 @@
   return std::unique_ptr<content::DevToolsSocketFactory>(
       new UnixDomainServerSocketFactory(socket_name));
 #else
+  net::IPEndPoint endpoint(net::IPAddress::IPv6AllZeros(), port);
   return std::unique_ptr<content::DevToolsSocketFactory>(
-      new TCPServerSocketFactory("0.0.0.0", port));
+      new TCPServerSocketFactory(endpoint));
 #endif
 }
 
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 9161958..1dd611a4 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-11218.0.0
\ No newline at end of file
+11220.0.0
\ No newline at end of file
diff --git a/chromeos/components/proximity_auth/bluetooth_low_energy_connection_finder.cc b/chromeos/components/proximity_auth/bluetooth_low_energy_connection_finder.cc
index c825582..971bb49f 100644
--- a/chromeos/components/proximity_auth/bluetooth_low_energy_connection_finder.cc
+++ b/chromeos/components/proximity_auth/bluetooth_low_energy_connection_finder.cc
@@ -76,7 +76,7 @@
     PA_LOG(WARNING) << "Bluetooth is unsupported on this platform. Aborting.";
     return;
   }
-  PA_LOG(INFO) << "Finding connection";
+  PA_LOG(VERBOSE) << "Finding connection";
 
   connection_callback_ = connection_callback;
 
@@ -91,7 +91,7 @@
     BluetoothAdapter* adapter,
     bool powered) {
   DCHECK_EQ(adapter_.get(), adapter);
-  PA_LOG(INFO) << "Adapter powered: " << powered;
+  PA_LOG(VERBOSE) << "Adapter powered: " << powered;
 
   // Important: do not rely on |adapter->IsDiscoverying()| to verify if there is
   // an active discovery session. We need to create our own with an specific
@@ -138,7 +138,7 @@
     return;
 
   if (IsRightDevice(device)) {
-    PA_LOG(INFO) << "Connecting to device " << device->GetAddress();
+    PA_LOG(VERBOSE) << "Connecting to device " << device->GetAddress();
     connection_ = CreateConnection(device);
     connection_->AddObserver(this);
     connection_->Connect();
@@ -163,7 +163,7 @@
       eid_generator_->GenerateNearestEids(remote_device_.beacon_seeds());
   for (const cryptauth::DataWithTimestamp& eid : nearest_eids) {
     if (eid.data == service_data_string) {
-      PA_LOG(INFO) << "Found a matching EID: " << eid.DataInHex();
+      PA_LOG(VERBOSE) << "Found a matching EID: " << eid.DataInHex();
       return true;
     }
   }
@@ -172,7 +172,7 @@
 
 void BluetoothLowEnergyConnectionFinder::OnAdapterInitialized(
     scoped_refptr<BluetoothAdapter> adapter) {
-  PA_LOG(INFO) << "Adapter ready";
+  PA_LOG(VERBOSE) << "Adapter ready";
   adapter_ = adapter;
   adapter_->AddObserver(this);
   StartDiscoverySession();
@@ -180,7 +180,7 @@
 
 void BluetoothLowEnergyConnectionFinder::OnDiscoverySessionStarted(
     std::unique_ptr<device::BluetoothDiscoverySession> discovery_session) {
-  PA_LOG(INFO) << "Discovery session started";
+  PA_LOG(VERBOSE) << "Discovery session started";
   discovery_session_ = std::move(discovery_session);
 }
 
@@ -198,7 +198,7 @@
 void BluetoothLowEnergyConnectionFinder::StartDiscoverySession() {
   DCHECK(adapter_);
   if (discovery_session_ && discovery_session_->IsActive()) {
-    PA_LOG(INFO) << "Discovery session already active";
+    PA_LOG(VERBOSE) << "Discovery session already active";
     return;
   }
 
@@ -216,7 +216,7 @@
 }
 
 void BluetoothLowEnergyConnectionFinder::StopDiscoverySession() {
-  PA_LOG(INFO) << "Stopping discovery session";
+  PA_LOG(VERBOSE) << "Stopping discovery session";
   // Destroying the discovery session also stops it.
   discovery_session_.reset();
 }
@@ -235,8 +235,8 @@
     cryptauth::Connection::Status old_status,
     cryptauth::Connection::Status new_status) {
   DCHECK_EQ(connection, connection_.get());
-  PA_LOG(INFO) << "OnConnectionStatusChanged: " << old_status << " -> "
-               << new_status;
+  PA_LOG(VERBOSE) << "OnConnectionStatusChanged: " << old_status << " -> "
+                  << new_status;
 
   if (!connection_callback_.is_null() && connection_->IsConnected()) {
     adapter_->RemoveObserver(this);
@@ -266,7 +266,7 @@
 void BluetoothLowEnergyConnectionFinder::RestartDiscoverySessionAsync() {
   bool discovery_active = discovery_session_ && discovery_session_->IsActive();
   if (!connection_ && !discovery_active) {
-    PA_LOG(INFO) << "Restarting discovery session.";
+    PA_LOG(VERBOSE) << "Restarting discovery session.";
     StartDiscoverySession();
   }
 }
diff --git a/chromeos/components/proximity_auth/messenger_impl.cc b/chromeos/components/proximity_auth/messenger_impl.cc
index 2df8919..085ac06 100644
--- a/chromeos/components/proximity_auth/messenger_impl.cc
+++ b/chromeos/components/proximity_auth/messenger_impl.cc
@@ -258,7 +258,7 @@
 
   DCHECK_EQ(connection, connection_.get());
   if (new_status == cryptauth::Connection::Status::DISCONNECTED) {
-    PA_LOG(INFO) << "Secure channel disconnected...";
+    PA_LOG(VERBOSE) << "Secure channel disconnected...";
     connection_->RemoveObserver(this);
     for (auto& observer : observers_)
       observer.OnDisconnected();
diff --git a/chromeos/components/proximity_auth/proximity_auth_local_state_pref_manager.cc b/chromeos/components/proximity_auth/proximity_auth_local_state_pref_manager.cc
index 7cb0f65..acc85c4 100644
--- a/chromeos/components/proximity_auth/proximity_auth_local_state_pref_manager.cc
+++ b/chromeos/components/proximity_auth/proximity_auth_local_state_pref_manager.cc
@@ -119,7 +119,7 @@
       !user_prefs->GetBooleanWithoutPathExpansion(
           chromeos::multidevice_setup::kSmartLockSigninAllowedPrefName,
           &pref_value)) {
-    PA_LOG(INFO) << "Failed to get is_chrome_login_allowed, not disallowing";
+    PA_LOG(VERBOSE) << "Failed to get is_chrome_login_allowed, not disallowing";
     return true;
   }
   return pref_value;
diff --git a/chromeos/components/proximity_auth/proximity_monitor_impl.cc b/chromeos/components/proximity_auth/proximity_monitor_impl.cc
index 3c6efe3d..d275124 100644
--- a/chromeos/components/proximity_auth/proximity_monitor_impl.cc
+++ b/chromeos/components/proximity_auth/proximity_monitor_impl.cc
@@ -191,7 +191,7 @@
 
 void ProximityMonitorImpl::OnGetRssi(const base::Optional<int32_t>& rssi) {
   if (!is_active_) {
-    PA_LOG(INFO) << "Received RSSI after stopping.";
+    PA_LOG(VERBOSE) << "Received RSSI after stopping.";
     return;
   }
 
@@ -231,13 +231,13 @@
       rssi_rolling_average_ && *rssi_rolling_average_ > rssi_threshold_;
 
   if (rssi_rolling_average_ && !is_now_in_proximity) {
-    PA_LOG(INFO) << "Not in proximity. Rolling RSSI average: "
-                 << *rssi_rolling_average_;
+    PA_LOG(VERBOSE) << "Not in proximity. Rolling RSSI average: "
+                    << *rssi_rolling_average_;
   }
 
   if (remote_device_is_in_proximity_ != is_now_in_proximity) {
-    PA_LOG(INFO) << "[Proximity] Updated proximity state: "
-                 << (is_now_in_proximity ? "proximate" : "distant");
+    PA_LOG(VERBOSE) << "[Proximity] Updated proximity state: "
+                    << (is_now_in_proximity ? "proximate" : "distant");
     remote_device_is_in_proximity_ = is_now_in_proximity;
     for (auto& observer : observers_)
       observer.OnProximityStateChanged();
diff --git a/chromeos/components/proximity_auth/remote_device_life_cycle_impl.cc b/chromeos/components/proximity_auth/remote_device_life_cycle_impl.cc
index 97b932d..079fa973 100644
--- a/chromeos/components/proximity_auth/remote_device_life_cycle_impl.cc
+++ b/chromeos/components/proximity_auth/remote_device_life_cycle_impl.cc
@@ -50,7 +50,7 @@
 RemoteDeviceLifeCycleImpl::~RemoteDeviceLifeCycleImpl() {}
 
 void RemoteDeviceLifeCycleImpl::Start() {
-  PA_LOG(INFO) << "Life cycle for " << remote_device_.name() << " started.";
+  PA_LOG(VERBOSE) << "Life cycle for " << remote_device_.name() << " started.";
   DCHECK(state_ == RemoteDeviceLifeCycle::State::STOPPED);
   FindConnection();
 }
@@ -110,7 +110,7 @@
 
 void RemoteDeviceLifeCycleImpl::TransitionToState(
     RemoteDeviceLifeCycle::State new_state) {
-  PA_LOG(INFO) << "Life cycle transition: " << state_ << " => " << new_state;
+  PA_LOG(VERBOSE) << "Life cycle transition: " << state_ << " => " << new_state;
   RemoteDeviceLifeCycle::State old_state = state_;
   state_ = new_state;
   for (auto& observer : observers_)
diff --git a/chromeos/components/proximity_auth/unlock_manager_impl.cc b/chromeos/components/proximity_auth/unlock_manager_impl.cc
index 56b94e2..02059c02 100644
--- a/chromeos/components/proximity_auth/unlock_manager_impl.cc
+++ b/chromeos/components/proximity_auth/unlock_manager_impl.cc
@@ -179,11 +179,11 @@
 
 void UnlockManagerImpl::OnRemoteStatusUpdate(
     const RemoteStatusUpdate& status_update) {
-  PA_LOG(INFO) << "Status Update: ("
-               << "user_present=" << status_update.user_presence << ", "
-               << "secure_screen_lock="
-               << status_update.secure_screen_lock_state << ", "
-               << "trust_agent=" << status_update.trust_agent_state << ")";
+  PA_LOG(VERBOSE) << "Status Update: ("
+                  << "user_present=" << status_update.user_presence << ", "
+                  << "secure_screen_lock="
+                  << status_update.secure_screen_lock_state << ", "
+                  << "trust_agent=" << status_update.trust_agent_state << ")";
   metrics::RecordRemoteSecuritySettingsState(
       GetRemoteSecuritySettingsState(status_update));
 
@@ -230,7 +230,7 @@
 }
 
 void UnlockManagerImpl::OnProximityStateChanged() {
-  PA_LOG(INFO) << "Proximity state changed.";
+  PA_LOG(VERBOSE) << "Proximity state changed.";
   UpdateLockScreen();
 }
 
@@ -291,7 +291,7 @@
 
 void UnlockManagerImpl::OnAuthAttempted(mojom::AuthType auth_type) {
   if (is_attempting_auth_) {
-    PA_LOG(INFO) << "Already attempting auth.";
+    PA_LOG(VERBOSE) << "Already attempting auth.";
     return;
   }
 
@@ -325,7 +325,8 @@
     if (GetMessenger()->SupportsSignIn()) {
       GetMessenger()->RequestUnlock();
     } else {
-      PA_LOG(INFO) << "Protocol v3.1 not supported, skipping request_unlock.";
+      PA_LOG(VERBOSE)
+          << "Protocol v3.1 not supported, skipping request_unlock.";
       GetMessenger()->DispatchUnlockEvent();
     }
   }
@@ -389,7 +390,7 @@
 }
 
 void UnlockManagerImpl::OnGotSignInChallenge(const std::string& challenge) {
-  PA_LOG(INFO) << "Got sign-in challenge, sending for decryption...";
+  PA_LOG(VERBOSE) << "Got sign-in challenge, sending for decryption...";
   if (GetMessenger())
     GetMessenger()->RequestDecryption(challenge);
 }
@@ -512,11 +513,11 @@
 
   is_attempting_auth_ = false;
   if (screenlock_type_ == ProximityAuthSystem::SIGN_IN) {
-    PA_LOG(INFO) << "Finalizing sign-in...";
+    PA_LOG(VERBOSE) << "Finalizing sign-in...";
     proximity_auth_client_->FinalizeSignin(
         should_accept && sign_in_secret_ ? *sign_in_secret_ : std::string());
   } else {
-    PA_LOG(INFO) << "Finalizing unlock...";
+    PA_LOG(VERBOSE) << "Finalizing unlock...";
     proximity_auth_client_->FinalizeUnlock(should_accept);
   }
 }
diff --git a/chromeos/components/proximity_auth/webui/proximity_auth_webui_handler.cc b/chromeos/components/proximity_auth/webui/proximity_auth_webui_handler.cc
index de10cb51..d86e836e 100644
--- a/chromeos/components/proximity_auth/webui/proximity_auth_webui_handler.cc
+++ b/chromeos/components/proximity_auth/webui/proximity_auth_webui_handler.cc
@@ -348,9 +348,9 @@
     *(request.mutable_device_classifier()) =
         proximity_auth_client_->GetDeviceClassifier();
 
-    PA_LOG(INFO) << "Toggling unlock key:\n"
-                 << "    public_key: " << public_key_b64 << "\n"
-                 << "    make_unlock_key: " << make_unlock_key;
+    PA_LOG(VERBOSE) << "Toggling unlock key:\n"
+                    << "    public_key: " << public_key_b64 << "\n"
+                    << "    make_unlock_key: " << make_unlock_key;
     cryptauth_client_ = cryptauth_client_factory_->CreateInstance();
     cryptauth_client_->ToggleEasyUnlock(
         request,
@@ -498,9 +498,9 @@
     ineligible_devices.Append(IneligibleDeviceToDictionary(ineligible_device));
   }
 
-  PA_LOG(INFO) << "Found " << eligible_devices.GetSize()
-               << " eligible devices and " << ineligible_devices.GetSize()
-               << " ineligible devices.";
+  PA_LOG(VERBOSE) << "Found " << eligible_devices.GetSize()
+                  << " eligible devices and " << ineligible_devices.GetSize()
+                  << " ineligible devices.";
   web_ui()->CallJavascriptFunctionUnsafe(
       "CryptAuthInterface.onGotEligibleDevices", eligible_devices,
       ineligible_devices);
@@ -626,8 +626,8 @@
 
 void ProximityAuthWebUIHandler::CleanUpRemoteDeviceLifeCycle() {
   if (selected_remote_device_) {
-    PA_LOG(INFO) << "Cleaning up connection to "
-                 << selected_remote_device_->name();
+    PA_LOG(VERBOSE) << "Cleaning up connection to "
+                    << selected_remote_device_->name();
   }
   life_cycle_.reset();
   selected_remote_device_ = base::nullopt;
@@ -834,13 +834,13 @@
 
 void ProximityAuthWebUIHandler::OnRemoteStatusUpdate(
     const RemoteStatusUpdate& status_update) {
-  PA_LOG(INFO) << "Remote status update:"
-               << "\n  user_presence: "
-               << static_cast<int>(status_update.user_presence)
-               << "\n  secure_screen_lock_state: "
-               << static_cast<int>(status_update.secure_screen_lock_state)
-               << "\n  trust_agent_state: "
-               << static_cast<int>(status_update.trust_agent_state);
+  PA_LOG(VERBOSE) << "Remote status update:"
+                  << "\n  user_presence: "
+                  << static_cast<int>(status_update.user_presence)
+                  << "\n  secure_screen_lock_state: "
+                  << static_cast<int>(status_update.secure_screen_lock_state)
+                  << "\n  trust_agent_state: "
+                  << static_cast<int>(status_update.trust_agent_state);
 
   last_remote_status_update_.reset(new RemoteStatusUpdate(status_update));
   std::unique_ptr<base::ListValue> synced_devices = GetRemoteDevicesList();
@@ -849,11 +849,11 @@
 }
 
 void ProximityAuthWebUIHandler::OnForceEnrollmentNow(bool success) {
-  PA_LOG(INFO) << "Force enrollment result: " << success;
+  PA_LOG(VERBOSE) << "Force enrollment result: " << success;
 }
 
 void ProximityAuthWebUIHandler::OnForceSyncNow(bool success) {
-  PA_LOG(INFO) << "Force sync result: " << success;
+  PA_LOG(VERBOSE) << "Force sync result: " << success;
 }
 
 void ProximityAuthWebUIHandler::OnSetSoftwareFeatureState(
@@ -864,8 +864,8 @@
 
   if (result_code ==
       chromeos::device_sync::mojom::NetworkRequestResult::kSuccess) {
-    PA_LOG(INFO) << "Successfully set SoftwareFeature state for device: "
-                 << device_id;
+    PA_LOG(VERBOSE) << "Successfully set SoftwareFeature state for device: "
+                    << device_id;
   } else {
     PA_LOG(ERROR) << "Failed to set SoftwareFeature state for device: "
                   << device_id << ", error code: " << result_code;
@@ -892,10 +892,10 @@
     ineligible_devices_list_value.Append(RemoteDeviceToDictionary(device));
   }
 
-  PA_LOG(INFO) << "Found " << eligible_devices_list_value.GetSize()
-               << " eligible devices and "
-               << ineligible_devices_list_value.GetSize()
-               << " ineligible devices.";
+  PA_LOG(VERBOSE) << "Found " << eligible_devices_list_value.GetSize()
+                  << " eligible devices and "
+                  << ineligible_devices_list_value.GetSize()
+                  << " ineligible devices.";
   web_ui()->CallJavascriptFunctionUnsafe(
       "CryptAuthInterface.onGotEligibleDevices", eligible_devices_list_value,
       ineligible_devices_list_value);
@@ -946,9 +946,9 @@
 void ProximityAuthWebUIHandler::NotifyOnEnrollmentFinished(
     bool success,
     std::unique_ptr<base::DictionaryValue> enrollment_state) {
-  PA_LOG(INFO) << "Enrollment attempt completed with success=" << success
-               << ":\n"
-               << *enrollment_state;
+  PA_LOG(VERBOSE) << "Enrollment attempt completed with success=" << success
+                  << ":\n"
+                  << *enrollment_state;
   web_ui()->CallJavascriptFunctionUnsafe(
       "LocalStateInterface.onEnrollmentStateChanged", *enrollment_state);
 }
@@ -957,16 +957,16 @@
     bool was_sync_successful,
     bool changed,
     std::unique_ptr<base::DictionaryValue> device_sync_state) {
-  PA_LOG(INFO) << "Device sync completed with result=" << was_sync_successful
-               << ":\n"
-               << *device_sync_state;
+  PA_LOG(VERBOSE) << "Device sync completed with result=" << was_sync_successful
+                  << ":\n"
+                  << *device_sync_state;
   web_ui()->CallJavascriptFunctionUnsafe(
       "LocalStateInterface.onDeviceSyncStateChanged", *device_sync_state);
 
   if (changed) {
     std::unique_ptr<base::ListValue> synced_devices = GetRemoteDevicesList();
-    PA_LOG(INFO) << "New unlock keys obtained after device sync:\n"
-                 << *synced_devices;
+    PA_LOG(VERBOSE) << "New unlock keys obtained after device sync:\n"
+                    << *synced_devices;
     web_ui()->CallJavascriptFunctionUnsafe(
         "LocalStateInterface.onRemoteDevicesChanged", *synced_devices);
   }
@@ -977,12 +977,12 @@
     std::unique_ptr<base::DictionaryValue> enrollment_state,
     std::unique_ptr<base::DictionaryValue> device_sync_state,
     std::unique_ptr<base::ListValue> synced_devices) {
-  PA_LOG(INFO) << "==== Got Local State ====\n"
-               << "Device ID (truncated): " << *truncated_local_device_id
-               << "\nEnrollment State: \n"
-               << *enrollment_state << "Device Sync State: \n"
-               << *device_sync_state << "Synced devices: \n"
-               << *synced_devices;
+  PA_LOG(VERBOSE) << "==== Got Local State ====\n"
+                  << "Device ID (truncated): " << *truncated_local_device_id
+                  << "\nEnrollment State: \n"
+                  << *enrollment_state << "Device Sync State: \n"
+                  << *device_sync_state << "Synced devices: \n"
+                  << *synced_devices;
   web_ui()->CallJavascriptFunctionUnsafe(
       "LocalStateInterface.onGotLocalState", *truncated_local_device_id,
       *enrollment_state, *device_sync_state, *synced_devices);
diff --git a/chromeos/components/tether/ble_connection_manager.cc b/chromeos/components/tether/ble_connection_manager.cc
index cf5dd3ea..579b5641 100644
--- a/chromeos/components/tether/ble_connection_manager.cc
+++ b/chromeos/components/tether/ble_connection_manager.cc
@@ -213,10 +213,10 @@
     cryptauth::SecureChannel* secure_channel,
     int sequence_number) {
   DCHECK(secure_channel_.get() == secure_channel);
-  PA_LOG(INFO) << "Message sent successfully to device with ID \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      device_id_)
-               << "\"; message sequence number: " << sequence_number;
+  PA_LOG(VERBOSE) << "Message sent successfully to device with ID \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id_)
+                  << "\"; message sequence number: " << sequence_number;
   manager_->NotifyMessageSent(sequence_number);
 }
 
@@ -248,10 +248,11 @@
   }
   has_registered_observer_ = true;
 
-  PA_LOG(INFO) << "Register - Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\", Request ID: " << request_id
-               << ", Priority: " << connection_priority;
+  PA_LOG(VERBOSE) << "Register - Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\", Request ID: " << request_id
+                  << ", Priority: " << connection_priority;
 
   ConnectionMetadata* connection_metadata = GetConnectionMetadata(device_id);
   if (!connection_metadata)
@@ -275,9 +276,10 @@
     return;
   }
 
-  PA_LOG(INFO) << "Unregister - Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\", Request ID: " << request_id;
+  PA_LOG(VERBOSE) << "Unregister - Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\", Request ID: " << request_id;
 
   connection_metadata->UnregisterConnectionRequest(request_id);
   if (!connection_metadata->HasPendingConnectionRequests()) {
@@ -317,9 +319,10 @@
     return -1;
   }
 
-  PA_LOG(INFO) << "SendMessage(): Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\", Message: \"" << message << "\"";
+  PA_LOG(VERBOSE) << "SendMessage(): Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\", Message: \"" << message << "\"";
   return connection_metadata->SendMessage(message);
 }
 
@@ -378,9 +381,9 @@
     return;
   }
 
-  PA_LOG(INFO) << "Received advertisement - Device ID: \""
-               << remote_device.GetTruncatedDeviceIdForLogs()
-               << "\". Starting authentication handshake.";
+  PA_LOG(VERBOSE) << "Received advertisement - Device ID: \""
+                  << remote_device.GetTruncatedDeviceIdForLogs()
+                  << "\". Starting authentication handshake.";
 
   device_id_to_is_background_advertisement_map_[device_id] =
       is_background_advertisement;
@@ -457,10 +460,10 @@
   // it is possible that EndSuccessfulAttempt() will cause that map to be
   // modified during iteration.
   for (const auto& device_id_to_stop : device_ids_to_stop) {
-    PA_LOG(INFO) << "Connection attempt for device ID \""
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        device_id_to_stop)
-                 << "\" interrupted by higher-priority connection.";
+    PA_LOG(VERBOSE) << "Connection attempt for device ID \""
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           device_id_to_stop)
+                    << "\" interrupted by higher-priority connection.";
     EndUnsuccessfulAttempt(
         device_id_to_stop,
         StateChangeDetail::STATE_CHANGE_DETAIL_INTERRUPTED_BY_HIGHER_PRIORITY);
@@ -498,9 +501,10 @@
   ConnectionMetadata* connection_metadata = GetConnectionMetadata(device_id);
   DCHECK(connection_metadata);
 
-  PA_LOG(INFO) << "Attempting connection - Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\"";
+  PA_LOG(VERBOSE) << "Attempting connection - Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\"";
 
   bool success = ble_scanner_->RegisterScanFilterForDevice(device_id) &&
                  ble_advertiser_->StartAdvertisingToDevice(device_id);
@@ -545,9 +549,10 @@
 
 void BleConnectionManager::OnConnectionAttemptTimeout(
     const std::string& device_id) {
-  PA_LOG(INFO) << "Connection attempt timeout - Device ID \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\".";
+  PA_LOG(VERBOSE) << "Connection attempt timeout - Device ID \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\".";
   EndUnsuccessfulAttempt(
       device_id,
       StateChangeDetail::STATE_CHANGE_DETAIL_COULD_NOT_ATTEMPT_CONNECTION);
@@ -589,9 +594,10 @@
 
 void BleConnectionManager::NotifyMessageReceived(std::string device_id,
                                                  std::string payload) {
-  PA_LOG(INFO) << "Message received - Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\", Message: \"" << payload << "\".";
+  PA_LOG(VERBOSE) << "Message received - Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\", Message: \"" << payload << "\".";
   for (auto& observer : observer_list_)
     observer.OnMessageReceived(device_id, payload);
 }
@@ -601,12 +607,15 @@
     cryptauth::SecureChannel::Status old_status,
     cryptauth::SecureChannel::Status new_status,
     StateChangeDetail state_change_detail) {
-  PA_LOG(INFO) << "Status change - Device ID: \""
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << "\": " << cryptauth::SecureChannel::StatusToString(old_status)
-               << " => " << cryptauth::SecureChannel::StatusToString(new_status)
-               << ", State change detail: "
-               << StateChangeDetailToString(state_change_detail);
+  PA_LOG(VERBOSE) << "Status change - Device ID: \""
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << "\": "
+                  << cryptauth::SecureChannel::StatusToString(old_status)
+                  << " => "
+                  << cryptauth::SecureChannel::StatusToString(new_status)
+                  << ", State change detail: "
+                  << StateChangeDetailToString(state_change_detail);
 
   for (auto& observer : metrics_observer_list_) {
     if (old_status == cryptauth::SecureChannel::Status::DISCONNECTED &&
diff --git a/chromeos/components/tether/ble_scanner_impl.cc b/chromeos/components/tether/ble_scanner_impl.cc
index 9017e15b..91b3590 100644
--- a/chromeos/components/tether/ble_scanner_impl.cc
+++ b/chromeos/components/tether/ble_scanner_impl.cc
@@ -221,7 +221,7 @@
 void BleScannerImpl::OnDiscoverySessionStarted(
     std::unique_ptr<device::BluetoothDiscoverySession> discovery_session) {
   is_initializing_discovery_session_ = false;
-  PA_LOG(INFO) << "Started discovery session successfully.";
+  PA_LOG(VERBOSE) << "Started discovery session successfully.";
 
   discovery_session_ = std::move(discovery_session);
   discovery_session_weak_ptr_factory_ =
@@ -256,7 +256,7 @@
 
 void BleScannerImpl::OnDiscoverySessionStopped() {
   is_stopping_discovery_session_ = false;
-  PA_LOG(INFO) << "Stopped discovery session successfully.";
+  PA_LOG(VERBOSE) << "Stopped discovery session successfully.";
 
   discovery_session_.reset();
   discovery_session_weak_ptr_factory_.reset();
diff --git a/chromeos/components/tether/connect_tethering_operation.cc b/chromeos/components/tether/connect_tethering_operation.cc
index 585dc16..ca22697 100644
--- a/chromeos/components/tether/connect_tethering_operation.cc
+++ b/chromeos/components/tether/connect_tethering_operation.cc
@@ -128,11 +128,11 @@
       ConnectTetheringResponse_ResponseCode::
           ConnectTetheringResponse_ResponseCode_SUCCESS) {
     if (response->has_ssid() && response->has_password()) {
-      PA_LOG(INFO) << "Received ConnectTetheringResponse from device with ID "
-                   << remote_device.GetTruncatedDeviceIdForLogs() << " and "
-                   << "response_code == SUCCESS. Config: {ssid: \""
-                   << response->ssid() << "\", password: \""
-                   << response->password() << "\"}";
+      PA_LOG(VERBOSE)
+          << "Received ConnectTetheringResponse from device with ID "
+          << remote_device.GetTruncatedDeviceIdForLogs() << " and "
+          << "response_code == SUCCESS. Config: {ssid: \"" << response->ssid()
+          << "\", password: \"" << response->password() << "\"}";
 
       tether_host_response_recorder_->RecordSuccessfulConnectTetheringResponse(
           remote_device);
@@ -151,9 +151,10 @@
           HostResponseErrorCode::INVALID_HOTSPOT_CREDENTIALS;
     }
   } else {
-    PA_LOG(INFO) << "Received ConnectTetheringResponse from device with ID "
-                 << remote_device.GetTruncatedDeviceIdForLogs() << " and "
-                 << "response_code == " << response->response_code() << ".";
+    PA_LOG(WARNING)
+        << "Received ConnectTetheringResponse from unexpected device with ID "
+        << remote_device.GetTruncatedDeviceIdForLogs() << " and "
+        << "response_code == " << response->response_code() << ".";
     error_code_to_return_ = ConnectTetheringResponseCodeToHostResponseErrorCode(
         response->response_code());
   }
diff --git a/chromeos/components/tether/connection_preserver_impl.cc b/chromeos/components/tether/connection_preserver_impl.cc
index a49903e..0942bf7 100644
--- a/chromeos/components/tether/connection_preserver_impl.cc
+++ b/chromeos/components/tether/connection_preserver_impl.cc
@@ -75,10 +75,10 @@
     RemovePreservedConnectionIfPresent();
     SetPreservedConnection(device_id);
   } else {
-    PA_LOG(INFO) << "The connection to device with ID "
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        device_id)
-                 << " was not preserved; another device has higher priority.";
+    PA_LOG(VERBOSE)
+        << "The connection to device with ID "
+        << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
+        << " was not preserved; another device has higher priority.";
   }
 }
 
@@ -95,9 +95,9 @@
 void ConnectionPreserverImpl::OnConnection(
     std::unique_ptr<secure_channel::ClientChannel> channel) {
   DCHECK(base::FeatureList::IsEnabled(chromeos::features::kMultiDeviceApi));
-  PA_LOG(INFO) << "Successfully preserved connection for device: "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      preserved_connection_device_id_);
+  PA_LOG(VERBOSE) << "Successfully preserved connection for device: "
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         preserved_connection_device_id_);
 
   // Simply hold on to the ClientChannel until the connection should no longer
   // be preserved.
@@ -106,9 +106,9 @@
 
 void ConnectionPreserverImpl::OnDisconnected() {
   DCHECK(base::FeatureList::IsEnabled(chromeos::features::kMultiDeviceApi));
-  PA_LOG(INFO) << "Remote device disconnected from this device: "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      preserved_connection_device_id_);
+  PA_LOG(VERBOSE) << "Remote device disconnected from this device: "
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         preserved_connection_device_id_);
   RemovePreservedConnectionIfPresent();
 }
 
@@ -164,9 +164,10 @@
     const std::string& device_id) {
   DCHECK(preserved_connection_device_id_.empty());
 
-  PA_LOG(INFO) << "Preserving connection to device with ID "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(device_id)
-               << ".";
+  PA_LOG(VERBOSE) << "Preserving connection to device with ID "
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id)
+                  << ".";
 
   preserved_connection_device_id_ = device_id;
 
@@ -201,10 +202,10 @@
   if (preserved_connection_device_id_.empty())
     return;
 
-  PA_LOG(INFO) << "Removing preserved connection to device with ID "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      preserved_connection_device_id_)
-               << ".";
+  PA_LOG(VERBOSE) << "Removing preserved connection to device with ID "
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         preserved_connection_device_id_)
+                  << ".";
 
   if (base::FeatureList::IsEnabled(chromeos::features::kMultiDeviceApi)) {
     connection_attempt_.reset();
diff --git a/chromeos/components/tether/disconnect_tethering_request_sender_impl.cc b/chromeos/components/tether/disconnect_tethering_request_sender_impl.cc
index 676995f..25b8c37 100644
--- a/chromeos/components/tether/disconnect_tethering_request_sender_impl.cc
+++ b/chromeos/components/tether/disconnect_tethering_request_sender_impl.cc
@@ -97,10 +97,10 @@
     return;
   }
 
-  PA_LOG(INFO) << "Attempting to send DisconnectTetheringRequest to device "
-               << "with ID "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      device_id);
+  PA_LOG(VERBOSE) << "Attempting to send DisconnectTetheringRequest to device "
+                  << "with ID "
+                  << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                         device_id);
 
   std::unique_ptr<DisconnectTetheringOperation> disconnect_tethering_operation =
       DisconnectTetheringOperation::Factory::NewInstance(
@@ -120,10 +120,10 @@
     const std::string& device_id,
     bool success) {
   if (success) {
-    PA_LOG(INFO) << "Successfully sent DisconnectTetheringRequest to device "
-                 << "with ID "
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        device_id);
+    PA_LOG(VERBOSE) << "Successfully sent DisconnectTetheringRequest to device "
+                    << "with ID "
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           device_id);
   } else {
     PA_LOG(ERROR) << "Failed to send DisconnectTetheringRequest to device "
                   << "with ID "
diff --git a/chromeos/components/tether/gms_core_notifications_state_tracker_impl.cc b/chromeos/components/tether/gms_core_notifications_state_tracker_impl.cc
index 77b245f..ed4e72b5 100644
--- a/chromeos/components/tether/gms_core_notifications_state_tracker_impl.cc
+++ b/chromeos/components/tether/gms_core_notifications_state_tracker_impl.cc
@@ -117,7 +117,7 @@
     ss.seekp(-1, ss.cur);
   }
   ss << "]";
-  PA_LOG(INFO) << ss.str();
+  PA_LOG(VERBOSE) << ss.str();
 
   NotifyGmsCoreNotificationStateChanged();
 }
diff --git a/chromeos/components/tether/host_scan_scheduler_impl.cc b/chromeos/components/tether/host_scan_scheduler_impl.cc
index e790ab63b..8523d4ab 100644
--- a/chromeos/components/tether/host_scan_scheduler_impl.cc
+++ b/chromeos/components/tether/host_scan_scheduler_impl.cc
@@ -94,8 +94,8 @@
       network_state_handler_->FirstNetworkByType(
           chromeos::NetworkTypePattern::Default());
   if (IsOnlineOrHasActiveTetherConnection(first_network)) {
-    PA_LOG(INFO) << "Skipping scan attempt because the device is already "
-                    "connected to a network.";
+    PA_LOG(VERBOSE) << "Skipping scan attempt because the device is already "
+                       "connected to a network.";
     return;
   }
 
@@ -180,7 +180,7 @@
 
   // If the screen is locked, a host scan should not occur.
   if (session_manager_->IsScreenLocked()) {
-    PA_LOG(INFO) << "Skipping scan attempt because the screen is locked.";
+    PA_LOG(VERBOSE) << "Skipping scan attempt because the screen is locked.";
     return;
   }
 
@@ -225,8 +225,8 @@
       base::TimeDelta::FromDays(kMaxScanMetricsDays) /* max */,
       kNumMetricsBuckets /* bucket_count */);
 
-  PA_LOG(INFO) << "Logging host scan batch duration. Duration was "
-               << batch_duration.InSeconds() << " seconds.";
+  PA_LOG(VERBOSE) << "Logging host scan batch duration. Duration was "
+                  << batch_duration.InSeconds() << " seconds.";
 }
 
 }  // namespace tether
diff --git a/chromeos/components/tether/host_scanner_impl.cc b/chromeos/components/tether/host_scanner_impl.cc
index eed64c1..6b4f915 100644
--- a/chromeos/components/tether/host_scanner_impl.cc
+++ b/chromeos/components/tether/host_scanner_impl.cc
@@ -79,7 +79,7 @@
   if (!host_scanner_operation_)
     return;
 
-  PA_LOG(INFO) << "Host scan has been stopped prematurely.";
+  PA_LOG(VERBOSE) << "Host scan has been stopped prematurely.";
 
   host_scanner_operation_->RemoveObserver(
       gms_core_notifications_state_tracker_);
@@ -98,8 +98,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "Starting Tether host scan. " << tether_hosts.size() << " "
-               << "potential host(s) included in the search.";
+  PA_LOG(VERBOSE) << "Starting Tether host scan. " << tether_hosts.size() << " "
+                  << "potential host(s) included in the search.";
 
   tether_guids_in_cache_before_scan_ =
       host_scan_cache_->GetTetherGuidsInCache();
@@ -173,8 +173,9 @@
   // notification to be shown once each time the device is unlocked. Without
   // this change, the notification would only be shown once per user login.
   // See https://crbug.com/813838.
-  PA_LOG(INFO) << "Screen was locked; the \"available hosts\" notification can "
-               << "be shown again after the next unlock.";
+  PA_LOG(VERBOSE)
+      << "Screen was locked; the \"available hosts\" notification can "
+      << "be shown again after the next unlock.";
   has_notification_been_shown_in_previous_scan_ = false;
 }
 
@@ -241,8 +242,8 @@
   was_notification_shown_in_current_scan_ = false;
   was_notification_showing_when_current_scan_started_ = false;
 
-  PA_LOG(INFO) << "Finished Tether host scan. " << final_scan_results.size()
-               << " potential host(s) were found.";
+  PA_LOG(VERBOSE) << "Finished Tether host scan. " << final_scan_results.size()
+                  << " potential host(s) were found.";
 
   // If the final scan result has been received, the operation is finished.
   // Delete it.
diff --git a/chromeos/components/tether/host_scanner_operation.cc b/chromeos/components/tether/host_scanner_operation.cc
index 267923cd..535bf8d1 100644
--- a/chromeos/components/tether/host_scanner_operation.cc
+++ b/chromeos/components/tether/host_scanner_operation.cc
@@ -200,28 +200,31 @@
       static_cast<TetherAvailabilityResponse*>(
           message_wrapper->GetProto().get());
   if (AreGmsCoreNotificationsDisabled(response)) {
-    PA_LOG(INFO) << "Received TetherAvailabilityResponse from device with ID "
-                 << remote_device.GetTruncatedDeviceIdForLogs() << " which "
-                 << "indicates that Google Play Services notifications are "
-                 << "disabled. Response code: " << response->response_code();
+    PA_LOG(VERBOSE)
+        << "Received TetherAvailabilityResponse from device with ID "
+        << remote_device.GetTruncatedDeviceIdForLogs() << " which "
+        << "indicates that Google Play Services notifications are "
+        << "disabled. Response code: " << response->response_code();
     gms_core_notifications_disabled_devices_.push_back(remote_device);
     NotifyObserversOfScannedDeviceList(false /* is_final_scan_result */);
   } else if (!IsTetheringAvailableWithValidDeviceStatus(response)) {
     // If the received message is invalid or if it states that tethering is
     // unavailable, ignore it.
-    PA_LOG(INFO) << "Received TetherAvailabilityResponse from device with ID "
-                 << remote_device.GetTruncatedDeviceIdForLogs() << " which "
-                 << "indicates that tethering is not available.";
+    PA_LOG(VERBOSE)
+        << "Received TetherAvailabilityResponse from device with ID "
+        << remote_device.GetTruncatedDeviceIdForLogs() << " which "
+        << "indicates that tethering is not available.";
   } else {
     bool setup_required =
         response->response_code() ==
         TetherAvailabilityResponse_ResponseCode::
             TetherAvailabilityResponse_ResponseCode_SETUP_NEEDED;
 
-    PA_LOG(INFO) << "Received TetherAvailabilityResponse from device with ID "
-                 << remote_device.GetTruncatedDeviceIdForLogs() << " which "
-                 << "indicates that tethering is available. setup_required = "
-                 << setup_required;
+    PA_LOG(VERBOSE)
+        << "Received TetherAvailabilityResponse from device with ID "
+        << remote_device.GetTruncatedDeviceIdForLogs() << " which "
+        << "indicates that tethering is available. setup_required = "
+        << setup_required;
 
     tether_host_response_recorder_->RecordSuccessfulTetherAvailabilityResponse(
         remote_device);
diff --git a/chromeos/components/tether/hotspot_usage_duration_tracker.cc b/chromeos/components/tether/hotspot_usage_duration_tracker.cc
index 3e928670d..456365e 100644
--- a/chromeos/components/tether/hotspot_usage_duration_tracker.cc
+++ b/chromeos/components/tether/hotspot_usage_duration_tracker.cc
@@ -58,8 +58,8 @@
       // a connection is established.
       last_connection_start_ = base::Time();
 
-      PA_LOG(INFO) << "Connection to hotspot has ended. Duration was "
-                   << duration.InSeconds() << " second(s).";
+      PA_LOG(VERBOSE) << "Connection to hotspot has ended. Duration was "
+                      << duration.InSeconds() << " second(s).";
       UMA_HISTOGRAM_CUSTOM_TIMES(
           "InstantTethering.HotspotUsageDuration", duration,
           base::TimeDelta::FromSeconds(kMinDurationSeconds) /* min */,
diff --git a/chromeos/components/tether/master_host_scan_cache.cc b/chromeos/components/tether/master_host_scan_cache.cc
index f7123d2..388ae00 100644
--- a/chromeos/components/tether/master_host_scan_cache.cc
+++ b/chromeos/components/tether/master_host_scan_cache.cc
@@ -70,10 +70,10 @@
 
   if (active_host_->GetTetherNetworkGuid() == tether_network_guid) {
     DCHECK(ExistsInCache(tether_network_guid));
-    PA_LOG(INFO) << "RemoveHostScanResult() called for Tether network with "
-                 << "GUID " << tether_network_guid << ", but the "
-                 << "corresponding device is the active host. Not removing "
-                 << "this scan result from the cache.";
+    PA_LOG(VERBOSE) << "RemoveHostScanResult() called for Tether network with "
+                    << "GUID " << tether_network_guid << ", but the "
+                    << "corresponding device is the active host. Not removing "
+                    << "this scan result from the cache.";
     return false;
   }
 
@@ -95,8 +95,8 @@
   DCHECK(removed_from_network && removed_from_persistent &&
          removed_from_timer_map);
 
-  PA_LOG(INFO) << "Removed cache entry with GUID \"" << tether_network_guid
-               << "\".";
+  PA_LOG(VERBOSE) << "Removed cache entry with GUID \"" << tether_network_guid
+                  << "\".";
 
   // We already DCHECK()ed above that this evaluates to true, but we return the
   // AND'ed value here because without this, release builds (without DCHECK())
@@ -165,9 +165,10 @@
   DCHECK(found_iter != tether_guid_to_timer_map_.end());
   DCHECK(!found_iter->second->IsRunning());
 
-  PA_LOG(INFO) << "Starting host scan cache timer for Tether network with GUID "
-               << "\"" << tether_network_guid << "\". Will fire in "
-               << kNumMinutesBeforeCacheEntryExpires << " minutes.";
+  PA_LOG(VERBOSE)
+      << "Starting host scan cache timer for Tether network with GUID "
+      << "\"" << tether_network_guid << "\". Will fire in "
+      << kNumMinutesBeforeCacheEntryExpires << " minutes.";
 
   found_iter->second->Start(
       FROM_HERE,
@@ -193,8 +194,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "Timer fired for Tether network GUID " << tether_network_guid
-               << ". Removing stale scan result.";
+  PA_LOG(VERBOSE) << "Timer fired for Tether network GUID "
+                  << tether_network_guid << ". Removing stale scan result.";
   RemoveHostScanResult(tether_network_guid);
 }
 
diff --git a/chromeos/components/tether/message_transfer_operation.cc b/chromeos/components/tether/message_transfer_operation.cc
index 445739f..362647b 100644
--- a/chromeos/components/tether/message_transfer_operation.cc
+++ b/chromeos/components/tether/message_transfer_operation.cc
@@ -308,8 +308,8 @@
 
 void MessageTransferOperation::OnDisconnected(
     cryptauth::RemoteDeviceRef remote_device) {
-  PA_LOG(INFO) << "Remote device disconnected from this device: "
-               << remote_device.GetTruncatedDeviceIdForLogs();
+  PA_LOG(VERBOSE) << "Remote device disconnected from this device: "
+                  << remote_device.GetTruncatedDeviceIdForLogs();
   UnregisterDevice(remote_device);
 }
 
@@ -336,34 +336,34 @@
     case BleConnectionManager::StateChangeDetail::
         STATE_CHANGE_DETAIL_COULD_NOT_ATTEMPT_CONNECTION:
       ++attempts_for_device.empty_scan_attempts;
-      PA_LOG(INFO) << "Connection attempt failed; could not discover the "
-                   << "device with ID "
-                   << remote_device.GetTruncatedDeviceIdForLogs() << ". "
-                   << "Number of failures to establish connection: "
-                   << attempts_for_device.empty_scan_attempts;
+      PA_LOG(VERBOSE) << "Connection attempt failed; could not discover the "
+                      << "device with ID "
+                      << remote_device.GetTruncatedDeviceIdForLogs() << ". "
+                      << "Number of failures to establish connection: "
+                      << attempts_for_device.empty_scan_attempts;
 
       if (attempts_for_device.empty_scan_attempts >= kMaxEmptyScansPerDevice) {
-        PA_LOG(INFO) << "Reached retry limit for failing to discover the "
-                     << "device with ID "
-                     << remote_device.GetTruncatedDeviceIdForLogs() << ". "
-                     << "Unregistering device.";
+        PA_LOG(VERBOSE) << "Reached retry limit for failing to discover the "
+                        << "device with ID "
+                        << remote_device.GetTruncatedDeviceIdForLogs() << ". "
+                        << "Unregistering device.";
         UnregisterDevice(remote_device);
       }
       break;
     case BleConnectionManager::StateChangeDetail::
         STATE_CHANGE_DETAIL_GATT_CONNECTION_WAS_ATTEMPTED:
       ++attempts_for_device.gatt_connection_attempts;
-      PA_LOG(INFO) << "Connection attempt failed; GATT connection error for "
-                   << "device with ID "
-                   << remote_device.GetTruncatedDeviceIdForLogs() << ". "
-                   << "Number of GATT error: "
-                   << attempts_for_device.gatt_connection_attempts;
+      PA_LOG(VERBOSE) << "Connection attempt failed; GATT connection error for "
+                      << "device with ID "
+                      << remote_device.GetTruncatedDeviceIdForLogs() << ". "
+                      << "Number of GATT error: "
+                      << attempts_for_device.gatt_connection_attempts;
       if (attempts_for_device.gatt_connection_attempts >=
           kMaxGattConnectionAttemptsPerDevice) {
-        PA_LOG(INFO) << "Reached retry limit for GATT connection errors for "
-                     << "device with ID "
-                     << remote_device.GetTruncatedDeviceIdForLogs() << ". "
-                     << "Unregistering device.";
+        PA_LOG(VERBOSE) << "Reached retry limit for GATT connection errors for "
+                        << "device with ID "
+                        << remote_device.GetTruncatedDeviceIdForLogs() << ". "
+                        << "Unregistering device.";
         UnregisterDevice(remote_device);
       }
       break;
@@ -397,9 +397,9 @@
 void MessageTransferOperation::StartTimerForDevice(
     cryptauth::RemoteDeviceRef remote_device,
     uint32_t timeout_seconds) {
-  PA_LOG(INFO) << "Starting timer for operation with message type "
-               << message_type_for_connection_ << " from device with ID "
-               << remote_device.GetTruncatedDeviceIdForLogs() << ".";
+  PA_LOG(VERBOSE) << "Starting timer for operation with message type "
+                  << message_type_for_connection_ << " from device with ID "
+                  << remote_device.GetTruncatedDeviceIdForLogs() << ".";
 
   remote_device_to_timer_map_.emplace(remote_device,
                                       timer_factory_->CreateOneShotTimer());
diff --git a/chromeos/components/tether/network_configuration_remover.cc b/chromeos/components/tether/network_configuration_remover.cc
index f83d273d..6f0e6e4 100644
--- a/chromeos/components/tether/network_configuration_remover.cc
+++ b/chromeos/components/tether/network_configuration_remover.cc
@@ -12,8 +12,8 @@
 namespace {
 
 void RemoveConfigurationSuccessCallback(const std::string& path) {
-  PA_LOG(INFO) << "Successfully removed Wi-Fi network with path " << path
-               << ".";
+  PA_LOG(VERBOSE) << "Successfully removed Wi-Fi network with path " << path
+                  << ".";
 }
 
 void RemoveConfigurationFailureCallback(
diff --git a/chromeos/components/tether/network_connection_handler_tether_delegate.cc b/chromeos/components/tether/network_connection_handler_tether_delegate.cc
index 181ba34..bf30dac 100644
--- a/chromeos/components/tether/network_connection_handler_tether_delegate.cc
+++ b/chromeos/components/tether/network_connection_handler_tether_delegate.cc
@@ -95,10 +95,10 @@
     std::string previous_host_guid = active_host_->GetTetherNetworkGuid();
     DCHECK(!previous_host_guid.empty());
 
-    PA_LOG(INFO) << "Connection requested to GUID " << tether_network_guid
-                 << ", but there is already an active connection. "
-                 << "Disconnecting from network with GUID "
-                 << previous_host_guid << ".";
+    PA_LOG(VERBOSE) << "Connection requested to GUID " << tether_network_guid
+                    << ", but there is already an active connection. "
+                    << "Disconnecting from network with GUID "
+                    << previous_host_guid << ".";
     DisconnectFromNetwork(
         previous_host_guid, base::DoNothing(),
         base::Bind(&OnFailedDisconnectionFromPreviousHost, previous_host_guid));
diff --git a/chromeos/components/tether/network_host_scan_cache.cc b/chromeos/components/tether/network_host_scan_cache.cc
index bc2ccd2..ce4fafb 100644
--- a/chromeos/components/tether/network_host_scan_cache.cc
+++ b/chromeos/components/tether/network_host_scan_cache.cc
@@ -35,22 +35,23 @@
         entry.battery_percentage, entry.signal_strength,
         HasConnectedToHost(entry.tether_network_guid));
 
-    PA_LOG(INFO) << "Added scan result for Tether network with GUID "
-                 << entry.tether_network_guid << ". "
-                 << "Device name: " << entry.device_name << ", "
-                 << "carrier: " << entry.carrier << ", "
-                 << "battery percentage: " << entry.battery_percentage << ", "
-                 << "signal strength: " << entry.signal_strength;
+    PA_LOG(VERBOSE) << "Added scan result for Tether network with GUID "
+                    << entry.tether_network_guid << ". "
+                    << "Device name: " << entry.device_name << ", "
+                    << "carrier: " << entry.carrier << ", "
+                    << "battery percentage: " << entry.battery_percentage
+                    << ", "
+                    << "signal strength: " << entry.signal_strength;
   } else {
     network_state_handler_->UpdateTetherNetworkProperties(
         entry.tether_network_guid, entry.carrier, entry.battery_percentage,
         entry.signal_strength);
 
-    PA_LOG(INFO) << "Updated scan result for Tether network with GUID "
-                 << entry.tether_network_guid << ". "
-                 << "New carrier: " << entry.carrier << ", "
-                 << "new battery percentage: " << entry.battery_percentage
-                 << ", new signal strength: " << entry.signal_strength;
+    PA_LOG(VERBOSE) << "Updated scan result for Tether network with GUID "
+                    << entry.tether_network_guid << ". "
+                    << "New carrier: " << entry.carrier << ", "
+                    << "new battery percentage: " << entry.battery_percentage
+                    << ", new signal strength: " << entry.signal_strength;
   }
 }
 
@@ -103,9 +104,9 @@
             tether_network_guid);
 
     if (update_successful) {
-      PA_LOG(INFO) << "Successfully set the HasConnectedToHost property of "
-                   << "the Tether network with GUID " << tether_network_guid
-                   << " to true.";
+      PA_LOG(VERBOSE) << "Successfully set the HasConnectedToHost property of "
+                      << "the Tether network with GUID " << tether_network_guid
+                      << " to true.";
     }
   }
 }
diff --git a/chromeos/components/tether/tether_component_impl.cc b/chromeos/components/tether/tether_component_impl.cc
index eab378f..1357d64 100644
--- a/chromeos/components/tether/tether_component_impl.cc
+++ b/chromeos/components/tether/tether_component_impl.cc
@@ -231,11 +231,11 @@
   // Tether component is shut down.
   if (active_host->GetActiveHostStatus() !=
       ActiveHost::ActiveHostStatus::DISCONNECTED) {
-    PA_LOG(INFO) << "There was an active connection during Tether shutdown. "
-                 << "Initiating disconnection from device ID \""
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        active_host->GetActiveHostDeviceId())
-                 << "\".";
+    PA_LOG(VERBOSE) << "There was an active connection during Tether shutdown. "
+                    << "Initiating disconnection from device ID \""
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           active_host->GetActiveHostDeviceId())
+                    << "\".";
     tether_disconnector->DisconnectFromNetwork(
         active_host->GetTetherNetworkGuid(), base::DoNothing(),
         base::Bind(&OnDisconnectErrorDuringShutdown),
diff --git a/chromeos/components/tether/tether_connector_impl.cc b/chromeos/components/tether/tether_connector_impl.cc
index ef5f583..d2aa349 100644
--- a/chromeos/components/tether/tether_connector_impl.cc
+++ b/chromeos/components/tether/tether_connector_impl.cc
@@ -81,8 +81,8 @@
   DCHECK(!success_callback.is_null());
   DCHECK(!error_callback.is_null());
 
-  PA_LOG(INFO) << "Attempting to connect to network with GUID "
-               << tether_network_guid << ".";
+  PA_LOG(VERBOSE) << "Attempting to connect to network with GUID "
+                  << tether_network_guid << ".";
   notification_presenter_->RemoveConnectionToHostFailedNotification();
 
   const std::string device_id =
@@ -97,9 +97,9 @@
   DCHECK(device_id_pending_connection_ != device_id);
 
   if (!device_id_pending_connection_.empty()) {
-    PA_LOG(INFO) << "A connection attempt was already in progress to device "
-                 << "with ID " << device_id_pending_connection_ << ". "
-                 << "Canceling that connection attempt before continuing.";
+    PA_LOG(VERBOSE) << "A connection attempt was already in progress to device "
+                    << "with ID " << device_id_pending_connection_ << ". "
+                    << "Canceling that connection attempt before continuing.";
     CancelConnectionAttempt(
         device_id_tether_network_guid_map_->GetTetherNetworkGuidForDeviceId(
             device_id_pending_connection_));
@@ -130,8 +130,8 @@
     return false;
   }
 
-  PA_LOG(INFO) << "Canceling connection attempt to Tether network with GUID "
-               << tether_network_guid;
+  PA_LOG(VERBOSE) << "Canceling connection attempt to Tether network with GUID "
+                  << tether_network_guid;
 
   if (connect_tethering_operation_) {
     // If a ConnectTetheringOperation is in progress, stop it.
@@ -178,17 +178,18 @@
   if (device_id_pending_connection_ != remote_device.GetDeviceId()) {
     // If the success was part of a previous attempt for a different device,
     // ignore it.
-    PA_LOG(INFO) << "Received successful ConnectTetheringResponse from "
-                 << "device with ID "
-                 << remote_device.GetTruncatedDeviceIdForLogs() << ", but the "
-                 << "connection attempt to that device has been canceled.";
+    PA_LOG(VERBOSE) << "Received successful ConnectTetheringResponse from "
+                    << "device with ID "
+                    << remote_device.GetTruncatedDeviceIdForLogs()
+                    << ", but the "
+                    << "connection attempt to that device has been canceled.";
 
     return;
   }
 
-  PA_LOG(INFO) << "Received successful ConnectTetheringResponse from device "
-               << "with ID " << remote_device.GetTruncatedDeviceIdForLogs()
-               << ". SSID: \"" << ssid << "\".";
+  PA_LOG(VERBOSE) << "Received successful ConnectTetheringResponse from device "
+                  << "with ID " << remote_device.GetTruncatedDeviceIdForLogs()
+                  << ". SSID: \"" << ssid << "\".";
 
   // Make a copy of the device ID, SSID, and password to pass below before
   // destroying |connect_tethering_operation_|.
@@ -212,9 +213,10 @@
   if (device_id_pending_connection_ != device_id_copy) {
     // If the failure was part of a previous attempt for a different device,
     // ignore it.
-    PA_LOG(INFO) << "Received failed ConnectTetheringResponse from device with "
-                 << "ID " << remote_device.GetTruncatedDeviceIdForLogs()
-                 << ", but a connection to another device has already started.";
+    PA_LOG(VERBOSE)
+        << "Received failed ConnectTetheringResponse from device with "
+        << "ID " << remote_device.GetTruncatedDeviceIdForLogs()
+        << ", but a connection to another device has already started.";
     return;
   }
 
@@ -233,10 +235,10 @@
     const std::string& device_id,
     base::Optional<cryptauth::RemoteDeviceRef> tether_host_to_connect) {
   if (device_id_pending_connection_ != device_id) {
-    PA_LOG(INFO) << "Device to connect to has changed while device with ID "
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        device_id)
-                 << " was being fetched.";
+    PA_LOG(VERBOSE) << "Device to connect to has changed while device with ID "
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           device_id)
+                    << " was being fetched.";
     return;
   }
 
@@ -340,11 +342,11 @@
       return;
     }
 
-    PA_LOG(INFO) << "Connected to Wi-Fi hotspot for device with ID "
-                 << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                        device_id)
-                 << ", but the connection to that device was canceled. "
-                 << "Disconnecting.";
+    PA_LOG(VERBOSE) << "Connected to Wi-Fi hotspot for device with ID "
+                    << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                           device_id)
+                    << ", but the connection to that device was canceled. "
+                    << "Disconnecting.";
 
     // Disconnect from the Wi-Fi hotspot; otherwise, it is possible to be
     // connected to the Wi-Fi hotspot despite there being no active host. See
diff --git a/chromeos/components/tether/tether_disconnector_impl.cc b/chromeos/components/tether/tether_disconnector_impl.cc
index 80430e2a..816aeb15 100644
--- a/chromeos/components/tether/tether_disconnector_impl.cc
+++ b/chromeos/components/tether/tether_disconnector_impl.cc
@@ -68,9 +68,10 @@
   if (status == ActiveHost::ActiveHostStatus::CONNECTING) {
     // Note: CancelConnectionAttempt() disconnects the active host.
     if (tether_connector_->CancelConnectionAttempt(tether_network_guid)) {
-      PA_LOG(INFO) << "Disconnect requested for Tether network with GUID "
-                   << tether_network_guid << ", which had not yet connected. "
-                   << "Canceled in-progress connection attempt.";
+      PA_LOG(VERBOSE) << "Disconnect requested for Tether network with GUID "
+                      << tether_network_guid
+                      << ", which had not yet connected. "
+                      << "Canceled in-progress connection attempt.";
       success_callback.Run();
       return;
     }
diff --git a/chromeos/components/tether/tether_network_disconnection_handler.cc b/chromeos/components/tether/tether_network_disconnection_handler.cc
index e50d7b7..910b82f 100644
--- a/chromeos/components/tether/tether_network_disconnection_handler.cc
+++ b/chromeos/components/tether/tether_network_disconnection_handler.cc
@@ -67,8 +67,8 @@
 void TetherNetworkDisconnectionHandler::HandleActiveWifiNetworkDisconnection(
     const std::string& network_guid,
     const std::string& network_path) {
-  PA_LOG(INFO) << "Connection to active host (Wi-Fi network GUID "
-               << network_guid << ") has been lost.";
+  PA_LOG(VERBOSE) << "Connection to active host (Wi-Fi network GUID "
+                  << network_guid << ") has been lost.";
 
   // Check if Wi-Fi is enabled; if it is, this indicates that the connection
   // to the Tether host dropped. If it isn't, then the event of Wi-Fi being
diff --git a/chromeos/components/tether/wifi_hotspot_connector.cc b/chromeos/components/tether/wifi_hotspot_connector.cc
index 92d4a0e..d730ae5 100644
--- a/chromeos/components/tether/wifi_hotspot_connector.cc
+++ b/chromeos/components/tether/wifi_hotspot_connector.cc
@@ -65,13 +65,13 @@
         network_state_handler_->DisassociateTetherNetworkStateFromWifiNetwork(
             tether_network_guid_);
     if (successful_disassociation) {
-      PA_LOG(INFO) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
-                   << "successfully disassociated from Tether network (ID "
-                   << "\"" << tether_network_guid_ << "\").";
+      PA_LOG(VERBOSE) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
+                      << "successfully disassociated from Tether network (ID "
+                      << "\"" << tether_network_guid_ << "\").";
     } else {
-      PA_LOG(INFO) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
-                   << "failed to disassociate from Tether network ID (\""
-                   << tether_network_guid_ << "\").";
+      PA_LOG(ERROR) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
+                    << "failed to disassociate from Tether network ID (\""
+                    << tether_network_guid_ << "\").";
     }
 
     CompleteActiveConnectionAttempt(false /* success */);
@@ -195,15 +195,15 @@
       network_state_handler_->AssociateTetherNetworkStateWithWifiNetwork(
           tether_network_guid_, wifi_network_guid_);
   if (successful_association) {
-    PA_LOG(INFO) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
-                 << "successfully associated with Tether network (ID \""
-                 << tether_network_guid_ << "\"). Starting connection "
-                 << "attempt.";
+    PA_LOG(VERBOSE) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
+                    << "successfully associated with Tether network (ID \""
+                    << tether_network_guid_ << "\"). Starting connection "
+                    << "attempt.";
   } else {
-    PA_LOG(INFO) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
-                 << "failed to associate with Tether network (ID \""
-                 << tether_network_guid_ << "\"). Starting connection "
-                 << "attempt.";
+    PA_LOG(ERROR) << "Wi-Fi network (ID \"" << wifi_network_guid_ << "\") "
+                  << "failed to associate with Tether network (ID \""
+                  << tether_network_guid_ << "\"). Starting connection "
+                  << "attempt.";
   }
 
   // Initiate a connection to the network.
@@ -264,10 +264,10 @@
 base::DictionaryValue WifiHotspotConnector::CreateWifiPropertyDictionary(
     const std::string& ssid,
     const std::string& password) {
-  PA_LOG(INFO) << "Creating network configuration. "
-               << "SSID: " << ssid << ", "
-               << "Password: " << password << ", "
-               << "Wi-Fi network GUID: " << wifi_network_guid_;
+  PA_LOG(VERBOSE) << "Creating network configuration. "
+                  << "SSID: " << ssid << ", "
+                  << "Password: " << password << ", "
+                  << "Wi-Fi network GUID: " << wifi_network_guid_;
 
   base::DictionaryValue properties;
 
diff --git a/chromeos/components/tether/wifi_hotspot_disconnector_impl.cc b/chromeos/components/tether/wifi_hotspot_disconnector_impl.cc
index f1a6c814..7057c618 100644
--- a/chromeos/components/tether/wifi_hotspot_disconnector_impl.cc
+++ b/chromeos/components/tether/wifi_hotspot_disconnector_impl.cc
@@ -96,8 +96,8 @@
     const std::string& wifi_network_path,
     const base::Closure& success_callback,
     const network_handler::StringResultCallback& error_callback) {
-  PA_LOG(INFO) << "Successfully disconnected from Wi-Fi network with GUID "
-               << wifi_network_guid << ".";
+  PA_LOG(VERBOSE) << "Successfully disconnected from Wi-Fi network with GUID "
+                  << wifi_network_guid << ".";
   CleanUpAfterWifiDisconnection(true /* success */, wifi_network_path,
                                 success_callback, error_callback);
 }
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc
index 1cfb850a..945d4d8e 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -842,6 +842,10 @@
   device_settings_update->mutable_device_settings()->set_locale(
       service_->assistant_state()->locale().value());
 
+  // Enable personal readout to grant permission for personal features.
+  device_settings_update->mutable_device_settings()->set_personal_readout(
+      assistant::AssistantDeviceSettings::PERSONAL_READOUT_ENABLED);
+
   // Device settings update result is not handled because it is not included in
   // the SettingsUiUpdateResult.
   SendUpdateSettingsUiRequest(update.SerializeAsString(), base::DoNothing());
diff --git a/chromeos/services/assistant/public/proto/assistant_device_settings_ui.proto b/chromeos/services/assistant/public/proto/assistant_device_settings_ui.proto
index d2f59680..70333c78 100644
--- a/chromeos/services/assistant/public/proto/assistant_device_settings_ui.proto
+++ b/chromeos/services/assistant/public/proto/assistant_device_settings_ui.proto
@@ -28,5 +28,12 @@
 }
 
 message AssistantDeviceSettings {
+  // Whether this device may display/read out personal info.
+  enum PersonalReadout {
+    // This device may display/read out personal info.
+    PERSONAL_READOUT_ENABLED = 1;
+  }
+  optional PersonalReadout personal_readout = 2;
+
   optional string locale = 5;
 }
diff --git a/chromeos/services/device_sync/device_sync_impl.cc b/chromeos/services/device_sync/device_sync_impl.cc
index f21c925..7e203da 100644
--- a/chromeos/services/device_sync/device_sync_impl.cc
+++ b/chromeos/services/device_sync/device_sync_impl.cc
@@ -236,7 +236,7 @@
       set_software_feature_timer_(std::move(timer)),
       status_(Status::FETCHING_ACCOUNT_INFO),
       weak_ptr_factory_(this) {
-  PA_LOG(INFO) << "DeviceSyncImpl: Initializing.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: Initializing.";
   ProcessPrimaryAccountInfo(identity_manager_->GetPrimaryAccountInfo());
 }
 
@@ -374,7 +374,8 @@
 }
 
 void DeviceSyncImpl::OnEnrollmentFinished(bool success) {
-  PA_LOG(INFO) << "DeviceSyncImpl: Enrollment finished; success = " << success;
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: Enrollment finished; success = "
+                  << success;
 
   if (!success)
     return;
@@ -386,8 +387,8 @@
 }
 
 void DeviceSyncImpl::OnSyncDeviceListChanged() {
-  PA_LOG(INFO) << "DeviceSyncImpl: Synced devices changed; notifying "
-               << "observers.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: Synced devices changed; notifying "
+                  << "observers.";
   NotifyOnNewDevicesSynced();
 
   // Iterate through pending SetSoftwareFeature() requests. If any of them have
@@ -399,8 +400,9 @@
       continue;
     }
 
-    PA_LOG(INFO) << "DeviceSyncImpl::OnSyncDeviceListChanged(): Feature state "
-                 << "updated via device sync; notifying success callbacks.";
+    PA_LOG(VERBOSE)
+        << "DeviceSyncImpl::OnSyncDeviceListChanged(): Feature state "
+        << "updated via device sync; notifying success callbacks.";
     it->second->InvokeCallback(mojom::NetworkRequestResult::kSuccess);
     it = id_to_pending_set_software_feature_request_map_.erase(it);
   }
@@ -448,7 +450,7 @@
   auto pref_registry = pref_connection_delegate_->CreatePrefRegistry();
   RegisterDeviceSyncPrefs(pref_registry.get());
 
-  PA_LOG(INFO) << "DeviceSyncImpl: Connecting to pref service.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: Connecting to pref service.";
   pref_connection_delegate_->ConnectToPrefService(
       connector_, std::move(pref_registry),
       base::Bind(&DeviceSyncImpl::OnConnectedToPrefService,
@@ -460,8 +462,8 @@
   DCHECK(status_ == Status::CONNECTING_TO_USER_PREFS);
   status_ = Status::WAITING_FOR_ENROLLMENT;
 
-  PA_LOG(INFO) << "DeviceSyncImpl: Connected to pref service; initializing "
-               << "CryptAuth managers.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: Connected to pref service; initializing "
+                  << "CryptAuth managers.";
   pref_service_ = std::move(pref_service);
   InitializeCryptAuthManagementObjects();
 
@@ -469,7 +471,7 @@
   // continue. Once enrollment has finished, OnEnrollmentFinished() is invoked,
   // which finishes the initialization flow.
   if (!cryptauth_enrollment_manager_->IsEnrollmentValid()) {
-    PA_LOG(INFO) << "DeviceSyncImpl: Waiting for enrollment to complete.";
+    PA_LOG(VERBOSE) << "DeviceSyncImpl: Waiting for enrollment to complete.";
     return;
   }
 
@@ -532,8 +534,8 @@
 
   status_ = Status::READY;
 
-  PA_LOG(INFO) << "DeviceSyncImpl: CryptAuth Enrollment is valid; service "
-               << "fully initialized.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl: CryptAuth Enrollment is valid; service "
+                  << "fully initialized.";
 }
 
 base::Optional<cryptauth::RemoteDevice>
@@ -555,9 +557,9 @@
 }
 
 void DeviceSyncImpl::OnSetSoftwareFeatureStateSuccess() {
-  PA_LOG(INFO) << "DeviceSyncImpl::OnSetSoftwareFeatureStateSuccess(): "
-               << "Successfully completed SetSoftwareFeatureState() call; "
-               << "requesting force sync.";
+  PA_LOG(VERBOSE) << "DeviceSyncImpl::OnSetSoftwareFeatureStateSuccess(): "
+                  << "Successfully completed SetSoftwareFeatureState() call; "
+                  << "requesting force sync.";
   cryptauth_device_manager_->ForceSyncNow(
       cryptauth::INVOCATION_REASON_FEATURE_TOGGLED);
 
diff --git a/chromeos/services/device_sync/device_sync_service.cc b/chromeos/services/device_sync/device_sync_service.cc
index 40d3d73..409ca158 100644
--- a/chromeos/services/device_sync/device_sync_service.cc
+++ b/chromeos/services/device_sync/device_sync_service.cc
@@ -28,7 +28,7 @@
 DeviceSyncService::~DeviceSyncService() = default;
 
 void DeviceSyncService::OnStart() {
-  PA_LOG(INFO) << "DeviceSyncService::OnStart()";
+  PA_LOG(VERBOSE) << "DeviceSyncService::OnStart()";
 
   // context() cannot be invoked until after the constructor is run, so
   // |device_sync_impl_| cannot be initialized until OnStart().
@@ -45,8 +45,8 @@
     const service_manager::BindSourceInfo& source_info,
     const std::string& interface_name,
     mojo::ScopedMessagePipeHandle interface_pipe) {
-  PA_LOG(INFO) << "DeviceSyncService::OnBindInterface() from interface "
-               << interface_name << ".";
+  PA_LOG(VERBOSE) << "DeviceSyncService::OnBindInterface() from interface "
+                  << interface_name << ".";
   registry_.BindInterface(interface_name, std::move(interface_pipe));
 }
 
diff --git a/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc b/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc
index d7d33579..06152df 100644
--- a/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc
+++ b/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc
@@ -168,9 +168,9 @@
     const base::Optional<std::vector<cryptauth::RemoteDevice>>&
         remote_devices) {
   if (!remote_devices) {
-    PA_LOG(INFO) << "Tried to fetch synced devices before service was fully "
-                    "initialized; waiting for sync to complete before "
-                    "continuing.";
+    PA_LOG(VERBOSE) << "Tried to fetch synced devices before service was fully "
+                       "initialized; waiting for sync to complete before "
+                       "continuing.";
     return;
   }
 
@@ -195,9 +195,9 @@
 void DeviceSyncClientImpl::OnGetLocalDeviceMetadataCompleted(
     const base::Optional<cryptauth::RemoteDevice>& local_device_metadata) {
   if (!local_device_metadata) {
-    PA_LOG(INFO) << "Tried to get local device metadata before service was "
-                    "fully initialized; waiting for enrollment to complete "
-                    "before continuing.";
+    PA_LOG(VERBOSE) << "Tried to get local device metadata before service was "
+                       "fully initialized; waiting for enrollment to complete "
+                       "before continuing.";
     return;
   }
 
diff --git a/chromeos/services/multidevice_setup/account_status_change_delegate_notifier_impl.cc b/chromeos/services/multidevice_setup/account_status_change_delegate_notifier_impl.cc
index a8c5cdc..0b69834 100644
--- a/chromeos/services/multidevice_setup/account_status_change_delegate_notifier_impl.cc
+++ b/chromeos/services/multidevice_setup/account_status_change_delegate_notifier_impl.cc
@@ -154,9 +154,10 @@
 void AccountStatusChangeDelegateNotifierImpl::CheckForMultiDeviceEvents(
     const HostStatusProvider::HostStatusWithDevice& host_status_with_device) {
   if (!delegate()) {
-    PA_LOG(INFO) << "AccountStatusChangeDelegateNotifierImpl::"
-                 << "CheckForMultiDeviceEvents(): Tried to check for potential "
-                 << "events, but no delegate was set.";
+    PA_LOG(WARNING)
+        << "AccountStatusChangeDelegateNotifierImpl::"
+        << "CheckForMultiDeviceEvents(): Tried to check for potential "
+        << "events, but no delegate was set.";
     return;
   }
 
diff --git a/chromeos/services/multidevice_setup/device_reenroller.cc b/chromeos/services/multidevice_setup/device_reenroller.cc
index 36dd56f..a9cf175 100644
--- a/chromeos/services/multidevice_setup/device_reenroller.cc
+++ b/chromeos/services/multidevice_setup/device_reenroller.cc
@@ -119,7 +119,7 @@
     return;
   }
 
-  PA_LOG(INFO)
+  PA_LOG(VERBOSE)
       << "Supported software feature mismatch. Attempting re-enrollment now."
       << std::endl
       << "    ---GcmDeviceInfo Supported Software Features---" << std::endl
diff --git a/chromeos/services/multidevice_setup/feature_state_manager_impl.cc b/chromeos/services/multidevice_setup/feature_state_manager_impl.cc
index 8e215fd..02a17fdc 100644
--- a/chromeos/services/multidevice_setup/feature_state_manager_impl.cc
+++ b/chromeos/services/multidevice_setup/feature_state_manager_impl.cc
@@ -223,9 +223,9 @@
 
   if (previous_cached_feature_state_map == cached_feature_state_map_)
     return;
-  PA_LOG(INFO) << "Feature states map changed. Old map: "
-               << previous_cached_feature_state_map
-               << ", new map: " << cached_feature_state_map_;
+  PA_LOG(VERBOSE) << "Feature states map changed. Old map: "
+                  << previous_cached_feature_state_map
+                  << ", new map: " << cached_feature_state_map_;
   NotifyFeatureStatesChange(cached_feature_state_map_);
 }
 
diff --git a/chromeos/services/multidevice_setup/grandfathered_easy_unlock_host_disabler.cc b/chromeos/services/multidevice_setup/grandfathered_easy_unlock_host_disabler.cc
index 9ec2eaa..ff5fcc9 100644
--- a/chromeos/services/multidevice_setup/grandfathered_easy_unlock_host_disabler.cc
+++ b/chromeos/services/multidevice_setup/grandfathered_easy_unlock_host_disabler.cc
@@ -135,8 +135,8 @@
       result_code == device_sync::mojom::NetworkRequestResult::kSuccess;
 
   if (success) {
-    PA_LOG(INFO) << "Successfully disabled EASY_UNLOCK_HOST on device "
-                 << device.GetTruncatedDeviceIdForLogs();
+    PA_LOG(VERBOSE) << "Successfully disabled EASY_UNLOCK_HOST on device "
+                    << device.GetTruncatedDeviceIdForLogs();
   } else {
     PA_LOG(WARNING) << "Failed to disable EASY_UNLOCK_HOST on device "
                     << device.GetTruncatedDeviceIdForLogs()
diff --git a/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc b/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
index 83ca4966..92b968b 100644
--- a/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
+++ b/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
@@ -262,9 +262,9 @@
                                 : kNoHostForLogging;
 
   host_from_last_sync_ = host_from_sync;
-  PA_LOG(INFO) << "HostBackendDelegateImpl::OnNewDevicesSynced(): New host "
-               << "device has been set. Old host device ID: " << old_host_id
-               << ", New host device ID: " << new_host_id;
+  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;
 
   // If there is a pending request and the new host fulfills that pending
   // request, there is no longer a pending request.
@@ -310,7 +310,7 @@
      << ", Attempted to enable: " << (attempted_to_enable ? "true" : "false");
 
   if (success) {
-    PA_LOG(INFO) << ss.str();
+    PA_LOG(VERBOSE) << ss.str();
     return;
   }
 
diff --git a/chromeos/services/multidevice_setup/host_device_timestamp_manager_impl.cc b/chromeos/services/multidevice_setup/host_device_timestamp_manager_impl.cc
index 4d49263..37aaa453 100644
--- a/chromeos/services/multidevice_setup/host_device_timestamp_manager_impl.cc
+++ b/chromeos/services/multidevice_setup/host_device_timestamp_manager_impl.cc
@@ -121,9 +121,10 @@
     pref_service_->SetInt64(kSetupFlowCompletedPrefName,
                             clock_->Now().ToJavaTime());
     pref_service_->SetBoolean(kWasHostSetFromThisChromebookPrefName, true);
-    PA_LOG(INFO) << "HostDeviceTimestampManagerImpl::OnHostStatusChange(): "
-                 << "Setup flow successfully completed. Recording timestamp "
-                 << pref_service_->GetInt64(kSetupFlowCompletedPrefName) << ".";
+    PA_LOG(VERBOSE) << "HostDeviceTimestampManagerImpl::OnHostStatusChange(): "
+                    << "Setup flow successfully completed. Recording timestamp "
+                    << pref_service_->GetInt64(kSetupFlowCompletedPrefName)
+                    << ".";
   }
 
   // Check if a host has been verified.
@@ -131,10 +132,11 @@
       mojom::HostStatus::kHostVerified) {
     pref_service_->SetInt64(kHostVerifiedUpdateReceivedPrefName,
                             clock_->Now().ToJavaTime());
-    PA_LOG(INFO) << "HostDeviceTimestampManagerImpl::OnHostStatusChange(): "
-                 << "New host verified. Recording timestamp "
-                 << pref_service_->GetInt64(kHostVerifiedUpdateReceivedPrefName)
-                 << ".";
+    PA_LOG(VERBOSE) << "HostDeviceTimestampManagerImpl::OnHostStatusChange(): "
+                    << "New host verified. Recording timestamp "
+                    << pref_service_->GetInt64(
+                           kHostVerifiedUpdateReceivedPrefName)
+                    << ".";
   }
 
   // If there is no host set, set the "was host set form this Chromebook" bit to
diff --git a/chromeos/services/multidevice_setup/host_status_provider_impl.cc b/chromeos/services/multidevice_setup/host_status_provider_impl.cc
index 02ba75b..916a1d9 100644
--- a/chromeos/services/multidevice_setup/host_status_provider_impl.cc
+++ b/chromeos/services/multidevice_setup/host_status_provider_impl.cc
@@ -97,17 +97,17 @@
   if (current_status_and_device == current_status_and_device_)
     return;
 
-  PA_LOG(INFO) << "HostStatusProviderImpl::"
-               << "CheckForUpdatedStatusAndNotifyIfChanged(): Host status "
-               << "changed. New status: "
-               << current_status_and_device.host_status()
-               << ", Old status: " << current_status_and_device_.host_status()
-               << ", Host device "
-               << "ID: "
-               << (current_status_and_device.host_device()
-                       ? current_status_and_device.host_device()
-                             ->GetTruncatedDeviceIdForLogs()
-                       : "[no host]");
+  PA_LOG(VERBOSE) << "HostStatusProviderImpl::"
+                  << "CheckForUpdatedStatusAndNotifyIfChanged(): Host status "
+                  << "changed. New status: "
+                  << current_status_and_device.host_status() << ", Old status: "
+                  << current_status_and_device_.host_status()
+                  << ", Host device "
+                  << "ID: "
+                  << (current_status_and_device.host_device()
+                          ? current_status_and_device.host_device()
+                                ->GetTruncatedDeviceIdForLogs()
+                          : "[no host]");
 
   current_status_and_device_ = current_status_and_device;
   NotifyHostStatusChange(current_status_and_device_.host_status(),
diff --git a/chromeos/services/multidevice_setup/host_verifier_impl.cc b/chromeos/services/multidevice_setup/host_verifier_impl.cc
index 80343838..f4e001a 100644
--- a/chromeos/services/multidevice_setup/host_verifier_impl.cc
+++ b/chromeos/services/multidevice_setup/host_verifier_impl.cc
@@ -239,8 +239,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "HostVerifierImpl::AttemptHostVerification(): Attempting "
-               << "host verification now.";
+  PA_LOG(VERBOSE) << "HostVerifierImpl::AttemptHostVerification(): Attempting "
+                  << "host verification now.";
   device_sync_client_->FindEligibleDevices(
       cryptauth::SoftwareFeature::BETTER_TOGETHER_HOST, base::DoNothing());
 }
diff --git a/chromeos/services/multidevice_setup/multidevice_setup_impl.cc b/chromeos/services/multidevice_setup/multidevice_setup_impl.cc
index 07546010..dd0afa5bc 100644
--- a/chromeos/services/multidevice_setup/multidevice_setup_impl.cc
+++ b/chromeos/services/multidevice_setup/multidevice_setup_impl.cc
@@ -259,8 +259,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "MultiDeviceSetupImpl::TriggerEventForDebugging(" << type
-               << ") called.";
+  PA_LOG(VERBOSE) << "MultiDeviceSetupImpl::TriggerEventForDebugging(" << type
+                  << ") called.";
   mojom::AccountStatusChangeDelegate* delegate =
       delegate_notifier_->delegate_ptr_.get();
 
diff --git a/chromeos/services/multidevice_setup/multidevice_setup_service.cc b/chromeos/services/multidevice_setup/multidevice_setup_service.cc
index f2b3e6dd..5c46d9d 100644
--- a/chromeos/services/multidevice_setup/multidevice_setup_service.cc
+++ b/chromeos/services/multidevice_setup/multidevice_setup_service.cc
@@ -59,7 +59,7 @@
 MultiDeviceSetupService::~MultiDeviceSetupService() = default;
 
 void MultiDeviceSetupService::OnStart() {
-  PA_LOG(INFO) << "MultiDeviceSetupService::OnStart()";
+  PA_LOG(VERBOSE) << "MultiDeviceSetupService::OnStart()";
   registry_.AddInterface(
       base::BindRepeating(&MultiDeviceSetupBase::BindRequest,
                           base::Unretained(multidevice_setup_.get())));
@@ -72,8 +72,9 @@
     const service_manager::BindSourceInfo& source_info,
     const std::string& interface_name,
     mojo::ScopedMessagePipeHandle interface_pipe) {
-  PA_LOG(INFO) << "MultiDeviceSetupService::OnBindInterface() from interface "
-               << interface_name << ".";
+  PA_LOG(VERBOSE)
+      << "MultiDeviceSetupService::OnBindInterface() from interface "
+      << interface_name << ".";
   registry_.BindInterface(interface_name, std::move(interface_pipe));
 }
 
diff --git a/chromeos/services/secure_channel/ble_connection_manager.cc b/chromeos/services/secure_channel/ble_connection_manager.cc
index cc327049..ca922816 100644
--- a/chromeos/services/secure_channel/ble_connection_manager.cc
+++ b/chromeos/services/secure_channel/ble_connection_manager.cc
@@ -65,8 +65,8 @@
       std::make_unique<InitiatorConnectionAttemptMetadata>(
           connection_priority, std::move(success_callback), failure_callback)));
 
-  PA_LOG(INFO) << "BleConnectionManager::AttemptBleInitiatorConnection(): "
-               << "Attempting connection; details: " << details;
+  PA_LOG(VERBOSE) << "BleConnectionManager::AttemptBleInitiatorConnection(): "
+                  << "Attempting connection; details: " << details;
   PerformAttemptBleInitiatorConnection(device_id_pair, connection_priority);
 }
 
@@ -86,10 +86,11 @@
 
   initiator_entry.connection_priority = connection_priority;
 
-  PA_LOG(INFO) << "BleConnectionManager::"
-               << "UpdateBleInitiatorConnectionPriority(): Updating connection "
-               << "priority; ID pair: " << device_id_pair
-               << ", Priority: " << connection_priority;
+  PA_LOG(VERBOSE)
+      << "BleConnectionManager::"
+      << "UpdateBleInitiatorConnectionPriority(): Updating connection "
+      << "priority; ID pair: " << device_id_pair
+      << ", Priority: " << connection_priority;
   PerformUpdateBleInitiatorConnectionPriority(device_id_pair,
                                               connection_priority);
 }
@@ -98,9 +99,10 @@
     const DeviceIdPair& device_id_pair) {
   RemoveRequestMetadata(device_id_pair, ConnectionRole::kInitiatorRole);
 
-  PA_LOG(INFO) << "BleConnectionManager::"
-               << "CancelBleInitiatorConnectionAttempt(): Canceling connection "
-               << "attempt; ID pair: " << device_id_pair;
+  PA_LOG(VERBOSE)
+      << "BleConnectionManager::"
+      << "CancelBleInitiatorConnectionAttempt(): Canceling connection "
+      << "attempt; ID pair: " << device_id_pair;
   PerformCancelBleInitiatorConnectionAttempt(device_id_pair);
 }
 
@@ -127,8 +129,8 @@
       std::make_unique<ListenerConnectionAttemptMetadata>(
           connection_priority, std::move(success_callback), failure_callback)));
 
-  PA_LOG(INFO) << "BleConnectionManager::AttemptBleListenerConnection(): "
-               << "Attempting connection; details: " << details;
+  PA_LOG(VERBOSE) << "BleConnectionManager::AttemptBleListenerConnection(): "
+                  << "Attempting connection; details: " << details;
   PerformAttemptBleListenerConnection(device_id_pair, connection_priority);
 }
 
@@ -148,10 +150,11 @@
 
   listener_entry.connection_priority = connection_priority;
 
-  PA_LOG(INFO) << "BleConnectionManager::"
-               << "UpdateBleListenerConnectionPriority(): Updating connection "
-               << "priority; ID pair: " << device_id_pair << ", Priority"
-               << connection_priority;
+  PA_LOG(VERBOSE)
+      << "BleConnectionManager::"
+      << "UpdateBleListenerConnectionPriority(): Updating connection "
+      << "priority; ID pair: " << device_id_pair << ", Priority"
+      << connection_priority;
   PerformUpdateBleListenerConnectionPriority(device_id_pair,
                                              connection_priority);
 }
@@ -160,9 +163,10 @@
     const DeviceIdPair& device_id_pair) {
   RemoveRequestMetadata(device_id_pair, ConnectionRole::kListenerRole);
 
-  PA_LOG(INFO) << "BleConnectionManager::"
-               << "CancelBleListenerConnectionAttempt(): Canceling connection "
-               << "attempt; ID pair: " << device_id_pair;
+  PA_LOG(VERBOSE)
+      << "BleConnectionManager::"
+      << "CancelBleListenerConnectionAttempt(): Canceling connection "
+      << "attempt; ID pair: " << device_id_pair;
   PerformCancelBleListenerConnectionAttempt(device_id_pair);
 }
 
@@ -207,18 +211,18 @@
 void BleConnectionManager::NotifyBleInitiatorFailure(
     const DeviceIdPair& device_id_pair,
     BleInitiatorFailureType failure_type) {
-  PA_LOG(INFO) << "BleConnectionManager::NotifyBleInitiatorFailure(): "
-               << "Notifying client of failure. ID pair: " << device_id_pair
-               << ", Failure type: " << failure_type;
+  PA_LOG(VERBOSE) << "BleConnectionManager::NotifyBleInitiatorFailure(): "
+                  << "Notifying client of failure. ID pair: " << device_id_pair
+                  << ", Failure type: " << failure_type;
   GetInitiatorEntry(device_id_pair).failure_callback.Run(failure_type);
 }
 
 void BleConnectionManager::NotifyBleListenerFailure(
     const DeviceIdPair& device_id_pair,
     BleListenerFailureType failure_type) {
-  PA_LOG(INFO) << "BleConnectionManager::NotifyBleListenerFailure(): "
-               << "Notifying client of failure. ID pair: " << device_id_pair
-               << ", Failure type: " << failure_type;
+  PA_LOG(VERBOSE) << "BleConnectionManager::NotifyBleListenerFailure(): "
+                  << "Notifying client of failure. ID pair: " << device_id_pair
+                  << ", Failure type: " << failure_type;
   GetListenerEntry(device_id_pair).failure_callback.Run(failure_type);
 }
 
@@ -226,9 +230,9 @@
     const DeviceIdPair& device_id_pair,
     ConnectionRole connection_role,
     std::unique_ptr<AuthenticatedChannel> authenticated_channel) {
-  PA_LOG(INFO) << "BleConnectionManager::NotifyConnectionSuccess(): "
-               << "Notifying client of successful connection. ID pair: "
-               << device_id_pair << ", Role: " << connection_role;
+  PA_LOG(VERBOSE) << "BleConnectionManager::NotifyConnectionSuccess(): "
+                  << "Notifying client of successful connection. ID pair: "
+                  << device_id_pair << ", Role: " << connection_role;
 
   // For each case, grab the success callback out of the map first, then remove
   // the associated metadata before invoking the callback.
diff --git a/chromeos/services/secure_channel/ble_connection_manager_impl.cc b/chromeos/services/secure_channel/ble_connection_manager_impl.cc
index 78c3b132..8c5efc8 100644
--- a/chromeos/services/secure_channel/ble_connection_manager_impl.cc
+++ b/chromeos/services/secure_channel/ble_connection_manager_impl.cc
@@ -325,12 +325,12 @@
   remote_device_id_to_secure_channel_map_.erase(remote_device_id);
 
   // Disconnect the channel, since it is lingering with no active request.
-  PA_LOG(INFO) << "BleConnectionManagerImpl::"
-               << "ProcessPotentialLingeringChannel(): Disconnecting lingering "
-               << "channel which is no longer associated with any active "
-               << "requests. Remote device ID: "
-               << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                      remote_device_id);
+  PA_LOG(VERBOSE)
+      << "BleConnectionManagerImpl::"
+      << "ProcessPotentialLingeringChannel(): Disconnecting lingering "
+      << "channel which is no longer associated with any active "
+      << "requests. Remote device ID: "
+      << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(remote_device_id);
   channel_with_roll.first->RemoveObserver(this);
   secure_channel_disconnector_->DisconnectSecureChannel(
       std::move(channel_with_roll.first));
diff --git a/chromeos/services/secure_channel/error_tolerant_ble_advertisement_impl.cc b/chromeos/services/secure_channel/error_tolerant_ble_advertisement_impl.cc
index 4b3b3cb..b3fcffe1 100644
--- a/chromeos/services/secure_channel/error_tolerant_ble_advertisement_impl.cc
+++ b/chromeos/services/secure_channel/error_tolerant_ble_advertisement_impl.cc
@@ -188,8 +188,8 @@
   advertisement_ = advertisement;
   advertisement_->AddObserver(this);
 
-  PA_LOG(INFO) << "Advertisement registered. Request: " << device_id_pair()
-               << ", Service data: " << advertisement_data_->DataInHex();
+  PA_LOG(VERBOSE) << "Advertisement registered. Request: " << device_id_pair()
+                  << ", Service data: " << advertisement_data_->DataInHex();
 
   UpdateRegistrationStatus();
 }
diff --git a/chromeos/services/secure_channel/pending_connection_manager_impl.cc b/chromeos/services/secure_channel/pending_connection_manager_impl.cc
index f372325..80bee9e 100644
--- a/chromeos/services/secure_channel/pending_connection_manager_impl.cc
+++ b/chromeos/services/secure_channel/pending_connection_manager_impl.cc
@@ -68,12 +68,13 @@
 
   // If the client has canceled the request, it does not need to be processed.
   if (!client_connection_parameters->IsClientWaitingForResponse()) {
-    PA_LOG(INFO) << "PendingConnectionManagerImpl::HandleConnectionRequest(): "
-                 << "Request was canceled by the client before being passed to "
-                 << "PendingConnectionManager; ignoring. Details: "
-                 << connection_attempt_details
-                 << ", Parameters: " << *client_connection_parameters
-                 << ", Priority: " << connection_priority;
+    PA_LOG(VERBOSE)
+        << "PendingConnectionManagerImpl::HandleConnectionRequest(): "
+        << "Request was canceled by the client before being passed to "
+        << "PendingConnectionManager; ignoring. Details: "
+        << connection_attempt_details
+        << ", Parameters: " << *client_connection_parameters
+        << ", Priority: " << connection_priority;
     return;
   }
 
diff --git a/chromeos/services/secure_channel/pending_connection_request_base.h b/chromeos/services/secure_channel/pending_connection_request_base.h
index 96ace5d..a5e9377 100644
--- a/chromeos/services/secure_channel/pending_connection_request_base.h
+++ b/chromeos/services/secure_channel/pending_connection_request_base.h
@@ -100,10 +100,11 @@
     DCHECK(!has_finished_without_connection_);
     has_finished_without_connection_ = true;
 
-    PA_LOG(INFO) << "Request finished without connection; notifying delegate. "
-                 << "Request type: \"" << readable_request_type_for_logging_
-                 << "\", Reason: " << reason
-                 << ", Client parameters: " << *client_connection_parameters_;
+    PA_LOG(VERBOSE)
+        << "Request finished without connection; notifying delegate. "
+        << "Request type: \"" << readable_request_type_for_logging_
+        << "\", Reason: " << reason
+        << ", Client parameters: " << *client_connection_parameters_;
     NotifyRequestFinishedWithoutConnection(reason);
   }
 
diff --git a/chromeos/services/secure_channel/secure_channel_impl.cc b/chromeos/services/secure_channel/secure_channel_impl.cc
index 0f973f2..0853b4d 100644
--- a/chromeos/services/secure_channel/secure_channel_impl.cc
+++ b/chromeos/services/secure_channel/secure_channel_impl.cc
@@ -139,10 +139,11 @@
   // connection to disconnect), pass the request off to
   // PendingConnectionManager.
   for (auto& details : pending_requests_it->second) {
-    PA_LOG(INFO) << "SecureChannelImpl::OnDisconnected(): Disconnection "
-                 << "completed; starting pending connection attempt. Request: "
-                 << *details.client_connection_parameters
-                 << ", Attempt details: " << details.connection_attempt_details;
+    PA_LOG(VERBOSE)
+        << "SecureChannelImpl::OnDisconnected(): Disconnection "
+        << "completed; starting pending connection attempt. Request: "
+        << *details.client_connection_parameters
+        << ", Attempt details: " << details.connection_attempt_details;
     pending_connection_manager_->HandleConnectionRequest(
         details.connection_attempt_details,
         std::move(details.client_connection_parameters),
@@ -228,29 +229,31 @@
       connection_attempt_details.GetAssociatedConnectionDetails();
   switch (active_connection_manager_->GetConnectionState(connection_details)) {
     case ActiveConnectionManager::ConnectionState::kActiveConnectionExists:
-      PA_LOG(INFO) << "SecureChannelImpl::" << api_fn_name << "(): Adding "
-                   << "request to active channel. Request: "
-                   << *client_connection_parameters << ", Local device ID: \""
-                   << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                          local_device.GetDeviceId())
-                   << "\""
-                   << ", Role: " << connection_role
-                   << ", Priority: " << connection_priority
-                   << ", Details: " << connection_details;
+      PA_LOG(VERBOSE) << "SecureChannelImpl::" << api_fn_name << "(): Adding "
+                      << "request to active channel. Request: "
+                      << *client_connection_parameters
+                      << ", Local device ID: \""
+                      << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                             local_device.GetDeviceId())
+                      << "\""
+                      << ", Role: " << connection_role
+                      << ", Priority: " << connection_priority
+                      << ", Details: " << connection_details;
       active_connection_manager_->AddClientToChannel(
           std::move(client_connection_parameters), connection_details);
       break;
 
     case ActiveConnectionManager::ConnectionState::kNoConnectionExists:
-      PA_LOG(INFO) << "SecureChannelImpl::" << api_fn_name << "(): Starting "
-                   << "pending connection attempt. Request: "
-                   << *client_connection_parameters << ", Local device ID: \""
-                   << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                          local_device.GetDeviceId())
-                   << "\""
-                   << ", Role: " << connection_role
-                   << ", Priority: " << connection_priority
-                   << ", Details: " << connection_details;
+      PA_LOG(VERBOSE) << "SecureChannelImpl::" << api_fn_name << "(): Starting "
+                      << "pending connection attempt. Request: "
+                      << *client_connection_parameters
+                      << ", Local device ID: \""
+                      << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                             local_device.GetDeviceId())
+                      << "\""
+                      << ", Role: " << connection_role
+                      << ", Priority: " << connection_priority
+                      << ", Details: " << connection_details;
       pending_connection_manager_->HandleConnectionRequest(
           connection_attempt_details, std::move(client_connection_parameters),
           connection_priority);
@@ -258,17 +261,18 @@
 
     case ActiveConnectionManager::ConnectionState::
         kDisconnectingConnectionExists:
-      PA_LOG(INFO) << "SecureChannelImpl::" << api_fn_name << "(): Received "
-                   << "request for which a disconnecting connection exists. "
-                   << "Waiting for connection to disconnect completely before "
-                   << "continuing. Request: " << *client_connection_parameters
-                   << ", Local device ID: \""
-                   << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
-                          local_device.GetDeviceId())
-                   << "\""
-                   << ", Role: " << connection_role
-                   << ", Priority: " << connection_priority
-                   << ", Details: " << connection_details;
+      PA_LOG(VERBOSE)
+          << "SecureChannelImpl::" << api_fn_name << "(): Received "
+          << "request for which a disconnecting connection exists. "
+          << "Waiting for connection to disconnect completely before "
+          << "continuing. Request: " << *client_connection_parameters
+          << ", Local device ID: \""
+          << cryptauth::RemoteDeviceRef::TruncateDeviceIdForLogs(
+                 local_device.GetDeviceId())
+          << "\""
+          << ", Role: " << connection_role
+          << ", Priority: " << connection_priority
+          << ", Details: " << connection_details;
       disconnecting_details_to_requests_map_[connection_details].emplace_back(
           std::move(client_connection_parameters), connection_attempt_details,
           connection_priority);
diff --git a/chromeos/services/secure_channel/secure_channel_initializer.cc b/chromeos/services/secure_channel/secure_channel_initializer.cc
index 317d5eb..ee7ecabc 100644
--- a/chromeos/services/secure_channel/secure_channel_initializer.cc
+++ b/chromeos/services/secure_channel/secure_channel_initializer.cc
@@ -61,9 +61,9 @@
 SecureChannelInitializer::SecureChannelInitializer(
     scoped_refptr<base::TaskRunner> task_runner)
     : weak_ptr_factory_(this) {
-  PA_LOG(INFO) << "SecureChannelInitializer::SecureChannelInitializer(): "
-               << "Fetching Bluetooth adapter. All requests received before "
-               << "the adapter is fetched will be queued.";
+  PA_LOG(VERBOSE) << "SecureChannelInitializer::SecureChannelInitializer(): "
+                  << "Fetching Bluetooth adapter. All requests received before "
+                  << "the adapter is fetched will be queued.";
 
   // device::BluetoothAdapterFactory::SetAdapterForTesting() causes the
   // GetAdapter() callback to return synchronously. Thus, post the GetAdapter()
@@ -116,9 +116,9 @@
 
 void SecureChannelInitializer::OnBluetoothAdapterReceived(
     scoped_refptr<device::BluetoothAdapter> bluetooth_adapter) {
-  PA_LOG(INFO) << "SecureChannelInitializer::OnBluetoothAdapterReceived(): "
-               << "Bluetooth adapter has been fetched. Passing all queued "
-               << "requests to the service.";
+  PA_LOG(VERBOSE) << "SecureChannelInitializer::OnBluetoothAdapterReceived(): "
+                  << "Bluetooth adapter has been fetched. Passing all queued "
+                  << "requests to the service.";
 
   secure_channel_impl_ =
       SecureChannelImpl::Factory::Get()->BuildInstance(bluetooth_adapter);
diff --git a/chromeos/services/secure_channel/secure_channel_service.cc b/chromeos/services/secure_channel/secure_channel_service.cc
index 605a57d..650c41f 100644
--- a/chromeos/services/secure_channel/secure_channel_service.cc
+++ b/chromeos/services/secure_channel/secure_channel_service.cc
@@ -22,7 +22,7 @@
 SecureChannelService::~SecureChannelService() = default;
 
 void SecureChannelService::OnStart() {
-  PA_LOG(INFO) << "SecureChannelService::OnStart()";
+  PA_LOG(VERBOSE) << "SecureChannelService::OnStart()";
 
   secure_channel_ = SecureChannelInitializer::Factory::Get()->BuildInstance();
 
@@ -35,8 +35,8 @@
     const service_manager::BindSourceInfo& source_info,
     const std::string& interface_name,
     mojo::ScopedMessagePipeHandle interface_pipe) {
-  PA_LOG(INFO) << "SecureChannelService::OnBindInterface() for interface "
-               << interface_name << ".";
+  PA_LOG(VERBOSE) << "SecureChannelService::OnBindInterface() for interface "
+                  << interface_name << ".";
   registry_.BindInterface(interface_name, std::move(interface_pipe));
 }
 
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index f1213d780..7ede3878 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -501,6 +501,8 @@
   if (!is_off_the_record_)
     AutofillMetrics::LogIsAutofillEnabledAtStartup(IsAutofillEnabled());
 
+  client_profile_validator_ = client_profile_validator;
+
   // WebDataService may not be available in tests.
   if (!database_helper_->GetLocalDatabase()) {
     return;
@@ -509,7 +511,6 @@
   LoadCreditCards();
   LoadPaymentsCustomerData();
 
-  client_profile_validator_ = client_profile_validator;
   // Check if profile cleanup has already been performed this major version.
   is_autofill_profile_cleanup_pending_ =
       pref_service_->GetInteger(prefs::kAutofillLastVersionDeduped) >=
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index 61c7568..bf4ae75 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -739,7 +739,8 @@
   // |profile_validities_need_update| whenever this is changed.
   std::unique_ptr<UserProfileValidityMap> synced_profile_validity_;
 
-  AutofillProfileValidator* client_profile_validator_;
+  // The client side profile validator.
+  AutofillProfileValidator* client_profile_validator_ = nullptr;
 
   // The identity manager that this instance uses. Must outlive this instance.
   identity::IdentityManager* identity_manager_ = nullptr;
diff --git a/components/cryptauth/cryptauth_api_call_flow.cc b/components/cryptauth/cryptauth_api_call_flow.cc
index eb5cf00..a8c6467 100644
--- a/components/cryptauth/cryptauth_api_call_flow.cc
+++ b/components/cryptauth/cryptauth_api_call_flow.cc
@@ -97,10 +97,10 @@
   }
 
   if (body) {
-    PA_LOG(INFO) << "API call failed:\n" << *body;
+    PA_LOG(ERROR) << "API call failed:\n" << *body;
   } else {
-    PA_LOG(INFO) << "API call failed, no response body available, net_error:"
-                 << net_error;
+    PA_LOG(ERROR) << "API call failed, no response body available, net_error:"
+                  << net_error;
   }
   error_callback_.Run(*error);
 }
diff --git a/components/cryptauth/cryptauth_device_manager_impl.cc b/components/cryptauth/cryptauth_device_manager_impl.cc
index 8c7bbb7..b42f294 100644
--- a/components/cryptauth/cryptauth_device_manager_impl.cc
+++ b/components/cryptauth/cryptauth_device_manager_impl.cc
@@ -647,7 +647,7 @@
   std::unique_ptr<base::ListValue> devices_as_list(new base::ListValue());
 
   if (!response.devices().empty())
-    PA_LOG(INFO) << "Devices were successfully synced.";
+    PA_LOG(VERBOSE) << "Devices were successfully synced.";
 
   for (const auto& device : response.devices()) {
     std::unique_ptr<base::DictionaryValue> device_dictionary =
diff --git a/components/cryptauth/cryptauth_enroller_impl.cc b/components/cryptauth/cryptauth_enroller_impl.cc
index 8c5981c..de91d95 100644
--- a/components/cryptauth/cryptauth_enroller_impl.cc
+++ b/components/cryptauth/cryptauth_enroller_impl.cc
@@ -98,7 +98,8 @@
 
 void CryptAuthEnrollerImpl::OnKeyPairGenerated(const std::string& public_key,
                                                const std::string& private_key) {
-  PA_LOG(INFO) << "Ephemeral key pair generated, calling SetupEnrollment API.";
+  PA_LOG(VERBOSE)
+      << "Ephemeral key pair generated, calling SetupEnrollment API.";
   session_public_key_ = public_key;
   session_private_key_ = private_key;
 
@@ -128,7 +129,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "SetupEnrollment request succeeded: deriving symmetric key.";
+  PA_LOG(VERBOSE)
+      << "SetupEnrollment request succeeded: deriving symmetric key.";
   setup_info_ = response.infos(0);
   device_info_.set_enrollment_session_id(setup_info_.enrollment_session_id());
 
@@ -145,8 +147,8 @@
 }
 
 void CryptAuthEnrollerImpl::OnKeyDerived(const std::string& symmetric_key) {
-  PA_LOG(INFO) << "Derived symmetric key, "
-               << "encrypting enrollment data for upload.";
+  PA_LOG(VERBOSE) << "Derived symmetric key, "
+                  << "encrypting enrollment data for upload.";
 
   // Make sure we're enrolling the same public key used below to sign the
   // secure message.
@@ -160,7 +162,7 @@
   // The server verifies that the access token set here and in the header
   // of the FinishEnrollment() request are the same.
   device_info_.set_oauth_token(cryptauth_client_->GetAccessTokenUsed());
-  PA_LOG(INFO) << "Using access token: " << device_info_.oauth_token();
+  PA_LOG(VERBOSE) << "Using access token: " << device_info_.oauth_token();
 
   symmetric_key_ = symmetric_key;
   SecureMessageDelegate::CreateOptions options;
@@ -199,7 +201,7 @@
 
 void CryptAuthEnrollerImpl::OnOuterSecureMessageCreated(
     const std::string& outer_message) {
-  PA_LOG(INFO) << "SecureMessage created, calling FinishEnrollment API.";
+  PA_LOG(VERBOSE) << "SecureMessage created, calling FinishEnrollment API.";
 
   FinishEnrollmentRequest request;
   request.set_enrollment_session_id(setup_info_.enrollment_session_id());
diff --git a/components/cryptauth/cryptauth_enrollment_manager_impl.cc b/components/cryptauth/cryptauth_enrollment_manager_impl.cc
index aafa12e2..5681671 100644
--- a/components/cryptauth/cryptauth_enrollment_manager_impl.cc
+++ b/components/cryptauth/cryptauth_enrollment_manager_impl.cc
@@ -238,8 +238,8 @@
   if (!sync_request_)
     return;
 
-  PA_LOG(INFO) << "GCM registration for CryptAuth Enrollment completed: "
-               << success;
+  PA_LOG(VERBOSE) << "GCM registration for CryptAuth Enrollment completed: "
+                  << success;
   if (success)
     DoCryptAuthEnrollment();
   else
@@ -250,7 +250,7 @@
     const std::string& public_key,
     const std::string& private_key) {
   if (!public_key.empty() && !private_key.empty()) {
-    PA_LOG(INFO) << "Key pair generated for CryptAuth enrollment";
+    PA_LOG(VERBOSE) << "Key pair generated for CryptAuth enrollment";
     // Store the keypair in Base64 format because pref values require readable
     // string values.
     std::string public_key_b64, private_key_b64;
@@ -330,12 +330,13 @@
   base::Base64UrlEncode(GetUserPublicKey(),
                         base::Base64UrlEncodePolicy::INCLUDE_PADDING,
                         &public_key_b64);
-  PA_LOG(INFO) << "Making enrollment:\n"
-               << "  public_key: " << public_key_b64 << "\n"
-               << "  invocation_reason: " << invocation_reason << "\n"
-               << "  gcm_registration_id: " << device_info.gcm_registration_id()
-               << "  supported features: "
-               << GenerateSupportedFeaturesString(device_info);
+  PA_LOG(VERBOSE) << "Making enrollment:\n"
+                  << "  public_key: " << public_key_b64 << "\n"
+                  << "  invocation_reason: " << invocation_reason << "\n"
+                  << "  gcm_registration_id: "
+                  << device_info.gcm_registration_id()
+                  << "  supported features: "
+                  << GenerateSupportedFeaturesString(device_info);
 
   cryptauth_enroller_ = enroller_factory_->CreateInstance();
   cryptauth_enroller_->Enroll(
diff --git a/components/cryptauth/cryptauth_gcm_manager_impl.cc b/components/cryptauth/cryptauth_gcm_manager_impl.cc
index 0de9655f..d71fd6e 100644
--- a/components/cryptauth/cryptauth_gcm_manager_impl.cc
+++ b/components/cryptauth/cryptauth_gcm_manager_impl.cc
@@ -74,7 +74,7 @@
 
 void CryptAuthGCMManagerImpl::StartListening() {
   if (gcm_driver_->GetAppHandler(kCryptAuthGCMAppId) == this) {
-    PA_LOG(INFO) << "GCM app handler already added";
+    PA_LOG(VERBOSE) << "GCM app handler already added";
     return;
   }
 
@@ -83,11 +83,11 @@
 
 void CryptAuthGCMManagerImpl::RegisterWithGCM() {
   if (registration_in_progress_) {
-    PA_LOG(INFO) << "GCM Registration is already in progress";
+    PA_LOG(VERBOSE) << "GCM Registration is already in progress";
     return;
   }
 
-  PA_LOG(INFO) << "Beginning GCM registration...";
+  PA_LOG(VERBOSE) << "Beginning GCM registration...";
   registration_in_progress_ = true;
 
   std::vector<std::string> sender_ids(1, kCryptAuthGCMSenderId);
@@ -125,10 +125,10 @@
     fields.push_back(std::string(kv.first) + ": " + std::string(kv.second));
   }
 
-  PA_LOG(INFO) << "GCM message received:\n"
-               << "  sender_id: " << message.sender_id << "\n"
-               << "  collapse_key: " << message.collapse_key << "\n"
-               << "  data:\n    " << base::JoinString(fields, "\n    ");
+  PA_LOG(VERBOSE) << "GCM message received:\n"
+                  << "  sender_id: " << message.sender_id << "\n"
+                  << "  collapse_key: " << message.collapse_key << "\n"
+                  << "  data:\n    " << base::JoinString(fields, "\n    ");
 
   if (message.data.find(kRegistrationTickleTypeKey) == message.data.end()) {
     PA_LOG(WARNING) << "GCM message does not contain 'registrationTickleType'.";
@@ -175,8 +175,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "GCM registration success, registration_id="
-               << registration_id;
+  PA_LOG(VERBOSE) << "GCM registration success, registration_id="
+                  << registration_id;
   pref_service_->SetString(prefs::kCryptAuthGCMRegistrationId, registration_id);
   for (auto& observer : observers_)
     observer.OnGCMRegistrationResult(true);
diff --git a/components/cryptauth/device_to_device_authenticator.cc b/components/cryptauth/device_to_device_authenticator.cc
index b218db04..176be0d9 100644
--- a/components/cryptauth/device_to_device_authenticator.cc
+++ b/components/cryptauth/device_to_device_authenticator.cc
@@ -134,7 +134,7 @@
     return;
   }
 
-  PA_LOG(INFO) << "Sending [Initiator Hello] message.";
+  PA_LOG(VERBOSE) << "Sending [Initiator Hello] message.";
 
   // Add a timeout for receiving the [Responder Auth] message as a guard.
   timer_ = CreateTimer();
@@ -163,8 +163,8 @@
     return;
   }
 
-  PA_LOG(INFO) << "Successfully validated [Responder Auth]! "
-               << "Sending [Initiator Auth]...";
+  PA_LOG(VERBOSE) << "Successfully validated [Responder Auth]! "
+                  << "Sending [Initiator Auth]...";
   state_ = State::VALIDATED_RESPONDER_AUTH;
   session_keys_ = session_keys;
 
@@ -208,7 +208,7 @@
   DCHECK(state_ == State::SENT_INITIATOR_AUTH);
   DCHECK(!session_keys_.initiator_encode_key().empty());
   DCHECK(!session_keys_.responder_encode_key().empty());
-  PA_LOG(INFO) << "Authentication succeeded!";
+  PA_LOG(VERBOSE) << "Authentication succeeded!";
 
   state_ = State::AUTHENTICATION_SUCCESS;
   connection_->RemoveObserver(this);
@@ -235,8 +235,8 @@
     const WireMessage& message) {
   if (state_ == State::SENT_HELLO &&
       message.feature() == std::string(Authenticator::kAuthenticationFeature)) {
-    PA_LOG(INFO) << "Received [Responder Auth] message, payload_size="
-                 << message.payload().size();
+    PA_LOG(VERBOSE) << "Received [Responder Auth] message, payload_size="
+                    << message.payload().size();
     state_ = State::RECEIVED_RESPONDER_AUTH;
     timer_.reset();
     responder_auth_message_ = message.payload();
diff --git a/components/cryptauth/device_to_device_initiator_helper.cc b/components/cryptauth/device_to_device_initiator_helper.cc
index 3cb479c3..ad9ff7b6 100644
--- a/components/cryptauth/device_to_device_initiator_helper.cc
+++ b/components/cryptauth/device_to_device_initiator_helper.cc
@@ -163,7 +163,7 @@
     const DeviceToDeviceInitiatorHelper::MessageCallback& callback,
     const std::string& inner_message) {
   if (inner_message.empty()) {
-    PA_LOG(INFO) << "Failed to create inner message for [Initiator Auth].";
+    PA_LOG(VERBOSE) << "Failed to create inner message for [Initiator Auth].";
     callback.Run(std::string());
     return;
   }
@@ -217,8 +217,8 @@
   if (!responder_hello.ParseFromString(header.decryption_key_id()) ||
       !responder_hello.public_dh_key().SerializeToString(
           &context.responder_session_public_key)) {
-    PA_LOG(INFO) << "Failed to extract responder session public key in "
-                 << "[Responder Auth] header.";
+    PA_LOG(VERBOSE) << "Failed to extract responder session public key in "
+                    << "[Responder Auth] header.";
     context.callback.Run(false, SessionKeys());
     return;
   }
@@ -253,7 +253,7 @@
     const std::string& payload,
     const securemessage::Header& header) {
   if (!verified) {
-    PA_LOG(INFO) << "Failed to unwrap outer [Responder Auth] message.";
+    PA_LOG(VERBOSE) << "Failed to unwrap outer [Responder Auth] message.";
     context.callback.Run(false, SessionKeys());
     return;
   }
@@ -262,7 +262,7 @@
   securemessage::DeviceToDeviceMessage device_to_device_message;
   if (!device_to_device_message.ParseFromString(payload) ||
       device_to_device_message.sequence_number() != 1) {
-    PA_LOG(INFO) << "Failed to validate DeviceToDeviceMessage payload.";
+    PA_LOG(VERBOSE) << "Failed to validate DeviceToDeviceMessage payload.";
     context.callback.Run(false, SessionKeys());
     return;
   }
@@ -287,7 +287,7 @@
     const std::string& payload,
     const securemessage::Header& header) {
   if (!verified) {
-    PA_LOG(INFO) << "Failed to unwrap middle [Responder Auth] message.";
+    PA_LOG(VERBOSE) << "Failed to unwrap middle [Responder Auth] message.";
     context.callback.Run(false, SessionKeys());
     return;
   }
@@ -312,7 +312,7 @@
     const std::string& payload,
     const securemessage::Header& header) {
   if (!verified)
-    PA_LOG(INFO) << "Failed to unwrap inner [Responder Auth] message.";
+    PA_LOG(VERBOSE) << "Failed to unwrap inner [Responder Auth] message.";
 
   // Note: The GMS Core implementation does not properly set the metadata
   // version, so we only check that the type is UNLOCK_KEY_SIGNED_CHALLENGE.
diff --git a/components/cryptauth/device_to_device_responder_operations.cc b/components/cryptauth/device_to_device_responder_operations.cc
index 78ae0bd..6a70960 100644
--- a/components/cryptauth/device_to_device_responder_operations.cc
+++ b/components/cryptauth/device_to_device_responder_operations.cc
@@ -80,7 +80,7 @@
     bool hello_message_validated,
     const std::string& hello_public_key) {
   if (!hello_message_validated) {
-    PA_LOG(INFO) << "Invalid [Hello] while creating [Responder Auth]";
+    PA_LOG(VERBOSE) << "Invalid [Hello] while creating [Responder Auth]";
     context.callback.Run(std::string());
     return;
   }
@@ -108,7 +108,7 @@
     CreateResponderAuthMessageContext context,
     const std::string& inner_message) {
   if (inner_message.empty()) {
-    PA_LOG(INFO) << "Failed to create middle message for [Responder Auth]";
+    PA_LOG(VERBOSE) << "Failed to create middle message for [Responder Auth]";
     context.callback.Run(std::string());
     return;
   }
@@ -201,7 +201,7 @@
     const std::string& payload,
     const securemessage::Header& header) {
   if (!verified)
-    PA_LOG(INFO) << "Failed to inner [Initiator Auth] message.";
+    PA_LOG(VERBOSE) << "Failed to inner [Initiator Auth] message.";
   context.callback.Run(verified);
 }
 
@@ -212,7 +212,7 @@
     const std::string& payload,
     const securemessage::Header& header) {
   if (!verified) {
-    PA_LOG(INFO) << "Failed to verify outer [Initiator Auth] message";
+    PA_LOG(VERBOSE) << "Failed to verify outer [Initiator Auth] message";
     context.callback.Run(false);
     return;
   }
@@ -221,7 +221,7 @@
   securemessage::DeviceToDeviceMessage device_to_device_message;
   if (!device_to_device_message.ParseFromString(payload) ||
       device_to_device_message.sequence_number() != 1) {
-    PA_LOG(INFO) << "Failed to validate DeviceToDeviceMessage payload.";
+    PA_LOG(VERBOSE) << "Failed to validate DeviceToDeviceMessage payload.";
     context.callback.Run(false);
     return;
   }
diff --git a/components/cryptauth/remote_device_loader.cc b/components/cryptauth/remote_device_loader.cc
index d55ad601..90f85ef 100644
--- a/components/cryptauth/remote_device_loader.cc
+++ b/components/cryptauth/remote_device_loader.cc
@@ -94,8 +94,8 @@
 void RemoteDeviceLoader::Load(const RemoteDeviceCallback& callback) {
   DCHECK(callback_.is_null());
   callback_ = callback;
-  PA_LOG(INFO) << "Loading " << remaining_devices_.size()
-               << " remote devices";
+  PA_LOG(VERBOSE) << "Loading " << remaining_devices_.size()
+                  << " remote devices";
 
   if (remaining_devices_.empty()) {
     callback_.Run(remote_devices_);
@@ -138,8 +138,8 @@
   remote_devices_.push_back(remote_device);
 
   if (remaining_devices_.empty()) {
-    PA_LOG(INFO) << "Derived keys for " << remote_devices_.size()
-                 << " devices.";
+    PA_LOG(VERBOSE) << "Derived keys for " << remote_devices_.size()
+                    << " devices.";
     callback_.Run(remote_devices_);
   }
 }
diff --git a/components/cryptauth/secure_channel.cc b/components/cryptauth/secure_channel.cc
index 7135b0e..0ad3d0f 100644
--- a/components/cryptauth/secure_channel.cc
+++ b/components/cryptauth/secure_channel.cc
@@ -288,11 +288,11 @@
 
 void SecureChannel::OnMessageDecoded(
     const std::string& feature, const std::string& decoded_message) {
-  PA_LOG(INFO) << "Received message from " << connection_->GetDeviceAddress()
-               << ": {"
-               << "feature: \"" << feature << "\", "
-               << "payload: \"" << decoded_message << "\""
-               << "}";
+  PA_LOG(VERBOSE) << "Received message from " << connection_->GetDeviceAddress()
+                  << ": {"
+                  << "feature: \"" << feature << "\", "
+                  << "payload: \"" << decoded_message << "\""
+                  << "}";
 
   for (auto& observer : observer_list_)
     observer.OnMessageReceived(this, feature, decoded_message);
diff --git a/components/cryptauth/sync_scheduler_impl.cc b/components/cryptauth/sync_scheduler_impl.cc
index acd44a8..443b6a3 100644
--- a/components/cryptauth/sync_scheduler_impl.cc
+++ b/components/cryptauth/sync_scheduler_impl.cc
@@ -102,10 +102,10 @@
 void SyncSchedulerImpl::OnTimerFired() {
   timer_.reset();
   if (strategy_ == Strategy::PERIODIC_REFRESH) {
-    PA_LOG(INFO) << "Timer fired for periodic refresh, making request...";
+    PA_LOG(VERBOSE) << "Timer fired for periodic refresh, making request...";
     sync_state_ = SyncState::SYNC_IN_PROGRESS;
   } else if (strategy_ == Strategy::AGGRESSIVE_RECOVERY) {
-    PA_LOG(INFO) << "Timer fired for aggressive recovery, making request...";
+    PA_LOG(VERBOSE) << "Timer fired for aggressive recovery, making request...";
     sync_state_ = SyncState::SYNC_IN_PROGRESS;
   } else {
     NOTREACHED();
@@ -128,16 +128,17 @@
   }
 
   bool is_aggressive_recovery = (strategy_ == Strategy::AGGRESSIVE_RECOVERY);
-  PA_LOG(INFO) << "Scheduling next sync for " << scheduler_name_ << ":\n"
-               << "    Strategy: " << (is_aggressive_recovery
-                                           ? "Aggressive Recovery"
-                                           : "Periodic Refresh") << "\n"
-               << "    Time Delta: " << TimeDeltaToString(sync_delta)
-               << (is_aggressive_recovery
-                       ? base::StringPrintf(
-                             "\n    Previous Failures: %d",
-                             base::saturated_cast<int>(failure_count_))
-                       : "");
+  PA_LOG(VERBOSE) << "Scheduling next sync for " << scheduler_name_ << ":\n"
+                  << "    Strategy: "
+                  << (is_aggressive_recovery ? "Aggressive Recovery"
+                                             : "Periodic Refresh")
+                  << "\n"
+                  << "    Time Delta: " << TimeDeltaToString(sync_delta)
+                  << (is_aggressive_recovery
+                          ? base::StringPrintf(
+                                "\n    Previous Failures: %d",
+                                base::saturated_cast<int>(failure_count_))
+                          : "");
 
   timer_ = CreateTimer();
   timer_->Start(FROM_HERE, sync_delta,
diff --git a/components/data_reduction_proxy/core/common/BUILD.gn b/components/data_reduction_proxy/core/common/BUILD.gn
index bd23bdd..6d9547fd 100644
--- a/components/data_reduction_proxy/core/common/BUILD.gn
+++ b/components/data_reduction_proxy/core/common/BUILD.gn
@@ -127,6 +127,7 @@
   ]
 
   deps = [
+    "//mojo/public/mojom/base",
     "//services/network/public/mojom",
   ]
 }
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc
index 302ef98..ba0cfa2 100644
--- a/components/download/internal/common/download_item_impl.cc
+++ b/components/download/internal/common/download_item_impl.cc
@@ -62,15 +62,6 @@
 
 namespace {
 
-bool DeleteDownloadedFile(const base::FilePath& path) {
-  DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
-
-  // Make sure we only delete files.
-  if (base::DirectoryExists(path))
-    return true;
-  return base::DeleteFile(path, false);
-}
-
 void DeleteDownloadedFileDone(base::WeakPtr<DownloadItemImpl> item,
                               const base::Callback<void(bool)>& callback,
                               bool success) {
diff --git a/components/download/internal/common/download_utils.cc b/components/download/internal/common/download_utils.cc
index 4acf3276e..c2d89b9 100644
--- a/components/download/internal/common/download_utils.cc
+++ b/components/download/internal/common/download_utils.cc
@@ -4,6 +4,7 @@
 
 #include "components/download/public/common/download_utils.h"
 
+#include "base/files/file_util.h"
 #include "base/format_macros.h"
 #include "base/rand_util.h"
 #include "base/strings/stringprintf.h"
@@ -12,6 +13,7 @@
 #include "components/download/public/common/download_item.h"
 #include "components/download/public/common/download_save_info.h"
 #include "components/download/public/common/download_stats.h"
+#include "components/download/public/common/download_task_runner.h"
 #include "components/download/public/common/download_url_parameters.h"
 #include "net/base/load_flags.h"
 #include "net/http/http_request_headers.h"
@@ -509,4 +511,13 @@
   return ResumeMode::IMMEDIATE_CONTINUE;
 }
 
+bool DeleteDownloadedFile(const base::FilePath& path) {
+  DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
+
+  // Make sure we only delete files.
+  if (base::DirectoryExists(path))
+    return true;
+  return base::DeleteFile(path, false);
+}
+
 }  // namespace download
diff --git a/components/download/public/common/download_utils.h b/components/download/public/common/download_utils.h
index ca49796..70a8a63 100644
--- a/components/download/public/common/download_utils.h
+++ b/components/download/public/common/download_utils.h
@@ -91,6 +91,8 @@
                       bool restart_required,
                       bool user_action_required);
 
+COMPONENTS_DOWNLOAD_EXPORT bool DeleteDownloadedFile(
+    const base::FilePath& path);
 }  // namespace download
 
 #endif  // COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_UTILS_H_
diff --git a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
index 7170337..201ac054 100644
--- a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
+++ b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
@@ -160,6 +160,9 @@
     /** The pinned homepage tile in MV tiles was clicked. */
     public static final String HOMEPAGE_TILE_CLICKED = "homepage_tile_clicked";
 
+    /** The `Translate` app menu button was clicked. */
+    public static final String TRANSLATE_MENU_BUTTON_CLICKED = "translate_menu_button_clicked";
+
     /**
      * Do not instantiate.
      */
diff --git a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java
index 35afe27..8e4cd7e 100644
--- a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java
+++ b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java
@@ -24,6 +24,8 @@
 
     public static final String MEDIA_DOWNLOAD_FEATURE = "IPH_MediaDownload";
 
+    public static final String TRANSLATE_MENU_BUTTON_FEATURE = "IPH_TranslateMenuButton";
+
     /**
      * An IPH feature that encourages users who search a query from a web page in a new tab, to use
      * Contextual Search instead.
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc
index 5c33fea..2a70eed 100644
--- a/components/feature_engagement/public/feature_constants.cc
+++ b/components/feature_engagement/public/feature_constants.cc
@@ -57,6 +57,8 @@
     "IPH_NewTabPageButton", base::FEATURE_DISABLED_BY_DEFAULT};
 const base::Feature kIPHPreviewsOmniboxUIFeature{
     "IPH_PreviewsOmniboxUI", base::FEATURE_DISABLED_BY_DEFAULT};
+const base::Feature kIPHTranslateMenuButtonFeature{
+    "IPH_TranslateMenuButton", base::FEATURE_ENABLED_BY_DEFAULT};
 #endif  // defined(OS_ANDROID)
 
 #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
diff --git a/components/feature_engagement/public/feature_constants.h b/components/feature_engagement/public/feature_constants.h
index bce43b7..3fa6fec 100644
--- a/components/feature_engagement/public/feature_constants.h
+++ b/components/feature_engagement/public/feature_constants.h
@@ -42,6 +42,7 @@
 extern const base::Feature kIPHHomepageTileFeature;
 extern const base::Feature kIPHNewTabPageButtonFeature;
 extern const base::Feature kIPHPreviewsOmniboxUIFeature;
+extern const base::Feature kIPHTranslateMenuButtonFeature;
 #endif  // defined(OS_ANDROID)
 
 #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc
index 932a6d9..9ae9e4d 100644
--- a/components/feature_engagement/public/feature_list.cc
+++ b/components/feature_engagement/public/feature_list.cc
@@ -37,6 +37,7 @@
     &kIPHHomepageTileFeature,
     &kIPHNewTabPageButtonFeature,
     &kIPHPreviewsOmniboxUIFeature,
+    &kIPHTranslateMenuButtonFeature,
 #endif  // defined(OS_ANDROID)
 #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
     &kIPHBookmarkFeature,
diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h
index 334238c5..c43440f 100644
--- a/components/feature_engagement/public/feature_list.h
+++ b/components/feature_engagement/public/feature_list.h
@@ -76,6 +76,8 @@
 DEFINE_VARIATION_PARAM(kIPHHomepageTileFeature, "IPH_HomepageTile");
 DEFINE_VARIATION_PARAM(kIPHNewTabPageButtonFeature, "IPH_NewTabPageButton");
 DEFINE_VARIATION_PARAM(kIPHPreviewsOmniboxUIFeature, "IPH_PreviewsOmniboxUI");
+DEFINE_VARIATION_PARAM(kIPHTranslateMenuButtonFeature,
+                       "IPH_TranslateMenuButton");
 #endif  // defined(OS_ANDROID)
 #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
 DEFINE_VARIATION_PARAM(kIPHBookmarkFeature, "IPH_Bookmark");
@@ -121,6 +123,7 @@
         VARIATION_ENTRY(kIPHHomepageTileFeature),
         VARIATION_ENTRY(kIPHNewTabPageButtonFeature),
         VARIATION_ENTRY(kIPHPreviewsOmniboxUIFeature),
+        VARIATION_ENTRY(kIPHTranslateMenuButtonFeature),
 #elif BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
         VARIATION_ENTRY(kIPHBookmarkFeature),
         VARIATION_ENTRY(kIPHIncognitoWindowFeature),
diff --git a/components/gwp_asan/common/guarded_page_allocator.cc b/components/gwp_asan/common/guarded_page_allocator.cc
index b06f4c2fd..13908b3 100644
--- a/components/gwp_asan/common/guarded_page_allocator.cc
+++ b/components/gwp_asan/common/guarded_page_allocator.cc
@@ -53,7 +53,20 @@
   UnmapPages();
 }
 
-void* GuardedPageAllocator::Allocate(size_t size) {
+void* GuardedPageAllocator::Allocate(size_t size, size_t align) {
+  CHECK_LE(size, page_size_);
+  if (!size)
+    return nullptr;
+
+  // Default alignment is size's next smallest power-of-two, up to
+  // kGpaAllocAlignment.
+  if (!align) {
+    align =
+        std::min(size_t{1} << base::bits::Log2Floor(size), kGpaAllocAlignment);
+  }
+  CHECK_LE(align, size);
+  CHECK(base::bits::IsPowerOfTwo(align));
+
   size_t free_slot = ReserveSlot();
   if (free_slot == SIZE_MAX)
     return nullptr;  // All slots are reserved.
@@ -62,15 +75,12 @@
   MarkPageReadWrite(reinterpret_cast<void*>(free_page));
 
   size_t offset;
-  if (base::RandInt(0, 1)) {
+  if (base::RandInt(0, 1))
     // Return right-aligned allocation to detect overflows.
-    size_t alignment =
-        std::min(size_t{1} << base::bits::Log2Floor(size), kGpaAllocAlignment);
-    offset = page_size_ - base::bits::Align(size, alignment);
-  } else {
+    offset = page_size_ - base::bits::Align(size, align);
+  else
     // Return left-aligned allocation to detect underflows.
     offset = 0;
-  }
 
   // Initialize slot metadata.
   data_[free_slot].RecordAllocation(size, offset);
diff --git a/components/gwp_asan/common/guarded_page_allocator.h b/components/gwp_asan/common/guarded_page_allocator.h
index 30ba1a8..c3de551 100644
--- a/components/gwp_asan/common/guarded_page_allocator.h
+++ b/components/gwp_asan/common/guarded_page_allocator.h
@@ -28,7 +28,7 @@
   // Maximum number of pages this class can allocate.
   static constexpr size_t kGpaMaxPages = 64;
 
-  // Maximum alignment for all returned allocations.
+  // Default maximum alignment for all returned allocations.
   static constexpr size_t kGpaAllocAlignment = 16;
 
   enum class ErrorType {
@@ -52,8 +52,12 @@
   // zero-filled. Failure can occur if memory could not be mapped or protected,
   // or if all guarded pages are already allocated.
   //
-  // Precondition: size <= page_size_
-  void* Allocate(size_t size);
+  // The align parameter specifies a power of two to align the allocation up to.
+  // It must be less than or equal to the allocation size. If it's left as zero
+  // it will default to the default alignment the allocator chooses.
+  //
+  // Precondition: align <= size <= page_size_
+  void* Allocate(size_t size, size_t align = 0);
 
   // Deallocates memory pointed to by ptr. ptr must have been previously
   // returned by a call to Allocate.
diff --git a/components/gwp_asan/common/guarded_page_allocator_unittest.cc b/components/gwp_asan/common/guarded_page_allocator_unittest.cc
index cba8da4..5840ef43e 100644
--- a/components/gwp_asan/common/guarded_page_allocator_unittest.cc
+++ b/components/gwp_asan/common/guarded_page_allocator_unittest.cc
@@ -24,9 +24,9 @@
       : gpa_(num_pages) {}
 
   // Get a left- or right- aligned allocation (or nullptr on error.)
-  char* GetAlignedAllocation(bool left_aligned, size_t sz) {
+  char* GetAlignedAllocation(bool left_aligned, size_t sz, size_t align = 0) {
     for (size_t i = 0; i < 100; i++) {
-      void* alloc = gpa_.Allocate(sz);
+      void* alloc = gpa_.Allocate(sz, align);
       if (!alloc)
         return nullptr;
 
@@ -42,6 +42,18 @@
     return nullptr;
   }
 
+  // Helper that returns the offset of a right-aligned allocation in the
+  // allocation's page.
+  uintptr_t GetRightAlignedAllocationOffset(size_t size, size_t align) {
+    const uintptr_t page_mask = base::GetPageSize() - 1;
+
+    void* buf = GetAlignedAllocation(false, size, align);
+    CHECK(buf);
+    gpa_.Deallocate(buf);
+
+    return reinterpret_cast<uintptr_t>(buf) & page_mask;
+  }
+
   GuardedPageAllocator gpa_;
 };
 
@@ -86,6 +98,26 @@
   gpa_.Deallocate(buf);
 }
 
+TEST_F(GuardedPageAllocatorTest, AllocationAlignment) {
+  const uintptr_t page_size = base::GetPageSize();
+
+  EXPECT_EQ(GetRightAlignedAllocationOffset(9, 1), page_size - 9);
+  EXPECT_EQ(GetRightAlignedAllocationOffset(9, 2), page_size - 10);
+  EXPECT_EQ(GetRightAlignedAllocationOffset(9, 4), page_size - 12);
+  EXPECT_EQ(GetRightAlignedAllocationOffset(9, 8), page_size - 16);
+
+  EXPECT_EQ(GetRightAlignedAllocationOffset(513, 512), page_size - 1024);
+
+  // Default alignment aligns up to the next lowest power of two.
+  EXPECT_EQ(GetRightAlignedAllocationOffset(5, 0), page_size - 8);
+  EXPECT_EQ(GetRightAlignedAllocationOffset(9, 0), page_size - 16);
+  // But only up to 16 bytes.
+  EXPECT_EQ(GetRightAlignedAllocationOffset(513, 0), page_size - (512 + 16));
+
+  EXPECT_DEATH(GetRightAlignedAllocationOffset(5, 8), "");
+  EXPECT_DEATH(GetRightAlignedAllocationOffset(5, 3), "");
+}
+
 TEST_F(GuardedPageAllocatorTest, GetNearestValidPageEdgeCases) {
   EXPECT_EQ(gpa_.GetPageAddr(gpa_.GetNearestValidPage(gpa_.pages_base_addr_)),
             gpa_.first_page_addr_);
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
index 70f8ba7..a12d7ab1b 100644
--- a/components/omnibox/browser/autocomplete_result.cc
+++ b/components/omnibox/browser/autocomplete_result.cc
@@ -158,8 +158,15 @@
     i->ComputeStrippedDestinationURL(input, template_url_service);
 
 #if !(defined(OS_ANDROID) || defined(OS_IOS))
-  // Wipe tail suggestions if not exclusive (minus default match).
-  MaybeCullTailSuggestions(&matches_);
+  // Do not cull the tail suggestions for zero prefix query suggetions of
+  // chromeOS launcher case, since there won't be any default match in this
+  // scenario.
+  if (!(input.text().empty() &&
+        input.current_page_classification() ==
+            metrics::OmniboxEventProto::CHROMEOS_APP_LIST)) {
+    // Wipe tail suggestions if not exclusive (minus default match).
+    MaybeCullTailSuggestions(&matches_);
+  }
 #endif
   SortAndDedupMatches(input.current_page_classification(), &matches_);
 
diff --git a/components/optimization_guide/proto/hints.proto b/components/optimization_guide/proto/hints.proto
index ac782c0..40e8d1c 100644
--- a/components/optimization_guide/proto/hints.proto
+++ b/components/optimization_guide/proto/hints.proto
@@ -120,9 +120,10 @@
   // The maximum effective connection type threshold for triggering the
   // optimization associated with this hint.
   optional EffectiveConnectionType max_ect_trigger = 2;
-  // An ordered list of optimizations that should be whitelisted for this page
-  // pattern. The client uses the first optimization in this list that is
-  // enabled for it.
+  // An ordered set of optimizations that should be whitelisted for this page
+  // pattern.
+  //
+  // The client will use the first optimization that it supports.
   repeated Optimization whitelisted_optimizations = 3;
 }
 
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb
index a37f6e37..8069c029 100644
--- a/components/policy/resources/policy_templates_am.xtb
+++ b/components/policy/resources/policy_templates_am.xtb
@@ -589,6 +589,7 @@
 <translation id="2529880111512635313">በግዳጅ የተጫኑ የመተግበሪያዎች እና የቅጥያዎች ዝርዝሩን ያዋቅሩ</translation>
 <translation id="253135976343875019">በሶኬት ኃይል ላይ ሲሆን የስራ ፈትቶ ማስጠንቀቂያ መዘግየት</translation>
 <translation id="2536525645274582300">ተጠቃሚ የGoogle አካባቢ አገልግሎቶችን የሚበራ ከሆነ ይወስናል</translation>
+<translation id="254653220329944566">የ<ph name="PRODUCT_NAME" /> የደመና ሪፖርት ማድረግን ያነቃል</translation>
 <translation id="2550593661567988768">ሲምፕሌክስ ህትመት ብቻ</translation>
 <translation id="2552966063069741410">የሰዓት ሰቅ</translation>
 <translation id="2562339630163277285">ፈጣን ውጤቶችን ለማቅረብ ጥቅም ላይ የሚውለው የፍለጋ ፕሮግራም ዩአርኤል ይገልጻል። ዩአርኤሉ የ<ph name="SEARCH_TERM_MARKER" /> ሕብረቁምፊ ሊኖረው ይገባል፣ ይህም በመጠይቅ ጊዜ ተጠቃሚው ባስገባው ጽሑፍ የሚተካ ነው።
@@ -1942,6 +1943,15 @@
 
           ይህ መመሪያ እንዳልተዋቀረ ከተተወ ለሁሉም ጣቢያዎች ተዋቅሮ ከሆነ ከ«DefaultJavaScriptSetting» መመሪያ፣ አለበለዚያ ደግሞ የተጠቃሚው የግል ውቅር የመጣ ሁለንተናዊው የነባሪ እሴት ስራ ላይ ይውላል።</translation>
 <translation id="614662973812186053">ይህ መመሪያ እንዲሁም የAndroid አጠቃቀም እና የምርመራ ውሂብ አሰባሰብን ይቆጣጠራል።</translation>
+<translation id="6153048425064249648">ይህ መመሪያ የአሳሽ ክወና መረጃ ወደ Google አስተዳደር መሥሪያ የሚሰቅለውን የ<ph name="PRODUCT_NAME" /> ደመና ሪፖርት ማድረግን ይቆጣጠራል።
+
+      ይህ መመሪያ ሳይዋቀር ከተተወ ወይም ወደ ሐሰት ከተዋቀረ ምንም የሚሰበበሰብ ወይም የሚሰቀል ውሂብ አይኖርም።
+      ይህ መመሪያ ወደ እውነት ከተዋቀረ ውሂቡ ይሰበሰባል፣ እና ውሂቡወደ Google አስተዳዳሪ መሥሪያ ይሰቀላል።
+      ምን ውሂብ እንደሚሰቀል ለመቆጣጠር አባክዎ በቡድኑ የChrome ሪፖርት ማድረግ ቅጥያ ውስጥ ያሉትን መመሪያዎች ይጠቀሙ።
+
+      ይህ መመሪያ ማሽኑ በ<ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> የተመዘገበ ከሆነ ብቻ ነው ውጤታማ የሚሆነው።
+
+      ይህ መመሪያ ከዚህ ቅጥያ ጋር ተዛማጅነት ያላቸውን ማናቸውም ቅጥያ መመሪያዎች ሪፖርት ለማድረግ እና ለመሻር <ph name="CHROME_REPORTING_EXTENSION_NAME" />ን መጫንን ያስገድዳል።</translation>
 <translation id="6155936611791017817">የትልቅ ጠቋሚው ነባሪ ሁኔታ በመግቢያ ገጹ ላይ ያዋቅሩት</translation>
 <translation id="6157537876488211233">በኮማ የተለዩ የተኪ ማለፊያ ደንቦች ዝርዝር</translation>
 <translation id="6158324314836466367">የንግድ ድርጅት ድር መደብር ስም (የተቋረጠ)</translation>
@@ -2999,14 +3009,6 @@
           የበርካታ አገልጋይ ስሞችን በኮማዎች ያለያዩ። ልቅ ምልክቶች (*) ይፈቀዳሉ።
 
           ይህ መመሪያ እንዳልተዋቀረ ከተዉት <ph name="PRODUCT_NAME" /> አንድ አገልጋይ በውስጠ-መረብ ውስጥ ካለ ለማወቅ ይሞክራል፣ እና ከዚህ ብኋላ ብቻ ነው ለIWA ጥያቄዎች ምላሽ የሚሰጠው። አንድ አገልጋይ እንደበይነመረብ ሆኖ ከተገኘ የIWA ጥያቄዎች በ<ph name="PRODUCT_NAME" /> ችላ ይባላሉ።</translation>
-<translation id="8669669491594628013">የይለፍ ቃል ጥበቃ ማስጠንቀቂያ ቅስቀሳን እንዲቆጣጠሩ ያስችልዎታል። ተጠቃሚዎች የተጠበቀ ይለፍ ቃላቸውን አጠራጣሪ ሊሆኑ በሚችሉ ጣቢያዎች ላይ ሲጠቀሙ የይለፍ ቃል ጥበቃ ተጠቃሚዎቹን ያነቃቸዋል።
-
-      የትኛው የይለፍ ቃል እንደሚጠበቅ ለማዋቀር የ«PasswordProtectionLoginURLs» እና «PasswordProtectionChangePasswordURL» መመሪያዎችን መጠቀም ይችላሉ።
-
-      ይህ መመሪያ ወደ «PasswordProtectionWarningOff» ከተዋቀረ ምንም የይለፍ ቃል ጥበቃ ማስጠንቀቂያ አይታይም።
-      ይህ መመሪያ ወደ «PasswordProtectionWarningOnPasswordReuse» ከተዋቀረ ተጠቃሚው የተጠበቀው ይለፍ ቃላቸውን በተፈቀደላቸው ዝርዝር ውስጥ ባልሆነ ጣቢያ ላይ ዳግም ሲጠቀሙበት የይለፍ ቃል ጥበቃ ማስጠንቀቂያው ይታያል።
-      ይህ መመሪያ ወደ «PasswordProtectionWarningOnPhishingReuse» ከተዋቀረ ተጠቃሚው የተጠበቀው የይለፍ ቃላቸውን በማስገሪያ ጣቢያ ላይ ዳግም ሲጠቀሙበት የይለፍ ቃል ጥበቃ ማስጠንቀቂያው ይታያል።
-      ይህ መመሪያ እንዳልተዋቀረ ከተተወ ተጠቃሚው የተጠበቀው የይለፍ ቃላቸውን በማስገሪያ ጣቢያ ላይ ሲጠቀሙ የGoogle የይለፍ ቃል ጥበቃ ማስጠንቀቂያው ይቀሰቀሳል፣ ነገር ግን ተጠቃሚው ይህን ቅንብር መቀየር ይችላል።</translation>
 <translation id="8672321184841719703">ራስ-አዘምን ስሪቱን አነጣጥር</translation>
 <translation id="867410340948518937">U2F (ሁለገብ ሁለተኛ ደረጃ)</translation>
 <translation id="8682611302223077049">የትኛዎቹ ተጠቃሚዎች <ph name="PRODUCT_NAME" /> እንደገና መጀመር እንዳለበት ወይም አንድ የ<ph name="PRODUCT_OS_NAME" /> መሣሪያ በመጠባበቅ ላይ ያለ ዝማኔን ለመተግበር እንደገና መጀመር ይኖርበት እንደሆነ ማሳወኢያ የሚያገኙበት ጊዜን በሚሊሰከንዶች እንዲያቀናብሩ ያስችልዎታል።
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb
index 24f58eba..ec94206 100644
--- a/components/policy/resources/policy_templates_ar.xtb
+++ b/components/policy/resources/policy_templates_ar.xtb
@@ -582,6 +582,7 @@
 <translation id="2529880111512635313">تهيئة القائمة التي تتضمن التطبيقات والإضافات التي تم فرض تثبيتها</translation>
 <translation id="253135976343875019">مهلة التحذير من الدخول في وضع الخمول عند استخدام طاقة التيار المتردد</translation>
 <translation id="2536525645274582300">يحدّد المستخدم رغبته بتفعيل خدمات الموقع الجغرافي</translation>
+<translation id="254653220329944566">تفعيل <ph name="PRODUCT_NAME" /> لإعداد تقارير السحابة الإلكترونية</translation>
 <translation id="2550593661567988768">طباعة أحادية الاتجاه فقط</translation>
 <translation id="2552966063069741410">المنطقة الزمنية</translation>
 <translation id="2562339630163277285">‏لتحديد عنوان URL لمحرك البحث المستخدَم لتوفير نتائج فورية. يجب أن يشتمل عنوان URL على السلسلة <ph name="SEARCH_TERM_MARKER" /> والتي سيتم استبدالها عند طلب البحث بالنص الذي أدخله المستخدم حتى الآن.
@@ -1845,6 +1846,15 @@
 <translation id="6133088669883929098">السماح لجميع المواقع باستخدام إنشاء مفتاح</translation>
 <translation id="6145799962557135888">‏للسماح لك بتعيين قائمة أنماط عناوين URL التي تحدد المواقع التي يُسمح لها بتشغيل جافا سكريبت. إذا تم ترك هذه السياسة بدون تعيين، فسيتم استخدام القيمة التلقائية العامة لجميع المواقع إما من السياسة 'DefaultJavaScriptSetting' إذا كان قد تم تعيينها أو من التهيئة الشخصية للمستخدم.</translation>
 <translation id="614662973812186053">‏تتحكم هذه السياسة أيضًا في جمع بيانات تشخيص واستخدام Android.</translation>
+<translation id="6153048425064249648">‏تتحكَّم هذه السياسة في <ph name="PRODUCT_NAME" /> لإعداد تقارير السحابة الإلكترونية والذي يعمل على تحميل معلومات عن عمليات المتصفِّح إلى وحدة تحكُّم المشرف في Google.
+
+      في حال عدم إعداد هذه السياسة أو ضبطها على "False"، لا تُجمَع البيانات أو تُحمَّل.
+      في حال ضبط هذه السياسة على "True"، تُجمَع البيانات وتُحمَّل في وحدة تحكُّم المشرف في Google.
+      للتحكُّم في نوع البيانات التي يتم تحميلها، يُرجى استخدام السياسات في مجموعة "إضافة إعداد تقارير Chrome".
+
+      لا تسري هذه السياسة إلا في حال تسجيل الجهاز باستخدام <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      تفرض هذه السياسة تثبيت <ph name="CHROME_REPORTING_EXTENSION_NAME" /> لإعداد التقارير وإلغاء جميع سياسات الإضافات لتلك الإضافة.</translation>
 <translation id="6155936611791017817">تعيين الحالة التلقائية للمؤشر الكبير في شاشة تسجيل الدخول</translation>
 <translation id="6157537876488211233">قائمة مفصولة بفواصل لقواعد تجاوز الخادم الوكيل</translation>
 <translation id="6158324314836466367">‏اسم السوق الإلكتروني في Enterprise (إيقاف)</translation>
@@ -2884,14 +2894,6 @@
           يمكن فصل أسماء الخوادم المتعددة بفواصل. ومسموح بأحرف البدل (*).
 
           في حالة ترك هذه السياسة بدون تعيين، سيحاول <ph name="PRODUCT_NAME" /> اكتشاف ما إذا كان الخادم متصلاً بالشبكة الداخلية وحينئذٍ فقط سيستجيب إلى طلبات IWA. وإذا تم اكتشاف خادم كإنترنت، فسيتجاهل <ph name="PRODUCT_NAME" /> طلبات IWA الواردة منه.</translation>
-<translation id="8669669491594628013">‏تتيح لك هذه السياسة التحكُّم في تشغيل تحذير حماية كلمة المرور. وتنبّه حماية "كلمة المرور" المستخدمين عند إعادة استخدام كلمات المرور المحمية في المواقع الإلكترونية التي يُحتمل أن تكون مريبة.
-
-      يمكنك استخدام السياستين "PasswordProtectionLoginURLs" و"PasswordProtectionChangePasswordURL" لضبط كلمات المرور التي تريد حمايتها.
-
-      في حال ضبط هذه السياسة على "PasswordProtectionWarningOff"، لن يتم حينها عرض أي تحذير بخصوص حماية كلمة المرور.
-      وفي حال ضبطها على "PasswordProtectionWarningOnPasswordReuse"، سيتم عرض تحذير حماية كلمة المرور عندما يعيد المستخدم استعمال كلمة المرور المحمية على موقع إلكتروني لم تتم إضافته إلى القائمة البيضاء.
-      في حال ضبط السياسة على "PasswordProtectionWarningOnPhishingReuse"، سيتم عرض تحذير حماية كلمة المرور عندما يعيد المستخدم استعمال كلمة المرور المحمية في موقع تصيُّد احتيالي.
-      وفي حال عدم ضبط هذه السياسة، لن تحمي خدمة حماية كلمة المرور في هذه الحالة إلا كلمات مرور Google ولكن سيتمكّن المستخدم من تغيير هذا الإعداد.</translation>
 <translation id="8672321184841719703">إصدار التحديث التلقائي المستهدف</translation>
 <translation id="867410340948518937">‏U2F (العامل الثاني العالمي)</translation>
 <translation id="8682611302223077049">تسمح لك هذه السياسة بتحديد الفترة الزمنية بالمللي ثانية والتي يتم بعد انقضائها إبلاغ المستخدمين بضرورة إعادة تشغيل <ph name="PRODUCT_NAME" /> أو إعادة تشغيل جهاز <ph name="PRODUCT_OS_NAME" /> لتثبيت تحديث مُعلّق.
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb
index 486db69..034bbb7 100644
--- a/components/policy/resources/policy_templates_bg.xtb
+++ b/components/policy/resources/policy_templates_bg.xtb
@@ -570,6 +570,7 @@
 <translation id="2529880111512635313">Конфигуриране на списъка с приложения и разширения, които да се инсталират принудително</translation>
 <translation id="253135976343875019">Забавяне преди предупреждение за неактивност при работа на променлив ток</translation>
 <translation id="2536525645274582300">Потребителят решава дали да активира услугите на Google за местоположение</translation>
+<translation id="254653220329944566">Активиране на функцията на <ph name="PRODUCT_NAME" /> за изпращане на информация в облака</translation>
 <translation id="2550593661567988768">Само едностранно отпечатване</translation>
 <translation id="2552966063069741410">Часова зона</translation>
 <translation id="2562339630163277285">Посочва URL адреса на търсещата машина, използвана за предоставяне на динамични резултати. Той трябва да съдържа низа „<ph name="SEARCH_TERM_MARKER" />“, който по време на заявката ще бъде заменен от текста, въведен от потребителя до момента.
@@ -1866,6 +1867,15 @@
 <translation id="6133088669883929098">Разрешаване на всички сайтове да генерират ключове</translation>
 <translation id="6145799962557135888">Позволява да зададете списък с образци за URL адреси, посочващи сайтове, на които е разрешено да изпълняват JavaScript. Ако това правило е оставено незададено, за всички сайтове ще се използва глобалната стандартна стойност от правилото „DefaultJavaScriptSetting“, ако е зададено, или в противен случай – личната конфигурация на потребителя.</translation>
 <translation id="614662973812186053">Това правило контролира и събирането на данни за употребата и диагностична информация за Android.</translation>
+<translation id="6153048425064249648">Това правило контролира функцията на <ph name="PRODUCT_NAME" /> за изпращане на данни в облака, която качва в Google Admin console информация за работата на браузъра.
+
+Когато правилото не е зададено или е false, не се събират или качват данни.
+При true информацията се събира и качва в Google Admin console.
+За да контролирате какви данни се качват, моля, използвайте правилата в групата Chrome Reporting Extension.
+
+Това правило е в сила само когато машината е регистрирана с <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+Ако то е зададено, <ph name="CHROME_REPORTING_EXTENSION_NAME" /> се инсталира принудително за целите на изпращането на информацията и всички правила, свързани с това разширение, се отменят.</translation>
 <translation id="6155936611791017817">Задаване на стандартното състояние на големия курсор на екрана за вход</translation>
 <translation id="6157537876488211233">Списък с разделени със запетая правила за заобикаляне на прокси сървъра</translation>
 <translation id="6158324314836466367">Име на корпоративния уеб магазин (оттеглено)</translation>
@@ -2905,14 +2915,6 @@
 Разделете със запетаи имената на сървърите. Заместващите знаци (*) са разрешени.
 
 В случай че това правило не е зададено, <ph name="PRODUCT_NAME" /> ще отговоря на заявки за интегрирано удостоверяване за Windows (IWA) само след като се опита да установи дали даден сървър е в интранет. Ако случаят е такъв, <ph name="PRODUCT_NAME" /> ще пренебрегне тези заявки от него.</translation>
-<translation id="8669669491594628013">Дава възможност да контролирате задействането на предупреждение от услугата за защита на паролата. Тази услуга сигнализира на потребителите, когато повторно използват защитената си парола на потенциално подозрителни сайтове.
-
-Можете да използвате правилата PasswordProtectionLoginURLs и PasswordProtectionChangePasswordURL, за да конфигурирате кои пароли да бъдат защитавани.
-
-Ако за правилото е зададено PasswordProtectionWarningOff, няма да се показва предупреждение от услугата за защита на паролата.
-При PasswordProtectionWarningOnPasswordReuse предупреждение ще се показва, когато потребителят използва повторно защитената си парола на сайт извън белия списък.
-В случай че за правилото е зададено PasswordProtectionWarningOnPhishingReuse, предупреждение ще се показва, когато потребителят използва повторно защитената си парола на сайт за фишинг.
-Ако правилото не е зададено, услугата за защита ще предпазва само паролите за Google, но потребителят ще може да променя настройката.</translation>
 <translation id="8672321184841719703">Целева версия за автоматично актуализиране</translation>
 <translation id="867410340948518937">U2F (универсално второ ниво)</translation>
 <translation id="8682611302223077049">Дава възможност да зададете периода от време (в милисекунди), през който потребителите да бъдат известявани, че трябва да стартират отново <ph name="PRODUCT_NAME" /> или да рестартират устройството с <ph name="PRODUCT_OS_NAME" />, за да се приложи изчакваща актуализация.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb
index 8fb8c8e..401d830 100644
--- a/components/policy/resources/policy_templates_bn.xtb
+++ b/components/policy/resources/policy_templates_bn.xtb
@@ -674,6 +674,7 @@
 <translation id="2529880111512635313">বলপূর্বক ইনস্টল করা অ্যাপ্লিকেশান ও এক্সটেনশানগুলির তালিকাটি কনফিগার করুন</translation>
 <translation id="253135976343875019">AC পাওয়ার চলাকালীন নিষ্ক্রিয়তা সতর্কতাতে বিলম্ব</translation>
 <translation id="2536525645274582300">Google-এর লোকেশন ভিত্তিক পরিষেবা চালু করবেন কিনা তা ব্যবহারকারী নির্ধারণ করেন</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> ক্লাউড রিপোর্টিং চালু করে</translation>
 <translation id="2550593661567988768">শুধুমাত্র সিমপ্লেক্স প্রিন্টিং</translation>
 <translation id="2552966063069741410">সময় অঞ্চল</translation>
 <translation id="2562339630163277285">তাত্ক্ষণিক ফলাফল দিতে ব্যবহৃত হয় এমন সার্চ ইঞ্জিনের URLটি নির্দিষ্ট করে। URLটিতে <ph name="SEARCH_TERM_MARKER" /> স্ট্রিংটি থাকা উচিত, এটি ব্যবহারকারী এখনও অবধি যে পাঠ্য লিখেছে সেটি দ্বারা কুয়েরির সময় প্রতিস্থাপিত হবে।
@@ -2287,6 +2288,15 @@
 
 যদি এই নীতিটি সেট না করে ছেড়ে যাওয়া হয় তাহলে গ্লোবাল ডিফল্ট মান সব সাইটগুলির জন্য ব্যবহার করা হবে যদি  'ডিফল্ট JavaScript সেটিং' নীতি সেট করা হয় তা থেকে, নয়তো ব্যবহারকারীদের ব্যক্তিগত কনফিগারেশান থেকে৷</translation>
 <translation id="614662973812186053">এই নীতিটি Android ব্যবহারের এবং ডায়াগনস্টিক ডেটার সংগ্রহ নিয়ন্ত্রণ করে।</translation>
+<translation id="6153048425064249648">এই নীতিটি <ph name="PRODUCT_NAME" /> ক্লাউড রিপোর্টিং নিয়ন্ত্রণ করে যা Google অ্যাডমিন কনসোলে ব্রাউজার বিষয়ক কার্যকলাপের তথ্য আপলোড করে।
+
+      এই নীতিটি সেট না করলে অথবা ফলসে সেট করলে সংগ্রহ অথবা আপলোড করার মতো কোনও ডেটা থাকবে না।
+      এই নীতিটি ট্রু তে সেট করা থাকলে Google অ্যাডমিন কনসোলে ডেটা সংগ্রহ এবং আপলোড করা হয়।
+      কোন ধরনের ডেটা আপলোড করা হবে তা নিয়ন্ত্রণ করার জন্য Chrome রিপোর্টিং এক্সটেনশনে উল্লেখ করা নীতি ব্যবহার করুন।
+
+      মেশিনটি <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />-এ নথিভুক্ত থাকলে তবেই নীতিটি কার্যকর হবে।
+
+      রিপোর্টিংয়ের জন্য এই নীতিটি <ph name="CHROME_REPORTING_EXTENSION_NAME" /> ইনস্টল করে এবং সেই এক্সটেনশন সম্পর্কিত যেকোনও এক্সটেনশন নীতি ওভাররাইড করে।</translation>
 <translation id="6155936611791017817">লগইন স্ক্রীনে বড় কার্সারের ডিফল্ট স্থিতি সেট করুন</translation>
 <translation id="6157537876488211233">প্রক্সি বাইপাস বিধিগুলির জন্য কমা দ্বারা পৃথকীকৃত তালিকা</translation>
 <translation id="6158324314836466367">এন্টারপ্রাইজ ওয়েব স্টোরের নাম (থামানো হয়েছে)</translation>
@@ -3448,14 +3458,6 @@
           একাধিক সার্ভারের নামগুলি কমা দিয়ে আলাদা করে৷ ওয়াইল্ডকার্ডগুলি (*) মঞ্জুরিপ্রাপ্ত৷
 
           যদি আপনি এই নীতিটি সেট না করে ছেড়ে রাখেন তাহলে ইন্ট্রানেটে কোনো সার্ভার রয়েছে কিনা <ph name="PRODUCT_NAME" /> তা শনাক্ত করার চেষ্টা করবে এবং শুধুমাত্র তখনই এটি IWA অনুরোধগুলির প্রতিক্রিয়া জানাবে৷ যদি একটি সার্ভার ইন্টারনেট হিসাবে শনাক্ত হয় তখন এর থেকে IWA অনুরোধগুলি <ph name="PRODUCT_NAME" /> এর দ্বারা উপেক্ষিত হবে৷</translation>
-<translation id="8669669491594628013">আপনাকে পাসওয়ার্ড সুরক্ষার সতর্কতা ট্রিগার হওয়া নিয়ন্ত্রণ করতে দেয়। পাসওয়ার্ড সুরক্ষা ব্যবহারকারীদের সতর্ক করে দেয় যখন তারা সম্ভাব্য সন্দেহজনক সাইটগুলিতে তাদের সুরক্ষিত পাসওয়ার্ড আবার ব্যবহার করে।
-
-      কোন পাসওয়ার্ড সুরক্ষিত রাখা হবে তা আপনি 'PasswordProtectionLoginURLs' এবং 'PasswordProtectionChangePasswordURL' নীতি ব্যবহার করে কনফিগার করতে পারেন।
-
-      যদি এই নীতিটি 'PasswordProtectionWarningOff'-এ সেট করা হয় তাহলে পাসওয়ার্ডের নিরাপত্তা সম্পর্কিত কোনও সতর্কতা দেখানো হবে না।
-      যদি এই নীতিটি 'PasswordProtectionWarningOnPasswordReuse'-এ সেট করা হয় তাহলে ব্যবহারকারী সাদা-তালিকাভুক্ত নয় এমন সাইটে পাসওয়ার্ড আবার ব্যবহার করলে পাসওয়ার্ডের নিরাপত্তা সম্পর্কিত সতর্কতা দেখানো হবে।
-      যদি এই নীতিটি 'PasswordProtectionWarningOnPhishingReuse'-এ সেট করা হয় তাহলে ব্যবহারকারী ফিশিং সাইটে পাসওয়ার্ড আবার ব্যবহার করলে পাসওয়ার্ডের নিরাপত্তা সম্পর্কিত সতর্কতা দেখানো হবে।
-      যদি এই নীতিটি সেট না করেই ছেড়ে দেওয়া হয় তাহলে পাসওয়ার্ড সুরক্ষা পরিষেবা শুধুমাত্র Google-এর পাসওয়ার্ড সুরক্ষিত রাখবে কিন্তু ব্যবহারকারীরা এই সেটিং পরিবর্তন করতে পারবেন।</translation>
 <translation id="8672321184841719703">লক্ষ্য স্বয়ংক্রিয়ভাবে আপডেট করা সংস্করণ</translation>
 <translation id="867410340948518937">U2F (সর্বজনীন দ্বিতীয় পদক্ষেপ)</translation>
 <translation id="8682611302223077049">এই সেটিংয়ে আপনি মিলিসেকেন্ডের হিসেবে এমন একটি সময়সীমা সেট করতে পারেন, যতক্ষণ ধরে ব্যবহারকারীকে জানানো হবে যে <ph name="PRODUCT_NAME" /> রিলঞ্চ করতে হবে অথবা বাকি থাকা আপডেট প্রয়োগ করার জন্য <ph name="PRODUCT_OS_NAME" /> ডিভাইস রিস্টার্ট করতে হবে।
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb
index 4acee904..7da3768 100644
--- a/components/policy/resources/policy_templates_ca.xtb
+++ b/components/policy/resources/policy_templates_ca.xtb
@@ -2900,14 +2900,6 @@
           Separeu els diversos noms de servidor amb comes. Es permet l'ús de comodins (*).
 
           Si deixeu aquesta política sense definir, <ph name="PRODUCT_NAME" /> provarà de detectar si un servidor es troba a la intranet i, en aquest cas, respondrà a les sol·licituds IWA. Si es detecta un servidor com a Internet, aleshores <ph name="PRODUCT_NAME" /> ometrà les sol·licituds IWA que enviï.</translation>
-<translation id="8669669491594628013">Et permet controlar l'activació d'un advertiment sobre la protecció de contrasenyes, que avisa els usuaris quan reutilitzen una contrasenya protegida en llocs web potencialment sospitosos.
-
-      Pots utilitzar les polítiques PasswordProtectionLoginURLs i PasswordProtectionChangePasswordURL per configurar quina contrasenya vols protegir.
-
-      Si aquesta política s'estableix en "PasswordProtectionWarningOff", no es mostrarà cap advertiment sobre la protecció de contrasenyes.
-      Si aquesta política s'estableix en "PasswordProtectionWarningOnPasswordReuse", l'advertiment sobre la protecció de contrasenyes es mostrarà quan l'usuari reutilitzi la seva contrasenya protegida en un lloc web que no es trobi a la llista blanca.
-      Si aquesta política s'estableix en "PasswordProtectionWarningOnPhishingReuse", l'advertiment sobre la protecció de contrasenyes es mostrarà quan l'usuari reutilitzi la seva contrasenya protegida en un lloc web de pesca de credencials.
-      Si aquesta política es deixa sense establir, el servei de protecció de contrasenyes només protegirà les contrasenyes de Google, però l'usuari podrà canviar aquesta opció de configuració.</translation>
 <translation id="8672321184841719703">Versió objectiu de l'actualització automàtica</translation>
 <translation id="867410340948518937">U2F (segon factor universal)</translation>
 <translation id="8682611302223077049">El permet establir el període de temps, en mil·lisegons, durant el qual es notifica als usuaris que <ph name="PRODUCT_NAME" /> o <ph name="PRODUCT_OS_NAME" /> s'han de reiniciar per aplicar una actualització pendent.
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb
index 5bc4b78..cfec283 100644
--- a/components/policy/resources/policy_templates_cs.xtb
+++ b/components/policy/resources/policy_templates_cs.xtb
@@ -569,6 +569,7 @@
 <translation id="2529880111512635313">Konfigurace seznamu aplikací a rozšíření, jejichž instalace je vynucena</translation>
 <translation id="253135976343875019">Prodleva upozornění na nečinnost při napájení ze sítě</translation>
 <translation id="2536525645274582300">O povolení služeb určování polohy Google rozhoduje uživatel</translation>
+<translation id="254653220329944566">Aktivuje cloudové hlášení prohlížeče <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Pouze jednostranný tisk</translation>
 <translation id="2552966063069741410">Časové pásmo</translation>
 <translation id="2562339630163277285">Určuje adresu URL vyhledávače, který bude použit k získání výsledků dynamického vyhledávání. Adresa URL by měla obsahovat řetězec <ph name="SEARCH_TERM_MARKER" />. Tento řetězec bude během dotazování nahrazen textem, který do daného okamžiku zadal uživatel.
@@ -1909,6 +1910,15 @@
 
           Pokud zásadu nenastavíte, použije se pro všechny webové stránky globální výchozí hodnota buď ze zásady DefaultJavaScriptSetting (pokud je nastavena), nebo z osobního nastavení uživatele.</translation>
 <translation id="614662973812186053">Tato zásada ovládá také shromažďování údajů o využití a diagnostických údajů systému Android.</translation>
+<translation id="6153048425064249648">Tato zásada ovládá cloudové hlášení prohlížeče <ph name="PRODUCT_NAME" />, které nahrává informace o provozu prohlížeče do administrátorské konzole Google.
+
+      Když je tato zásada ponechána nenastavená nebo je nastavená na hodnotu False, neshromažďují ani nenahrávají se žádná data.
+      Když je tato zásada nastavená na hodnotu True, data se shromažďují a nahrávají do administrátorské konzole Google.
+      Nahrávaná data můžete ovládat pomocí zásad ve skupině Rozšíření Chrome Reporting.
+
+      Tato zásada je účinná jen v případě, že je zařízení zaregistrováno pomocí zásady <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Tato zásada vynutí instalaci rozšíření <ph name="CHROME_REPORTING_EXTENSION_NAME" /> k hlášení a přepíše případné zásady, které se ho týkají.</translation>
 <translation id="6155936611791017817">Nastavení výchozího stavu velkého kurzoru na přihlašovací obrazovce</translation>
 <translation id="6157537876488211233">Seznam pravidel vynechání proxy serveru oddělených čárkami</translation>
 <translation id="6158324314836466367">Název podnikového úložiště aplikací (podpora ukončena)</translation>
@@ -2949,14 +2959,6 @@
 Chcete-li zadat několik názvů serverů, oddělte je čárkami. Zástupné znaky (*) jsou povoleny.
 
 Pokud zásada zůstane nenastavena, pokusí se <ph name="PRODUCT_NAME" /> zjistit, zda se server nachází v intranetu, a teprve poté bude reagovat na požadavky IWA. Pokud bude server zjištěn jako internet, bude <ph name="PRODUCT_NAME" /> požadavky IWA ignorovat.</translation>
-<translation id="8669669491594628013">Umožňuje ovládat spouštění upozornění ohledně ochrany hesla. Upozornění ohledně ochrany hesla se uživatelům zobrazí, pokud své chráněné heslo použijí na potenciálně podezřelých webech.
-
-      Pomocí zásad PasswordProtectionLoginURLs a PasswordProtectionChangePasswordURL můžete nakonfigurovat, která hesla mají být chráněna.
-
-      Pokud tuto zásadu nastavíte na hodnotu PasswordProtectionWarningOff, upozornění ohledně ochrany hesla se zobrazovat nebude.
-      Pokud tuto zásadu nastavíte na hodnotu PasswordProtectionWarningOnPasswordReuse, zobrazí se upozornění ohledně ochrany hesla, když uživatel použije chráněné heslo na webu, který není uveden na seznamu povolených.
-      Pokud tuto zásadu nastavíte na hodnotu PasswordProtectionWarningOnPhishingReuse, zobrazí se upozornění ohledně ochrany hesla, když uživatel použije chráněné heslo na phishingovém webu.
-      Pokud tuto zásadu ponecháte nenastavenou, bude služba pro ochranu hesel chránit pouze hesla Google, ale uživatel toto nastavení bude moci změnit.</translation>
 <translation id="8672321184841719703">Cílová verze automatické aktualizace</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Umožňuje nastavit dobu v milisekundách, po kterou se uživatelům bude zobrazovat oznámení, že je třeba prohlížeč <ph name="PRODUCT_NAME" /> nebo zařízení se systémem <ph name="PRODUCT_OS_NAME" /> restartovat, aby bylo možné nainstalovat čekající aktualizaci.
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb
index d681e99..c7bfd12c 100644
--- a/components/policy/resources/policy_templates_da.xtb
+++ b/components/policy/resources/policy_templates_da.xtb
@@ -2931,14 +2931,6 @@
           Adskil servernavne med kommaer. Jokertegn (*) er tilladt.
 
           Hvis denne politik ikke indstilles, prøver <ph name="PRODUCT_NAME" /> at registrere, om der er en server på intranettet, og kun i det tilfælde reageres der på IWA-anmodninger. Hvis en server registreres som internet, ignoreres IWA-anmodninger af <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Giver dig mulighed for at styre aktivering af advarsler om adgangskodebeskyttelse. Adgangskodebeskyttelse advarer brugerne, når de bruger deres beskyttede adgangskode på potentielt mistænkelige websites.
-
-      Du kan bruge politikkerne "PasswordProtectionLoginURLs" og "PasswordProtectionChangePasswordURL" til at konfigurere, hvilken adgangskode der skal beskyttes.
-
-      Hvis denne politik er indstillet til "PasswordProtectionWarningOff", vises der ingen advarsel om adgangskodebeskyttelse.
-      Hvis denne politik er indstillet til "PasswordProtectionWarningOnPasswordReuse", vises en advarsel om adgangskodebeskyttelse, når brugeren genbruger sin beskyttede adgangskode på et website, der ikke er hvidlistet.
-      Hvis denne politik er indstillet til "PasswordProtectionWarningOnPhishingReuse", vises en advarsel om adgangskodebeskyttelse, når brugeren genbruger sin beskyttede adgangskode på et phishing-website.
-      Hvis politikken ikke er indstillet, beskytter adgangskodebeskyttelse kun Google-adgangskoder, men brugeren kan ændre denne indstilling.</translation>
 <translation id="8672321184841719703">Målversion for automatiske opdateringer</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Giver dig mulighed for at angive et tidsrum i millisekunder, hvor brugerne underrettes om, at <ph name="PRODUCT_NAME" /> eller en <ph name="PRODUCT_OS_NAME" />-enhed skal genstartes for at anvende en afventende opdatering.
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 53c0000..ab1076414 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -2907,14 +2907,6 @@
           Fügen Sie zwischen den verschiedenen Servernamen ein Komma als Trennzeichen ein. Platzhalter (*) sind zulässig.
 
           Wenn Sie diese Richtlinie nicht konfigurieren, versucht <ph name="PRODUCT_NAME" /> zu ermitteln, ob der fragliche Server sich im Intranet befindet, und reagiert nur dann auf IWA-Anfragen. Wenn der Server sich dagegen im Internet befindet, werden dessen IWA-Anfragen von <ph name="PRODUCT_NAME" /> ignoriert.</translation>
-<translation id="8669669491594628013">Mit dieser Richtlinie können Sie die Auslösung der Passwortschutzwarnung steuern. Durch diese Meldung werden Nutzer gewarnt, wenn sie ihr geschütztes Passwort auf potenziell verdächtigen Websites wiederverwenden.
-
-      Mithilfe der Richtlinien "PasswordProtectionLoginURLs" und "PasswordProtectionChangePasswordURL" können Sie konfigurieren, welches Passwort geschützt werden soll.
-
-      Wenn diese Richtlinie auf "PasswordProtectionWarningOff" gesetzt ist, wird keine Passwortschutzwarnung angezeigt.
-      Ist diese Richtlinie auf "PasswordProtectionWarningOnPasswordReuse" eingestellt, wird die Passwortschutzwarnung angezeigt, falls der Nutzer sein geschütztes Passwort auf einer Website wiederverwendet, die nicht auf der weißen Liste steht.
-      Falls diese Richtlinie auf "PasswordProtectionWarningOnPhishingReuse" gesetzt ist, wird die Passwortschutzwarnung angezeigt, wenn der Nutzer sein geschütztes Passwort auf einer Phishingwebsite wiederverwendet.
-      Ist diese Richtlinie nicht konfiguriert, schützt der Passwortschutzdienst nur Google-Passwörter, aber der Nutzer kann diese Einstellung ändern.</translation>
 <translation id="8672321184841719703">Automatische Aktualisierung auf Zielversion</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Mit dieser Einstellung kann der Zeitraum in Millisekunden festgelegt werden, in dem ein Nutzer benachrichtigt wird, dass <ph name="PRODUCT_NAME" /> neu gestartet werden muss oder ein <ph name="PRODUCT_OS_NAME" />-Gerät neu gestartet werden muss, um ein ausstehendes Update durchzuführen.
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb
index b640073..8c0ef63 100644
--- a/components/policy/resources/policy_templates_el.xtb
+++ b/components/policy/resources/policy_templates_el.xtb
@@ -3049,14 +3049,6 @@
           Διαχωρισμός πολλών ονομάτων διακομιστών με κόμματα. Επιτρέπονται χαρακτήρες μπαλαντέρ (*).
 
           Αν δεν ορίσετε αυτήν την πολιτική, το <ph name="PRODUCT_NAME" /> θα προσπαθήσει να διαπιστώσει αν ένας διακομιστής ανήκει στο εσωτερικό δίκτυο και μόνο τότε θα απαντήσει σε αιτήματα IWA. Αν διαπιστωθεί ότι κάποιος διακομιστής προέρχεται από το διαδίκτυο, τα αιτήματα IWA από αυτόν θα παραβλέπονται από το <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Σας δίνει τη δυνατότητα να ελέγξετε την ενεργοποίηση της προειδοποίησης προστασίας κωδικού πρόσβασης. Οι ειδοποιήσεις προστασίας κωδικού πρόσβασης ειδοποιούν τους χρήστες, όταν επαναχρησιμοποιούν τον προστατευμένο κωδικό πρόσβασής τους σε δυνητικά ύποπτους ιστοτόπους.
-
-      Μπορείτε να χρησιμοποιήσετε τις πολιτικές "PasswordProtectionLoginURLs" και "PasswordProtectionChangePasswordURL", για να διαμορφώσετε ποιος κωδικός πρόσβασης θα προστατεύεται.
-
-      Εάν αυτή η πολιτική οριστεί στην επιλογή "PasswordProtectionWarningOff", δεν θα εμφανίζεται προειδοποίηση προστασίας κωδικού πρόσβασης.
-      Εάν αυτή η πολιτική οριστεί στην επιλογή "PasswordProtectionWarningOnPasswordReuse", η προειδοποίηση προστασίας κωδικού πρόσβασης θα εμφανίζεται όταν ο χρήστης επαναχρησιμοποιεί τον προστατευμένο κωδικό πρόσβασής του σε ιστότοπο που δεν είναι στη λίστα επιτρεπόμενων.
-      Εάν αυτή η πολιτική οριστεί στην επιλογή "PasswordProtectionWarningOnPhishingReuse", η προειδοποίηση προστασίας κωδικού πρόσβασης θα εμφανίζεται όταν ο χρήστης επαναχρησιμοποιεί τον προστατευμένο κωδικό πρόσβασής του σε ιστότοπο που χρησιμοποιεί ηλεκτρονικό ψάρεμα (phishing).
-      Εάν δεν οριστεί αυτή η πολιτική, η υπηρεσία προστασίας κωδικού πρόσβασης θα προστατεύει μόνο κωδικούς πρόσβασης Google, αλλά ο χρήστης θα έχει τη δυνατότητα να αλλάξει αυτήν τη ρύθμιση.</translation>
 <translation id="8672321184841719703">Στόχευση έκδοσης αυτόματης ενημέρωσης</translation>
 <translation id="867410340948518937">U2F (Καθολικός δευτερεύων παράγοντας)</translation>
 <translation id="8682611302223077049">Σας επιτρέπει να ορίσετε τη χρονική περίοδο, σε χιλιοστά του δευτερολέπτου, κατά τη διάρκεια της οποίας οι χρήστες ειδοποιούνται ότι το προϊόν <ph name="PRODUCT_NAME" /> πρέπει να επανεκκινηθεί ή ότι μια συσκευή <ph name="PRODUCT_OS_NAME" /> πρέπει να επανεκκινηθεί προκειμένου να εφαρμοστεί μια ενημέρωση που είναι σε εκκρεμότητα.
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 320a20e..3262a89 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -3047,14 +3047,6 @@
           Separate multiple server names with commas. Wildcards (*) are allowed.
 
           If you leave this policy unset <ph name="PRODUCT_NAME" /> will try to detect if a server is on the Intranet and only then will it respond to IWA requests. If a server is detected as Internet then IWA requests from it will be ignored by <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Allows you to control the triggering of password protection warning. Password protection alerts users when they reuse their protected password on potentially suspicious sites.
-
-      You can use 'PasswordProtectionLoginURLs' and 'PasswordProtectionChangePasswordURL' policies to configure which password to protect.
-
-      If this policy is set to 'PasswordProtectionWarningOff', no password protection warning will be shown.
-      If this policy is set to 'PasswordProtectionWarningOnPasswordReuse', password protection warning will be shown when the user reuses their protected password on a non-whitelisted site.
-      If this policy is set to 'PasswordProtectionWarningOnPhishingReuse', password protection warning will be shown when the user reuses their protected password on a phishing site.
-      If this policy is left unset, password protection service will only protect Google passwords, but the user will be able to change this setting.</translation>
 <translation id="8672321184841719703">Target Auto-Update Version</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Allows you to set the time period, in milliseconds, over which users are notified that <ph name="PRODUCT_NAME" /> must be relaunched or that a <ph name="PRODUCT_OS_NAME" /> device must be restarted to apply a pending update.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index c198a12..57423861 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -582,6 +582,7 @@
 <translation id="2529880111512635313">Configurar la lista de extensiones y apps que se instalarán obligatoriamente</translation>
 <translation id="253135976343875019">Advertencia de inactividad cuando el dispositivo está conectado a alimentación de CA</translation>
 <translation id="2536525645274582300">El usuario decide si habilita los servicios de ubicación de Google</translation>
+<translation id="254653220329944566">Habilitar los informes en la nube de <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Solo impresión simple</translation>
 <translation id="2552966063069741410">Zona horaria</translation>
 <translation id="2562339630163277285">Especifica la URL del motor de búsqueda que se usa para proporcionar resultados al instante. La URL debe contener el string "<ph name="SEARCH_TERM_MARKER" />", el cual se reemplazará en el momento de la consulta con el texto que el usuario haya ingresado hasta entonces.
@@ -1877,6 +1878,15 @@
 <translation id="6133088669883929098">Permitir que todos los sitios utilicen la generación de claves</translation>
 <translation id="6145799962557135888">Te permite configurar una lista de patrones de URL que especifican los sitios que están autorizados a ejecutar JavaScript. Si esta política no se configura, se usará el valor global predeterminado para todos los sitios ya sea de la política "DefaultJavaScriptSetting", si está configurada, o de otro tipo de configuración personal del usuario.</translation>
 <translation id="614662973812186053">Esta política también controla la recopilación de datos de diagnóstico y uso de Android.</translation>
+<translation id="6153048425064249648">Esta política controla los informes en la nube de <ph name="PRODUCT_NAME" />, que suben información sobre el funcionamiento del navegador a la consola del Administrador de Google.
+
+      Cuando esta política no se establece o se establece como falsa, no se recopilan ni se suben datos.
+      Cuando se establece como verdadera, se recopilan y se suben los datos a la consola del Administrador de Google.
+      Para controlar los datos que se suben, usa las políticas en el grupo Chrome Reporting Extension.
+
+      Esta política solo es válida si la máquina está inscrita en <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Esta política instala de forma automática <ph name="CHROME_REPORTING_EXTENSION_NAME" /> para los informes y anula cualquier política de extensiones relacionada.</translation>
 <translation id="6155936611791017817">Establece el estado predeterminado del cursor grande en la pantalla de acceso.</translation>
 <translation id="6157537876488211233">Lista separada por comas de las normas de omisión de proxy</translation>
 <translation id="6158324314836466367">Indica el nombre de la tienda web de la empresa (en desuso).</translation>
@@ -2944,14 +2954,6 @@
           Los distintos nombres de servidor se deben separar con comas. Se permite el uso de caracteres comodín (*).
 
           Si no se establece esta política, <ph name="PRODUCT_NAME" /> intentará detectar si un servidor se encuentra en la intranet y solo entonces responderá las solicitudes de IWA. Si se detecta un servidor como Internet, <ph name="PRODUCT_NAME" /> ignorará las solicitudes de IWA que provengan de ese servidor.</translation>
-<translation id="8669669491594628013">Permite controlar la forma en que la protección de contraseñas envía advertencias a los usuarios para alertarlos cuando usan una contraseña protegida en sitios potencialmente peligrosos.
-
-      Puedes usar las políticas "PasswordProtectionLoginURLs" y "PasswordProtectionChangePasswordURL" para configurar qué contraseña deseas proteger.
-
-      Si se establece esta política como "PasswordProtectionWarningOff", no se mostrará ninguna advertencia de protección de contraseñas.
-      Si se establece como "PasswordProtectionWarningOnPasswordReuse", se mostrará la advertencia cuando los usuarios vuelvan a usar una contraseña protegida en los sitios que no están incluidos en la lista blanca.
-      Si se establece como "PasswordProtectionWarningOnPhishingReuse", se mostrará la advertencia cuando los usuarios vuelvan a usar una contraseña protegida en sitios de suplantación de identidad (phishing).
-      Si no se establece, el servicio solo protegerá las contraseñas de Google, y el usuario podrá cambiar esta configuración.</translation>
 <translation id="8672321184841719703">Versión de destino para las actualizaciones automáticas</translation>
 <translation id="867410340948518937">U2F (segundo factor universal)</translation>
 <translation id="8682611302223077049">Te permite configurar el período, en milisegundos, durante el cual se notifica a los usuarios que se deben reiniciar <ph name="PRODUCT_NAME" /> o el dispositivo <ph name="PRODUCT_OS_NAME" /> para que se aplique una actualización pendiente.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index f583b2c..5205d6a8c 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -600,6 +600,7 @@
 <translation id="2529880111512635313">Configura la lista de aplicaciones y extensiones de instalación forzada</translation>
 <translation id="253135976343875019">Tiempo de espera de inactividad cuando el dispositivo está conectado a la red</translation>
 <translation id="2536525645274582300">El usuario decide si quiere habilitar los servicios de ubicación de Google</translation>
+<translation id="254653220329944566">Activa los informes en la nube de <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Solo impresión por una cara</translation>
 <translation id="2552966063069741410">Zona horaria</translation>
 <translation id="2562339630163277285">Especifica la URL del motor de búsqueda utilizada para proporcionar resultados instantáneos. La URL debe contener la cadena <ph name="SEARCH_TERM_MARKER" />, que se sustituirá en el momento de la consulta por el texto que el usuario haya introducido hasta el momento.
@@ -1959,6 +1960,15 @@
 
           Si no se establece esta política, se usará para todos los sitios el valor general predeterminado que se indique en la política DefaultJavaScriptSetting (si se ha establecido) o el valor personalizado que haya definido el usuario (en caso contrario).</translation>
 <translation id="614662973812186053">Esta política también controla la recopilación de los datos de uso y diagnóstico de Android.</translation>
+<translation id="6153048425064249648">Esta política regula los informes en la nube de <ph name="PRODUCT_NAME" />, que envían información sobre el funcionamiento del navegador a la consola de administración de Google.
+
+      Cuando esta política está desactivada o con valor "False", no se recopila ni envía ningún dato.
+      Cuando esta política tiene un valor "True", se recopilan los datos y se envían a la consola de administración de Google.
+      Para regular los datos que se envían, utiliza las políticas del grupo Chrome Reporting Extension.
+
+      Esta política solo es efectiva si el equipo está registrado en <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Esta política realiza la instalación forzada de <ph name="CHROME_REPORTING_EXTENSION_NAME" /> para los informes y anula las políticas relacionadas con esa extensión.</translation>
 <translation id="6155936611791017817">Establecer el estado predeterminado del cursor grande en la pantalla de inicio de sesión</translation>
 <translation id="6157537876488211233">Lista de reglas de omisión de proxy separadas por comas</translation>
 <translation id="6158324314836466367">Nombre de la tienda online de la empresa (política obsoleta)</translation>
@@ -3021,14 +3031,6 @@
           Los distintos nombres de servidor se deben separar con comas. Se permite el uso de caracteres comodín (*).
 
           Si no se establece esta política, <ph name="PRODUCT_NAME" /> intentará detectar si un servidor se encuentra en la intranet y solo entonces responderá a las solicitudes de IWA. Si se detecta Internet como servidor, <ph name="PRODUCT_NAME" /> ignorará las solicitudes de IWA que procedan de él.</translation>
-<translation id="8669669491594628013">Permite controlar la activación de la advertencia de protección de contraseña. La protección de contraseña alerta a los usuarios cuando vuelven a utilizar la contraseña protegida en sitios web potencialmente sospechosos.
-
-      Las políticas "PasswordProtectionLoginURLs" y "PasswordProtectionChangePasswordURL" sirven para configurar qué contraseñas se protegen.
-
-      Si se le asigna el valor "PasswordProtectionWarningOff" a esta política, no se mostrará ninguna advertencia de protección de contraseña.
-      Si se le asigna el valor "PasswordProtectionWarningOnPasswordReuse", se mostrará la advertencia de protección de contraseña cuando los usuarios vuelvan a utilizar la contraseña protegida en cualquier sitio web que no esté incluido en la lista blanca.
-      Si se le asigna el valor "PasswordProtectionWarningOnPhishingReuse" a esta política, se mostrará la advertencia de protección de contraseña cuando los usuarios vuelvan a utilizar la contraseña protegida en los sitios web de phishing.
-      Si no se le asigna ningún valor a esta política, el servicio de protección de contraseña solo protegerá las contraseñas de Google, pero el usuario podrá cambiar esta opción.</translation>
 <translation id="8672321184841719703">Versión de destino de actualizaciones automáticas</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Permite establecer el periodo de tiempo (en milisegundos) durante el que los usuarios recibirán una notificación informándoles de que deben reiniciar <ph name="PRODUCT_NAME" /> o un dispositivo <ph name="PRODUCT_OS_NAME" /> para aplicar una actualización pendiente.
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb
index cd7a449c..d1e7e6da 100644
--- a/components/policy/resources/policy_templates_et.xtb
+++ b/components/policy/resources/policy_templates_et.xtb
@@ -3045,15 +3045,6 @@
           Eraldage serveri nimed komadega. Metamärgid (*) on lubatud.
 
           Kui jätate selle reegli määramata, üritab <ph name="PRODUCT_NAME" /> tuvastada, kas server on intranetis, ja alles siis vastab IWA taotlustele. Kui server tuvastatakse Internetis, siis eirab <ph name="PRODUCT_NAME" /> sealt tulevaid IWA taotlusi.</translation>
-<translation id="8669669491594628013">Võimaldab teil juhtida paroolikaitse hoiatuse käivitamist. Paroolikaitse hoiatab kasutajaid, kui nad kasutavad oma kaitstud parooli potentsiaalselt kahtlastel saitidel.
-
-      Kaitstava parooli määramiseks võite kasutada reegleid „PasswordProtectionLoginURLs” ja „PasswordProtectionChangePasswordURL”.
-
-
-      Kui reegli väärtuseks määratakse „PasswordProtectionWarningOff”, siis paroolikaitse hoiatusi ei kuvata.
-      Kui reegli väärtuseks määratakse „PasswordProtectionWarningOnPasswordReuse”, kuvatakse paroolikaitse hoiatused siis, kui kasutajad kasutavad oma kaitstud parooli saitidel, mis ei kuulu lubatud saitide loendisse.
-      Kui reegli väärtuseks määratakse „PasswordProtectionWarningOnPhishingReuse”, kuvatakse paroolikaitse hoiatus siis, kui kasutajad kasutavad oma kaitstud parooli andmepüügisaitidel.
-      Kui see reegel jäetakse määramata, kaitseb paroolikaitse ainult Google'i paroole, ent kasutaja saab seda seadet muuta.</translation>
 <translation id="8672321184841719703">Automaatse värskendamise sihtversioon</translation>
 <translation id="867410340948518937">U2F (universaalne teine tegur)</translation>
 <translation id="8682611302223077049">Võimaldab määrata ajavahemiku (millisekundites), mille jooksul antakse kasutajatele teada, et ootel oleva värskenduse rakendamiseks tuleb <ph name="PRODUCT_NAME" /> või operatsioonisüsteemiga <ph name="PRODUCT_OS_NAME" /> seade taaskäivitada.
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb
index c4e5a14..1eb9d0b 100644
--- a/components/policy/resources/policy_templates_fa.xtb
+++ b/components/policy/resources/policy_templates_fa.xtb
@@ -584,6 +584,7 @@
 <translation id="2529880111512635313">پیکربندی فهرست برنامه‌ها و افزونه‌های به‌اجبار نصب‌شده</translation>
 <translation id="253135976343875019">تأخیر هشدار عدم فعالیت هنگامی که دستگاه به برق وصل است</translation>
 <translation id="2536525645274582300">‏کاربر تصمیم می‌گیرد خدمات مکان Google فعال شود یا نه</translation>
+<translation id="254653220329944566">گزارش‌دهی ابری <ph name="PRODUCT_NAME" /> را فعال می‌کند</translation>
 <translation id="2550593661567988768">فقط چاپ یک‌رویه</translation>
 <translation id="2552966063069741410">منطقه زمانی</translation>
 <translation id="2562339630163277285">‏نشانی وب موتور جستجوی مورداستفاده برای ارائه نتایج فوری را مشخص می‌کند. این نشانی وب باید حاوی رشته <ph name="SEARCH_TERM_MARKER" /> باشد، که در زمان پرسمان با نوشتاری که کاربر تاکنون وارد کرده است جایگزین می‌شود.
@@ -1876,6 +1877,15 @@
 <translation id="6133088669883929098">اجازه دادن به همه سایت‌ها برای استفاده از تولید کلید</translation>
 <translation id="6145799962557135888">‏به شما امکان می‌دهد لیستی از الگوهای URL را تعیین کنید که سایت‌هایی را مشخص کند که مجازند جاوا اسکریپت اجرا کنند. اگر این قانون تنظیم نشود، از مقدار عمومی پیش‌فرض برای تمام سایت‌ها ، خواه بر گرفته از قانون "DefaultJavaScriptSetting"، در صورت تنظیم بودن، یا پیکربندی شخصی کاربر استفاده می‌شود.</translation>
 <translation id="614662973812186053">‏این خط‌مشی مصرف Android و مجموعه داده‌های عیب‌یابی را نیز کنترل می‌کند.</translation>
+<translation id="6153048425064249648">‏این خط‌مشی گزارش‌دهی ابری <ph name="PRODUCT_NAME" /> را کنترل می‌کند که اطلاعات مربوط به عملکرد مرورگر را در کنسول Google Admin بارگذاری می‌کند.
+
+      وقتی خط‌مشی تنظیم نشود یا روی «نادرست» تنظیم شود، هیچ داده‌ای جمع‌آوری یا بارگذاری نمی‌شود.
+      وقتی این خط‌مشی روی «درست»‌تنظیم شود، داده‌ها جمع‌آوری و در کنسول Google Admin بارگذاری می‌شود.
+      برای کنترل داده‌هایی که بارگذاری می‌شود، لطفاً از خط‌مشی‌های موجود در «افزونه گزارش Chrome» گروهی استفاده کنید.
+
+      این افزونه تنها درصورتی مؤثر خواهد بود که ماشین با <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> ثبت شده باشد.
+
+      برای گزارش‌دهی و لغو خط‌مشی‌های افزونه مربوط به <ph name="CHROME_REPORTING_EXTENSION_NAME" />، این خط‌مشی آن افزونه را به اجبار نصب می‌کند.</translation>
 <translation id="6155936611791017817">تنظیم حالت پیش‌فرض نشانگر موشواره بزرگ در صفحه ورود به سیستم</translation>
 <translation id="6157537876488211233">فهرست قوانین رد شدن از پروکسی جدا شده با کاما</translation>
 <translation id="6158324314836466367">نام فروشگاه وب سازمان (منسوخ‌شده)</translation>
@@ -2917,14 +2927,6 @@
          نام چند سرور را با ویرگول جدا نمایید. نویسه عام (*) مجاز است.
 
          اگر این خط مشی را بدون تنظیم رها کنید، <ph name="PRODUCT_NAME" /> برای شناسایی وجود سرور در اینترانت تلاش می‌کند و تنها پس از این به درخواست‌های IWA پاسخ خواهد داد. در صورتی که سرور به عنوان اینترنت شناسایی شود، <ph name="PRODUCT_NAME" /> درخواست‌های IWA صادر شده از طرف سرور را نادیده می‌گیرد.</translation>
-<translation id="8669669491594628013">‏امکان می‌دهد نمایش هشدار محافظت از گذرواژه را کنترل کنید. وقتی کاربران از گذرواژه محافظت‌شده خود در سایت‌های بالقوه مشکوک استفاده می‌کنند، محافظت از گذرواژه به آن‌ها هشدار می‌دهد.
-
-      برای پیکربندی اینکه کدام گذرواژه محافظت شود، می‌توانید از خط‌مشی‌های «PasswordProtectionLoginURLs» و «PasswordProtectionChangePasswordURL» استفاده کنید.
-
-      اگر این خط‌مشی روی «PasswordProtectionWarningOff» تنظیم شود، هیچ هشدار محافظت از گذرواژه‌ای نشان داده نخواهد شد.
-      اگر این خط‌مشی روی «PasswordProtectionWarningOnPasswordReuse» تنظیم شود، وقتی کاربر از گذرواژه محافظت‌شده خود در سایتی که در فهرست مجاز نیست استفاده کند، هشدار محافظت از گذرواژه نشان داده می‌شود.
-      اگر این خط‌مشی روی «PasswordProtectionWarningOnPhishingReuse» تنظیم شود، هشدار محافظت از گذرواژه زمانی نشان داده می‌شود که کاربر از گذرواژه محافظت‌شده خود در یک سایت فیشینگ استفاده کند.
-      اگر این خط‌مشی تنظیم نشود، سرویس محافظت از گذرواژه فقط از گذرواژه‌های Google محافظت می‌کند اما کاربر می‌تواند این تنظیم را تغییر دهد.</translation>
 <translation id="8672321184841719703">نسخه به‌روزرسانی خودکار هدف</translation>
 <translation id="867410340948518937">‏U2F (فاکتور عمومی دوم)</translation>
 <translation id="8682611302223077049">اجازه می‌دهد دوره زمانی را (به میلی‌ثانیه) تنظیم کنید که طی آن به کاربران اعلان می‌شود برای اعمال به‌روزرسانی درانتظار، <ph name="PRODUCT_NAME" /> باید راه‌اندازی مجدد شود یا اینکه دستگاه <ph name="PRODUCT_OS_NAME" /> باید بازراه‌اندازی شود.
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb
index bfc49860..9105dddb 100644
--- a/components/policy/resources/policy_templates_fi.xtb
+++ b/components/policy/resources/policy_templates_fi.xtb
@@ -2941,14 +2941,6 @@
           Erota palvelinten nimet pilkulla. Jokerimerkit (*) sallitaan.
 
           Jos et aseta käytäntöä, <ph name="PRODUCT_NAME" /> pyrkii tarkistamaan, onko palvelin sisäverkossa, ja vastaa vasta sitten IWA-pyyntöihin. Jos palvelimen todetaan sijaitsevan sisäverkossa, <ph name="PRODUCT_NAME" /> ohittaa sen IWA-pyynnöt.</translation>
-<translation id="8669669491594628013">Sallii salasanasuojauksen varoituksen näyttämisen hallinnan. Salasanasuojaus ilmoittaa käyttäjille, jos nämä käyttävät suojattuja salasanoja uudelleen mahdollisesti haitallisilla sivustoilla.
-
-      PasswordProtectionLoginURLs- ja PasswordProtectionChangePasswordURL-käytäntöjen avulla voit määrittää, mitkä salasanat suojataan.
-
-      Jos tämän käytännön arvo on PasswordProtectionWarningOff, salasanasuojauksen varoitusta ei näytetä.
-      Jos tämän käytännön arvo on PasswordProtectionWarningOnPasswordReuse, salasanasuojauksen varoitus näytetään, kun käyttäjä käyttää suojattua salasanaa sivustoilla, joita ei ole lisätty sallittujen sivustojen listaan.
-      Jos tämän käytännön arvo on PasswordProtectionWarningOnPhishingReuse, salasanasuojauksen varoitus näytetään, kun käyttäjä käyttää suojattua salasanaa tietojenkalastelusivustoilla.
-      Jos tätä käytäntöä ei ole määritetty, salasanasuojaus koskee vain Google-salasanoja, ja käyttäjä voi muuttaa tämän asetuksen.</translation>
 <translation id="8672321184841719703">Automaattisen päivityksen version määrittäminen</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Voit määrittää ajanjakson (millisekunteina), jonka aikana käyttäjälle ilmoitetaan, että <ph name="PRODUCT_NAME" /> tai <ph name="PRODUCT_OS_NAME" /> ‑laite on käynnistettävä uudelleen odottavan päivityksen vuoksi.
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb
index aa5a7ed..d16fa9b1 100644
--- a/components/policy/resources/policy_templates_fil.xtb
+++ b/components/policy/resources/policy_templates_fil.xtb
@@ -601,6 +601,7 @@
 <translation id="2529880111512635313">I-configure ang listahan ng mga puwersahang na-install na app at extension</translation>
 <translation id="253135976343875019">Delay ng babala bago mag-idle kapag gumagamit ng AC power</translation>
 <translation id="2536525645274582300">Ang user ang magpapasya kung ie-enable ang mga serbisyo ng lokasyon ng Google</translation>
+<translation id="254653220329944566">Ine-enable ang pag-uulat sa cloud ng <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Simplex na pag-print lang</translation>
 <translation id="2552966063069741410">Timezone</translation>
 <translation id="2562339630163277285">Tinutukoy ang URL ng search engine na ginagamit upang magbigay ng mga instant na resulta. Ang URL ay dapat na maglaman ng string na <ph name="SEARCH_TERM_MARKER" />, na papalitan sa panahon ng query ng text na inilagay ng user sa panahong iyon.
@@ -1952,6 +1953,15 @@
 
           Kung hinayaang hindi nakatakda ang patakarang ito gagamitin ang global na default na halaga para sa lahat ng site mula sa patakarang 'DefaultJavaScriptSetting' kung nakatakda ito, o kung hindi man ay sa personal na configuration ng user.</translation>
 <translation id="614662973812186053">Kinokontrol din ng patakarang ito ang pagkolekta ng data ng paggamit at diagnostic sa Android.</translation>
+<translation id="6153048425064249648">Kinokontrol ng patakarang ito ang pag-uulat sa cloud ng <ph name="PRODUCT_NAME" />, na nag-a-upload ng impormasyon tungkol sa pagpapatakbo ng browser sa Google Admin console.
+
+      Kapag ang patakarang ito ay hinayaang hindi nakatakda o nakatakda sa False, walang kokolektahin o ia-upload na data.
+      Kapag ang patakarang ito ay nakatakda sa True, kokolektahin at ia-upload ang data sa Google Admin console.
+      Para makontrol kung anong data ang ina-upload, pakigamit ang mga patakaran sa panggrupong Chrome Reporting Extension.
+
+      May bisa lang ang patakarang ito kapag naka-enroll ang machine sa <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Dahil sa patakarang ito, sapilitang ii-install ang <ph name="CHROME_REPORTING_EXTENSION_NAME" /> para sa pag-uulat, at ino-override ang anumang patakaran ng extension na nauugnay sa extension na iyon.</translation>
 <translation id="6155936611791017817">Itakda ang default na katayuan ng malaking cursor sa screen ng pag-login</translation>
 <translation id="6157537876488211233">Listahang pinaghihiwalay ng kuwit ng mga panuntunan sa pag-bypass ng proxy</translation>
 <translation id="6158324314836466367">Pangalan ng web store na enterprise (hindi na ginagamit)</translation>
@@ -3033,14 +3043,6 @@
           Paghiwalayin ang maraming pangalan ng server gamit ang mga kuwit. Pinapayagan ang mga wildcard (*).
 
           Kung iiwanan mong hindi nakatakda ang patakarang ito, susubukan ng <ph name="PRODUCT_NAME" /> na i-detect kung nasa Intranet ang server, at kung oo ay doon lang ito tutugon sa mga kahilingan ng IWA.  Kung na-detect ang server bilang Internet, babalewalain ng <ph name="PRODUCT_NAME" /> ang mga kahilingan ng IWA mula dito.</translation>
-<translation id="8669669491594628013">Nagbibigay-daan sa iyong kontrolin ang pag-trigger ng babala sa pagprotekta ng password. Aalertuhan ng pagprotekta ng password ang mga user kapag muli nilang ginamit ang kanilang pinoprotektahang password sa mga potensyal na kahina-hinalang site.
-
-      Maaari mong gamitin ang patakarang 'PasswordProtectionLoginURLs' at 'PasswordProtectionChangePasswordURL' para i-configure ang poprotektahang password.
-
-      Kung itatakda ang patakarang ito sa 'PasswordProtectionWarningOff,' walang ipapakitang babala sa pagprotekta ng password.
-      Kung itatakda ang patakarang ito sa 'PasswordProtectionWarningOnPasswordReuse,' magpapakita ng babala sa pagprotekta ng password kapag muling ginamit ng user ang kanyang pinoprotektahang password sa isang hindi naka-whitelist na site.
-      Kung itatakda ang patakarang ito sa 'PasswordProtectionWarningOnPhishingReuse,' magpapakita ng babala sa pagprotekta ng password kapag muling ginamit ng user ang kanyang pinoprotektahang password sa isang phishing site.
-      Kung iiwang hindi nakatakda ang patakarang ito, ang mga password lang sa Google ang poprotektahan ng serbisyo sa pagprotekta ng password ngunit mababago ng user ang setting na ito.</translation>
 <translation id="8672321184841719703">Target Auto Update Na Bersyon</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Nagbibigay-daan sa iyong itakda ang yugto ng panahon, sa millisecond, kung kailan aabisuhan ang mga user na dapat muling ilunsad ang <ph name="PRODUCT_NAME" /> o dapat i-restart ang <ph name="PRODUCT_OS_NAME" /> para malapat ang nakabinbing pag-update.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 7bc6f43..ad10ebb 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -3044,14 +3044,6 @@
           Si vous utilisez plusieurs serveurs, séparez leur nom par une virgule. Les caractères génériques (*) sont autorisés.
 
           Si vous ne définissez pas cette règle, <ph name="PRODUCT_NAME" /> tente d'identifier si le serveur est sur l'Intranet, auquel cas il répond aux requêtes IWA. Si le serveur est sur Internet, les requêtes IWA sont ignorées par <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Permet de contrôler le déclenchement de l'avertissement relatif à la protection par mot de passe. Le service de protection par mot de passe alerte l'utilisateur lorsque ce dernier réutilise son mot de passe protégé sur des sites potentiellement suspects.
-
-      Vous pouvez utiliser les règles "PasswordProtectionLoginURLs" et "PasswordProtectionChangePasswordURL" pour configurer le mot de passe à protéger.
-
-      Si cette règle est définie sur "PasswordProtectionWarningOff", aucun avertissement relatif à la protection par mot de passe ne s'affiche.
-      Si cette règle est définie sur "PasswordProtectionWarningOnPasswordReuse", l'avertissement s'affiche lorsque l'utilisateur réutilise son mot de passe Google sur des sites qui ne figurent pas sur la liste blanche.
-      Si cette règle est définie sur "PasswordProtectionWarningOnPhishingReuse", l'avertissement s'affiche lorsque l'utilisateur réutilise son mot de passe sur des sites d'hameçonnage.
-      Si cette règle n'est pas configurée, le service de protection par mot de passe ne protège que les mots de passe Google. Toutefois, l'utilisateur peut modifier ce paramètre.</translation>
 <translation id="8672321184841719703">Cibler une version pour les mises à jour automatiques</translation>
 <translation id="867410340948518937">U2F (Deuxième facteur universel)</translation>
 <translation id="8682611302223077049">Permet de fixer la période, en millisecondes, pendant laquelle les utilisateurs sont avertis que <ph name="PRODUCT_NAME" /> doit être relancé ou qu'un appareil <ph name="PRODUCT_OS_NAME" /> doit être redémarré pour appliquer une mise à jour en attente.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb
index 491a839..b6fab67 100644
--- a/components/policy/resources/policy_templates_gu.xtb
+++ b/components/policy/resources/policy_templates_gu.xtb
@@ -676,6 +676,7 @@
 <translation id="2529880111512635313">ફરજિયાત-ઇન્સ્ટોલ કરાયેલ ઍપ્લિકેશનો અને ઍક્સ્ટેન્શનોની સૂચિ ગોઠવો</translation>
 <translation id="253135976343875019">જ્યારે AC પાવર પર ચાલતું હોય ત્યારે નિષ્ક્રિય ચેતવણી વિલંબ</translation>
 <translation id="2536525645274582300">Google સ્થાન સેવાઓ ચાલુ કરવી કે નહીં તેનો નિર્ણય વપરાશકર્તા લે છે</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> ક્લાઉડ રિપોર્ટિંગને ચાલુ કરે છે</translation>
 <translation id="2550593661567988768">માત્ર સિમ્પ્લેક્સ પ્રિન્ટિંગ</translation>
 <translation id="2552966063069741410">ટાઇમઝોન</translation>
 <translation id="2562339630163277285">ઝટપટ પરિણામો પ્રદાન કરવા માટે વપરાયેલા શોધ એંજિનના URL નો ઉલ્લેખ કરે છે. URL માં તે <ph name="SEARCH_TERM_MARKER" /> સ્ટ્રિંગ શામેલ હોવી જોઈએ કે જેને ક્વેરી વખતે વપરાશકર્તાએ અગાઉ દાખલ કરેલ ટેક્સ્ટ સાથે બદલવામાં આવશે.
@@ -2227,6 +2228,15 @@
 
           જો આ નીતિ સેટ કર્યા વિના છોડી હોય તો તમામ સાઇટ્સ માટે વૈશ્વિક ડિફૉલ્ટ મૂલ્યનો ઉપયોગ કરવામાં આવે છે પછી તે 'DefaultJavaScriptSetting' નીતિ દ્વારા સેટ કરેલ હોય, અથવા વપરાશકર્તાની વ્યક્તિગત ગોઠવણી દ્વારા.</translation>
 <translation id="614662973812186053">આ નીતિ Android ઉપયોગિતા અને ડાયગ્નોસ્ટિક ડેટા સંગ્રહને પણ નિયંત્રિત કરે છે.</translation>
+<translation id="6153048425064249648">આ નીતિ <ph name="PRODUCT_NAME" /> ક્લાઉડ રિપોર્ટિંગને નિયંત્રિત કરે છે, જે Google Admin console પર બ્રાઉઝરની કામગીરી સાથે સંકળાયેલી માહિતી અપલોડ કરે છે.
+
+      જ્યારે આ નીતિ સેટ કરેલી ન હોય અથવા False પર સેટ કરી હોય, ત્યારે કોઈ ડેટા એકત્રિત કે અપલોડ કરવામાં આવતા નથી.
+      જ્યારે આ નીતિ True પર સેટ કરી હોય, ત્યારે ડેટા એકત્રિત કરવામાં આવે છે અને Google Admin console પર અપલોડ કરવામાં આવે છે.
+      જે ડેટા અપલોડ કરવામાં આવ્યા છે, તેને નિયંત્રિત કરવા માટે કૃપા કરીને ગ્રૂપ સાથે સંકળાયેલ Chrome રિપોર્ટિંગ એક્સ્ટેંશનમાં આપવામાં આવેલી નીતિઓનો ઉપયોગ કરો.
+
+      મશીનની <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> પર નોંધણી કરવામાં આવી હોય માત્ર ત્યારે જ આ નીતિ અસરકારક રહે છે.
+
+      આ એક્સ્ટેંશન સાથે સંબંધિત કોઈપણ એક્સ્ટેંશન નીતિઓની જાણ કરવા અને ઓવરરાઇડ કરવા માટે <ph name="CHROME_REPORTING_EXTENSION_NAME" />ને ઇન્સ્ટૉલ કરવી જરૂરી બને છે.</translation>
 <translation id="6155936611791017817">લોગિન સ્ક્રીન પર મોટા કર્સરની ડિફોલ્ટ સ્થિતિ સેટ કરો</translation>
 <translation id="6157537876488211233">પ્રૉક્સી બાયપાસ-નિયમોની અલ્પવિરામ-વિભાજીત સૂચિ</translation>
 <translation id="6158324314836466367">એન્ટરપ્રાઇઝ વેબ સ્ટોર નામ (ટાળેલ)</translation>
@@ -3373,13 +3383,6 @@
           એકથી વધુ સર્વર નામોને અલ્પવિરામ ચિહ્નથી અલગ કરો. વાઇલ્ડ કાર્ડ (*)ની મંજૂરી છે.
 
           જો તમે આ નીતિ સેટ કર્યા વિના છોડો છો, તો <ph name="PRODUCT_NAME" /> તે શોધવાનો પ્રયાસ કરશે કે સર્વર ઇન્ટ્રાનેટ પર છે કે કેમ અને ત્યારે પછી જ તે IWA વિનંતીઓનો પ્રતિસાદ આપશે.  જો સર્વર ઇન્ટરનેટ તરીકે મળે છે તો પછી તેના તરફથી IWA વિનંતીઓને <ph name="PRODUCT_NAME" /> દ્વારા અવગણવામાં આવશે.</translation>
-<translation id="8669669491594628013">તમને પાસવર્ડ સંરક્ષણ ચેતવણી ટ્રિગર થવાનું નિયંત્રણ કરવાની મંજૂરી આપે છે. જ્યારે વપરાશકર્તાઓ તેમના સંરક્ષિત પાસવર્ડનો સંભવિત રૂપે શંકાસ્પદ સાઇટ પર ફરીથી ઉપયોગ કરે, ત્યારે પાસવર્ડ સંરક્ષણ તેમને ચેતવણી આપે છે.
-      કયા પાસવર્ડની સુરક્ષા કરવી તે કન્ફિગર કરવા માટે તમે 'PasswordProtectionLoginURLs' અને 'PasswordProtectionChangePasswordURL' નીતિઓનો ઉપયોગ કરી શકો છો.
-
-      જો આ નીતિ 'PasswordProtectionWarningOff' પર સેટ કરેલી હશે, તો પાસવર્ડ સંરક્ષણ સંબંધિત કોઈ ચેતવણી બતાવવામાં નહીં આવે.
-      જો આ નીતિ 'PasswordProtectionWarningOnPasswordReuse' પર સેટ કરેલી હશે, તો જ્યારે વપરાશકર્તા તેમના સંરક્ષિત પાસવર્ડનો વ્હાઇટલિસ્ટમાં ન હોય તેવી સાઇટ પર ફરીથી ઉપયોગ કરશે, ત્યારે તેમને પાસવર્ડ સંરક્ષણ ચેતવણી બતાવવામાં આવશે.
-      જો આ નીતિ 'PasswordProtectionWarningOnPhishingReuse' પર સેટ કરેલી હશે, તો જ્યારે વપરાશકર્તા તેમના સંરક્ષિત પાસવર્ડનો ફિશિંગ સાઇટ પર ફરીથી ઉપયોગ કરશે, ત્યારે તેમને પાસવર્ડ સંરક્ષણ ચેતવણી બતાવવામાં આવશે.
-      જો આ નીતિ સેટ કર્યા વિનાની હશે, તો પાસવર્ડ સંરક્ષણ સેવા માત્ર Google પાસવર્ડની સુરક્ષા કરશે, પણ વપરાશકર્તા આ સેટિંગ બદલી શકશે.</translation>
 <translation id="8672321184841719703">લક્ષ્ય ઑટોમૅટિક રીતે અપડેટ વર્ઝન</translation>
 <translation id="867410340948518937">U2F (યુનિવર્સલ દ્વિતીય ફેક્ટર)</translation>
 <translation id="8682611302223077049">તમને મિલીસેકન્ડમાં સમયગાળો સેટ કરવાની મંજૂરી આપે છે, જેમાં વપરાશકર્તાઓને <ph name="PRODUCT_NAME" /> ફરીથી લૉન્ચ કરવાની આવશ્યકતા વિશે અથવા કોઈ <ph name="PRODUCT_OS_NAME" />ના ઉપકરણ પર બાકી અપડેટ લાગુ કરવાનું ફરીથી શરૂ કરવાની આવશ્યકતા વિશે જાણ કરવામાં આવે છે.
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb
index 323a6b5..5082cae 100644
--- a/components/policy/resources/policy_templates_hi.xtb
+++ b/components/policy/resources/policy_templates_hi.xtb
@@ -602,6 +602,7 @@
 <translation id="2529880111512635313">बलपूर्वक-इंस्टॉल किए गए ऐप्स और एक्सटेंशन की सूची कॉन्फ़िगर करें</translation>
 <translation id="253135976343875019">AC पावर पर चलते समय प्रयोग में नहीं चेतवनी विलंब</translation>
 <translation id="2536525645274582300">उपयोगकर्ता 'Google स्थान सेवाओं' को चालू करने या नहीं करने का फ़ैसला लेता है</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> क्लाउड रिपोर्टिंग चालू करती हैं</translation>
 <translation id="2550593661567988768">सिर्फ़ सिंप्लेक्स प्रिंटिंग</translation>
 <translation id="2552966063069741410">समयक्षेत्र</translation>
 <translation id="2562339630163277285">यह नीति झटपट नतीजे देने के लिए उपयोग किए जाने वाले खोज इंजन का यूआरएल तय करती है. यूआरएल में स्ट्रिंग <ph name="SEARCH_TERM_MARKER" /> होनी चाहिए, जिसे क्वेरी के समय उपयोगकर्ता के अब तक लिखे गए लेख से बदल दिया जाएगा.
@@ -1963,6 +1964,15 @@
 
           अगर इस नीति को नहीं जोड़ा जाता है तो, सभी साइट के लिए वैश्विक डिफ़ॉल्ट मान का इस्तेमाल किया जाएगा. अगर 'DefaultPopupsSetting' सेट है तो, यह मान इससे लिया जाएगा नहीं तो फिर उपयोगकर्ता के निजी कॉन्फ़िगरेशन का इस्तेमाल किया जाएगा.</translation>
 <translation id="614662973812186053">यह नीति Android उपयोग और गड़बड़ी संबंधी डेटा को इकट्ठा करना भी नियंत्रित करती है.</translation>
+<translation id="6153048425064249648">यह नीति <ph name="PRODUCT_NAME" /> क्लाउड रिपोर्टिंग को नियंत्रित करती है जो Google Admin console पर ब्राउज़र के इस्तेमाल से जुड़ी जानकारी अपलोड करती है.
+
+      जब यह नीति सेट नहीं की जाती है या 'गलत' पर सेट होती है, तो कोई डेटा इकट्ठा या अपलोड नहीं किया जाता है.
+      जब यह नीति 'सही' पर सेट होती है, तो डेटा इकट्ठा किया जाता है और Google Admin console पर अपलोड किया जाता है.
+      कौनसा डेटा अपलोड किया गया है, इसे नियंत्रित करने के लिए कृपया समूह से जुड़े Chrome रिपोर्टिंग एक्सटेंशन में नीतियों का इस्तेमाल करें.
+
+      यह नीति तभी कारगर साबित होती है जब मशीन का नाम <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> के ज़रिए दर्ज कराया गया हो}.
+
+      यह नीति, रिपोर्ट करने के लिए <ph name="CHROME_REPORTING_EXTENSION_NAME" /> को इंस्टॉल करना ज़रूरी बना देती है और उस एक्सटेंशन से जुड़ी सभी एक्सटेंशन नीतियां बदल देती है.</translation>
 <translation id="6155936611791017817">प्रवेश स्क्रीन पर बड़े कर्सर की डिफ़ॉल्ट स्थिति सेट करें</translation>
 <translation id="6157537876488211233">प्रॉक्‍सी को अनदेखा करने के नियमों की विरामचिह्न द्वारा अलग की गई सूची</translation>
 <translation id="6158324314836466367">Enterprise वेब स्‍टोर नाम (बहिष्कृत)</translation>
@@ -3044,14 +3054,6 @@
           एकाधिक सर्वर नामों को अल्पविराम द्वारा अलग करें. वाइल्डकार्ड (*) की अनुमति है.
 
           यदि आप इस नीति को सेट किए बिना छोड़ देते हैं तो <ph name="PRODUCT_NAME" /> यह पता लगाने का प्रयास करेगा कि क्या सर्वर इंट्रानेट पर है और केवल तभी वह IWA अनुरोधों को प्रतिसाद देगा.  यदि कोई सर्वर इंटरनेट के रूप में पता लगाया जाता है तो उसके IWA अनुरोधों को <ph name="PRODUCT_NAME" /> द्वारा अनदेखा कर दिया जाएगा.</translation>
-<translation id="8669669491594628013">यह नीति आपको 'पासवर्ड सुरक्षा' की चेतावनी ट्रिगर करने का नियंत्रण देती है. जब उपयोगकर्ता ऐसी साइटों पर अपने सुरक्षित पासवर्ड का दोबारा इस्तेमाल करते हैं जिनसे उनकी सुरक्षा को खतरा हो सकता है तब 'पासवर्ड सुरक्षा' उन्हें चेतावनी देती है.
-
-      आप सुरक्षित किए जाने वाले पासवर्ड कॉन्फ़िगर करने के लिए 'PasswordProtectionLoginURLs' और 'PasswordProtectionChangePasswordURL' नीतियों का इस्तेमाल कर सकते हैं.
-
-      अगर इस नीति को 'PasswordProtectionWarningOff' पर सेट किया जाता है, तो 'पासवर्ड सुरक्षा' की कोई चेतावनी नहीं दिखाई जाएगी.
-      अगर इस नीति को 'PasswordProtectionWarningOnPasswordReuse' पर सेट किया जाता है, तो उपयोगकर्ता की ओर से किसी ऐसी साइट पर अपने सुरक्षित पासवर्ड का दोबारा इस्तेमाल किए जाने पर 'पासवर्ड सुरक्षा' की चेतावनी दिखाई जाएगी जिसे स्वीकृति नहीं दी गई है.
-      अगर इस नीति को 'PasswordProtectionWarningOnPhishingReuse' पर सेट किया जाता है, तो उपयोगकर्ता की ओर से किसी फ़िशिंग साइट पर अपने सुरक्षित पासवर्ड का दोबारा इस्तेमाल किए जाने पर 'पासवर्ड सुरक्षा' की चेतावनी दिखाई जाएगी.
-      अगर इस नीति को सेट किए बिना छोड़ दिया जाता है, तो 'पासवर्ड सुरक्षा सेवा' सिर्फ़ Google के पासवर्ड सुरक्षित रखेगी, लेकिन उपयोगकर्ता इस सेटिंग को बदल सकेगा.</translation>
 <translation id="8672321184841719703">स्वत: अपडेट वर्शन को लक्ष्य बनाएं</translation>
 <translation id="867410340948518937">U2F (यूनिवर्सल सेकेंड फैक्टर)</translation>
 <translation id="8682611302223077049">आपको मिलीसेकंड में समय सीमा तय करने की अनुमति देती है, जिसमें उपयोगकर्ताओं को सूचित किया जाता है कि <ph name="PRODUCT_NAME" /> को फिर से लॉन्च किया जाना चाहिए या <ph name="PRODUCT_OS_NAME" /> को फिर से शुरू करना होगा ताकि उन अपडेट को लागू किया जा सके जिन्हें मंज़ूरी नहीं मिली है. 
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb
index e0efcce..b51513dc 100644
--- a/components/policy/resources/policy_templates_hr.xtb
+++ b/components/policy/resources/policy_templates_hr.xtb
@@ -2937,14 +2937,6 @@
           Razdvojite više poslužitelja zarezima. Zamjenski su znakovi (*) dopušteni.
 
           Ako ne postavite ovo pravilo, <ph name="PRODUCT_NAME" /> pokušat će otkriti je li poslužitelj na intranetu te će jedino tada odgovoriti na IWA zahtjeve. Ako otkrije da se radi o poslužitelju na internetu, <ph name="PRODUCT_NAME" /> zanemarit će njegove IWA zahtjeve.</translation>
-<translation id="8669669491594628013">Omogućuje vam da odredite okidač na temelju kojeg će zaštita zaporke prikazati upozorenje. Zaštita zaporke to upozorenje prikazuje korisnicima kada ponovo upotrijebe svoju zaštićenu zaporku na potencijalno sumnjivim web-lokacijama.
-
-      Da biste konfigurirali koju zaporku zaštititi, upotrijebite "PasswordProtectionLoginURLs" i "PasswordProtectionChangePasswordURL".
-
-      Ako se pravilo postavi na "PasswordProtectionWarningOff", upozorenje zaštite zaporke neće se prikazati.
-      Ako se pravilo postavi na "PasswordProtectionWarningOnPasswordReuse", upozorenje zaštite zaporke prikazat će se kada korisnik ponovo upotrijebi svoju zaštićenu zaporku na web-lokaciji koja nije dopuštena.
-      Ako se pravilo postavi na "PasswordProtectionWarningOnPhishingReuse", upozorenje zaštite zaporke prikazat će se kada korisnik ponovo upotrijebi svoju zaštićenu zaporku na web-lokaciji za krađu identiteta.
-      Ako se pravilo ne postavi, usluga zaštite zaporke štitit će samo zaporke za Google, no korisnik će moći promijeniti tu postavku.</translation>
 <translation id="8672321184841719703">Ciljna verzija automatskog ažuriranja</translation>
 <translation id="867410340948518937">U2F (univerzalna dvostruka autentifikacija)</translation>
 <translation id="8682611302223077049">Omogućuje postavljanje razdoblja u milisekundama tijekom kojeg će se prikazivati obavijesti o ponovnom pokretanju preglednika <ph name="PRODUCT_NAME" /> ili da je potrebno ponovo pokrenuti <ph name="PRODUCT_OS_NAME" /> radi primjene ažuriranja na čekanju. 
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb
index e194ed0..ffd95a6 100644
--- a/components/policy/resources/policy_templates_hu.xtb
+++ b/components/policy/resources/policy_templates_hu.xtb
@@ -2943,14 +2943,6 @@
           Több szervernév megadása esetén azokat vesszővel kell elválasztani. A helyettesítő karakterek (*) engedélyezettek.
 
           Ha nem állítja be ezt a házirendet, a <ph name="PRODUCT_NAME" /> megpróbálja érzékelni, hogy egy szerver az intraneten van-e, és csak akkor válaszol az IWA-kérésekre. Ha a szervert az interneten lévőnek észleli, a <ph name="PRODUCT_NAME" /> figyelmen kívül hagyja annak IWA-kéréseit.</translation>
-<translation id="8669669491594628013">Lehetővé teszi a jelszóvédelmi figyelmeztetés aktiválásának szabályozását. A jelszóvédelem figyelmezteti a felhasználót, ha potenciálisan gyanús webhelyen próbálja újra felhasználni védett jelszavát.
-
-      A „PasswordProtectionLoginURLs” és a „PasswordProtectionChangePasswordURL” házirendeket használhatja a védendő jelszavak beállítására.
-
-      Ha a házirend értéke „PasswordProtectionWarningOff”, akkor nem jelenik meg jelszóvédelmi figyelmeztetés.
-      Ha a házirend értéke „PasswordProtectionWarningOnPasswordReuse”, akkor a jelszóvédelmi figyelmeztetés abban az esetben jelenik meg, ha a felhasználó az engedélyezőlistán nem szereplő webhelyen próbálja meg újra felhasználni védett jelszavát.
-      Ha a házirend értéke „PasswordProtectionWarningOnPhishingReuse”, akkor a jelszóvédelmi figyelmeztetés abban az esetben jelenik meg, ha a felhasználó adathalász webhelyen próbálja meg újra felhasználni védett jelszavát.
-      Ha a házirend nincs beállítva, a jelszóvédelmi szolgáltatás csak a Google-jelszavakat védi meg, de a felhasználó módosíthatja a beállítást.</translation>
 <translation id="8672321184841719703">Cél automatikus frissítési verziója</translation>
 <translation id="867410340948518937">U2F (univerzális kétlépcsős azonosítás)</translation>
 <translation id="8682611302223077049">Lehetővé teszi annak az időtartamnak a megadását (ezredmásodpercben), melynek során a felhasználók értesítést kapnak, ha a <ph name="PRODUCT_NAME" /> újraindítására van szükség, vagy ha egy <ph name="PRODUCT_OS_NAME" />-eszközt újra kell indítani függőben lévő frissítés miatt.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index eca134f..5b661db 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -573,6 +573,7 @@
 <translation id="2529880111512635313">Mengonfigurasi daftar aplikasi dan ekstensi yang dipasang secara paksa</translation>
 <translation id="253135976343875019">Menunda peringatan waktu menganggur saat menggunakan daya AC</translation>
 <translation id="2536525645274582300">Pengguna memutuskan apakah akan mengaktifkan layanan lokasi Google</translation>
+<translation id="254653220329944566">Mengaktifkan pelaporan cloud <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Khusus pencetakan simpleks</translation>
 <translation id="2552966063069741410">Zona Waktu</translation>
 <translation id="2562339630163277285">Menentukan URL mesin telusur yang digunakan untuk memberikan hasil instan. URL harus berisi string <ph name="SEARCH_TERM_MARKER" />, yang akan diganti pada waktu kueri dengan teks yang telah dimasukkan oleh pengguna sejauh ini.
@@ -1875,6 +1876,15 @@
 <translation id="6133088669883929098">Izinkan semua situs menggunakan pembuatan kunci</translation>
 <translation id="6145799962557135888">Memungkinkan Anda menyetel daftar pola url yang menentukan situs yang tidak diizinkan untuk menjalankan JavaScript. Jika kebijakan ini tidak disetel, nilai default global akan digunakan untuk semua situs, baik dari kebijakan 'DefaultJavaScriptSetting', jika disetel, ataupun dari konfigurasi pribadi pengguna.</translation>
 <translation id="614662973812186053">Kebijakan ini juga mengontrol pengumpulan data diagnostik dan penggunaan Android.</translation>
+<translation id="6153048425064249648">Kebijakan ini mengontrol pelaporan cloud <ph name="PRODUCT_NAME" /> yang mengupload informasi tentang operasi browser ke konsol Google Admin.
+
+      Jika kebijakan ini tidak disetel atau disetel ke False, tidak ada data yang dikumpulkan atau diupload.
+      Jika kebijakan ini disetel ke True, data akan dikumpulkan dan diupload ke konsol Google Admin.
+      Untuk mengontrol data apa yang diupload, gunakan kebijakan dalam Ekstensi Pelaporan Chrome grup.
+
+      Kebijakan ini hanya berlaku jika perangkat didaftarkan dengan <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Kebijakan ini menginstal otomatis <ph name="CHROME_REPORTING_EXTENSION_NAME" /> untuk pelaporan dan mengganti kebijakan ekstensi apa pun yang terkait dengan ekstensi tersebut.</translation>
 <translation id="6155936611791017817">Setel status default kursor besar di layar masuk</translation>
 <translation id="6157537876488211233">Peraturan mengabaikan proxy yang dipisahkan koma</translation>
 <translation id="6158324314836466367">Nama toko web perusahaan (tidak digunakan)</translation>
@@ -2905,14 +2915,6 @@
           Pisahkan beberapa nama server dengan koma. Karakter pengganti (*) diizinkan.
 
           Jika Anda membiarkan kebijakan ini tidak disetel, <ph name="PRODUCT_NAME" /> akan mencoba mendeteksi apakah server ada di internet dan akan menanggapi permintaan IWA setelahnya.  Jika server terdeteksi sebagai internet, permintaan IWA darinya akan diabaikan oleh <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Memungkinkan Anda mengontrol pemicu peringatan perlindungan sandi. Perlindungan sandi memberi tahu pengguna saat mereka menggunakan kembali sandi yang dilindungi di situs yang berpotensi mencurigakan.
-
-      Anda dapat menggunakan kebijakan 'PasswordProtectionLoginURLs' dan 'PasswordProtectionChangePasswordURL' untuk mengonfigurasi sandi mana yang harus dilindungi.
-
-      Jika kebijakan ini disetel ke 'PasswordProtectionWarningOff', peringatan perlindungan sandi tidak akan ditampilkan.
-      Jika kebijakan ini disetel ke 'PasswordProtectionWarningOnPasswordReuse', peringatan perlindungan sandi akan ditampilkan saat pengguna menggunakan kembali sandi yang dilindungi di situs yang tidak diizinkan.
-      Jika kebijakan ini disetel ke 'PasswordProtectionWarningOnPhishingReuse', peringatan perlindungan sandi akan ditampilkan saat pengguna menggunakan kembali sandi yang dilindungi di situs phishing.
-      Jika kebijakan ini dibiarkan tidak disetel, layanan perlindungan sandi hanya akan melindungi sandi Google, namun pengguna dapat mengubah setelan ini.</translation>
 <translation id="8672321184841719703">Versi Pembaruan Otomatis Target</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Mengizinkan Anda menyetel jangka waktu, dalam milidetik, untuk memberi tahu pengguna bahwa <ph name="PRODUCT_NAME" /> harus diluncurkan ulang atau bahwa perangkat <ph name="PRODUCT_OS_NAME" /> harus dimulai ulang untuk menerapkan update yang tertunda.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 19458219..c855230 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -2872,14 +2872,6 @@
           Separa più nomi di server con delle virgole. Sono ammessi i caratteri jolly (*).
 
           Se questa norma non viene impostata <ph name="PRODUCT_NAME" /> tenterà di rilevare se sulla Intranet è presente un server e solo allora risponderà alle richieste IWA. Se viene rilevato un server su Internet, le sue richieste IWA verranno ignorate da <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Ti consente di controllare l'attivazione dell'avviso di protezione tramite password. La protezione tramite password avvisa gli utenti quando riutilizzano le proprie password protette su siti potenzialmente sospetti.
-
-      Puoi utilizzare le norme "PasswordProtectionLoginURLs" e "PasswordProtectionChangePasswordURL" per configurare la password da proteggere.
-
-      Se questa norma è impostata su "PasswordProtectionWarningOff", non apparirà alcun avviso di protezione tramite password.
-      Se questa norma è impostata su "PasswordProtectionWarningOnPasswordReuse", l'avviso di protezione tramite password apparirà quando l'utente riutilizza la propria password protetta su un sito non autorizzato.
-      Se questa norma è impostata su "PasswordProtectionWarningOnPhishingReuse", l'avviso di protezione tramite password apparirà quando l'utente riutilizza la propria password protetta su un sito di phishing.
-      Se questa norma viene lasciata non impostata, il servizio di protezione tramite password proteggerà esclusivamente le password Google, ma l'utente sarà in grado di modificare questa impostazione.</translation>
 <translation id="8672321184841719703">Scegli versione target dell'aggiornamento automatico</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Consente di stabilire per quanto tempo, in millisecondi, gli utenti riceveranno notifiche relative alla necessità di riavviare <ph name="PRODUCT_NAME" /> o un dispositivo <ph name="PRODUCT_OS_NAME" /> per applicare un aggiornamento in sospeso
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index 8b2de0b..ac6b64f 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -2924,14 +2924,6 @@
           הפרד בין שמות מרובים של שרתים באמצעות פסיקים. ניתן להשתמש בתווים כלליים (*).
 
           אם לא תגדיר מדיניות זו, <ph name="PRODUCT_NAME" /> ינסה לזהות אם השרת נמצא באינטראנט, ורק אז יגיב לבקשות IWA. אם שרת יזוהה כמחובר לאינטרנט, <ph name="PRODUCT_NAME" /> יתעלם מבקשות IWA המגיעות ממנו.</translation>
-<translation id="8669669491594628013">‏מאפשרת לשלוט בהפעלת האזהרה של הגנת סיסמה. הגנת סיסמה מזהירה את המשתמש כשהוא עושה שימוש חוזר בסיסמה המוגנת שלו באתרים חשודים. 
-
-       אפשר להשתמש בסעיפי המדיניות 'PasswordProtectionLoginURLs' ו-'PasswordProtectionChangePasswordURL' כדי להגדיר את הסיסמה שעליה יש להגן.
-
-      אם המדיניות הזו מוגדרת כ-'PasswordProtectionWarningOff', לא תוצג אזהרה של הגנת סיסמה. 
-      אם המדיניות הזו מוגדרת כ-'PasswordProtectionWarningOnPasswordReuse', אזהרה של הגנת סיסמה תוצג כשהמשתמש יעשה שימוש חוזר בסיסמה המוגנת באתר שאינו מופיע ברשימת ההיתרים.
-      אם המדיניות הזו מוגדרת כ-'PasswordProtectionWarningOnPhishingReuse', אזהרה של הגנת סיסמה תוצג כשהמשתמש יעשה שימוש חוזר בסיסמה המוגנת באתר דיוג.
-      אם המדיניות הזו לא מוגדרת, שירות הגנת הסיסמה יגן רק על סיסמאות Google, אבל המשתמש יוכל לשנות את ההגדרה הזו.</translation>
 <translation id="8672321184841719703">גירסת עדכון אוטומטי המוגדרת כיעד</translation>
 <translation id="867410340948518937">‏U2F (גורם שני אוניברסלי)</translation>
 <translation id="8682611302223077049">מאפשרת לך לקבוע את פרק הזמן באלפיות שנייה להצגת הודעה למשתמש על כך שצריך להפעיל מחדש את <ph name="PRODUCT_NAME" /> או מכשיר <ph name="PRODUCT_OS_NAME" /> כדי להחיל עדכון שנמצא בהמתנה.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 8924b58..a2276e1 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -582,6 +582,7 @@
 <translation id="2529880111512635313">強制インストールするアプリと拡張機能のリストを設定します</translation>
 <translation id="253135976343875019">アイドル警告が表示されるまでの時間(AC 電源での実行時)</translation>
 <translation id="2536525645274582300">Google 位置情報サービスを有効にするかどうかをユーザーに確認する</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> のクラウド レポートを有効にする</translation>
 <translation id="2550593661567988768">片面印刷のみ</translation>
 <translation id="2552966063069741410">タイムゾーン</translation>
 <translation id="2562339630163277285">インスタント検索の結果表示に使用する検索エンジンの URL を指定します。この URL には <ph name="SEARCH_TERM_MARKER" /> という文字列を含めます。この文字列は、検索時にユーザーが入力したテキストに置き換えられます。
@@ -1881,6 +1882,15 @@
 <translation id="6133088669883929098">すべてのサイトにキー生成の使用を許可する</translation>
 <translation id="6145799962557135888">JavaScript の実行を許可するサイトを指定する URL パターンのリストを設定できます。このポリシーが未設定の場合、グローバルのデフォルト値がすべてのサイトで使用されます。グローバルのデフォルト値は「DefaultJavaScriptSetting」ポリシーの値か、この値が未設定の場合はユーザーの個人設定の値です。</translation>
 <translation id="614662973812186053">このポリシーでは Android の使用状況と診断データの収集も管理できます。</translation>
+<translation id="6153048425064249648">ブラウザの操作に関する情報を Google 管理コンソールにアップロードする <ph name="PRODUCT_NAME" /> のクラウド レポートを制御します。
+
+      このポリシーが未設定のままか False に設定されている場合は、どのデータも収集およびアップロードされません。
+      このポリシーが True に設定されている場合は、データが収集され Google 管理コンソールにアップロードされます。
+      アップロードされるデータを管理するには、グループの Chrome レポート拡張機能のポリシーを使用してください。
+
+      このポリシーは、<ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> でマシンが登録されている場合にのみ有効です。
+
+      このポリシーを指定した場合は、<ph name="CHROME_REPORTING_EXTENSION_NAME" />がレポート用に強制インストールされ、この拡張機能に関連する拡張機能ポリシーは無視されます。</translation>
 <translation id="6155936611791017817">ログイン画面での大きいカーソルのデフォルト状態を設定する</translation>
 <translation id="6157537876488211233">プロキシ バイパス ルールのカンマ区切りリスト</translation>
 <translation id="6158324314836466367">エンタープライズ ウェブストア名(サポート終了)</translation>
@@ -2929,14 +2939,6 @@
           サーバー名を複数指定する場合はカンマで区切ります。ワイルドカード(*)を使用できます。
 
           このポリシーを設定しない場合、<ph name="PRODUCT_NAME" /> はサーバーがイントラネット上にあるかどうか検出を試み、その上で IWA リクエストに応答します。サーバーがインターネット上で検出された場合、そのサーバーからの IWA リクエストは <ph name="PRODUCT_NAME" /> では無視されます。</translation>
-<translation id="8669669491594628013">パスワード保護の警告を表示するトリガーを制御できます。パスワード保護の警告は、不審なサイトでユーザーが保護されたパスワードを再使用したときに表示されます。
-
-      保護するパスワードを設定するには、「PasswordProtectionLoginURLs」ポリシーと「PasswordProtectionChangePasswordURL」ポリシーを使用します。
-
-      このポリシーが「PasswordProtectionWarningOff」に設定されている場合、パスワード保護の警告は表示されません。
-      このポリシーが「PasswordProtectionWarningOnPasswordReuse」に設定されている場合、ホワイトリストに登録されていないサイトでユーザーが保護されたパスワードを再使用したときに、パスワード保護の警告が表示されます。
-      このポリシーが「PasswordProtectionWarningOnPhishingReuse」に設定されている場合、フィッシング サイトでユーザーが保護されたパスワードを再使用したときに、パスワード保護の警告が表示されます。
-      このポリシーが設定されていない場合、パスワード保護サービスでは Google パスワードのみが保護されますが、ユーザーはこの設定を変更できます。</translation>
 <translation id="8672321184841719703">自動更新の対象バージョンを指定</translation>
 <translation id="867410340948518937">U2F(Universal Second Factor)</translation>
 <translation id="8682611302223077049">保留中のアップデートを適用するために <ph name="PRODUCT_NAME" /> または <ph name="PRODUCT_OS_NAME" /> 搭載端末の再起動が必要であることをユーザーに通知する期間をミリ秒単位で設定します。
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb
index 52a9a691..5afc4fff 100644
--- a/components/policy/resources/policy_templates_kn.xtb
+++ b/components/policy/resources/policy_templates_kn.xtb
@@ -621,6 +621,7 @@
 <translation id="2529880111512635313">ಬಲವಂತವಾಗಿ ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳ ಪಟ್ಟಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation>
 <translation id="253135976343875019">AC ಪವರ್‌ನಲ್ಲಿ ಚಾಲನೆ ಮಾಡುವಾಗ ನಿಷ್ಫಲತೆ ಎಚ್ಚರಿಕೆಯ ವಿಳಂಬ</translation>
 <translation id="2536525645274582300">Google ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕೇ ಎಂಬುದನ್ನು ಬಳಕೆದಾರ ನಿರ್ಧರಿಸುತ್ತಾರೆ</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> ಕ್ಲೌಡ್ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ</translation>
 <translation id="2550593661567988768">ಸಿಂಪ್ಲೆಕ್ಸ್ ಮುದ್ರಣ ಮಾತ್ರ</translation>
 <translation id="2552966063069741410">ಸಮಯವಲಯ</translation>
 <translation id="2562339630163277285">ತತ್‌ಕ್ಷಣ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸಲು ಬಳಸಲಾಗುವ ಹುಡುಕಾಟ ಎಂಜಿನ್‌ನ URL ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. <ph name="SEARCH_TERM_MARKER" /> ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು URL ಹೊಂದಿರಬೇಕು, ಇದನ್ನು ಪ್ರಶ್ನೆಯ ಸಮಯದಲ್ಲಿ ಬಳಕೆದಾರರು ಇದುವರೆಗೂ ನಮೂದಿಸಿದ ಪಠ್ಯದಿಂದ ಮರುಸ್ಥಾನಗೊಳಿಸಲಾಗುವುದು.
@@ -2047,6 +2048,15 @@
 <translation id="6141402445226505817">ಯಾವಾಗಲೂ ಕೋರ್ಸ್ ಸಮಯ ವಲಯ ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="6145799962557135888">JavaScript ಅನ್ನು ಚಾಲನೆ ಮಾಡಲು ಅನುಮತಿಸುವ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಂತಹ url ನಮೂನೆಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿಸುವಂತೆ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೆ ಬಿಟ್ಟರೆ ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು 'DefaultJavaScriptSetting' ನೀತಿಯಿಂದ ಹೊಂದಿಸಿದ್ದರೆ ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಅಥವಾ ಬಳಕೆದಾರರ ವೈಯಕ್ತಿಕ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="614662973812186053">ಈ ನೀತಿಯು Android ಬಳಕೆ ಮತ್ತು ತಪಾಸಣೆ ಡೇಟಾ ಸಂಗ್ರಹಣೆಯನ್ನೂ ಸಹ ನಿಯಂತ್ರಿಸುತ್ತದೆ.</translation>
+<translation id="6153048425064249648">ಈ ಕಾರ್ಯನೀತಿಯು ಬ್ರೌಸರ್ ಕಾರ್ಯಾಚರಣೆ ಕುರಿತಾದ ಮಾಹಿತಿಯನ್ನು Google ನಿರ್ವಾಹಕ ಕನ್ಸೋಲ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಂತಹ <ph name="PRODUCT_NAME" /> ಕ್ಲೌಡ್ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ.
+
+      ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಬಿಟ್ಟರೆ ಅಥವಾ ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದರೆ, ಯಾವುದೇ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡುವುದಿಲ್ಲ.
+      ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು Google ನಿರ್ವಾಹಕ ಕನ್ಸೋಲ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ.
+      ಯಾವೆಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು, ದಯವಿಟ್ಟು ಸಮೂಹ Chrome ವರದಿ ಮಾಡುವಿಕೆ ವಿಸ್ತರಣೆಯಲ್ಲಿರುವ ಕಾರ್ಯನೀತಿಗಳನ್ನು ಬಳಸಿ.
+
+      ಈ ಕಾರ್ಯನೀತಿಯು, ಯಂತ್ರವನ್ನು <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> ಜೊತೆಗೆ ನೋಂದಾಯಿಸಿದಾಗ ಮಾತ್ರವೇ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
+
+      ಈ ಕಾರ್ಯನೀತಿಯು, ವರದಿ ಮಾಡುವಿಕೆಗಾಗಿ <ph name="CHROME_REPORTING_EXTENSION_NAME" /> ವಿಸ್ತರಣೆಯನ್ನು ಬಲವಂತವಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಆ ವಿಸ್ತರಣೆಗೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ವಿಸ್ತರಣೆ ಕಾರ್ಯನೀತಿಗಳನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ.</translation>
 <translation id="6155936611791017817">ಲಾಗಿನ್ ಪರದೆಯಲ್ಲಿ ದೊಡ್ಡ ಕರ್ಸರ್‌ನ ಡಿಫಾಲ್ಟ್ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸಿ</translation>
 <translation id="6157537876488211233">ಪ್ರಾಕ್ಸಿ ಬೈಪಾಸ್ ನಿಯಮಗಳ ಅಲ್ಪವಿರಾಮದಿಂದ ಬೇರ್ಪಡಿಸಲಾದ ಪಟ್ಟಿ</translation>
 <translation id="6158324314836466367">ಎಂಟರ್‌ಪ್ರೈಸ್ ವೆಬ್ ಸ್ಟೋರ್ ಹೆಸರು (ಅಸಮ್ಮತಿಸಲಾಗಿದೆ)</translation>
@@ -3161,16 +3171,6 @@
           ಬಹು ಸರ್ವರ್ ಹೆಸರುಗಳನ್ನು ಅಲ್ಪವಿರಾಮಗಳಿಂದ ಬೇರ್ಪಡಿಸಿ. ವೈಲ್ಡ್‌ಕಾರ್ಡ್‌ಗಳನ್ನು (*) ಅನುಮತಿಸಲಾಗುತ್ತದೆ.
 
           ಈ ನೀತಿಯನ್ನು ನೀವು ಹೊಂದಿಸದೆ ಹಾಗೇ ಬಿಟ್ಟರೆ ಸರ್ವರ್ ಇಂಟ್ರಾನೆಟ್‌ನಲ್ಲಿದೆಯೇ ಎಂಬುದನ್ನು ಪತ್ತೆಹಚ್ಚಲು <ph name="PRODUCT_NAME" /> ಪ್ರಯತ್ನಿಸುತ್ತದೆ ನಂತರ ಮಾತ್ರವೇ ಅದು IWA ವಿನಂತಿಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ. ಸರ್ವರ್ ಅನ್ನು ಇಂಟರ್ನೆಟ್‌ನಂತೆ ಪತ್ತೆಹಚ್ಚಲಾಗಿದ್ದರೆ ನಂತರ ಅದರಿಂದ IWA ವಿನಂತಿಗಳನ್ನು <ph name="PRODUCT_NAME" /> ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ.</translation>
-<translation id="8669669491594628013">ಪಾಸ್‌ವರ್ಡ್‌ ಸುರಕ್ಷತಾ ಎಚ್ಚರಿಕೆಯನ್ನು ಟ್ರಿಗರ್ ಮಾಡುವುದನ್ನು ನಿಯಂತ್ರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸಂಶಯಾಸ್ಪದ ಸೈಟ್‌ಗಳಲ್ಲಿ ಸುರಕ್ಷಿತ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದಾಗ ಬಳಕೆದಾರರಿಗೆ ಸುರಕ್ಷತೆ ಕುರಿತ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನೀಡುತ್ತದೆ.
-
-      ನೀವು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು 'PasswordProtectionLoginURLs' ಮತ್ತು 'PasswordProtectionChangePasswordURL' ನೀತಿಗಳನ್ನು ಬಳಸಬಹುದು.
-
-      ಈ ನೀತಿಯನ್ನು 'PasswordProtectionWarningOff' ಗೆ ಹೊಂದಿಸಿದರೆ, ಯಾವುದೇ ಪಾಸ್‌ವರ್ಡ್‌ ಸುರಕ್ಷತೆ ಕುರಿತು ಯಾವುದೇ ಎಚ್ಚರಿಕೆ ತೋರಿಸಲಾಗುವುದಿಲ್ಲ.
-
-      ಈ ನೀತಿಯನ್ನು 'PasswordProtectionWarningOnPasswordReuse' ಗೆ ಹೊಂದಿಸಿದರೆ, ಬಳಕೆದಾರರು ಶ್ವೇತ ಪಟ್ಟಿಯಲ್ಲಿಲ್ಲದ ಸೈಟ್‌ನಲ್ಲಿ ಅವರ ಪಾಸ್‌ವರ್ಡ್‌ ಮರುಬಳಕೆ ಮಾಡಿದಾಗ ಸುರಕ್ಷತಾ ಎಚ್ಚರಿಕೆಯನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ.
-      ಈ ನೀತಿಯನ್ನು 'PasswordProtectionWarningOnPhishingReuse' ಗೆ ಹೊಂದಿಸಿದರೆ, ಫಿಶಿಂಗ್ ಸೈಟ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರು ತಮ್ಮ ಸುರಕ್ಷಿತ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರು ಬಳಕೆ ಮಾಡಿದಾಗ ಪಾಸ್‌ವರ್ಡ್‌ ಸುರಕ್ಷತಾ ಎಚ್ಚರಿಕೆಯನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ.
-     
-         ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೆ ಬಿಟ್ಟರೆ, ಪಾಸ್‌ವರ್ಡ್‌ ರಕ್ಷಣೆ ಸೇವೆಯು Google ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಮಾತ್ರ ರಕ್ಷಿಸುತ್ತದೆ ಆದರೆ ಬಳಕೆದಾರರಿಗೆ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.</translation>
 <translation id="8672321184841719703">ಲಕ್ಷ್ಯ ಸ್ವಯಂ ಅಪ್‌ಡೇಟ್‌‌ ಆದ ಆವೃತ್ತಿ</translation>
 <translation id="867410340948518937">U2F (ಸಾರ್ವತ್ರಿಕ ಎರಡನೆಯ ಅಂಶ)</translation>
 <translation id="8682611302223077049">ಕಾಲಾವಧಿಯನ್ನು ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ಹೊಂದಿಸಲು ಇದು ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಬಾಕಿಯಿರುವ ಅಪ್‌ಡೇಟ್ ಅನ್ನು ಅನ್ವಯಿಸಲು <ph name="PRODUCT_NAME" /> ಅನ್ನು ಪುನಃ ಪ್ರಾರಂಭಿಸಬೇಕು ಅಥವಾ <ph name="PRODUCT_OS_NAME" /> ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕು ಎಂದು ಈ ಅವಧಿಯಲ್ಲಿ ಬಳಕೆದಾರರಿಗೆ ಸೂಚನೆ ನೀಡಲಾಗುತ್ತದೆ.
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 8d3b5e4a..4af27e3 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -10,7 +10,7 @@
 
       이 설정을 지정하지 않으면 <ph name="PRODUCT_NAME" />은 사용자가 Chrome을 기본 브라우저로 등록할지 및 Chrome이 기본 브라우저가 아닐 때 사용자 알림을 표시할지를 선택할 수 있도록 허용합니다.
 
-      <ph name="MS_WIN_NAME" /> 관리자 참고사항: 이 설정은 Windows 7을 실행하는 기기에서만 작동합니다. Windows 8으로 시작하는 Windows 버전의 경우 <ph name="PRODUCT_NAME" />을 <ph name="HHTPS_PROTOCOL" /> 및 <ph name="HTTP_PROTOCOL" /> 프로토콜(선택사항: <ph name="FTP_PROTOCOL" /> 프로토콜 및 <ph name="HTML_EXTENSION" />, <ph name="HTM_EXTENSION" />, <ph name="PDF_EXTENSION" />, <ph name="SVG_EXTENSION" />, <ph name="WEBP_EXTENSION" /> 등과 같은 파일 유형)의 핸들러로 설정하는 '기본 애플리케이션 연결' 파일을 사용해야 합니다. 자세한 내용은 <ph name="SUPPORT_URL" />을(를) 참조하세요.</translation>
+      <ph name="MS_WIN_NAME" /> 관리자 참고사항: 이 설정은 Windows 7을 실행하는 기기에서만 작동합니다. Windows 8 이상 버전에서는 <ph name="PRODUCT_NAME" />을 <ph name="HHTPS_PROTOCOL" /> 및 <ph name="HTTP_PROTOCOL" /> 프로토콜(선택사항: <ph name="FTP_PROTOCOL" /> 프로토콜 및 <ph name="HTML_EXTENSION" />, <ph name="HTM_EXTENSION" />, <ph name="PDF_EXTENSION" />, <ph name="SVG_EXTENSION" />, <ph name="WEBP_EXTENSION" /> 등과 같은 파일 유형)의 핸들러로 설정하는 '기본 애플리케이션 연결' 파일을 사용해야 합니다. 자세한 내용은 <ph name="SUPPORT_URL" />을(를) 참조하세요.</translation>
 <translation id="1017967144265860778">로그인 화면의 전원 관리</translation>
 <translation id="1019101089073227242">사용자 데이터 디렉토리 설정</translation>
 <translation id="1022361784792428773">사용자가 설치할 수 없는 확장 프로그램 ID(또는 전체 확장 프로그램의 경우 *)</translation>
@@ -81,7 +81,7 @@
       이 정책을 설정하지 않으면 기본 캐시 디렉토리가 사용되며 사용자는 '--disk-cache-dir' 명령줄 플래그를 사용하여 이를 재정의할 수 있습니다.</translation>
 <translation id="113521240853905588"><ph name="PRODUCT_OS_NAME" />에서 기본 언어로 사용할 수 있는 언어를 설정합니다.
 
-      이 정책이 설정되면 사용자는 기본 언어 목록에 이 정책에 명시되어 있는 언어 중 하나만 추가할 수 있습니다. 이 정책이 설정되지 않거나 빈 목록으로 설정된 경우 사용자는 원하는 아무 언어를 기본 언어로 지정할 수 있습니다. 이 정책이 잘못된 값이 있는 목록으로 지정된 경우 잘못된 값은 모두 무시됩니다. 사용자가 이미 이 정책에서 허용되지 않는 일부 언어를 선호하는 언어 목록에 추가한 경우 목록에서 삭제됩니다. 사용자가 이미 <ph name="PRODUCT_OS_NAME" />가 이 정책에서 허용되지 않는 언어로 표시되도록 구성한 경우 다음번에 사용자가 로그인하면 표시되는 언어가 이 정책에서 허용되는 UI 언어로 변경됩니다. 그렇지 않은 경우 <ph name="PRODUCT_OS_NAME" />가 이 정책에서 지정된 첫 번째 유효한 값으로 변경되거나 이 정책에 잘못된 항목만 있으면 대체 언어(현재 미국 영어)로 변경됩니다.</translation>
+      이 정책이 설정되면 사용자는 기본 언어 목록에 이 정책에 명시되어 있는 언어 중 하나만 추가할 수 있습니다. 이 정책이 설정되지 않거나 빈 목록으로 설정된 경우 사용자는 아무 언어나 기본 언어로 지정할 수 있습니다. 이 정책이 잘못된 값이 있는 목록으로 지정된 경우 잘못된 값은 모두 무시됩니다. 사용자가 이미 이 정책에서 허용되지 않는 일부 언어를 선호하는 언어 목록에 추가한 경우 해당 언어는 목록에서 삭제됩니다. 사용자가 이미 <ph name="PRODUCT_OS_NAME" />가 이 정책에서 허용되지 않는 언어로 표시되도록 구성한 경우 다음번에 사용자가 로그인하면 표시되는 언어가 이 정책에서 허용되는 UI 언어로 변경됩니다. 그렇지 않은 경우 <ph name="PRODUCT_OS_NAME" />가 이 정책에서 지정된 첫 번째 유효한 값으로 변경되거나 이 정책에 잘못된 항목만 있으면 대체 언어(현재 미국 영어)로 변경됩니다.</translation>
 <translation id="1135264353752122851"><ph name="PRODUCT_OS_NAME" /> 사용자 세션에서 허용되는 키보드 레이아웃을 구성합니다.
 
       이 정책이 설정되면 사용자는 이 정책에서 지정된 입력 방법 중 하나만 선택할 수 있습니다. 이 정책이 설정되지 않거나 빈 목록으로 설정되면 사용자는 지원되는 모든 입력 방법을 선택할 수 있습니다. 현재 입력 방법이 이 정책에서 허용되지 않으면 이 입력 방법은 하드웨어 키보드 레이아웃(허용되는 경우) 또는 이 목록에서 첫 번째로 유효한 항목으로 변경됩니다. 이 목록에 있는 모든 잘못되었거나 지원되지 않는 입력 방법은 무시됩니다.</translation>
@@ -117,7 +117,7 @@
 
           예를 들어 모든 빠른 잠금 해제 모드를 허용하려면 ['all']을 사용합니다. PIN 잠금 해제만 허용하려면 ['PIN']을 사용합니다. PIN과 지문을 허용하려면 ['PIN', 'FINGERPRINT']를 사용합니다. 모든 빠른 잠금 해제 모드를 사용 중지하려면 []를 사용합니다.
 
-          기본적으로 관리되는 기기의 경우 빠른 잠금 해제 모드를 사용할 수 없습니다.</translation>
+          관리되는 기기의 경우 기본적으로 빠른 잠금 해제 모드를 사용할 수 없습니다.</translation>
 <translation id="123081309365616809">기기에 콘텐츠 전송 허용</translation>
 <translation id="1243570869342663665">SafeSites 성인용 콘텐츠 필터링을 관리합니다.</translation>
 <translation id="1257550411839719984">기본 다운로드 디렉토리 설정</translation>
@@ -603,6 +603,7 @@
 <translation id="2529880111512635313">강제로 설치된 앱과 확장 프로그램 목록 구성</translation>
 <translation id="253135976343875019">AC 전원으로 실행할 때 유휴 경고 지연</translation>
 <translation id="2536525645274582300">사용자가 Google 위치 서비스를 사용할지 결정</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> 클라우드 보고 기능 사용</translation>
 <translation id="2550593661567988768">단면 인쇄만</translation>
 <translation id="2552966063069741410">시간대</translation>
 <translation id="2562339630163277285">순간 검색결과를 제공하는 데 사용되는 검색 엔진의 URL을 지정합니다. URL에는 <ph name="SEARCH_TERM_MARKER" /> 문자열이 포함되어야 하며 이 문자열은 검색 시 사용자가 지금까지 입력한 내용으로 대체됩니다.
@@ -1049,7 +1050,7 @@
 
           정책 'EnableMediaRouter'를 'false'로 설정하면 이 정책의 값은 아무런 영향을 미치지 않으며, 툴바 아이콘이 표시되지 않습니다.</translation>
 <translation id="3788662722837364290">사용자가 유휴 상태가 될 때 전원 관리 설정</translation>
-<translation id="3790085888761753785">이 설정을 사용하면 사용자가 Smart Lock을 사용하여 자신의 계정에 로그인할 수 있습니다. 사용자가 화면을 잠금 해제하는 것만 허용하는 Smart Lock의 일반적인 행동에 비해 더 많은 권한을 허용합니다.
+<translation id="3790085888761753785">이 설정을 사용하면 사용자가 Smart Lock을 사용하여 자신의 계정에 로그인할 수 있습니다. 사용자의 화면 잠금 해제만 허용하는 Smart Lock의 일반적인 행동에 비해 더 많은 권한을 허용합니다.
 
       이 설정이 사용 중지되면 사용자는 Smart Lock 로그인을 사용할 수 없습니다.
 
@@ -1635,7 +1636,7 @@
 
       이 정책을 구성하지 않으면 <ph name="PRODUCT_NAME" />에서 기본 최대 버전이 사용됩니다.
 
-      정책을 설정하는 경우, 'tls1.2' 또는 'tls1.3' 중 하나로 설정될 수 있습니다. 설정되면 <ph name="PRODUCT_NAME" />에서 지정된 버전보다 높은 SSL/TLS 버전이 사용되지 않습니다. 인식할 수 없는 값은 무시됩니다.</translation>
+      정책을 구성하는 경우, 'tls1.2' 또는 'tls1.3' 중 하나로 설정할 수 있습니다. 설정되면 <ph name="PRODUCT_NAME" />에서 지정된 버전보다 높은 SSL/TLS 버전이 사용되지 않습니다. 인식할 수 없는 값은 무시됩니다.</translation>
 <translation id="5330684698007383292"><ph name="PRODUCT_FRAME_NAME" />이(가) 다음 콘텐츠 유형을 다루도록 허용</translation>
 <translation id="5365946944967967336">툴바에 홈 버튼 표시</translation>
 <translation id="5366745336748853475">사이트에서 인증서를 요청하는 경우 SAML 플로를 호스팅하는 프레임의 로그인 화면에서 자동으로 클라이언트 인증서가 선택된 사이트를 지정하는 URL 패턴 목록을 지정하게 합니다. 사용 사례는 SAMP IdP로 기기 전체 인증서가 제출되게 설정하는 것입니다.
@@ -1955,6 +1956,15 @@
 
           이 정책을 설정하지 않은 경우 'DefaultJavaScriptSetting' 정책이 설정되면 해당 정책의, 그렇지 않으면 사용자 개인 설정의 전체 기본값이 모든 사이트에서 사용됩니다.</translation>
 <translation id="614662973812186053">이 정책은 Android 사용 및 진단 데이터 수집도 제어합니다.</translation>
+<translation id="6153048425064249648">이 정책을 사용하면 브라우저 작업에 관한 정보를 Google 관리 콘솔에 업로드하는 <ph name="PRODUCT_NAME" /> 클라우드 보고 기능을 관리할 수 있습니다.
+
+      정책이 설정되지 않거나 False로 설정되면 데이터가 수집 또는 업로드되지 않습니다.
+      정책이 True로 설정된 경우 데이터가 수집되어 Google 관리 콘솔에 업로드됩니다.
+      업로드되는 데이터를 관리하려면 Chrome 보고 확장 프로그램 그룹의 정책을 사용하세요.
+
+      이 정책은 기기가 <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />에 등록되어 있는 경우에만 적용됩니다.
+
+      또한 보고를 위해 <ph name="CHROME_REPORTING_EXTENSION_NAME" />을(를) 강제 설치하며, 이 확장 프로그램과 관련된 모든 확장 프로그램 정책을 재정의합니다.</translation>
 <translation id="6155936611791017817">로그인 화면에서 큰 커서의 기본 상태를 설정</translation>
 <translation id="6157537876488211233">쉼표로 구분된 프록시 우회 규칙 목록</translation>
 <translation id="6158324314836466367">엔터프라이즈 웹 스토어 이름(지원 중단됨)</translation>
@@ -2045,7 +2055,7 @@
       플래시를 실행하도록 허용된 웹사이트를 관리하려면 'DefaultPluginsSetting', 'PluginsAllowedForUrls', 'PluginsBlockedForUrls' 정책을 확인하세요.
 
       이 설정을 사용 중지하거나 설정하지 않으면 다른 출처의 플래시 콘텐츠나 용량이 작은 플래시 콘텐츠가 차단될 수 있습니다.</translation>
-<translation id="6532769014584932288">wake lock을 허용</translation>
+<translation id="6532769014584932288">wake lock 허용</translation>
 <translation id="653608967792832033">배터리 전원으로 실행할 때 사용자 입력이 없어서 화면이 잠길 때까지 걸리는 시간을 지정합니다.
 
           이 정책이 0보다 큰 값으로 설정되어 있으면 이는 <ph name="PRODUCT_OS_NAME" />에서 화면을 잠그기 전에 사용자가 유휴 상태여야 하는 시간을 의미합니다.
@@ -2471,7 +2481,7 @@
 
       프린터 설정은 프린터를 처음 사용할 때 완료됩니다. PPD는 프린터가 사용될 때까지 다운로드되지 않습니다. 그 이후 자주 사용되는 PPD가 캐시됩니다.
 
-      이 정책은 사용자가 개별 기기에서 프린터를 구성할 수 있는지에 영향을 미치지 않습니다. 이 정책은 개별 사용자의 프린터 구성을 보완하기 위한 것입니다.
+      이 정책은 사용자가 개별 기기에서 프린터를 구성할 수 있는지 여부에 영향을 미치지 않습니다. 이 정책은 개별 사용자의 프린터 구성을 보완하기 위한 것입니다.
 
       Active Directory 관리 대상 기기에서는 이 정책을 통해 <ph name="MACHINE_NAME_VARIABLE" />을(를) Active Directory 컴퓨터 이름 또는 관련 하위 문자열로 확장할 수 있습니다. 예를 들어, 컴퓨터 이름이 <ph name="MACHINE_NAME_EXAMPLE" />(이)라면 <ph name="MACHINE_NAME_VARIABLE_EXAMPLE" />이(가) 6번째 위치 이후에 시작되는 4자로 대체되어 <ph name="MACHINE_NAME_PART_EXAMPLE" />이(가) 됩니다. 이 위치는 0을 기준으로 합니다.
       <ph name="MACHINE_NAME_VARIABLE_LOWERCASE" />(소문자)은(는) M71에서 지원이 중단되었으며 M72에서 삭제될 예정입니다.
@@ -3036,14 +3046,6 @@
           여러 개의 서버 이름은 콤마(,)로 구분되며 와일드카드(*)를 사용할 수 있습니다.
 
           이 정책을 설정하지 않으면 서버가 인트라넷에 있는 경우 <ph name="PRODUCT_NAME" />이(가) 감지하여 IWA 요청에만 응답합니다. 서버가 인트라넷으로 감지된 경우 <ph name="PRODUCT_NAME" />이(가) IWA 요청을 무시합니다.</translation>
-<translation id="8669669491594628013">비밀번호 보호 경고 트리거를 제어할 수 있습니다. 비밀번호 보호는 사용자가 의심스러워 보이는 사이트에서 보호된 비밀번호를 재사용할 때 사용자에게 경고를 표시합니다.
-
-      'PasswordProtectionLoginURLs' 및 'PasswordProtectionChangePasswordURL' 정책을 사용하여 보호할 비밀번호를 설정할 수 있습니다.
-
-      정책이 'PasswordProtectionWarningOff'로 설정되면 비밀번호 보호 경고가 표시되지 않습니다.
-      정책이 'PasswordProtectionWarningOnPasswordReuse'로 설정되면 사용자가 허용 목록에 없는 사이트에서 보호된 비밀번호를 재사용할 때 비밀번호 보호 경고가 표시됩니다.
-      정책이 'PasswordProtectionWarningOnPhishingReuse'로 설정되면 사용자가 피싱 사이트에서 보호된 비밀번호를 재사용할 때 비밀번호 보호 경고가 표시됩니다.
-      정책이 설정되어 있지 않으면 비밀번호 보호 서비스가 Google 비밀번호만 보호하지만 사용자가 이 설정을 변경할 수 있습니다.</translation>
 <translation id="8672321184841719703">자동 업데이트 버전 타겟팅</translation>
 <translation id="867410340948518937">U2F(범용 2차 요소)</translation>
 <translation id="8682611302223077049">대기 중인 업데이트를 적용하려면 <ph name="PRODUCT_NAME" />을(를) 재실행해야 하거나 <ph name="PRODUCT_OS_NAME" /> 기기를 다시 시작해야 한다는 알림을 사용자에게 표시할 기간을 밀리초로 설정할 수 있습니다.
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb
index cec1d099..2e83ef75 100644
--- a/components/policy/resources/policy_templates_lt.xtb
+++ b/components/policy/resources/policy_templates_lt.xtb
@@ -3047,14 +3047,6 @@
           Kelis serverių pavadinimus atskirkite kableliais. Leidžiama naudoti pakaitos simbolius (*).
 
           Jei nenustatysite šios politikos, „<ph name="PRODUCT_NAME" />“ bandys nustatyti, ar serveris yra intranete ir tik tada atsakys į IWA užklausas. Jei serveris aptinkamas internete, „<ph name="PRODUCT_NAME" />“ nepaisys jo siunčiamų IWA užklausų.</translation>
-<translation id="8669669491594628013">Galite valdyti įspėjimo dėl slaptažodžio apsaugos suaktyvinimą. Slaptažodžio apsauga įspėja naudotojus, kai jie pakartotinai naudoja apsaugotus slaptažodžius potencialiai įtartinose svetainėse.
-
-      Politiką „PasswordProtectionLoginURLs“ ir „PasswordProtectionChangePasswordURL“ galite naudoti konfigūruodami, kuriuos slaptažodžius apsaugoti.
-
-      Jei ši politika nustatyta kaip „PasswordProtectionWarningOff“, nebus rodomas įspėjimas dėl slaptažodžio apsaugos.
-      Jei ši politika nustatyta kaip „PasswordProtectionWarningOnPasswordReuse“, įspėjimas dėl slaptažodžio apsaugos bus rodomas, kai naudotojas pakartotinai naudos apsaugotą slaptažodį svetainėje, kuri neįtraukta į baltąjį sąrašą.
-      Jei ši politika nustatyta kaip „PasswordProtectionWarningOnPhishingReuse“, įspėjimas dėl slaptažodžio apsaugos bus rodomas, kai naudotojas pakartotinai naudos apsaugotą slaptažodį svetainėje, kurioje sukčiaujama.
-      Jei ši politika nenustatyta, slaptažodžio apsaugos paslauga apsaugos tik „Google“ slaptažodžius, bet naudotojas galės pakeisti šį nustatymą.</translation>
 <translation id="8672321184841719703">Taikomo automatinio naujinio versija</translation>
 <translation id="867410340948518937">U2F (universalusis antras veiksnys, angl. „Universal Second Factor“)</translation>
 <translation id="8682611302223077049">Leidžiama nustatyti laikotarpį (milisekundėmis), per kurį naudotojams pranešama, kad „<ph name="PRODUCT_NAME" />“ arba „<ph name="PRODUCT_OS_NAME" />“ įrenginį reikia paleisti iš naujo, norint pritaikyti laukiantį naujinį.
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb
index 5c2dd0b..550243d 100644
--- a/components/policy/resources/policy_templates_lv.xtb
+++ b/components/policy/resources/policy_templates_lv.xtb
@@ -3024,14 +3024,6 @@
           Serveru nosaukumus atdaliet ar komatu. Ir atļautas aizstājējzīmes (*).
 
           Ja neiestatīsiet šo politiku, <ph name="PRODUCT_NAME" /> mēģinās noteikt, vai serveris darbojas iekštīklā, un tikai pēc tam atbildēs IWA pieprasījumiem. Ja serveris ir atzīts par iekštīklu, <ph name="PRODUCT_NAME" /> ignorēs no tā nosūtītos IWA pieprasījumus.</translation>
-<translation id="8669669491594628013">Ļauj jums kontrolēt paroles aizsardzības brīdinājuma aktivizēšanu. Paroles aizsardzība brīdina lietotājus, ja viņi atkārtoti izmanto aizsargāto paroli aizdomīgās vietnēs.
-
-      Varat izmantot politikas “PasswordProtectionLoginURLs” un “PasswordProtectionChangePasswordURL”, lai konfigurētu, kuru paroli aizsargāt.
-
-      Ja politikai tiks iestatīta vērtība “PasswordProtectionWarningOff'”, paroles aizsardzības brīdinājums netiks rādīts.
-      Ja politikai tiks iestatīta vērtība “PasswordProtectionWarningOnPasswordReuse”, paroles aizsardzības brīdinājums tiks rādīts, kad lietotājs atkārtoti izmantos paroli vietnē, kas nav iekļauta baltajā sarakstā.
-      Ja politikai tiks iestatīta vērtība “PasswordProtectionWarningOnPhishingReuse”, paroles aizsardzības brīdinājums tiks rādīts, kad lietotājs atkārtoti izmantos aizsargāto paroli pikšķerēšanas vietnē.
-      Ja politika netiks iestatīta, paroles aizsardzības pakalpojums aizsargās tikai Google paroles, taču lietotājs varēs mainīt šo iestatījumu.</translation>
 <translation id="8672321184841719703">Automātiskā atjauninājuma vēlamā versija</translation>
 <translation id="867410340948518937">U2F (universālā divfaktoru autentificēšana)</translation>
 <translation id="8682611302223077049">Atļauj iestatīt laika periodu milisekundēs, kura laikā lietotājiem tiek paziņots par to, ka pārlūks <ph name="PRODUCT_NAME" /> ir atkārtoti jāpalaiž vai <ph name="PRODUCT_OS_NAME" /> ierīce ir jārestartē, lai veiktu nepabeigto atjaunināšanu.
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb
index 94ba2fb..942c2d2 100644
--- a/components/policy/resources/policy_templates_ml.xtb
+++ b/components/policy/resources/policy_templates_ml.xtb
@@ -659,6 +659,7 @@
 <translation id="2529880111512635313">ഉപയോക്തൃ ശ്രദ്ധയോടെ ഇൻസ്റ്റാൾ ചെയ്‌ത ആപ്‌സിന്റെയും വിപുലീകരണങ്ങളുടെയും ലിസ്റ്റ് കോൺഫിഗർ ചെയ്യുക</translation>
 <translation id="253135976343875019">AC പവറിൽ പ്രവർത്തിക്കുമ്പോഴുള്ള നിഷ്‌ക്രിയ മുന്നറിയിപ്പ് കാലതാമസം</translation>
 <translation id="2536525645274582300">Google ലൊക്കേഷൻ സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കണോ എന്ന് ഉപയോക്താവ് തീരുമാനിക്കുന്നു</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> ക്ലൗഡ് റിപ്പോര്‍ട്ടിംഗ് പ്രവര്‍ത്തനക്ഷമമാക്കുന്നു</translation>
 <translation id="2550593661567988768">ഒരു വശത്തുള്ള അച്ചടി മാത്രം</translation>
 <translation id="2552966063069741410">സമയമേഖല</translation>
 <translation id="2562339630163277285">തൽക്ഷണ ഫലങ്ങൾ ലഭ്യമാക്കാൻ ഉപയോഗിക്കുന്ന തിരയൽ എഞ്ചിനിന്റെ URL വ്യക്തമാക്കുന്നു. URL-ൽ <ph name="SEARCH_TERM_MARKER" /> സ്‌ട്രിംഗ് അടങ്ങിയിരിക്കണം, ഇത് അന്വേഷണ സമയത്ത് ഉപയോക്താവ് ഇതുവരെ നൽകിയിട്ടുള്ള ടെക്‌സ്‌റ്റിനെ മാറ്റി പകരം വയ്‌ക്കും.
@@ -2178,6 +2179,15 @@
 
           ഈ നയം ആഗോള സ്ഥിരസ്ഥിതി മൂല്യത്തെ സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിൽ, അത് സജ്ജീകരിച്ച 'DefaultJavaScriptSetting' നയത്തിലെയോ ഉപയോക്താവിന്റെ സ്വകാര്യ കോൺഫിഗറേഷനിൽ നിന്നുള്ളതോ ആയ എല്ലാ സൈറ്റുകളിലും ഉപയോഗിക്കുന്നതാണ്.</translation>
 <translation id="614662973812186053">ഈ നയം Android ഉപയോഗ, ഡയഗണോസ്‌റ്റിക് ഡാറ്റ ശേഖരിക്കലിനെ നിയന്ത്രിക്കുന്നു.</translation>
+<translation id="6153048425064249648">ഈ നയം, Google അഡ്‌മിൻ കൺസോളിലേക്ക് ബ്രൗസര്‍ പ്രവര്‍ത്തനത്തെ കുറിച്ചുള്ള വിവരങ്ങള്‍ അപ്‌ലോഡ് ചെയ്യുന്ന <ph name="PRODUCT_NAME" /> ക്ലൗഡ് റിപ്പോര്‍ട്ടിംഗ് നിയന്ത്രിക്കുന്നു .
+
+      ഈ നയം സജ്ജീകരിക്കാത്ത നിലയിലോ 'തെറ്റ്' എന്ന് സജ്ജീകരിച്ചിരിക്കുമ്പോഴോ, ഡാറ്റ ശേഖരിക്കുകയോ അപ്‌ലോഡ് ചെയ്യുകയോ ഇല്ല.
+      ഈ നയം 'ശരി' എന്ന് സജ്ജീകരിച്ചിരിക്കുമ്പോള്‍, ഡാറ്റ Google അഡ്‌മിൻ കണ്‍സോളിലേക്ക് ശേഖരിച്ച് അപ്‌ലോഡ് ചെയ്യും.
+      എന്ത് ഡാറ്റയാണ് അപ്‌ലോഡ് ചെയ്യുന്നതെന്നത് നിയന്ത്രിക്കാന്‍, Chrome റിപ്പോർട്ട് ചെയ്യൽ വിപുലീകരണ ഗ്രൂപ്പിലെ നയങ്ങള്‍ ഉപയോഗിക്കുക.
+
+      മെഷീന്‍, <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> എന്നതിൽ എൻറോൾ ചെയ്‌തിരിക്കുമ്പോള്‍ മാത്രമേ ഈ നയം പ്രാബല്യത്തിൽ വരൂ.
+
+      റിപ്പോര്‍ട്ടിംഗിന് ഈ നയം, <ph name="CHROME_REPORTING_EXTENSION_NAME" /> ഇന്‍സ്റ്റാള്‍ ചെയ്യുന്നത് നിര്‍ബന്ധമാക്കുന്നു, ഒപ്പം ആ വിപുലീകരണവുമായി ബന്ധപ്പെട്ട ഏത് വിപുലീകരണ നയങ്ങളും അസാധുവാക്കുന്നു.</translation>
 <translation id="6155936611791017817">ലോഗിൻ സ്‌ക്രീനിലെ വലിയ കഴ്‌സറിന്റെ സ്ഥിര നില സജ്ജമാക്കുക</translation>
 <translation id="6157537876488211233">പ്രോക്സിയെ മറികടക്കുന്ന നിയമങ്ങളുടെ കോമ കൊണ്ട് വേര്‍തിരിച്ച ലിസ്റ്റ്</translation>
 <translation id="6158324314836466367">എന്റർപ്രൈസ് വെബ് സ്റ്റോർ പേര് (ഒഴിവാക്കി)</translation>
@@ -3314,14 +3324,6 @@
           ഒന്നിലേറെ സെർവർ പേരുകൾ കോമ ഉപയോഗിച്ച് വേർതിരിക്കുക. വൈൽഡ്കാർഡുകൾ (*) അനുവദനീയമാണ്.
 
           നിങ്ങൾ ഈ നയം സജ്ജമാക്കാതെ വിട്ടാൽ, ഇൻട്രാനെറ്റിൽ ഒരു സെർവർ ഉണ്ടെങ്കിൽ <ph name="PRODUCT_NAME" /> അത് കണ്ടെത്താൻ ശ്രമിക്കും, അതിനുശേഷം മാത്രമേ IWA അഭ്യർത്ഥനകൾക്ക് പ്രതികരണം നൽകുകയുള്ളൂ. ഇന്റർനെറ്റായി ഒരു സെർവർ കണ്ടെത്തുകയാണെങ്കിൽ, അതിൽ നിന്നുള്ള IWA അഭ്യർത്ഥനകൾ <ph name="PRODUCT_NAME" /> അവഗണിക്കും.</translation>
-<translation id="8669669491594628013">പാസ്‍വേഡ് പരിരക്ഷാ മുന്നറിയിപ്പിന്റെ ട്രിഗ്ഗർ ചെയ്യൽ നിയന്ത്രിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. സംശയകരമാകാൻ സാധ്യതയുള്ള സൈറ്റുകളിൽ ഉപയോക്താക്കൾ പരിരക്ഷിത പാസ്‍വേഡ് പുനരുപയോഗിക്കുമ്പോൾ, പാസ്‍വേഡ് പരിരക്ഷ അവർക്ക് മുന്നറിയിപ്പ് നൽകുന്നു.
-
-      ഏത് പാസ്‌വേഡ് ആണ് പരിരക്ഷിക്കേണ്ടത് എന്നത് കോൺഫിഗർ ചെയ്യാൻ 'PasswordProtectionLoginURL-കൾ,' 'PasswordProtectionChangePasswordURL' എന്നിവ നിങ്ങൾക്ക് ഉപയോഗിക്കാം.
-
-      ഈ നയം 'PasswordProtectionWarningOff' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഒരു പാസ്‍വേഡ് പരിരക്ഷാ മുന്നറിയിപ്പും കാണിക്കില്ല.
-      ഈ നയം 'PasswordProtectionWarningOnPasswordReuse' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഉപയോക്താക്കൾ ഏതെങ്കിലും വൈറ്റ്‌ലിസ്‌റ്റ് ചെയ്യാത്ത സൈറ്റുകളിൽ പരിരക്ഷിത പാസ്‍വേഡ് പുനരുപയോഗിക്കുമ്പോൾ പാസ്‍വേഡ് പരിരക്ഷാ മുന്നറിയിപ്പ് കാണിക്കും. 
-      ഈ നയം 'PasswordProtectionWarningOnPhishingReuse' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഉപയോക്താക്കൾ ഫിഷിംഗ് സൈറ്റുകളിൽ പരിരക്ഷിത പാസ്‍വേഡുകൾ പുനരുപയോഗിക്കുമ്പോൾ പാസ്‍വേഡ് പരിരക്ഷാ മുന്നറിയിപ്പ് കാണിക്കും.
-      ഈ നയം സജ്ജീകരിക്കാതെ വിടുകയാണെങ്കിൽ, പാസ്‌വേഡ് പരിരക്ഷാ സേവനം Google പാസ്‌വേഡുകൾ മാത്രം പരിരക്ഷിക്കും, എന്നാൽ ഉപയോക്താവിന് ഈ ക്രമീകരണം മാറ്റാൻ കഴിയും.</translation>
 <translation id="8672321184841719703">ടാർഗെറ്റ് യാന്ത്രിക അപ്‌ഡേറ്റ് പതിപ്പ്</translation>
 <translation id="867410340948518937">U2F (യൂണിവേഴ്‌സൽ രണ്ടാം ഫാക്‌ടർ)</translation>
 <translation id="8682611302223077049">തീരുമാനമെടുക്കാത്തൊരു അപ്‌ഡേറ്റ് പ്രയോഗിക്കാൻ, <ph name="PRODUCT_NAME" /> റീലോഞ്ച് ചെയ്യണമെന്നോ <ph name="PRODUCT_OS_NAME" /> ഉപകരണം റീസ്‌റ്റാർട്ട് ചെയ്യണമെന്നോ ഉപയോക്താക്കളെ അറിയിക്കുന്നതിനുള്ള സമയ കാലയളവ്, മില്ലിസെക്കൻഡിൽ സജ്ജീകരിക്കുന്നതിന് നിങ്ങളെ അനുവദിക്കുന്നു.
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb
index 7e2fbf0..cea755e 100644
--- a/components/policy/resources/policy_templates_mr.xtb
+++ b/components/policy/resources/policy_templates_mr.xtb
@@ -650,6 +650,7 @@
 <translation id="2529880111512635313">सक्तीने इंस्टॉल केलेल्या अॅप्स आणि विस्तारांची सूची कॉन्फिगर करा</translation>
 <translation id="253135976343875019">AC उर्जेवर चालताना निष्क्रिय चेतावणी विलंब</translation>
 <translation id="2536525645274582300">Google स्थान सेवा सुरू करायच्या का हे वापरकर्ता ठरवतो</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> क्लाउड रिपोर्टिंग सुरू करते</translation>
 <translation id="2550593661567988768">फक्त सिम्पलेक्स प्रिंटिंग</translation>
 <translation id="2552966063069741410">टाईमझोन</translation>
 <translation id="2562339630163277285">झटपट परिणाम देण्‍यासाठी वापरण्‍यात येणार्‍या शोध इंजिनची URL निर्दिष्‍ट करते. URL मध्‍ये <ph name="SEARCH_TERM_MARKER" />, असणे आवश्‍यक आहे जे क्वेरीच्या वेळी ‍वापरकर्त्याने आतापर्यंत प्रविष्‍ट केलेल्या मजकुराने पुनर्स्थित करण्यात येईल.
@@ -2229,6 +2230,12 @@
 
           हे धोरण सेट न करता सोडल्यास सर्व साइटसाठी सर्वंकष डीफॉल्ट मूल्य हे सेट केले असल्यास 'डीफॉल्ट JavaScript सेटिंग' धोरण, ‍किंवा अन्यथा वापरकर्त्याचे वैयक्तिक कॉन्फिगरेशन वापरले जाईल.</translation>
 <translation id="614662973812186053">हे धोरण Android वापर आणि निदान डेटा संकलन देखील नियंत्रित करते.</translation>
+<translation id="6153048425064249648">हे धोरण <ph name="PRODUCT_NAME" /> क्लाउड रिपोर्टिंग नियंत्रित करते जे Google प्रशासक कंसोल वरील ब्राउझर ऑपरेशन विषयीची माहिती अपलोड करते.
+      हे धोरण सेट न करता सोडून दिल्यास किंवा सत्यवर सेट केल्यास, त्यामध्ये गोळा केलेला किंवा अपलोड केलेला डेटा नाही.
+      हे धोरण सत्यवर सेट केल्यास, हा डेटा गोळा करून Google प्रशासक कंसोलवर अपलोड केला जातो.
+      कोणता डेटा अपलोड केला आहे हे नियंत्रित करण्यासाठी, कृपया Chrome रिपोर्टिंग एक्सटेंशन मध्ये धोरणे वापरा.
+     मशिनची <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> मध्ये नोंदणी केल्यावरच हे धोरण लागू होते.
+     हे धोरण रिपोर्टिंगसाठी <ph name="CHROME_REPORTING_EXTENSION_NAME" /> इंस्टॉल करते आणि त्या एक्सटेंशनशी संबंधित कोणतीही एक्सटेंशन धोरणे ओव्हरराइड करते.</translation>
 <translation id="6155936611791017817">लॉगिन स्क्रीनवरील मोठ्या कर्सरची डीफॉल्ट स्थिती सेट करा</translation>
 <translation id="6157537876488211233">प्रॉक्सी स्थलांतर नियमांची स्वल्पविरामाने-विभक्त केलेली सूची</translation>
 <translation id="6158324314836466367">एंटरप्राइज वेब स्टोअर नाव (बहिष्कृत केलेले)</translation>
@@ -3352,14 +3359,6 @@
           स्वल्पविरामांसह एकाधिक सर्व्हर नावे विभक्त करा. वाइल्डकार्ड (*) परवानगी आहे.
 
           तुम्ही हे धोरण सेट न करता सोडल्यास सर्व्हर इंटरनेटवर असताना <ph name="PRODUCT_NAME" /> ते शोधण्याचा प्रयत्न करेल आणि त्यानंतर फक्त IWA विनंत्यांना ते प्रतिसाद देईल. सर्व्हर इंटरनेट म्हणून शोधले गेल्यास त्यानंतर त्यावरील IWA विनंत्यांकडे <ph name="PRODUCT_NAME" /> द्वारे दुर्लक्ष केले जाईल.</translation>
-<translation id="8669669491594628013">तुम्हाला पासवर्ड संरक्षण चेतावणीचे ट्रिगर नियंत्रित करण्याची अनुमती देते. जेव्हा वापरकर्ते संभाव्य संशयास्पद साइटवर त्यांचा संरक्षित पासवर्ड पुन्हा वापरतात तेव्हा पासवर्ड संरक्षण त्यांना सूचना देते.
-
-      कोणत्या पासवर्डचे संरक्षण करायचे हे कॉन्फिगर करण्यासाठी तुम्ही 'PasswordProtectionLoginURLs' आणि 'PasswordProtectionChangePasswordURL' धोरणे वापरू शकता.
-
-      हे धोरण 'PasswordProtectionWarningOff' वर सेट केल्यास, कोणतीही पासवर्ड संरक्षण चेतावणी दाखवली जाणार नाही.
-      हे धोरण 'PasswordProtectionWarningOnPasswordReuse' वर सेट केल्यास, जेव्हा वापरकर्ता व्हाइटलिस्ट नसलेल्या साइटवर त्याचा संरक्षित पासवर्ड पुन्हा वापरेल तेव्हा पासवर्ड संरक्षण चेतावणी दाखवली जाईल.
-      हे धोरण 'PasswordProtectionWarningOnPhishingReuse' वर सेट केल्यास, जेव्हा वापरकर्ता फिशिंग साइटवर त्याचा संरक्षित पासवर्ड पुन्हा वापरेल तेव्हा पासवर्ड संरक्षण चेतावणी दाखवली जाईल.
-      हे धोरण सेट न करता सोडून दिल्यास, पासवर्ड संरक्षण सेवा फक्त Google पासवर्डचे संरक्षण करेल पण वापरकर्ता हे सेटिंग बदलू शकेल.</translation>
 <translation id="8672321184841719703">लक्ष्य ऑटो अपडेट आवृत्ती</translation>
 <translation id="867410340948518937">U2F (युनिव्हर्सल सेकंड फॅक्टर)</translation>
 <translation id="8682611302223077049">तुम्हाला मिलिसेकंदांमध्ये कालावधी सेट करू देते, ज्यात वापरकर्त्यांना सूचित केले जाते की <ph name="PRODUCT_NAME" /> रीलाँच केले जाणे आवश्यक आहे किंवा प्रलंबित अपडेट लागू करण्यासाठी <ph name="PRODUCT_OS_NAME" /> डिव्हाइस रीस्टार्ट केले जाणे आवश्यक आहे.
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb
index 37edfae..4ebe4f5 100644
--- a/components/policy/resources/policy_templates_ms.xtb
+++ b/components/policy/resources/policy_templates_ms.xtb
@@ -607,6 +607,7 @@
 <translation id="2529880111512635313">Konfigurasikan senarai apl dan sambungan pemasangan paksa</translation>
 <translation id="253135976343875019">Kelewatan amaran melahu apabila dijalankan dengan kuasa AC</translation>
 <translation id="2536525645274582300">Pengguna menentukan sama ada untuk mendayakan perkhidmatan lokasi Google</translation>
+<translation id="254653220329944566">Mendayakan pelaporan awan <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Pencetakan simpleks sahaja</translation>
 <translation id="2552966063069741410">Zon waktu</translation>
 <translation id="2562339630163277285">Menentukan URL enjin carian yang digunakan untuk memberikan hasil carian segera. URL tersebut harus mengandungi rentetan <ph name="SEARCH_TERM_MARKER" />, yang akan digantikan oleh teks yang telah dimasukkan oleh pengguna setakat ini pada masa pertanyaan dibuat.
@@ -1955,6 +1956,15 @@
 
           Jika dasar ini dibiarkan tanpa ditetapkan, nilai lalai global akan digunakan untuk semua tapak sama ada dari dasar 'DefaultJavaScriptSetting' jika ia ditetapkan atau konfigurasi peribadi pengguna tersebut jika sebaliknya.</translation>
 <translation id="614662973812186053">Dasar ini turut mengawal pengumpulan data penggunaan dan diagnostik Android.</translation>
+<translation id="6153048425064249648">Dasar ini mengawal pelaporan awan <ph name="PRODUCT_NAME" /> yang memuat naik maklumat tentang pengendalian penyemak imbas ke konsol Pentadbir Google.
+
+      Apabila dasar ini dibiarkan tanpa ditetapkan atau ditetapkan kepada Palsu, tiada data dikumpulkan atau dimuat naik.
+      Apabila dasar ini ditetapkan kepada Benar, data dikumpulkan dan dimuat naik ke konsol Pentadbir Google.
+      Untuk mengawal jenis data yang dimuat naik, sila gunakan dasar dalam Sambungan Pelaporan Chrome kumpulan.
+
+      Dasar ini hanya berkuat kuasa apabila mesin didaftarkan dengan <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Dasar ini memasang paksa <ph name="CHROME_REPORTING_EXTENSION_NAME" /> untuk pelaporan dan mengatasi sebarang dasar sambungan yang berkaitan dengan sambungan tersebut.</translation>
 <translation id="6155936611791017817">Tetapkan keadaan lalai kursor besar pada skrin log masuk</translation>
 <translation id="6157537876488211233">Senarai diasingkan koma bagi peraturan memintas proksi</translation>
 <translation id="6158324314836466367">Nama kedai web perusahaan (tidak akan digunakan lagi)</translation>
@@ -3037,14 +3047,6 @@
 
           
           Jika anda membiarkan dasar ini tanpa ditetapkan <ph name="PRODUCT_NAME" /> akan cuba mengesan jika pelayan berada di Intranet dan hanya selepas itu permintaan IWA akan dibalas.   Jika pelayan dikesan sebagai Internet, maka permintaan IWA daripadanya akan diabaikan oleh <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Membolehkan anda mengawal pencetusan amaran perlindungan kata laluan. Perlindungan kata laluan memaklumi pengguna apabila mereka menggunakan semula kata laluan yang dilindungi pada tapak yang mungkin mencurigakan.
-
-      Anda boleh menggunakan 'PasswordProtectionLoginURLs' dan 'PasswordProtectionChangePasswordURL' untuk mengkonfigurasi kata laluan yang hendak dilindungi.
-
-      Jika dasar ini ditetapkan kepada 'PasswordProtectionWarningOff', tiada amaran perlindungan kata laluan akan ditunjukkan.
-      Jika dasar ini ditetapkan kepada 'PasswordProtectionWarningOnPasswordReuse', amaran perlindungan kata laluan akan ditunjukkan apabila pengguna menggunakan semula kata laluan Google pada mana-mana tapak yang tidak disenaraiputihkan.
-      Jika dasar ini ditetapkan kepada 'PasswordProtectionWarningOnPhishingReuse', amaran perlindungan kata laluan akan ditunjukkan apabila pengguna menggunakan semula kata laluan Google pada tapak pancingan data.
-      Jika dasar ini dibiarkan tidak ditetapkan, perkhidmatan perlindungan kata laluan hanya akan melindungi kata laluan Google tetapi pengguna boleh menukar tetapan ini.</translation>
 <translation id="8672321184841719703">Versi Kemas Kini Auto Sasaran</translation>
 <translation id="867410340948518937">U2F (Faktor Kedua Universal)</translation>
 <translation id="8682611302223077049">Membenarkan anda menetapkan tempoh masa dalam milisaat. Sepanjang tempoh ini, pengguna akan dimaklumi bahawa <ph name="PRODUCT_NAME" /> mesti dilancarkan semula atau bahawa peranti <ph name="PRODUCT_OS_NAME" /> mesti dimulakan semula untuk menerapkan kemas kini yang belum selesai.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index a861483..0a3add2 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1957,8 +1957,8 @@
 <translation id="614662973812186053">Met dit beleid wordt ook het gebruik van Android en het verzamelen van diagnostische gegevens bepaald.</translation>
 <translation id="6153048425064249648">Met dit beleid wordt cloudrapportage voor <ph name="PRODUCT_NAME" /> beheerd, waarmee informatie over de werking van de browser naar Google Beheerdersconsole wordt geüpload.
 
-      Wanneer dit beleid niet is ingesteld of is ingesteld op 'False', worden er geen gegevens verzameld of geüpload.
-      Wanneer dit beleid wordt ingesteld op 'True', worden er gegevens verzameld en naar Google Beheerdersconsole geüpload.
+      Wanneer dit beleid niet is ingesteld of is ingesteld op 'Onwaar', worden er geen gegevens verzameld of geüpload.
+      Wanneer dit beleid wordt ingesteld op 'Waar', worden er gegevens verzameld en naar Google Beheerdersconsole geüpload.
       Als je wilt beheren welke gegevens er worden geüpload, gebruik je het beleid in de groep 'Chrome Reporting Extension'.
 
       Dit beleid werkt alleen wanneer het apparaat is ingeschreven voor <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
@@ -3006,14 +3006,6 @@
           Scheid meerdere servernamen van elkaar met komma's. Jokertekens (*) zijn toegestaan.
 
           Als je dit beleid niet instelt, probeert <ph name="PRODUCT_NAME" /> te detecteren of een server zich in het intranet bevindt en wordt daarna pas gereageerd op IWA-verzoeken. Als een server wordt gedetecteerd als intranet, worden IWA-verzoeken van de server genegeerd door <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Hiermee kun je de activering van een waarschuwing voor wachtwoordbeveiliging beheren. Wachtwoordbeveiliging waarschuwt gebruikers wanneer ze hun beveiligde wachtwoord hergebruiken op potentieel verdachte sites.
-
-      Je kunt het beleid 'PasswordProtectionLoginURLs' en 'PasswordProtectionChangePasswordURL' gebruiken om te configureren welk wachtwoord moet worden beveiligd.
-
-      Als dit beleid is ingesteld op 'PasswordProtectionWarningOff', wordt er geen waarschuwing voor wachtwoordbeveiliging weergegeven.
-      Als dit beleid is ingesteld op 'PasswordProtectionWarningOnPasswordReuse', wordt er een waarschuwing voor wachtwoordbeveiliging weergegeven wanneer de gebruiker het beveiligde wachtwoord hergebruikt op een site die niet op de witte lijst staat.
-      Als dit beleid is ingesteld op 'PasswordProtectionWarningOnPhishingReuse', wordt er een waarschuwing voor wachtwoordbeveiliging weergegeven wanneer de gebruiker het beveiligde wachtwoord hergebruikt op een phishingsite.
-      Als dit beleid niet is ingesteld, beschermt de wachtwoordbeveiligingsservice alleen Google-wachtwoorden, maar kan de gebruiker deze instelling wijzigen.</translation>
 <translation id="8672321184841719703">Doelversie voor automatische updates</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Hiermee kun je een periode in milliseconden instellen waarin aan gebruikers wordt gemeld dat <ph name="PRODUCT_NAME" /> of een <ph name="PRODUCT_OS_NAME" />-apparaat opnieuw moet worden opgestart om een beschikbare update toe te passen.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb
index 9b4a765..2b1ab3ef 100644
--- a/components/policy/resources/policy_templates_no.xtb
+++ b/components/policy/resources/policy_templates_no.xtb
@@ -586,6 +586,7 @@
 <translation id="2529880111512635313">Konfigurer listen over tvangsinstallerte programmer og utvidelser</translation>
 <translation id="253135976343875019">Forsinkelse for advarsel om inaktivitet når enheten kjører på AC-strøm</translation>
 <translation id="2536525645274582300">Brukeren avgjør om Googles posisjonstjenester skal aktiveres</translation>
+<translation id="254653220329944566">Slår på skyrapportering for <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Bare utskrift på én side</translation>
 <translation id="2552966063069741410">Tidssone</translation>
 <translation id="2562339630163277285">Spesifiserer nettadressen for søkemotoren som brukes, for å gi umiddelbare resultater. Nettadressen må inneholde strengen <ph name="SEARCH_TERM_MARKER" />, som erstattes med teksten brukeren har skrevet inn hittil, når søket utføres.
@@ -1927,6 +1928,15 @@
 
           Hvis denne retningslinjen ikke angis, brukes den globale standardverdien for alle nettsteder, enten fra retningslinjen DefaultJavaScriptSetting hvis denne er angitt, eller fra brukerens egen konfigurasjoner hvis den nevnte retningslinjen ikke er angitt.</translation>
 <translation id="614662973812186053">Denne regelen kontrollerer også innsamling av bruks- og diagnostikkdata fra Android.</translation>
+<translation id="6153048425064249648">Denne regelen kontrollerer skyrapportering for <ph name="PRODUCT_NAME" /> der informasjon om nettleserbruk lastes opp til Google Administrasjonskonsoll.
+
+      Hvis denne regelen ikke er konfigurert eller er angitt som «false» (usant), blir ikke data samlet inn eller lastet opp.
+      Hvis denne regelen er angitt som «true» (sant), blir dataene samlet inn og lastet opp til Google Administrasjonskonsoll.
+      For å kontrollere hvilke data som lastes opp, bruk reglene i gruppen «Chrome Reporting Extension».
+
+      Denne regelen gjelder bare når maskinen er registrert med <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Denne regelen fører til administratorinstallering av <ph name="CHROME_REPORTING_EXTENSION_NAME" /> for rapporteringen, og den overstyrer eventuelle andre utvidelsesregler som er knyttet til utvidelsen.</translation>
 <translation id="6155936611791017817">Angi standard tilstand for stor musepeker på påloggingssiden</translation>
 <translation id="6157537876488211233">Kommadelt liste over regler for å omgå proxy-tjener</translation>
 <translation id="6158324314836466367">Navn på bedriftens nettbutikk (avviklet)</translation>
@@ -2995,14 +3005,6 @@
           Adskill tjenernavn med komma. Jokertegn (*) er tillatt.
 
           Hvis du ikke spesifiserer denne regelen, forsøker <ph name="PRODUCT_NAME" /> å oppdage om en tjener er på intranett og bare svare på IWA-forespørsler hvis den er det. Hvis en tjener registreres som Internett, ignorerer <ph name="PRODUCT_NAME" /> IWA-forespørsler fra tjeneren.</translation>
-<translation id="8669669491594628013">Lar deg kontrollere utløseren for advarselen om passordsbeskyttelse. Passordbeskyttelsen varsler brukere når de har brukt et beskyttet passord på potensielt mistenkelige sider.
-
-      Du kan bruke PasswordProtectionLoginURLs og PasswordProtectionChangePasswordURL til å konfigurere hvilke passord som skal beskyttes.
-
-      Hvis regelen er satt til PasswordProtectionWarningOff, vises ingen advarsler om passordbeskyttelse.
-      Hvis regelen er satt til PasswordProtectionWarningOnPasswordReuse, vises advarselen om passordbeskyttelse når brukeren gjenbruker det beskyttede passordet på en ikke-godkjent side.
-      Hvis regelen er satt til PasswordProtectionWarningOnPhishingReuse, vises advarselen om passordbeskyttelse når brukeren gjenbruker det beskyttede passordet på en nettfiskingsside.
-      Hvis regelen ikke er angitt, beskytter passordbeskyttelsestjenesten bare Google-passord, men brukeren kan endre denne innstillingen.</translation>
 <translation id="8672321184841719703">Målversjon for automatiske oppdateringer</translation>
 <translation id="867410340948518937">Universal tofaktor-autentisering (U2F)</translation>
 <translation id="8682611302223077049">Du kan spesifisere tidsperioden (i millisekunder) før brukere blir varslet om at <ph name="PRODUCT_NAME" /> eller <ph name="PRODUCT_OS_NAME" /> må startes på nytt på grunn av en ventende oppdatering.
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb
index a3bce22..1b2347a 100644
--- a/components/policy/resources/policy_templates_pl.xtb
+++ b/components/policy/resources/policy_templates_pl.xtb
@@ -587,6 +587,7 @@
 <translation id="2529880111512635313">Konfiguruj listę aplikacji i rozszerzeń, których instalacja jest wymuszana</translation>
 <translation id="253135976343875019">Opóźnienie ostrzeżenia o bezczynności przy zasilaniu sieciowym</translation>
 <translation id="2536525645274582300">Użytkownik decyduje, czy włączyć usługi lokalizacyjne Google</translation>
+<translation id="254653220329944566">Włącza raportowanie w chmurze <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Tylko drukowanie jednostronne</translation>
 <translation id="2552966063069741410">Strefa czasowa</translation>
 <translation id="2562339630163277285">Określa URL wyszukiwarki, z której pobierane są wyniki wyszukiwania dynamicznego. URL musi zawierać ciąg <ph name="SEARCH_TERM_MARKER" />, który podczas wyszukiwania jest zastępowany tekstem wpisanym przez użytkownika
@@ -1887,6 +1888,15 @@
 <translation id="6133088669883929098">Zezwalaj na generowanie kluczy we wszystkich witrynach</translation>
 <translation id="6145799962557135888">Umożliwia skonfigurowanie listy wzorcowych URL-i określających witryny, w których może być wykonywany kod JavaScript. Jeśli ta zasada nie zostanie skonfigurowana, dla wszystkich witryn będzie używana globalna wartość domyślna pochodząca z zasady „DefaultJavaScriptSetting” (jeśli została skonfigurowana) lub z osobistej konfiguracji użytkownika.</translation>
 <translation id="614662973812186053">Ta zasada kontroluje też zbieranie danych o użytkowaniu i danych diagnostycznych Androida.</translation>
+<translation id="6153048425064249648">Ta zasada steruje raportowaniem w chmurze <ph name="PRODUCT_NAME" />, które umożliwia przesyłanie informacji o działaniu przeglądarki do konsoli administracyjnej Google.
+
+      Gdy ta zasada jest nieustawiona lub ma wartość Fałsz, dane nie są zbierane ani przesyłane.
+      Gdy ta zasada ma wartość Prawda, dane są zbierane i przesyłane do konsoli administracyjnej Google.
+      Aby określić, które dane chcesz przesyłać, użyj zasad w grupie Rozszerzenie zgłaszające informacje o Chrome.
+
+      Ta zasada działa tylko wtedy, gdy komputer jest zarejestrowany w <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Ta zasada wymusza instalację rozszerzenia <ph name="CHROME_REPORTING_EXTENSION_NAME" /> na potrzeby raportowania i zastępuje związane z nim zasady rozszerzeń.</translation>
 <translation id="6155936611791017817">Ustaw domyślny stan dużego kursora na ekranie logowania</translation>
 <translation id="6157537876488211233">Lista rozdzielonych przecinkami reguł omijania serwera proxy</translation>
 <translation id="6158324314836466367">Nazwa firmowego sklepu internetowego (wycofana)</translation>
@@ -2932,15 +2942,6 @@
           Nazwy serwerów należy rozdzielić przecinkami. Można używać symboli wieloznacznych (*).
 
           Jeśli nie ustawisz tej zasady, <ph name="PRODUCT_NAME" /> próbuje wykryć, czy serwer jest w intranecie, i tylko wtedy odpowiada na żądania IWA. W przypadku serwera internetowego <ph name="PRODUCT_NAME" /> ignoruje żądania IWA.</translation>
-<translation id="8669669491594628013">Umożliwia sterowanie wyzwalaniem ostrzeżenia dotyczącego ochrony hasła. 
-Alerty dotyczące ochrony hasła ostrzegają użytkowników, gdy użyją oni swojego chronionego hasła na potencjalnie niebezpiecznych stronach.
-
-      Zasady „PasswordProtectionLoginURLs” i „PasswordProtectionChangePasswordURL” umożliwiają wskazanie hasła, które ma być chronione.
-
-      Jeśli ta zasada jest ustawiona na „PasswordProtectionWarningOff”, nie będą wyświetlane żadne ostrzeżenia dotyczące ochrony hasła.
-      Jeśli ta zasada jest ustawiona na „PasswordProtectionWarningOnPasswordReuse”, ostrzeżenie dotyczące ochrony hasła wyświetli się, gdy użytkownik użyje swojego chronionego hasła na stronie, której nie ma na białej liście.
-      Jeśli ta zasada jest ustawiona na „PasswordProtectionWarningOnPhishingReuse”, ostrzeżenie dotyczące ochrony hasła wyświetli się, gdy użytkownik użyje chronionego hasła na stronie wyłudzającej informacje.
-      Jeśli zasada nie jest skonfigurowana, usługa ochrony haseł będzie chronić tylko hasła do kont Google, a użytkownik może zmienić to ustawienie.</translation>
 <translation id="8672321184841719703">Wersja docelowa automatycznych aktualizacji</translation>
 <translation id="867410340948518937">U2F (Uniwersalne uwierzytelnianie dwuskładnikowe)</translation>
 <translation id="8682611302223077049">Umożliwia określenie czasu (w milisekundach), przez który użytkownicy będą powiadamiani o konieczności ponownego uruchomienia <ph name="PRODUCT_NAME" /> lub urządzenia z <ph name="PRODUCT_OS_NAME" /> w celu zainstalowania oczekującej aktualizacji.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index c2bcef7..99042bd 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -2926,14 +2926,6 @@
           Separe vários nomes de servidores com vírgulas. Caracteres curinga (*) são permitidos.
 
           Se esta política não é definida, o <ph name="PRODUCT_NAME" /> tenta detectar se um servidor está na Intranet e, só então, responde às solicitações IWA. Se um servidor é detectado como Internet, as solicitações IWA que partem dele são ignoradas pelo <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Permite que você controle o acionamento do aviso de proteção de senha. A proteção de senha alerta o usuário quando ele reutiliza a senha protegida dele em sites possivelmente suspeitos.
-
-      Você pode usar as políticas "PasswordProtectionLoginURLs" e "PasswordProtectionChangePasswordURL" para configurar quais senhas quer proteger.
-
-      Se esta política for definida como "PasswordProtectionWarningOff", nenhum aviso de proteção de senha será exibido.
-      Se esta política for definida como "PasswordProtectionWarningOnPasswordReuse", o aviso de proteção de senha será exibido quando o usuário reutilizar as senhas do Google em sites que não estejam na lista de permissões.
-      Se esta política for definida como "PasswordProtectionWarningOnPhishingReuse", o aviso de proteção de senha será exibido quando o usuário reutilizar as senhas do Google em sites de phishing.
-      Se esta política não for definida, o serviço de proteção de senhas protegerá apenas as senhas do Google, mas o usuário poderá alterar essa configuração.</translation>
 <translation id="8672321184841719703">Versão de atualização automática de destino</translation>
 <translation id="867410340948518937">Segundo fator universal (U2F, na sigla em inglês)</translation>
 <translation id="8682611302223077049">Permite definir um período em milésimos de segundo em que os usuários são notificados de que o <ph name="PRODUCT_NAME" /> ou um dispositivo do <ph name="PRODUCT_OS_NAME" /> precisa ser reiniciado para aplicar uma atualização pendente.
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb
index 4516803..aa91cfe1 100644
--- a/components/policy/resources/policy_templates_pt-PT.xtb
+++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -2957,14 +2957,6 @@
           Separe os vários nomes de servidor por vírgulas. Os carateres universais (*) são permitidos.
 
           Se esta política não estiver definida, o <ph name="PRODUCT_NAME" /> tentará detetar se um servidor está na Intranet e só nesse momento irá responder a pedidos IWA. Se um servidor for detetado como Internet, os pedidos IWA serão ignorados pelo <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Permite controlar o acionamento do aviso de proteção por palavra-passe. A proteção por palavra-passe alerta os utilizadores quando reutilizarem as respetivas palavras-passe protegidas em sites potencialmente suspeitos.
-
-      Pode utilizar as políticas "PasswordProtectionLoginURLs" e "PasswordProtectionChangePasswordURL" para configurar a palavra-passe a proteger.
-
-      Se esta política estiver definida como "PasswordProtectionWarningOff", não é mostrado qualquer aviso de proteção por palavra-passe.
-      Se esta política estiver definida como "PasswordProtectionWarningOnPasswordReuse", o aviso de proteção por palavra-passe é mostrado quando o utilizador reutilizar a respetiva palavra-passe protegida num site que não tenha sido adicionado à lista de autorizações.
-      Se esta política estiver definida como "PasswordProtectionWarningOnPhishingReuse", o aviso de proteção por palavra-passe é mostrado quando o utilizador reutilizar a respetiva palavra-passe protegida num site de phishing.
-      Se esta política não for definida, o serviço de proteção por palavra-passe apenas protege as palavras-passe Google, mas o utilizador pode alterar esta definição.</translation>
 <translation id="8672321184841719703">Versão de Atualização Automática de Destino</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Permite-lhe definir o período de tempo, em milissegundos, ao longo do qual os utilizadores são notificados de que o <ph name="PRODUCT_NAME" /> tem de ser reiniciado ou que um dispositivo <ph name="PRODUCT_OS_NAME" /> tem de ser reiniciado para aplicar uma atualização pendente.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index 7e475057..4f6892c 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -578,6 +578,7 @@
 <translation id="2529880111512635313">Configurează lista aplicațiilor și a extensiilor cu instalare forțată</translation>
 <translation id="253135976343875019">Interval de inactivitate la funcționarea pe c.a.</translation>
 <translation id="2536525645274582300">Utilizatorul decide dacă să activeze serviciile de localizare Google</translation>
+<translation id="254653220329944566">Activează raportarea în cloud <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Numai printare simplex</translation>
 <translation id="2552966063069741410">Fus orar</translation>
 <translation id="2562339630163277285">Specifică adresa URL a motorului de căutare folosit pentru a oferi rezultate instantanee. Adresa URL trebuie să conțină șirul <ph name="SEARCH_TERM_MARKER" />, care va fi înlocuit în momentul interogării cu textul pe care utilizatorul l-a introdus până atunci.
@@ -1881,6 +1882,15 @@
 <translation id="6133088669883929098">Permite tuturor site-urilor să folosească generarea cheilor</translation>
 <translation id="6145799962557135888">Vă permite să setați o listă de modele pentru adresele URL ce specifică site-urile care au permisiunea de a rula JavaScript. Dacă această politică este lăsată nesetată, va fi utilizată valoarea prestabilită la nivel global pentru toate site-urile, fie din politica „DefaultJavaScriptSetting”, dacă aceasta este setată, fie din configurația personală a utilizatorului, în caz contrar.</translation>
 <translation id="614662973812186053">Această politică controlează și culegerea datelor Android privind utilizarea și diagnosticarea.</translation>
+<translation id="6153048425064249648">Această politică stabilește raportarea în cloud <ph name="PRODUCT_NAME" />, care încarcă informații despre funcționarea browserului în consola Google Admin.
+
+      Când această politică nu este setată sau este dezactivată, nu se colectează și nu se încarcă date.
+      Când această politică este activată, datele sunt colectate și încărcate în consola Google Admin.
+      Pentru a stabili ce date sunt încărcate, folosește politicile din grupul Chrome Reporting Extension.
+
+      Această politică se aplică numai când dispozitivul este înregistrat la <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Această politică instalează automat <ph name="CHROME_REPORTING_EXTENSION_NAME" /> pentru raportare și modifică toate politicile privind extensiile care au legătură cu acea extensie.</translation>
 <translation id="6155936611791017817">Setați cursorul mare pe ecranul de conectare ca stare prestabilită</translation>
 <translation id="6157537876488211233">Lista de valori separate prin virgulă a regulilor de ocolire a proxy-ului</translation>
 <translation id="6158324314836466367">Numele magazinului web pentru întreprinderi (politică învechită)</translation>
@@ -2916,14 +2926,6 @@
           Separă numele serverelor prin virgulă. Sunt permise metacaracterele (*).
 
           Dacă politica nu este configurată, <ph name="PRODUCT_NAME" /> va încerca să detecteze dacă un anumit server se află în intranet și numai după aceea va răspunde la solicitările IWA. Dacă un server este detectat ca fiind pe internet, <ph name="PRODUCT_NAME" /> va ignora solicitările IWA trimise de acesta.</translation>
-<translation id="8669669491594628013">Îți permite să controlezi declanșarea avertismentului privind protecția parolei. Protecția parolei îi avertizează pe utilizatori când refolosesc parola protejată pe site-uri potențial suspecte.
-
-      Poți folosi politicile „PasswordProtectionLoginURLs” și „PasswordProtectionChangePasswordURL” pentru a configura parola de protejat.
-
-      Dacă această politică este setată la „PasswordProtectionWarningOff”, nu se va afișa niciun avertisment privind protecția parolei.
-      Dacă această politică este setată la „PasswordProtectionWarningOnPasswordReuse”, avertismentul privind protecția parolei se va afișa când utilizatorul refolosește parola protejată pe un site care nu este trecut în lista albă.
-      Dacă această politică este setată la „PasswordProtectionWarningOnPhishingReuse”, avertismentul privind protecția parolei se va afișa când utilizatorul refolosește parola protejată pe un site de phishing.
-      Dacă această politică nu este configurată, serviciul de protecție a parolei va proteja doar parolele Google, dar utilizatorul va putea modifica această setare.</translation>
 <translation id="8672321184841719703">Versiune țintă pentru actualizări automate</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Îți permite să setezi perioada, în milisecunde, în care utilizatorii sunt informați că <ph name="PRODUCT_NAME" /> trebuie relansat sau că un dispozitiv <ph name="PRODUCT_OS_NAME" /> trebuie repornit pentru a aplica o actualizare în așteptare.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 4a7d51e..e99d9344 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -2923,14 +2923,6 @@
           Допускается указание названий серверов через запятую и использование подстановочных знаков (*).
 
           Если правило не задано, <ph name="PRODUCT_NAME" /> попытается определить, находится ли сервер в сети интранет, и только после этого ответит на запросы авторизации Windows. Если <ph name="PRODUCT_NAME" /> обнаружит, что сервер находится в Интернете, эти запросы будут проигнорированы.</translation>
-<translation id="8669669491594628013">Правило позволяет управлять триггером, при срабатывании которого пользователь получает предупреждение от службы защиты паролей о повторном вводе пароля на подозрительном сайте.
-
-      Для определения пароля, нуждающегося в защите, можно использовать правила PasswordProtectionLoginURLs и PasswordProtectionChangePasswordURL.
-
-       Если установлено значение PasswordProtectionWarningOff, предупреждения не появляются.
-       Если установлено значение PasswordProtectionWarningOnPasswordReuse, предупреждение от службы защиты паролей появляется, когда пользователь повторно вводит пароль Google на сайте, не внесенном в белый список.
-       Если установлено значение PasswordProtectionWarningOnPhishingReuse, предупреждение от службы защиты паролей появляется, когда пользователь повторно вводит пароль Google на фишинговом сайте.
-      Если значение не установлено, предупреждение от службы защиты паролей появляется при повторном вводе пароля Google на фишинговом сайте, но пользователь может изменить эту настройку самостоятельно.</translation>
 <translation id="8672321184841719703">Выбор версии автообновления</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Позволяет установить период в миллисекундах, в течение которого пользователь будет получать уведомления о том, что для установки обновления нужно перезапустить браузер <ph name="PRODUCT_NAME" /> или устройство <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb
index 4c5122bd..50810ce 100644
--- a/components/policy/resources/policy_templates_sk.xtb
+++ b/components/policy/resources/policy_templates_sk.xtb
@@ -581,6 +581,7 @@
 <translation id="2529880111512635313">Konfigurácia zoznamu vynútene nainštalovaných aplikácií a rozšírení</translation>
 <translation id="253135976343875019">Oneskorenie upozornenia na nečinnosť pri napájaní zo siete</translation>
 <translation id="2536525645274582300">O povolení služieb na určovanie polohy od Googlu rozhoduje používateľ</translation>
+<translation id="254653220329944566">Umožňuje cloudové nahlasovanie údajov o prehliadači <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Tlačiť iba na jednu stranu</translation>
 <translation id="2552966063069741410">Časové pásmo</translation>
 <translation id="2562339630163277285">Určuje webovú adresu vyhľadávača, ktorý poskytuje výsledky dynamického vyhľadávania. Webová adresa by mala obsahovať reťazec <ph name="SEARCH_TERM_MARKER" />, ktorý bude počas posielania dopytu nahradený textom zadávaným používateľom.
@@ -1932,6 +1933,24 @@
 
           Ak toto pravidlo ponecháte nenastavené, použije sa v prípade všetkých webových stránok globálna predvolená hodnota buď z pravidla „DefaultJavaScriptSetting“ (ak je nastavené), alebo z osobnej konfigurácie používateľa.</translation>
 <translation id="614662973812186053">Toto pravidlo tiež ovláda zhromažďovanie údajov o používaní a diagnostike Androidu.</translation>
+<translation id="6153048425064249648">Toto pravidlo umožňuje ovládať cloudové nahlasovanie údajov o prehliadači <ph name="PRODUCT_NAME" />, ktoré nahráva informácie o operáciách v prehliadači do konzoly Google Admin.
+
+
+
+
+      Keď toto pravidlo ponecháte nenastavené alebo nastavené na možnosť false, nezhromažďujú sa ani sa nenahrávajú žiadne údaje.
+      Keď ho nastavíte na hodnotu true, údaje sa zhromažďujú a nahrávajú do konzoly Google Admin.
+      Ak chcete ovládať, ktoré údaje sa nahrávajú, použite pravidlá pre rozšírenie nahlasovania údajov o Chrome skupiny.
+
+
+
+
+      Toto pravidlo je účinné iba vtedy, keď je počítač zaregistrovaný prostredníctvom tokenu <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+
+
+
+      Toto pravidlo presadzuje inštaláciu rozšírenia <ph name="CHROME_REPORTING_EXTENSION_NAME" /> na nahlasovanie údajov a prepíše všetky pravidlá pre rozšírenia súvisiace s týmto rozšírením.</translation>
 <translation id="6155936611791017817">Nastaviť predvolený stav veľkého kurzora na prihlasovacej obrazovke</translation>
 <translation id="6157537876488211233">Zoznam pravidiel vynechania servera proxy oddelených čiarkami</translation>
 <translation id="6158324314836466367">Názov Internetového obchodu pre podniky (podpora je ukončená)</translation>
@@ -2997,14 +3016,6 @@
           Ak chcete zadať niekoľko názvov serverov, oddeľte ich čiarkami. Zástupné znaky (*) sú povolené.
 
           Ak pravidlo zostane nenastavené, prehliadač <ph name="PRODUCT_NAME" /> sa najprv pokúsi zistiť, či sa server nachádza v sieti intranet, a až potom bude reagovať na žiadosti IWA. Ak sa zistí, že je server v sieti internet, prehliadač <ph name="PRODUCT_NAME" /> bude žiadosti IWA ignorovať.</translation>
-<translation id="8669669491594628013">Umožňuje ovládať spustenie upozornenia v rámci ochrany heslom. Ochrana heslom upozorňuje používateľov, keď svoje chránené heslo opätovne použijú na potenciálne podozrivých weboch.
-
-      Pomocou pravidiel PasswordProtectionLoginURLs a PasswordProtectionChangePasswordURL môžete nakonfigurovať, ktoré heslo chcete chrániť.
-
-      Ak toto pravidlo nastavíte na možnosť PasswordProtectionWarningOff, nezobrazí sa žiadne upozornenie v rámci ochrany heslom.
-      Ak ho nastavíte na možnosť PasswordProtectionWarningOnPasswordReuse, upozornenie v rámci ochrany heslom sa zobrazí, keď používateľ opätovne použije heslo na webe, ktorý nebol pridaný na zoznam povolených webov.
-      Ak ho nastavíte na možnosť PasswordProtectionWarningOnPhishingReuse, upozornenie v rámci ochrany heslom sa zobrazí, keď používateľ opätovne použije chránené heslo na phishingovom webe.
-      Ak toto pravidlo nenastavíte, služba ochrany heslom bude chrániť iba heslá Google. Používateľ však bude môcť toto nastavenie zmeniť.</translation>
 <translation id="8672321184841719703">Cieľová verzia automatickej aktualizácie</translation>
 <translation id="867410340948518937">U2F (univerzálny druhý faktor)</translation>
 <translation id="8682611302223077049">Umožňuje nastaviť časové obdobie v milisekundách, po uplynutí ktorého budú používatelia upozornení, že <ph name="PRODUCT_NAME" /> sa musí znova spustiť alebo že zariadenie <ph name="PRODUCT_OS_NAME" /> musí byť reštartované, aby sa použila čakajúca aktualizácia.
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb
index e7b1ebd..977bf6b 100644
--- a/components/policy/resources/policy_templates_sl.xtb
+++ b/components/policy/resources/policy_templates_sl.xtb
@@ -3053,14 +3053,6 @@
           Imena strežnikov ločite z vejicami. Nadomestni znaki (*) so dovoljeni.
 
           Če tega pravilnika ne nastavite, <ph name="PRODUCT_NAME" /> poskuša zaznati, ali je strežnik v intranetu, in se šele potem odzove na zahteve IWA. Če je strežnik zaznan kot internet, <ph name="PRODUCT_NAME" /> prezre zahteve IWA, poslane iz tega strežnika.</translation>
-<translation id="8669669491594628013">Omogoča, da nadzirate sprožitev opozorila zaščite z geslom. Zaščita z geslom opozori uporabnike, ko zaščiteno geslo znova uporabijo na spletnih mestih, ki so morda sumljiva.
-
-      Pravilnika »PasswordProtectionLoginURLs« in »PasswordProtectionChangePasswordURL« lahko uporabite za konfiguriranje, katero geslo naj bo zaščiteno.
-
-      Če je ta pravilnik nastavljen na »PasswordProtectionWarningOff«, ni prikazano nobeno opozorilo zaščite z geslom.
-      Če je ta pravilnik nastavljen na »PasswordProtectionWarningOnPasswordReuse«, je opozorilo zaščite z geslom prikazano, ko uporabnik znova uporabi zaščiteno geslo na spletnem mestu, ki ni uvrščeno na seznam dovoljenih.
-      Če je ta pravilnik nastavljen na »PasswordProtectionWarningOnPhishingReuse«, je opozorilo zaščite z geslom prikazano, ko uporabnik znova uporabi zaščiteno geslo na spletnem mestu z lažnim predstavljanjem.
-      Če ta pravilnik ni nastavljen, storitev zaščite z geslom ščiti samo gesla za Google, vendar lahko uporabnik to nastavitev spremeni.</translation>
 <translation id="8672321184841719703">Ciljna različica za samodejne posodobitve</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Omogoči nastavitev časovnega obdobja v milisekundah, v katerem so uporabniki obveščeni, da mora biti brskalnik <ph name="PRODUCT_NAME" /> znova zagnan ali da mora biti naprava <ph name="PRODUCT_OS_NAME" /> znova zagnana za uveljavitev čakajoče posodobitve.
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb
index 38750619..21bad41 100644
--- a/components/policy/resources/policy_templates_sr.xtb
+++ b/components/policy/resources/policy_templates_sr.xtb
@@ -3056,14 +3056,6 @@
           Раздвојите називе различитих сервера зарезима. Џокерски знакови (*) су дозвољени.
 
           Ако не подесите ове смернице, <ph name="PRODUCT_NAME" /> ће покушати да открије да ли је сервер на интранету и само тада ће одговорити на IWA захтеве. Ако се открије да је сервер на интернету, <ph name="PRODUCT_NAME" /> ће занемарити његове IWA захтеве.</translation>
-<translation id="8669669491594628013">Омогућавају вам да контролишете покретање упозорења за заштиту лозинком. Заштита лозинком упозорава кориснике када користе заштићену лозинку на потенцијално сумњивим сајтовима.
-
-      Можете да конфигуришете лозинку коју желите да заштитите ако користите „PasswordProtectionLoginURLs“ и „PasswordProtectionChangePasswordURL“ смернице.
-
-      Ако подесите ове смернице на „PasswordProtectionWarningOff“, неће бити приказано никакво упозорење за заштиту лозинком.
-      Ако подесите ове смернице на „PasswordProtectionWarningOnPasswordReuse“, упозорење за заштиту лозинком ће се приказати када корисници поново користе заштићене лозинке на било којим сајтовима који нису на белој листи.
-      Ако подесите ове смернице на „PasswordProtectionWarningOnPhishingReuse“, упозорење за заштиту лозинком ће се приказати када корисници користе заштићене лозинке на сајтовима са „пецањем“.
-      Ако не подесите ове смернице, упозорење за заштиту лозинком ће се покренути када корисници користе Google лозинке на сајтовима са „пецањем“, али корисник може то да промени.</translation>
 <translation id="8672321184841719703">Циљана верзија Аутоматских ажурирања</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor – универзални други фактор)</translation>
 <translation id="8682611302223077049">Омогућава подешавање временског периода, у милисекундама, током ког корисници добијају обавештење да морају поново да покрену <ph name="PRODUCT_NAME" /> или да рестартују <ph name="PRODUCT_OS_NAME" /> уређај да би применили ажурирање на чекању.
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb
index c6e90b5..bb49ac10 100644
--- a/components/policy/resources/policy_templates_sv.xtb
+++ b/components/policy/resources/policy_templates_sv.xtb
@@ -3049,14 +3049,6 @@
           Avgränsa flera servernamn med kommatecken. Jokertecken (*) tillåts.
 
           Om du inte ställer in den här principen kommer <ph name="PRODUCT_NAME" /> att försöka identifiera om en server finns i intranätet och endast då kommer den att svara på IWA-förfrågningar. Om en server identifieras som internet kommer IWA-förfrågningar därifrån att ignoreras av <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Låter dig styra vad som ska utlösa en varning från lösenordsskyddet. Lösenordsskyddet varnar användarna om de återanvänder ett skyddat lösenord på en webbplats som kan vara misstänkt.
-
-      Du kan konfigurera vilket lösenord som ska skyddas med principerna PasswordProtectionLoginURLs och PasswordProtectionChangePasswordURL.
-
-      När principen är inställd på PasswordProtectionWarningOff visas inga varningar.
-      När principen är inställd på PasswordProtectionWarningOnPasswordReuse visas en varning om användaren återanvänder sitt skyddade lösenord på en webbplats som inte står med på vitlistan.
-      När principen är inställd på PasswordProtectionWarningOnPhishingReuse visas en varning om användaren återanvänder sitt skyddade lösenord på en webbplats som används för nätfiske.
-      Om principen har lämnats utan inställning skyddas endast lösenord på Google av lösenordsskyddet, men användaren kan ändra inställningen.</translation>
 <translation id="8672321184841719703">Målversion för automatisk uppdatering</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">Gör att du kan ställa in i millisekunder under hur lång tid in som användare aviseras om att <ph name="PRODUCT_NAME" /> eller <ph name="PRODUCT_OS_NAME" />-enheten måste startas om när en uppdatering väntar.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb
index 72eb0a3..4d2ff5e5 100644
--- a/components/policy/resources/policy_templates_sw.xtb
+++ b/components/policy/resources/policy_templates_sw.xtb
@@ -2975,14 +2975,6 @@
           Seva nyingi tofauti zenye koma. Kadi egemezi (*) zinaruhusiwa.
 
           Ukiacha sera hii bila kuiweka <ph name="PRODUCT_NAME" /> itajaribu kugundua ikiwa seva iko kwenye Intraneti na hapo ndipo itajibu maombi ya IWA pekee. Iwapo seva itagunduliwa kama Intraneti basi maombi ya IWA yatapuuzwa na <ph name="PRODUCT_NAME" />.</translation>
-<translation id="8669669491594628013">Inakuruhusu udhibiti kisababishi cha onyo la ulinzi wa nenosiri. Ulinzi wa nenosiri huonya watumiaji wakati wanatumia tena nenosiri lao linalolindwa kwenye tovuti ambazo huenda zikawa hatari.
-
-      Unaweza kutumia sera za 'PasswordProtectionLoginURLs' na 'PasswordProtectionChangePasswordURL' ili kuweka mipangilio ya nenosiri utakalolinda.
-
-      Iwapo umeweka sera hii kuwa 'PasswordProtectionWarningOff', hutaona onyo lolote la ulinzi wa nenosiri.
-      Iwapo umeweka sera hii kuwa 'PasswordProtectionWarningOnPasswordReuse', utaona onyo la ulinzi wa nenosiri wakati watumiaji watatumia tena nenosiri lao kwenye tovuti ambayo haijaidhinishwa.
-      Iwapo umeweka sera hii kuwa 'PasswordProtectionWarningOnPhishingReuse', onyo la ulinzi wa nenosiri litaonyeshwa wakati mtumiaji anatumia tena nenosiri linalolindwa kwenye tovuti inayoiba data.
-      Iwapo sera hii haijawekwa, huduma ya ulinzi wa nenosiri italinda tu manenosiri ya Google lakini mtumiaji ataweza kubadilisha mipangilio hii.</translation>
 <translation id="8672321184841719703">Toleo Lengwa la Kusasisha Otomatiki</translation>
 <translation id="867410340948518937">U2F (Uthibitishaji Jumla wa Hatua Mbili)</translation>
 <translation id="8682611302223077049">Hukuruhusu uweke kipindi katika milisekunde, ambapo watumiaji wanaarifiwa kwamba  <ph name="PRODUCT_NAME" /> lazima ifunguliwe upya au kifaa cha <ph name="PRODUCT_OS_NAME" /> lazima kizimwe kisha kiwashwe ili kukamilisha kuweka sasisho.
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb
index 5a0c5e19..7acef0be 100644
--- a/components/policy/resources/policy_templates_ta.xtb
+++ b/components/policy/resources/policy_templates_ta.xtb
@@ -570,6 +570,7 @@
 <translation id="2529880111512635313">கட்டாயமாக நிறுவப்பட்ட பயன்பாடுகள் மற்றும் நீட்டிப்புகளின் பட்டியலை உள்ளமை</translation>
 <translation id="253135976343875019">AC சக்தியில் இயங்கும்போது செயலற்றநிலை எச்சரிக்கை காலதாமதம்</translation>
 <translation id="2536525645274582300">Google இருப்பிடச் சேவைகளை இயக்க வேண்டுமா என்பதைப் பயனர் தீர்மானிப்பார்</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> கிளவுட் அறிக்கையிடுதலை இயக்கும்</translation>
 <translation id="2550593661567988768">சிம்ப்ளெக்ஸ் அச்சிடல் மட்டும்</translation>
 <translation id="2552966063069741410">நேரமண்டலம்</translation>
 <translation id="2562339630163277285">உடனடி முடிவுகளை வழங்குவதற்குப் பயன்படுத்தப்படும் தேடல் இன்ஜினின் URLலைக் குறிப்பிடும். URLலில் <ph name="SEARCH_TERM_MARKER" /> வார்த்தை இருக்க வேண்டும், இது வினவல் நேரத்தில் இதுவரை பயனர் உள்ளிட்ட உரையினால் மாற்றப்படும்.
@@ -1902,6 +1903,15 @@
 <translation id="6133088669883929098">விசை உருவாக்கத்தை எல்லா தளங்களும் பயன்படுத்த அனுமதி</translation>
 <translation id="6145799962557135888">JavaScript ஐ இயக்க அனுமதிக்கும் தளங்களைக் குறிப்பிடுகின்ற url வகைகளின் பட்டியலை அமைக்க, உங்களை அனுமதிக்கிறது. இந்தக் கொள்கையை அமைக்காமல் விட்டால், ஒட்டுமொத்த இயல்புநிலை மதிப்பானது, அமைக்கப்பட்டிருந்தால் 'DefaultJavaScriptSetting' கொள்கை அல்லது பயனரின் தனிப்பட்ட உள்ளமைவில் இருந்து எல்லாத் தளங்களுக்கும் பயன்படுத்தப்படும்.</translation>
 <translation id="614662973812186053">இந்தக் கொள்கை Android உபயோகத்தையும் ஆய்வறிக்கைத் தரவுச் சேகரிப்பையும் கட்டுப்படுத்தும்.</translation>
+<translation id="6153048425064249648">Google நிர்வாகிக் கன்சோலுக்கு உலாவியின் செயல்பாடு பற்றிய தகவலைப் பதிவேற்றுகின்ற <ph name="PRODUCT_NAME" /> கிளவுட் அறிக்கையிடுதலை இந்தக் கொள்கை கட்டுப்படுத்தும்.
+
+      இந்தக் கொள்கையை அமைக்காவிட்டால் அல்லது 'தவறு' என அமைத்தால், தரவு எதுவும் சேகரிக்கப்படாது அல்லது பதிவேற்றப்படாது.
+      இந்தக் கொள்கையை ‘சரி' என அமைத்தால், தரவு சேகரிக்கப்பட்டு, Google நிர்வாகிக் கன்சோலுக்குப் பதிவேற்றப்படும்.
+      பதிவேற்றப்படும் தரவைக் கட்டுப்படுத்த, குழு Chrome அறிக்கையிடுதல் நீட்டிப்பிலுள்ள கொள்கைகளைப் பயன்படுத்தவும்.
+
+      <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> இல் சாதனம் பதிவுசெய்யப்பட்டிருந்தால் மட்டுமே, இந்தக் கொள்கை செயலில் இருக்கும்.
+
+      அறிக்கையிடுதலுக்காக <ph name="CHROME_REPORTING_EXTENSION_NAME" />ஐ இந்தக் கொள்கை தானாக நிறுவும், அத்துடன் அந்த நீட்டிப்புடன் தொடர்புடைய நீட்டிப்புக் கொள்கைகள் அனைத்தையும் மேலெழுதும்.</translation>
 <translation id="6155936611791017817">உள்நுழைவுத் திரையில் பெரிய இடஞ்சுட்டியின் இயல்புநிலையை அமை</translation>
 <translation id="6157537876488211233">ப்ராக்ஸி கடந்துபோதல் விதிகளின் கமாவால் பிரிக்கப்பட்ட பட்டியல்</translation>
 <translation id="6158324314836466367">நிறுவன இணைய அங்காடி பெயர் (தடுக்கப்பட்டது)</translation>
@@ -2926,14 +2936,6 @@
           பல சேவையகங்களின் பெயர்களைக் காற்புள்ளிகளால் பிரிக்கவும். சிறப்புக் குறிகள் (*) அனுமதிக்கப்படுகின்றன.
 
           இந்தக் கொள்கையை அமைக்கவில்லை எனில், சேவையகமானது அக இணையத்தில் உள்ளதா என்பதை <ph name="PRODUCT_NAME" /> கண்டறிய முயற்சிக்கும், அதன் பின்னரே IWA கோரிக்கைகளுக்கு பதிலளிக்கும். சேவையமானது இணையமாகக் கண்டறியப்பட்டால், அதிலிருந்து வரும் IWA கோரிக்கைகள், <ph name="PRODUCT_NAME" /> ஆல் தவிர்க்கப்படும்.</translation>
-<translation id="8669669491594628013">இது கடவுச்சொல் பாதுகாப்பு எச்சரிக்கையைக் காண்பிப்பதை நீங்கள் கட்டுப்படுத்த அனுமதிக்கும். சந்தேகத்திற்கிடமான தளங்களில் பயனர்கள் தங்களுடைய பாதுகாக்கப்பட்ட கடவுச்சொல்லை மீண்டும் பயன்படுத்தும்போது, கடவுச்சொல் பாதுகாப்புச் சேவை அவர்களை எச்சரிக்கும்.
-
-      பாதுகாக்க வேண்டிய கடவுச்சொல்லை உள்ளமைக்க, 'PasswordProtectionLoginURLs' மற்றும் 'PasswordProtectionChangePasswordURL' ஆகிய கொள்கைகளைப் பயன்படுத்தலாம்.
-
-      இந்தக் கொள்கை 'PasswordProtectionWarningOff' என்பதற்கு அமைக்கப்பட்டிருந்தால், கடவுச்சொல் பாதுகாப்பு எச்சரிக்கை எதுவும் காண்பிக்கப்படாது.
-      இந்தக் கொள்கை 'PasswordProtectionWarningOnPasswordReuse' என்பதற்கு அமைக்கப்பட்டிருந்தால், ஏற்புப் பட்டியலில் இல்லாத ஒரு தளத்தில் பயனர் தன்னுடைய பாதுகாக்கப்பட்ட கடவுச்சொல்லை மீண்டும் பயன்படுத்தும்போது, கடவுச்சொல் பாதுகாப்பு எச்சரிக்கை காண்பிக்கப்படும்.
-      இந்தக் கொள்கை 'PasswordProtectionWarningOnPhishingReuse' என்பதற்கு அமைக்கப்பட்டிருந்தால், ஒரு ஃபிஷிங் தளத்தில் பயனர் தன்னுடைய பாதுகாக்கப்பட்ட கடவுச்சொல்லை மீண்டும் பயன்படுத்தும்போது, கடவுச்சொல் பாதுகாப்பு எச்சரிக்கை காண்பிக்கப்படும்.
-      இந்தக் கொள்கை அமைக்கப்படவில்லை எனில், கடவுச்சொல் பாதுகாப்புச் சேவையானது Google கடவுச்சொற்களை மட்டும் பாதுகாக்கும், எனினும் பயனரால் இந்த அமைப்பை மாற்ற முடியும்.</translation>
 <translation id="8672321184841719703">இலக்கு தானியங்கு புதுப்பித்தல் பதிப்பு</translation>
 <translation id="867410340948518937">U2F (யூனிவர்செல் செகண்ட் ஃபேக்டர்)</translation>
 <translation id="8682611302223077049">இது மில்லிவினாடிகளில் ஒரு காலகட்டத்தை அமைக்க அனுமதிக்கும், இந்தக் காலகட்டத்தில் <ph name="PRODUCT_NAME" />ஐ மீண்டும் தொடங்குவதற்கோ, நிலுவையிலுள்ள ஒரு புதுப்பிப்பைப் பயன்படுத்துவதற்கு <ph name="PRODUCT_OS_NAME" /> சாதனத்தை மீண்டும் தொடங்குவதற்கோ பயனருக்கு அறிவுறுத்தப்படும்.
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index 0755b4c..317468c 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -314,11 +314,11 @@
 <translation id="1736269219679256369">SSL హెచ్చరిక పేజీ నుండి కొనసాగడాన్ని అనుమతిస్తుంది</translation>
 <translation id="1749815929501097806">పరికరం-స్థానిక ఖాతా సెషన్‌ను ప్రారంభించడానికి ముందు వినియోగదారు తప్పనిసరిగా ఆమోదించవలసిన సేవా నిబంధనలను సెట్ చేస్తుంది.
 
-      ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> సేవా నిబంధనలను డౌన్‌లోడ్ చేసి, వినియోగదారు పరికరం-స్థానిక ఖాతా సెషన్‌ను ప్రారంభిస్తున్నప్పుడు వాటిని ప్రదర్శిస్తుంది. వినియోగదారు సేవా నిబంధనలను ఆమోదించిన తర్వాత మాత్రమే సెషన్‌కు అనుమతించబడతారు.
+      ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> సేవా నిబంధనలను డౌన్‌లోడ్ చేసి, వినియోగదారు పరికరం-స్థానిక ఖాతా సెషన్‌ను ప్రారంభిస్తున్నప్పుడు వాటిని ప్రదర్శిస్తుంది. సేవా నిబంధనలను ఆమోదించిన తర్వాత మాత్రమే, వినియోగదారు సెషన్‌కు అనుమతించబడతారు.
 
-      ఈ విధానాన్ని సెట్ చేయకుంటే, సేవా నిబంధనలు చూపబడవు.
+      ఈ విధానాన్ని సెట్ చేయకుంటే, సేవా నిబంధనలు ఏవీ చూపబడవు.
 
-      విధానాన్ని <ph name="PRODUCT_OS_NAME" /> సేవా నిబంధనలను డౌన్‌లోడ్ చేయగల URLకు సెట్ చేయాలి. సేవా నిబంధనలు MIME రకం వచనం/సాదా అందించబడిన విధంగా సాదా వచనంగా ఉండాలి. మార్కప్ అనుమతించబడదు.</translation>
+      <ph name="PRODUCT_OS_NAME" /> సేవా నిబంధనలను డౌన్‌లోడ్ చేయగల URLకు ఈ విధానాన్ని సెట్ చేయాలి. సేవా నిబంధనలు సాదా వచనం అయి ఉండాలి, MIME రకం వచనం/సాదా వచనం లాగా అందించబడాలి. మార్కప్ అనుమతించబడదు.</translation>
 <translation id="1750315445671978749">అన్ని డౌన్‌లోడ్‌లను బ్లాక్ చేయి</translation>
 <translation id="1781356041596378058">అలాగే, ఈ విధానం Android డెవలపర్ ఎంపికలకు కూడా ప్రాప్యతను నియంత్రిస్తుంది. మీరు ఈ విధానాన్ని ఒప్పుకి సెట్ చేస్తే, వినియోగదారులు డెవలపర్ ఎంపికలను ప్రాప్యత చేయలేరు. మీరు ఈ విధానాన్ని తప్పుకి సెట్ చేసినా లేదా ఏదీ సెట్ చేయకపోయినా, Android సెట్టింగ్‌ల అనువర్తనంలో బిల్డ్ సంఖ్యపై ఏడుసార్లు నొక్కడం ద్వారా వినియోగదారులు డెవలపర్ ఎంపికలను ప్రాప్యత చేయగలరు.</translation>
 <translation id="1797233582739332495">పునఃప్రారంభం అవసరమని సూచించే పునరావృత ప్రాంప్ట్‌ను వినియోగదారుకు చూపండి</translation>
@@ -668,6 +668,7 @@
 <translation id="2529880111512635313">నిర్బంధంగా ఇన్‌స్టాల్ చేసిన అనువర్తనాలు మరియు పొడిగింపుల జాబితాను కాన్ఫిగర్ చేయండి</translation>
 <translation id="253135976343875019">AC శక్తితో అమలు అవుతున్నప్పుడు నిష్క్రియ హెచ్చరిక ఆలస్యం</translation>
 <translation id="2536525645274582300">Google స్థాన సేవలను ప్రారంభించాలో లేదో వినియోగదారు నిర్ణయిస్తారు</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> క్లౌడ్ నివేదనను ప్రారంభిస్తుంది</translation>
 <translation id="2550593661567988768">సింప్లెక్స్ ముద్రణ మాత్రమే</translation>
 <translation id="2552966063069741410">సమయ మండలి</translation>
 <translation id="2562339630163277285">తక్షణ ఫలితాలను అందించడానికి ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URL <ph name="SEARCH_TERM_MARKER" /> అనే స్ట్రింగ్‌ను కలిగి ఉంటుంది, ఇది ప్రశ్న సమయంలో వినియోగదారు అప్పటివరకు నమోదు చేసిన వచనంతో భర్తీ చేస్తుంది.
@@ -1428,11 +1429,11 @@
 
       ఈ విధానాన్ని ఉపయోగించినట్లయితే, ఈ విధానంలో ఉన్న విలువలకు సరిపోలిన idలను కలిగిన ప్రింటర్‌లు మాత్రమే వినియోగదారుకి అందుబాటులో ఉంటాయి. idలు తప్పనిసరిగా <ph name="BULK_PRINTERS_POLICY" />లో పేర్కొనబడిన ఫైల్‌లోని "id" లేదా "guid" ఫీల్డ్‌లకు సంబంధితంగా ఉండాలి.
       </translation>
-<translation id="427632463972968153">POSTతో చిత్ర శోధన చేస్తున్నప్పుడు ఉపయోగించే పరామితులను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {imageThumbnail} వంటి టెంప్లేట్ పరామితి అయితే, ఇది వాస్తవ చిత్రం యొక్క సూక్ష్మచిత్ర డేటాతో భర్తీ చేయబడుతుంది.
+<translation id="427632463972968153">POSTతో చిత్ర శోధన చేస్తున్నప్పుడు ఉపయోగించే పారామీటర్‌లను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. ఏదైనా ఒక విలువ ఎగువ ఉదాహరణలోని {imageThumbnail} వంటి టెంప్లేట్ పారామీటర్ అయితే, అది వాస్తవ చిత్రం యొక్క సూక్ష్మచిత్ర డేటాతో భర్తీ చేయబడుతుంది.
 
           ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, చిత్రం శోధన అభ్యర్థన GET పద్ధతిని ఉపయోగించి పంపబడుతుంది.
 
-          'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation>
+          'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం వర్తించబడుతుంది.</translation>
 <translation id="4285674129118156176">ARCని ఉపయోగించడానికి అనుబంధిత వినియోగదారులను అనుమతించండి</translation>
 <translation id="4298509794364745131"><ph name="PRODUCT_OS_NAME" /> లాక్ స్క్రీన్‌పై విషయ సేకరణ యాప్‌‌‌గా ఆరంభించగలిగే యాప్‌ల జాబితాను పేర్కొంటుంది.
 
@@ -1475,9 +1476,9 @@
 <translation id="4408428864159735559">ముందుగా కాన్ఫిగర్ చేసిన నెట్‌వర్క్ ఫైల్ షేర్‌ల జాబితా.</translation>
 <translation id="4410236409016356088">కుదింపు నెట్‌వర్క్ బ్యాండ్‌విడ్త్‌ని ప్రారంభించండి</translation>
 <translation id="441217499641439905"><ph name="PRODUCT_OS_NAME" /> ఫైల్‌ల యాప్‌లో సెల్యులార్ కనెక్షన్‌ల ద్వారా Google డిస్క్‌ని నిలిపివేయండి</translation>
-<translation id="4415603335307944578">ఈ విధానాన్ని ఒప్పునకు సెట్ చేస్తే లేదా కాన్ఫిగర్ చేయకుంటే, OS అప్‌గ్రేడ్ చేసిన అనంతరం మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని మళ్లీ చూపుతుంది.
+<translation id="4415603335307944578">ఈ విధానాన్ని ఒప్పుకు సెట్ చేస్తే లేదా కాన్ఫిగర్ చేయకుంటే, OS అప్‌గ్రేడ్ చేశాక మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని మళ్లీ చూపుతుంది.
 
-ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, OS అప్‌గ్రేడ్ చేసిన అనంతరం మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని మళ్లీ చూపదు.</translation>
+ఈ విధానాన్ని తప్పుకు సెట్ చేస్తే, OS అప్‌గ్రేడ్ చేశాక మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని మళ్లీ చూపదు.</translation>
 <translation id="4418726081189202489">ఈ విధానం తప్పుకు సెట్ చేయబడితే Google సర్వర్‌కు <ph name="PRODUCT_NAME" /> సందర్భానుసారంగా ప్రశ్నలను పంపించడాన్ని అడ్డుకుంటుంది. ఈ విధానం ఒప్పుకు సెట్ చేయబడితే లేదా దేనికీ సెట్ చేయబడకపోతే ఈ ప్రశ్నలు ప్రారంభించబడతాయి.</translation>
 <translation id="4423597592074154136">ప్రాక్సీ సెట్టింగ్‌లని మాన్యవల్‌గా పేర్కొను</translation>
 <translation id="4429220551923452215">బుక్‌మార్క్ పట్టీలో అనువర్తనాల సత్వరమార్గాన్ని ప్రారంభిస్తుంది లేదా నిలిపివేస్తుంది.
@@ -1806,7 +1807,7 @@
 <translation id="5247006254130721952">హానికరమైన డౌన్‌లోడ్‌లను బ్లాక్ చేయి</translation>
 <translation id="5248863213023520115"><ph name="MS_AD_NAME" /> సర్వర్ నుండి Kerberos టిక్కెట్‌ను అభ్యర్థిస్తున్నప్పుడు అనుమతించబడే ఎన్‌క్రిప్షన్ రకాలను సెట్ చేస్తుంది.
 
-      విధానాన్ని 'అన్ని'కి సెట్ చేస్తే, ఎన్‌క్రిప్షన్ రకాలు రెండూ 'aes256-cts-hmac-sha1-96' మరియు 'aes128-cts-hmac-sha1-96', అలాగే RC4 ఎన్‌క్రిప్షన్ రకం 'rc4-hmac' అనుమతించబడతాయి. సర్వర్ రెండు రకాలకూ మద్దతు ఇచ్చేట్లయితే AES ఎన్‌క్రిప్షన్‌కి ప్రాధాన్యత ఇవ్వబడుతుంది. RC4 అసురక్షితమైనదిగా పరిగణించబడుతుంది మరియు AES ఎన్‌క్రిప్షన్‌కి మద్దతివ్వడం కోసం అవకాశం ఉంటే సర్వర్ తిరిగి కాన్ఫిగర్ చేయాలని గమనించండి.
+      విధానాన్ని 'అన్నీ'కి సెట్ చేస్తే, AES ఎన్‌క్రిప్షన్ రకాలు రెండూ 'aes256-cts-hmac-sha1-96' మరియు 'aes128-cts-hmac-sha1-96'లతో పాటు, RC4 ఎన్‌క్రిప్షన్ రకం 'rc4-hmac' అనుమతించబడతాయి. సర్వర్ రెండు రకాలకూ మద్దతు ఇచ్చేటట్లయితే AES ఎన్‌క్రిప్షన్‌కి ప్రాధాన్యత ఇవ్వబడుతుంది. RC4 అసురక్షితమైనదిగా పరిగణించబడుతుంది కాబట్టి AES ఎన్‌క్రిప్షన్‌కి మద్దతివ్వడం కోసం అవకాశం ఉంటే సర్వర్ తిరిగి కాన్ఫిగర్ చేయాలని గమనించండి.
 
       విధానాన్ని 'శక్తివంతమైనది'కి సెట్ చేసినా లేదా సెట్ చేయకుండా వదిలివేసినా, కేవలం AES ఎన్‌క్రిప్షన్ రకాలు మాత్రమే అనుమతించబడతాయి.
 
@@ -2003,7 +2004,7 @@
           మీరు ఈ సెట్టింగ్‌ను నిలిపివేస్తే, పాస్‌వర్డ్ మేనేజర్ నిల్వ చేసిన పాస్‌వర్డ్‌లను స్పష్టమైన వచనంలా పాస్‌వర్డ్ మేనేజర్ విండోలో చూపడాన్ని అనుమతించదు.
 
           మీరు ఈ సెట్టింగ్‌ను ప్రారంభిస్తే లేదా విధానాన్ని సెట్ చేయకపోతే, వినియోగదారులు పాస్‌వర్డ్ మేనేజర్‌లో వారి పాస్‌వర్డ్‌లను స్పష్టమైన వచనంలా వీక్షించగలరు.</translation>
-<translation id="5620392548325769024">OS అప్‌గ్రేడ్ చేసిన అనంతరం మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని చూపడం ప్రారంభిస్తుంది</translation>
+<translation id="5620392548325769024">OS అప్‌గ్రేడ్ చేశాక మొదటిసారి బ్రౌజర్‌ను ప్రారంభించినప్పుడు స్వాగత పేజీని చూపడం ప్రారంభిస్తుంది</translation>
 <translation id="5630352020869108293">చివరి సెషన్‌ని పునరుద్ధరించు</translation>
 <translation id="5645779841392247734">ఈ సైట్‌లలో కుక్కీలని అనుమతించు</translation>
 <translation id="5689430183304951538">డిఫాల్ట్ ముద్రణ పేజీ పరిమాణం</translation>
@@ -2222,6 +2223,15 @@
 <translation id="6141402445226505817">ఎల్లప్పుడూ స్థూల సమయ మండలి గుర్తింపును ఉపయోగించండి</translation>
 <translation id="6145799962557135888">JavaScriptను అమలు చేయడానికి అనుమతించబడే సైట్‌లను పేర్కొనే url నమూనాల జాబితాను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ విధానం సెట్ చేయకుండా వదిలి పెడితే అన్ని సైట్‌లకు సార్వజనీన డిఫాల్ట్ విలువ ఇది సెట్ చేయబడి ఉంటే 'DefaultJavaScriptSetting' విధానం నుండి లేదా చేయబడకపోతే వినియోగదారు వ్యక్తిగత కాన్ఫిగరేషన్ నుండి ఉపయోగించబడుతుంది.</translation>
 <translation id="614662973812186053">అలాగే ఈ విధానం Android వినియోగం మరియు విశ్లేషణ డేటా సేకరణను కూడా నియంత్రిస్తుంది.</translation>
+<translation id="6153048425064249648">బ్రౌజర్ చర్య గురించి సమాచారాన్ని Google నిర్వాహకుల కన్సోల్‌కు అప్‌లోడ్ చేసే <ph name="PRODUCT_NAME" /> క్లౌడ్ నివేదనను ఈ విధానం నియంత్రిస్తుంది.
+
+      ఈ విధానాన్ని సెట్ చేయకుంటే లేదా తప్పు అని సెట్ చేస్తే, డేటా సేకరించబడదు, అప్‌లోడ్ చేయబడదు.
+      ఈ విధానాన్ని ఒప్పు అని సెట్ చేస్తే, డేటా సేకరించబడుతుంది మరియు Google నిర్వాహకుల కన్సోల్‌కి అప్‌లోడ్ చేయబడుతుంది.
+      ఏ డేటాని అప్‌లోడ్ చేయాలో నియంత్రించడం కోసం, దయచేసి సమూహ Chrome నివేదన ఎక్స్‌టెన్షన్‌లోని విధానాలను ఉపయోగించండి.
+
+      మెషీన్‌ని <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />తో నమోదు చేసినప్పుడు మాత్రమే ఈ విధానం అమలులోకి వస్తుంది.
+
+      ఈ విధానం నివేదన కోసం <ph name="CHROME_REPORTING_EXTENSION_NAME" />ని నిర్బంధంగా ఇన్‌స్టాల్ చేస్తుంది మరియు ఆ ఎక్స్‌టెన్షన్‌కు సంబంధించిన ఏవైనా ఎక్స్‌టెన్షన్ విధానాలు ఉన్నట్లయితే వాటిని భర్తీ చేస్తుంది.</translation>
 <translation id="6155936611791017817">లాగిన్ స్క్రీన్‌లో పెద్ద కర్సర్ యొక్క డిఫాల్ట్ స్థితిని సెట్ చేయండి</translation>
 <translation id="6157537876488211233">కామాతో వేరుపరచబడిన ప్రాక్సీ బైపాస్ నియమాల జాబితా</translation>
 <translation id="6158324314836466367">వ్యాపార వెబ్ స్టోర్ పేరు (విస్మరించబడింది)</translation>
@@ -3382,14 +3392,6 @@
           బహుళ సర్వర్ పేర్లను కామాలతో వేరు చేయండి. వైల్డ్‌కార్డ్‌లు (*) అనుమతించబడతాయి.
 
           మీరు ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే <ph name="PRODUCT_NAME" /> సర్వర్ ఇంట్రానెట్‌లో ఉంటే గుర్తించడానికి ప్రయత్నించి ఆపై మాత్రమే IWA అభ్యర్థనలకు ప్రతిస్పందిస్తుంది.  సర్వర్ ఇంటర్నెట్‌గా గుర్తించబడితే, అప్పుడు దాని నుండి IWA అభ్యర్థనలను <ph name="PRODUCT_NAME" /> విస్మరిస్తుంది.</translation>
-<translation id="8669669491594628013">పాస్‌వర్డ్ రక్షణ హెచ్చరికను యాక్టివేట్ చేయడాన్ని నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది. వినియోగదారులు తమ రక్షిత పాస్‌వర్డ్‌ని అనుమానాస్పదమయ్యే అవకాశమున్న సైట్‌లలో తిరిగి ఉపయోగించినప్పుడు పాస్‌వర్డ్ రక్షణ వారిని హెచ్చరిస్తుంది.
-
-      ఏ పాస్‌వర్డ్‌ను రక్షించాలో కాన్ఫిగర్ చేయడానికి 'PasswordProtectionLoginURLs' మరియు 'PasswordProtectionChangePasswordURL' విధానాలను మీరు ఉపయోగించవచ్చు.
-
-      ఈ విధానాన్ని 'PasswordProtectionWarningOff'కి సెట్ చేసినట్లయితే, పాస్‌వర్డ్ రక్షణ హెచ్చరిక చూపబడదు.
-      ఈ విధానాన్ని 'PasswordProtectionWarningOnPasswordReuse'కి సెట్ చేసినట్లయితే, వినియోగదారులు తమ సురక్షిత పాస్‌వర్డ్‌ని వైట్‌లిస్ట్‌లో లేని సైట్‌లో మళ్లీ వినియోగించినప్పుడు పాస్‌వర్డ్ రక్షణ హెచ్చరిక చూపబడుతుంది.
-      ఈ విధానాన్ని 'PasswordProtectionWarningOnPhishingReuse'కి సెట్ చేసినట్లయితే, వినియోగదారులు తమ రక్షిత పాస్‌వర్డ్‌ని ఫిషింగ్ సైట్‌లో మళ్లీ ఉపయోగించినప్పుడు పాస్‌వర్డ్ రక్షణ హెచ్చరిక చూపబడుతుంది.
-      ఈ విధానాన్ని సెట్ చేయకపోయినట్లయితే, పాస్‌వర్డ్ రక్షణ సేవ Google పాస్‌వర్డ్‌లకు మాత్రమే రక్షణ కల్పిస్తుంది, కానీ వినియోగదారు ఈ సెట్టింగ్‌ని మార్చుకోగలరు .</translation>
 <translation id="8672321184841719703">లక్ష్య స్వీయ నవీకరణ సంస్కరణ</translation>
 <translation id="867410340948518937">U2F (సార్వజనీన రెండవ కారకం)</translation>
 <translation id="8682611302223077049">పెండింగ్‌లోని అప్‌డేట్‌ని అమలు చేయడం కోసం <ph name="PRODUCT_NAME" />ని రీలాంచ్ చేయాల్సిన లేదా <ph name="PRODUCT_OS_NAME" /> పరికరాన్ని పునఃప్రారంభించాల్సిన సంగతి వినియోగదారులకు ఎంత సమయ వ్యవధిలో గుర్తు చేయాలో, మిల్లీసెకన్లలో సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 540049d..c545f38 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -582,6 +582,7 @@
 <translation id="2529880111512635313">กำหนดค่ารายชื่อแอปและส่วนขยายที่บังคับให้ติดตั้ง</translation>
 <translation id="253135976343875019">คำเตือนการไม่ใช้งานล่าช้าเมื่อทำงานโดยใช้ไฟ AC</translation>
 <translation id="2536525645274582300">ผู้ใช้ตัดสินใจว่าจะเปิดใช้บริการตำแหน่งของ Google หรือไม่</translation>
+<translation id="254653220329944566">เปิดใช้การรายงานในระบบคลาวด์ของ <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">การพิมพ์ด้านเดียวเท่านั้น</translation>
 <translation id="2552966063069741410">เขตเวลา</translation>
 <translation id="2562339630163277285">ระบุ URL ของเครื่องมือค้นหาที่ใช้ในการให้ผลการค้นหาแบบทันใจ URL ควรมีสตริง <ph name="SEARCH_TERM_MARKER" /> ซึ่งจะถูกแทนที่ด้วยข้อความที่ผู้ใช้ป้อนขณะค้นหา
@@ -1872,6 +1873,15 @@
 <translation id="6133088669883929098">อนุญาตให้เว็บไซต์ทั้งหมดใช้การสร้างคีย์</translation>
 <translation id="6145799962557135888">ช่วยให้คุณกำหนดรายการของรูปแบบ URL ที่ระบุไซต์ที่ได้รับอนุญาตให้เรียกใช้ JavaScript หากนโยบายนี้ไม่มีการกำหนดไว้ จะใช้ค่าเริ่มต้นทั่วไปสำหรับไซต์ทั้งหมด ทั้งจากนโยบาย "DefaultJavaScriptSetting" หากมีการตั้งค่าไว้ หรือจากการกำหนดค่าส่วนบุคคลของผู้ใช้เอง</translation>
 <translation id="614662973812186053">นโยบายนี้จะยังควบคุมการใช้งาน Android และการรวบรวมข้อมูลการวินิจฉัยด้วยเช่นกัน</translation>
+<translation id="6153048425064249648">นโยบายนี้ควบคุมการรายงานในระบบคลาวด์ของ <ph name="PRODUCT_NAME" /> ซึ่งจะอัปโหลดข้อมูลเกี่ยวกับการทำงานของเบราว์เซอร์ไปยังคอนโซล Google Admin
+
+      เมื่อไม่ได้ตั้งค่านโยบายนี้หรือตั้งค่าเป็น "เท็จ" จะไม่มีการเก็บรวบรวมหรืออัปโหลดข้อมูล
+      เมื่อตั้งค่านโยบายนี้เป็น "จริง" ระบบจะเก็บรวบรวมและอัปโหลดข้อมูลไปยังคอนโซล Google Admin
+      ในการควบคุมประเภทข้อมูลที่จะอัปโหลด โปรดใช้นโยบายต่างๆ ในกลุ่ม "ส่วนขยาย Chrome Reporting"
+
+      นโยบายนี้จะมีผลต่อเมื่อมีการลงทะเบียนเครื่องกับ <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />
+
+      นโยบายนี้บังคับให้ติดตั้ง <ph name="CHROME_REPORTING_EXTENSION_NAME" /> สำหรับการรายงานและลบล้างนโยบายส่วนขยายใดก็ตามที่เกี่ยวข้องกับส่วนขยายดังกล่าว</translation>
 <translation id="6155936611791017817">ตั้งค่าสถานะเริ่มต้นของเคอร์เซอร์ขนาดใหญ่บนหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="6157537876488211233">รายการกฎการข้ามพร็อกซีที่คั่นด้วยเครื่องหมายจุลภาค</translation>
 <translation id="6158324314836466367">ชื่อเว็บสโตร์ขององค์กร (เลิกใช้งาน)</translation>
@@ -2923,14 +2933,6 @@
           คั่นชื่อเซิร์ฟเวอร์หลายชื่อด้วยเครื่องหมายจุลภาค อนุญาตให้ใช้อักขระตัวแทน (*)
 
           หากคุณปล่อยนโยบายนี้ไว้โดยไม่มีการตั้งค่า <ph name="PRODUCT_NAME" /> จะพยายามตรวจหาว่าเซิร์ฟเวอร์อยู่บนอินทราเน็ตไหม และจะตอบรับคำขอ IWA หลังจากนั้นเท่านั้น หากมีการตรวจพบว่าเซิร์ฟเวอร์เป็นอินเทอร์เน็ต <ph name="PRODUCT_NAME" /> จะเพิกเฉยต่อคำขอ IWA</translation>
-<translation id="8669669491594628013">อนุญาตให้คุณควบคุมการทริกเกอร์คำเตือนการปกป้องรหัสผ่าน การปกป้องรหัสผ่านจะแจ้งเตือนเมื่อผู้ใช้ใช้รหัสผ่านที่มีการปกป้องซ้ำในเว็บไซต์ที่น่าสงสัย
-
-      คุณใช้นโยบาย "PasswordProtectionLoginURLs" และ "PasswordProtectionChangePasswordURL" เพื่อกำหนดค่ารหัสผ่านที่จะปกป้องได้
-
-      หากตั้งค่านโยบายนี้เป็น "PasswordProtectionWarningOff" ระบบจะไม่แสดงคำเตือนการปกป้องรหัสผ่าน
-      หากตั้งค่านโยบายนี้เป็น "PasswordProtectionWarningOnPasswordReuse" ระบบจะแสดงคำเตือนการปกป้องรหัสผ่านเมื่อผู้ใช้ใช้รหัสผ่านที่มีการปกป้องซ้ำในเว็บไซต์ที่ไม่ได้อยู่ในรายการอนุญาตพิเศษ
-      หากตั้งค่านโยบายนี้เป็น "PasswordProtectionWarningOnPhishingReuse" ระบบจะแสดงคำเตือนการปกป้องรหัสผ่านเมื่อผู้ใช้ใช้รหัสผ่านที่มีการปกป้องซ้ำในเว็บไซต์ฟิชชิง
-      หากไม่ได้ตั้งค่านโยบายนี้ บริการปกป้องรหัสผ่านจะปกป้องเฉพาะรหัสผ่าน Google แต่ผู้ใช้จะเปลี่ยนการตั้งค่านี้ได้</translation>
 <translation id="8672321184841719703">กำหนดเป้าหมายรุ่นที่อัปเดตอัตโนมัติ</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8682611302223077049">อนุญาตให้คุณตั้งค่าระยะเวลา (หน่วยเป็นมิลลิวินาที) ที่จะแสดงการแจ้งเตือนให้ผู้ใช้ทราบว่าต้องเปิด <ph name="PRODUCT_NAME" /> ขึ้นมาใหม่หรือต้องรีสตาร์ทอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> เพื่อนำอัปเดตที่รอดำเนินการไปใช้
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index bd9318a8..ad6b90bc 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -588,6 +588,7 @@
 <translation id="2529880111512635313">Yüklenmeye zorlanan uygulama ve uzantıların listesini yapılandır</translation>
 <translation id="253135976343875019">AC güçle çalışırken boşta kalma uyarısı gecikmesi</translation>
 <translation id="2536525645274582300">Google Konum Hizmetleri'nin etkinleştirilip etkinleştirilmeyeceğine kullanıcı karar verir</translation>
+<translation id="254653220329944566"><ph name="PRODUCT_NAME" /> bulut raporlamayı etkinleştirir</translation>
 <translation id="2550593661567988768">Yalnızca tek yönlü yazdır</translation>
 <translation id="2552966063069741410">Saat dilimi</translation>
 <translation id="2562339630163277285">Anında arama sonuçları sağlamak için kullanılan arama motorunun URL'sini belirtir. URL, <ph name="SEARCH_TERM_MARKER" /> dizesini içermelidir. Sorgu sırasında, kullanıcının girdiği metin bu dizenin yerini alır.
@@ -1933,6 +1934,15 @@
 
           Bu politika ayarlanmadan bırakılırsa, 'DefaultJavaScriptSetting' politikası ayarlandıysa buradaki değer, aksi takdirde kullanıcının kişisel yapılandırması tüm siteler için genel varsayılan değer olarak kullanılır.</translation>
 <translation id="614662973812186053">Bu politika, Android kullanımını ve teşhis verilerini toplama çalışmalarını da kontrol eder.</translation>
+<translation id="6153048425064249648">Bu politika, tarayıcı işlemleriyle ilgili bilgileri Google Yönetici konsoluna yükleyen <ph name="PRODUCT_NAME" /> bulut raporlamayı kontrol eder.
+
+      Bu politika ayarlanmadan bırakıldığında veya False (Yanlış) değerine ayarlandığında hiçbir veri toplanmaz veya yüklenmez.
+      Bu politika True (Doğru) değerine ayarlandığında veriler toplanır ve Google Yönetici konsoluna yüklenir.
+      Hangi verilerin yüklendiğini kontrol etmek için lütfen Chrome Raporlama Uzantısı grubundaki politikaları kullanın.
+
+      Bu politika ancak makine <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> politikasına kaydolduğunda geçerli olur.
+
+      Bu politika, raporlama için <ph name="CHROME_REPORTING_EXTENSION_NAME" /> uzantısını zorla yükler ve söz konusu uzantıyla ilgili uzantı politikalarını geçersiz kılar.</translation>
 <translation id="6155936611791017817">Giriş ekranında büyük imleç modunun varsayılan durumunu ayarla</translation>
 <translation id="6157537876488211233">Proxy atlama kurallarının noktalı virgül ile ayrılmış listesi</translation>
 <translation id="6158324314836466367">Kurumsal web mağazası adı (kullanımdan kaldırıldı)</translation>
@@ -2992,14 +3002,6 @@
           Birden fazla sunucu adını virgülle ayırın. Joker karakterlere (*) izin verilir.
 
           Bu politikayı ayarlanmamış olarak bırakırsanız, <ph name="PRODUCT_NAME" /> sunucunun İntranet'te olup olmadığını saptamaya çalışır ve buna göre IWA taleplerini yanıtlar. Sunucunun İnternet'te olduğu saptanırsa, sunucudan gelen IWA talepleri <ph name="PRODUCT_NAME" /> tarafından yoksayılır.</translation>
-<translation id="8669669491594628013">Şifre koruma uyarısının tetiklenmesini kontrol etmenize olanak tanır. Şifre koruma, korunan şifrelerini şüpheli olabilecek sitelerde yeniden kullandıklarında kullanıcıları uyarır.
-
-      Korunacak şifreyi yapılandırmak için "PasswordProtectionLoginURLs" ve "PasswordProtectionChangePasswordURL" politikalarını kullanabilirsiniz.
-
-      Bu politikanın "PasswordProtectionWarningOff" değerine ayarlanması halinde herhangi bir şifre koruma uyarısı gösterilmez.
-      Bu politikanın "PasswordProtectionWarningOnPasswordReuse" değerine ayarlanması halinde kullanıcı korunan şifresini beyaz listede yer almayan bir sitede yeniden kullandığında şifre koruma uyarısı gösterilir.
-      Bu politikanın "PasswordProtectionWarningOnPhishingReuse" değerine ayarlanması halinde kullanıcı korunan şifresini kimlik avı sitelerinde yeniden kullandığında şifre koruma uyarısı gösterilir.
-      Bu politikanın ayarlanmadan bırakılması halinde şifre koruma hizmeti yalnızca Google şifrelerini korur ancak kullanıcı bu ayarı değiştirebilir.</translation>
 <translation id="8672321184841719703">Hedef Otomatik Güncelleme Sürümü</translation>
 <translation id="867410340948518937">U2F (Evrensel İkinci Faktör)</translation>
 <translation id="8682611302223077049">Beklemedeki bir güncellemenin uygulanması için <ph name="PRODUCT_NAME" /> ürününün veya bir <ph name="PRODUCT_OS_NAME" /> cihazının yeniden başlatılması gerektiği konusunda kullanıcıların bilgilendirileceği dönemi milisaniye cinsinden ayarlamanıza olanak tanır.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 673f9e9..a234619 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2946,13 +2946,6 @@
           Імена серверів потрібно розділяти комами. Дозволяються символи підстановки (*).
 
           Якщо це правило не встановлено, <ph name="PRODUCT_NAME" /> спробує визначити, чи сервер розміщено в інтранет-мережі, і лише тоді відповість на запити IWA. Якщо сервер виявлено в інтранет-мережі, <ph name="PRODUCT_NAME" /> ігноруватиме запити IWA, які надсилає сервер.</translation>
-<translation id="8669669491594628013">Дає змогу контролювати активацію застережень про захист паролем. Користувачі отримуватимуть такі попередження, коли використовуватимуть свій захищений пароль на потенційно підозрілих сайтах.
-
-      За допомогою правил PasswordProtectionLoginURLs і PasswordProtectionChangePasswordURL можна вибрати, які паролі мають бути захищеними.
-      Якщо для цього правила вибрано значення PasswordProtectionWarningOff, застереження про захист паролем не з’являтиметься.
-      Якщо для цього правила вибрано значення PasswordProtectionWarningOnPasswordReuse, застереження про захист паролем з’являється, коли користувач вводить свій захищений пароль на сайті, якого немає в білому списку.
-      Якщо для цього правила вибрано значення PasswordProtectionWarningOnPhishingReuse, застереження про захист паролем з’являється, коли користувач вводить свій захищений пароль на фішинговому сайті.
-      Якщо це правило не налаштовано, служба захисту паролів працюватиме лише для паролів Google. Цей параметр можна змінити.</translation>
 <translation id="8672321184841719703">Цільова версія автоматичного оновлення</translation>
 <translation id="867410340948518937">U2F (універсальний другий фактор)</translation>
 <translation id="8682611302223077049">Дає змогу встановити період часу (у мілісекундах), протягом якого користувачі бачитимуть сповіщення про те, що потрібно перезапустити <ph name="PRODUCT_NAME" /> або пристрій <ph name="PRODUCT_OS_NAME" />, щоб установити нове оновлення.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 1807f79..d3bbd88 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -603,6 +603,7 @@
 <translation id="2529880111512635313">Định cấu hình danh sách các ứng dụng và tiện ích buộc phải cài đặt</translation>
 <translation id="253135976343875019">Thời gian chờ cảnh báo trạng thái không sử dụng khi chạy trên nguồn AC</translation>
 <translation id="2536525645274582300">Người dùng quyết định có bật dịch vụ vị trí của Google hay không</translation>
+<translation id="254653220329944566">Bật tính năng báo cáo đám mây của <ph name="PRODUCT_NAME" /></translation>
 <translation id="2550593661567988768">Chỉ in một mặt</translation>
 <translation id="2552966063069741410">Múi giờ</translation>
 <translation id="2562339630163277285">Chỉ định URL của công cụ tìm kiếm được sử dụng để cung cấp kết quả tức thì. URL phải chứa chuỗi <ph name="SEARCH_TERM_MARKER" />. Chuỗi này sẽ được thay thế tại thời điểm truy vấn bằng văn bản mà người dùng đã nhập từ trước tới nay.
@@ -1957,6 +1958,15 @@
 
           Nếu không thiết lập chính sách này, giá trị mặc định chung từ chính sách 'DefaultImagesSetting' nếu chính sách này được thiết lập hoặc từ cấu hình cá nhân của người dùng sẽ được sử dụng cho tất cả các trang web.</translation>
 <translation id="614662973812186053">Chính sách này cũng kiểm soát việc thu thập dữ liệu chẩn đoán và sử dụng Android.</translation>
+<translation id="6153048425064249648">Chính sách này kiểm soát tính năng báo cáo đám mây của <ph name="PRODUCT_NAME" />. Tính năng này tải thông tin về hoạt động của trình duyệt lên Bảng điều khiển dành cho quản trị viên của Google.
+
+      Khi không đặt chính sách này hoặc đặt thành False, không có dữ liệu nào được thu thập hoặc tải lên.
+      Khi đặt chính sách này thành True, dữ liệu sẽ được thu thập và tải lên Bảng điều khiển dành cho quản trị viên của Google.
+      Để kiểm soát loại dữ liệu nào được tải lên, hãy sử dụng các chính sách trong nhóm Tiện ích báo cáo của Chrome.
+
+      Chính sách này chỉ có hiệu lực khi máy được đăng ký với <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.
+
+      Chính sách này sẽ buộc cài đặt <ph name="CHROME_REPORTING_EXTENSION_NAME" /> để sử dụng tính năng báo cáo, cũng như sẽ ghi đè mọi chính sách về tiện ích liên quan đến tiện ích đó.</translation>
 <translation id="6155936611791017817">Đặt trạng thái của con trỏ lớn mặc định trên màn hình đăng nhập</translation>
 <translation id="6157537876488211233">Danh sách quy tắc bỏ qua proxy được phân cách bằng dấu phẩy</translation>
 <translation id="6158324314836466367">Tên cửa hàng trực tuyến dành cho doanh nghiệp (không dùng nữa)</translation>
@@ -3025,14 +3035,6 @@
           Phân tách tên của nhiều máy chủ bằng dấu phẩy. Cho phép ký tự đại diện (*).
 
          Nếu bạn không đặt chính sách này, <ph name="PRODUCT_NAME" /> sẽ cố gắng phát hiện xem máy chủ có ở trên mạng nội bộ hay không, sau đó mới phản hồi yêu cầu IWA.  Nếu máy chủ được phát hiện là ở trên mạng Internet thì yêu cầu IWA từ máy chủ sẽ bị <ph name="PRODUCT_NAME" /> bỏ qua.</translation>
-<translation id="8669669491594628013">Cho phép bạn kiểm soát việc kích hoạt cảnh báo bảo vệ mật khẩu. Dịch vụ bảo vệ mật khẩu sẽ cảnh báo người dùng khi họ sử dụng lại mật khẩu được bảo vệ trên các trang web có thể đáng ngờ.
-
-      Bạn có thể sử dụng các chính sách 'PasswordProtectionLoginURLs' và 'PasswordProtectionChangePasswordURL' để định cấu hình mật khẩu cần bảo vệ.
-
-      Nếu bạn đặt chính sách này thành 'PasswordProtectionWarningOff', thì sẽ không có cảnh báo bảo vệ mật khẩu nào hiển thị.
-      Nếu bạn đặt chính sách này thành 'PasswordProtectionWarningOnPasswordReuse', thì cảnh báo bảo vệ mật khẩu sẽ hiển thị khi người dùng sử dụng lại mật khẩu được bảo vệ trên trang web nằm ngoài danh sách cho phép.
-      Nếu bạn đặt chính sách này thành 'PasswordProtectionWarningOnPhishingReuse', thì cảnh báo bảo vệ mật khẩu sẽ hiển thị khi người dùng sử dụng lại mật khẩu được bảo vệ trên trang web lừa đảo.
-      Nếu bạn không đặt chính sách này, thì dịch vụ bảo vệ mật khẩu sẽ chỉ bảo vệ mật khẩu của Google nhưng người dùng có thể thay đổi tùy chọn cài đặt này.</translation>
 <translation id="8672321184841719703">Phiên bản cập nhật tự động đích</translation>
 <translation id="867410340948518937">U2F (Hai yếu tố chung)</translation>
 <translation id="8682611302223077049">Cho phép đặt khoảng thời gian tính bằng mili giây mà người dùng nhận được thông báo phải chạy lại <ph name="PRODUCT_NAME" /> hoặc khởi động lại thiết bị chạy <ph name="PRODUCT_OS_NAME" /> để áp dụng bản cập nhật đang chờ xử lý.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 4d384e1..a10b2e0 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -553,6 +553,7 @@
 <translation id="2529880111512635313">配置强制安装的应用和扩展程序的列表</translation>
 <translation id="253135976343875019">使用交流电源供电时的闲置警告延迟时间</translation>
 <translation id="2536525645274582300">用户可决定是否要启用 Google 位置信息服务</translation>
+<translation id="254653220329944566">启用 <ph name="PRODUCT_NAME" /> 云端报告</translation>
 <translation id="2550593661567988768">仅限单面打印</translation>
 <translation id="2552966063069741410">时区</translation>
 <translation id="2562339630163277285">指定用于提供即搜即得结果的搜索引擎网址。该网址应包含字符串“<ph name="SEARCH_TERM_MARKER" />”,系统会在用户进行查询时将该字符串替换为用户输入的文字。
@@ -1836,6 +1837,15 @@
 <translation id="6133088669883929098">允许所有网站使用密钥生成功能</translation>
 <translation id="6145799962557135888">可让您设置网址格式的列表,这些网址格式用于指定允许运行 JavaScript 的网站。在未设置此政策的情况下,如果设置了“DefaultJavaScriptSetting”政策,那么将对该政策中的所有网站使用全局默认值,否则将对用户个人配置中的所有网站使用全局默认值。</translation>
 <translation id="614662973812186053">此政策亦用于控制对 Android 使用情况和诊断数据的收集。</translation>
+<translation id="6153048425064249648">此政策用于控制可将浏览器操作信息上传到 Google 管理控制台的 <ph name="PRODUCT_NAME" /> 云端报告。
+
+      当此政策设为 False 或未设置时,系统不会收集或上传任何数据。
+      当此政策设为 True 时,系统会收集数据并将其上传到 Google 管理控制台。
+      要想控制系统所上传的数据,请使用 Chrome Reporting Extension 组中的政策。
+
+      仅当已使用 <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> 注册相应设备后,此政策才有效。
+
+      此政策会强制安装 <ph name="CHROME_REPORTING_EXTENSION_NAME" /> 以便生成报告,并会替换与该扩展程序相关的所有扩展程序政策。</translation>
 <translation id="6155936611791017817">设置登录屏幕上大号光标的默认状态</translation>
 <translation id="6157537876488211233">代理绕过规则的逗号分隔列表</translation>
 <translation id="6158324314836466367">企业网上应用店名称(已弃用)</translation>
@@ -2849,14 +2859,6 @@
           如果有多个服务器名称,要使用英文逗号分隔。允许使用通配符 (*)。
 
           如果此政策未设置,<ph name="PRODUCT_NAME" /> 将会尝试检测某个服务器是否在内网上,只有当该服务器在内网上时,该浏览器才会回应 IWA 请求。如果检测到某个服务器在互联网上,<ph name="PRODUCT_NAME" /> 将忽略来自它的 IWA 请求。</translation>
-<translation id="8669669491594628013">让您能够控制密码保护服务警告的触发条件。当用户在可疑的网站上重复使用受保护的密码时,密码保护服务就会向用户发出提醒。
-
-      您可以使用“PasswordProtectionLoginURLs”和“PasswordProtectionChangePasswordURL”政策来配置要保护的密码。
-
-      如果此政策设为“PasswordProtectionWarningOff”,则一律不会触发密码保护服务警告。
-      如果此政策设为“PasswordProtectionWarningOnPasswordReuse”,那么每当用户在任何未列入白名单的网站上重复使用受保护的密码时,都会触发密码保护服务警告。
-      如果此政策设为“PasswordProtectionWarningOnPhishingReuse”,那么每当用户在“网上诱骗”性质的网站上重复使用受保护的密码时,都会触发密码保护服务警告。
-      如果未设置此政策,那么密码保护服务仅会保护 Google 密码,但用户将能够更改此设置。</translation>
 <translation id="8672321184841719703">目标自动更新版本</translation>
 <translation id="867410340948518937">U2F(通用第二重因素)</translation>
 <translation id="8682611302223077049">可让您设置一个时间段(以毫秒为单位),在该时间段内,如果必须重新启动 <ph name="PRODUCT_NAME" /> 或必须重启 <ph name="PRODUCT_OS_NAME" />设备以应用待应用的更新,则用户将会收到通知。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 8232f4e..4e43be9 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -575,6 +575,7 @@
 <translation id="2529880111512635313">設定強制安裝的應用程式和擴充功能清單</translation>
 <translation id="253135976343875019">在 AC 供電環境下執行時的閒置警告延遲時間</translation>
 <translation id="2536525645274582300">使用者可決定是否要啟用 Google 定位服務</translation>
+<translation id="254653220329944566">啟用 <ph name="PRODUCT_NAME" /> 雲端報告功能</translation>
 <translation id="2550593661567988768">僅限單面列印</translation>
 <translation id="2552966063069741410">時區</translation>
 <translation id="2562339630163277285">指定用於提供互動智慧搜尋結果的搜尋引擎網址。網址應包含 <ph name="SEARCH_TERM_MARKER" /> 字串,使用者輸入的查詢文字會取代這個字串。
@@ -1872,6 +1873,15 @@
 <translation id="6133088669883929098">允許所有網站使用金鑰產生功能</translation>
 <translation id="6145799962557135888">允許你設定網址模式清單,指定可以執行 JavaScript 的網站。如果未設定這項政策,系統會從「DefaultJavaScriptSetting」政策 (如果有設定的話) 或使用者的個人設定,將通用預設值套用至所有網站。</translation>
 <translation id="614662973812186053">這項政策也可以控制 Android 使用資料和診斷資料的收集設定。</translation>
+<translation id="6153048425064249648">這項政策可控管 <ph name="PRODUCT_NAME" /> 雲端報告功能,該功能會將瀏覽器運作資訊上傳到 Google 管理控制台。
+
+      如果不設定這項政策或設為 False,系統不會收集或上傳資料。
+      如果將這項政策設為 True,系統會收集資料並上傳到 Google 管理控制台。
+      如要控管上傳資料內容,請使用「Chrome 資訊回報擴充功能」群組中的政策。
+
+      想要套用這項政策,電腦必須先註冊使用 <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />。
+
+      這項政策會強制安裝「<ph name="CHROME_REPORTING_EXTENSION_NAME" />」來回報資訊,並且會覆寫所有與該擴充功能相關的擴充功能政策。</translation>
 <translation id="6155936611791017817">設定大型游標在登入畫面的預設狀態</translation>
 <translation id="6157537876488211233">以逗號間隔的 Proxy 略過規則清單</translation>
 <translation id="6158324314836466367">企業線上應用程式商店名稱 (已不適用)</translation>
@@ -2903,14 +2913,6 @@
           請以逗號分隔多個伺服器名稱。可允許萬用字元 (*)。
 
           如果未設定這項政策,<ph name="PRODUCT_NAME" /> 會嘗試偵測伺服器是否位於內部網路,然後回應伺服器傳來的 IWA 要求。如果伺服器位於網際網路,<ph name="PRODUCT_NAME" /> 就會忽略伺服器傳來的 IWA 要求。</translation>
-<translation id="8669669491594628013">讓你控制密碼保護警告訊息的觸發設定。當使用者在疑似不安全的網站上重複使用受保護的密碼時,密碼保護功能就會向使用者發出警示。
-
-      你可以使用「PasswordProtectionLoginURLs」和「PasswordProtectionChangePasswordURL」政策設定要保護的密碼。
-
-      如果將這項政策設為「PasswordProtectionWarningOff」,系統就不會顯示密碼保護警告訊息。
-      如果將這項政策設為「PasswordProtectionWarningOnPasswordReuse」,當使用者在任何非許可的網站上重複使用受保護的密碼時,系統就會顯示密碼保護警告訊息。
-      如果將這項政策設為「PasswordProtectionWarningOnPhishingReuse」,當使用者在網路詐騙網站上重複使用受保護的密碼時,系統就會顯示密碼保護警告訊息。
-      如果未設定這項政策,密碼保護服務就只會保護 Google 密碼,但使用者可以變更這項設定。</translation>
 <translation id="8672321184841719703">指定目標的自動更新版本</translation>
 <translation id="867410340948518937">U2F (通用雙重驗證)</translation>
 <translation id="8682611302223077049">可設定時間範圍 (以毫秒為單位),系統會在這段時間內通知使用者必須重新啟動 <ph name="PRODUCT_NAME" /> 或 <ph name="PRODUCT_OS_NAME" />裝置,才能套用未安裝的更新。
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 9ae6f5b9..389a164 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -946,7 +946,7 @@
 <translation id="7549584377607005141">Questa pagina web richiede dati che hai inserito in precedenza per poter essere visualizzata correttamente. Puoi inviare di nuovo i dati, ma in questo caso ripeterai l'azione precedentemente eseguita nella pagina.</translation>
 <translation id="7552846755917812628">Prova i seguenti suggerimenti:</translation>
 <translation id="7554791636758816595">Nuova scheda</translation>
-<translation id="7560085949372856518">Nel prossimo passaggio potrai scegliere le carte da salvare nel tuo Account Google.</translation>
+<translation id="7560085949372856518">Nel prossimo passaggio potrai scegliere le schede da salvare nel tuo Account Google.</translation>
 <translation id="7564049878696755256">Potresti non riuscire più ad accedere al tuo account <ph name="ORG_NAME" /> o subire un furto d'identità. Chrome ti consiglia di cambiare subito la password.</translation>
 <translation id="7567204685887185387">Questo server non è riuscito a dimostrare che si tratta di <ph name="DOMAIN" />; il relativo certificato di sicurezza potrebbe essere stato emesso in modo fraudolento. Il problema potrebbe essere dovuto a un'errata configurazione o a un malintenzionato che intercetta la connessione.</translation>
 <translation id="7569952961197462199">Rimuovere la carta di credito da Chrome?</translation>
@@ -963,7 +963,7 @@
 <translation id="7658239707568436148">Annulla</translation>
 <translation id="7662298039739062396">Impostazione controllata da un'estensione</translation>
 <translation id="7663736086183791259">Certificato <ph name="CERTIFICATE_VALIDITY" /></translation>
-<translation id="7665886282480776333">Vuoi salvare le tue carte su Google?</translation>
+<translation id="7665886282480776333">Vuoi salvare le tue schede su Google?</translation>
 <translation id="7667346355482952095">Il token della norma restituito è vuoto o non corrisponde al token corrente</translation>
 <translation id="7668654391829183341">Dispositivo sconosciuto</translation>
 <translation id="7669271284792375604">I malintenzionati su questo sito potrebbero cercare di indurti con l'inganno a installare programmi che danneggiano la tua navigazione (ad esempio cambiando la tua pagina iniziale o mostrando annunci extra sui siti che visiti).</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index b8ff4d8..3b6ed39a 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -389,7 +389,7 @@
 <translation id="3467763166455606212">카드 소유자 이름을 입력해야 합니다.</translation>
 <translation id="3479539252931486093">예기치 않은 문제가 발생했나요? <ph name="BEGIN_LINK" />Google에 알리기<ph name="END_LINK" /></translation>
 <translation id="3479552764303398839">나중에</translation>
-<translation id="3484560055331845446">Google 계정에 액세스할 수 없게 될 수 있습니다. 따라서 지금 비밀번호를 변경하는 것이 좋습니다. 로그인하라는 메시지가 표시됩니다.</translation>
+<translation id="3484560055331845446">Google 계정에 액세스하지 못할 수 있습니다. 따라서 지금 비밀번호를 변경하는 것이 좋습니다. 로그인하라는 메시지가 표시됩니다.</translation>
 <translation id="3498215018399854026">현재 부모님께 연락할 수 없습니다. 나중에 다시 시도해 주세요.</translation>
 <translation id="3528171143076753409">서버의 인증서를 신뢰할 수 없습니다.</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{동기화된 기기에 항목 1개 이상}=1{항목 1개(동기화된 기기에는 그 이상)}other{항목 #개(동기화된 기기에는 그 이상)}}</translation>
@@ -1075,7 +1075,7 @@
 <translation id="8364627913115013041">설정 안됨</translation>
 <translation id="8368476060205742148">Google Play 서비스</translation>
 <translation id="8380941800586852976">위험</translation>
-<translation id="8381674639488873545">이러한 청구는 일회성일 수도 있고 반복적일 수도 있으며 명확하지 않을 수도 있습니다. <ph name="BEGIN_LINK" />사이트 표시하기<ph name="END_LINK" /></translation>
+<translation id="8381674639488873545">이러한 청구는 일회성이거나 반복적일 수 있으며 명확하지 않을 수도 있습니다. <ph name="BEGIN_LINK" />사이트 표시하기<ph name="END_LINK" /></translation>
 <translation id="8382348898565613901">최근에 방문한 북마크가 여기에 표시됩니다.</translation>
 <translation id="8398259832188219207">비정상 종료 보고서가 <ph name="UPLOAD_TIME" />에 업로드됨</translation>
 <translation id="8412145213513410671">비정상 종료(<ph name="CRASH_COUNT" />회)</translation>
@@ -1199,7 +1199,7 @@
 <translation id="9219103736887031265">이미지</translation>
 <translation id="933712198907837967">Diners Club</translation>
 <translation id="935608979562296692">양식 지우기</translation>
-<translation id="936602727769022409">Google 계정에 액세스할 수 없게 될 수 있습니다. 따라서 지금 비밀번호를 변경하는 것이 좋습니다. 로그인하라는 메시지가 표시됩니다.</translation>
+<translation id="936602727769022409">Google 계정에 액세스하지 못할 수 있습니다. 따라서 지금 비밀번호를 변경하는 것이 좋습니다. 로그인하라는 메시지가 표시됩니다.</translation>
 <translation id="939736085109172342">새 폴더</translation>
 <translation id="951104842009476243">사용 가능한 직불카드 및 선불카드</translation>
 <translation id="962484866189421427">이 콘텐츠에서 다른 앱인 것처럼 가장하거나 사용자를 추적하는 데 사용될 수 있는 데이터를 수집하는 사기성 앱을 설치할 수도 있습니다. <ph name="BEGIN_LINK" />그래도 표시하기<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index b92acdbb..b611529 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -951,7 +951,7 @@
 <translation id="7549584377607005141">Halaman web ini memerlukan data yang anda masukkan sebelum ini agar dapat dipaparkan dengan betul. Anda boleh menghantar data ini semula, tetapi dengan berbuat demikian anda akan mengulangi sebarang tindakan terdahulu yang telah dilakukan oleh halaman ini.</translation>
 <translation id="7552846755917812628">Cuba petua berikut:</translation>
 <translation id="7554791636758816595">Tab Baharu</translation>
-<translation id="7560085949372856518">Dalam langkah seterusnya, anda boleh memilih kad yang hendak disimpan ke Akaun Google anda.</translation>
+<translation id="7560085949372856518">Dalam langkah seterusnya, anda boleh memilih kad yang mahu disimpan ke Akaun Google anda.</translation>
 <translation id="7564049878696755256">Anda boleh kehilangan akses kepada akaun <ph name="ORG_NAME" /> anda atau mengalami kecurian identiti. Chrome mengesyorkan supaya kata laluan anda ditukar sekarang.</translation>
 <translation id="7567204685887185387">Pelayan ini tidak dapat membuktikan bahawa domainnya ialah <ph name="DOMAIN" />; sijil keselamatannya mungkin telah dikeluarkan melalui penipuan. Ini mungkin disebabkan oleh kesilapan konfigurasi atau penyerang yang memintasi sambungan anda.</translation>
 <translation id="7569952961197462199">Alih keluar kad kredit daripada Chrome?</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 4693747..469ae9d4 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -914,14 +914,14 @@
 <translation id="7390545607259442187">కార్డ్‌ని నిర్ధారించండి</translation>
 <translation id="7400418766976504921">URL</translation>
 <translation id="7407424307057130981">&lt;p&gt;మీ Windows కంప్యూటర్‌లో Superfish సాఫ్ట్‌వేర్ ఉన్నట్లయితే మీకు ఈ ఎర్రర్ కనిపిస్తుంది.&lt;/p&gt;
-      &lt;p&gt;మీరు వెబ్‌లోకి వెళ్లడం కోసం, సాఫ్ట్‌వేర్‌ని తాత్కాలికంగా నిలిపివేయడానికి ఈ దశలను అనుసరించండి. మీ వద్ద నిర్వాహకుడి స్థాయి అధికారాలు ఉండాలి.&lt;/p&gt;
+      &lt;p&gt;మీరు వెబ్‌లోకి వెళ్లడం కోసం, ఈ సాఫ్ట్‌వేర్‌ని తాత్కాలికంగా నిలిపివేయడానికి ఈ దశలను అనుసరించండి. మీ వద్ద నిర్వాహకుడి స్థాయి అధికారాలు ఉండాలి.&lt;/p&gt;
       &lt;ol&gt;
       &lt;li&gt;&lt;strong&gt;ప్రారంభించు&lt;/strong&gt;ని క్లిక్ చేసి, ఆపై &lt;strong&gt;"స్థానిక సేవలను వీక్షించండి"&lt;/strong&gt; కోసం వెతికి, దానిని ఎంచుకోండి
       &lt;li&gt;&lt;strong&gt;VisualDiscovery&lt;/strong&gt;ని ఎంచుకోండి
       &lt;li&gt;&lt;strong&gt;ప్రారంభ రకం&lt;/strong&gt;లో, &lt;strong&gt;నిలిపివేయబడింది&lt;/strong&gt; ఎంచుకోండి
       &lt;li&gt;&lt;strong&gt;సేవా స్థితి&lt;/strong&gt;లో, &lt;strong&gt;ఆపివేయి&lt;/strong&gt;ని క్లిక్ చేయండి
       &lt;li&gt;&lt;strong&gt;వర్తింపజేయి&lt;/strong&gt;ని క్లిక్ చేసి, ఆపై &lt;strong&gt;సరే&lt;/strong&gt; క్లిక్ చేయండి
-      &lt;li&gt;మీ కంప్యూటర్ నుండి శాశ్వతంగా సాఫ్ట్‌వేర్‌ను ఎలా తొలగించాలో తెలుసుకోవడానికి &lt;a href="https://support.google.com/chrome/answer/6098869"&gt;Chrome సహాయ కేంద్రం&lt;/a&gt;ను సందర్శించండి
+      &lt;li&gt;మీ కంప్యూటర్ నుండి శాశ్వతంగా సాఫ్ట్‌వేర్‌ను ఎలా తొలగించాలో తెలుసుకోవడానికి &lt;a href="https://support.google.com/chrome/answer/6098869"&gt;Chrome సహాయ కేంద్రం&lt;/a&gt;ని సందర్శించండి
       &lt;/ol&gt;</translation>
 <translation id="7416351320495623771">పాస్‌వర్డ్‌లను నిర్వహించండి…</translation>
 <translation id="7419106976560586862">ప్రొఫైల్ మార్గం</translation>
diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc
index 07c373ab..c28a1c5 100644
--- a/components/subresource_filter/content/browser/ruleset_service.cc
+++ b/components/subresource_filter/content/browser/ruleset_service.cc
@@ -261,19 +261,18 @@
 RulesetService::RulesetService(
     PrefService* local_state,
     scoped_refptr<base::SequencedTaskRunner> background_task_runner,
-    RulesetServiceDelegate* delegate,
-    const base::FilePath& indexed_ruleset_base_dir)
+    const base::FilePath& indexed_ruleset_base_dir,
+    scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
+    std::unique_ptr<RulesetServiceDelegate> delegate)
     : local_state_(local_state),
       background_task_runner_(std::move(background_task_runner)),
-      delegate_(delegate),
       is_initialized_(false),
       indexed_ruleset_base_dir_(indexed_ruleset_base_dir) {
-  DCHECK(delegate_);
   DCHECK_NE(local_state_->GetInitializationStatus(),
             PrefService::INITIALIZATION_STATUS_WAITING);
-}
-
-void RulesetService::StartInitialization() {
+  delegate_ = delegate ? std::move(delegate)
+                       : std::make_unique<ContentRulesetService>(
+                             this, blocking_task_runner);
   IndexedRulesetVersion most_recently_indexed_version;
   most_recently_indexed_version.ReadFromPrefs(local_state_);
   TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
@@ -555,8 +554,10 @@
 // ContentRulesetService ------------------------------------------------------
 
 ContentRulesetService::ContentRulesetService(
+    RulesetService* ruleset_service,
     scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
-    : ruleset_dealer_(std::make_unique<VerifiedRulesetDealer::Handle>(
+    : ruleset_service_(ruleset_service),
+      ruleset_dealer_(std::make_unique<VerifiedRulesetDealer::Handle>(
           std::move(blocking_task_runner))) {
   best_effort_task_runner_ = base::CreateSingleThreadTaskRunnerWithTraits(
       {content::BrowserThread::UI, base::TaskPriority::BEST_EFFORT});
@@ -582,8 +583,8 @@
     const base::FilePath& file_path,
     int expected_checksum,
     base::OnceCallback<void(base::File)> callback) {
-  ruleset_dealer_->TryOpenAndSetRulesetFile(file_path, expected_checksum,
-                                            std::move(callback));
+  GetRulesetDealer()->TryOpenAndSetRulesetFile(file_path, expected_checksum,
+                                               std::move(callback));
 }
 
 void ContentRulesetService::PublishNewRulesetVersion(base::File ruleset_data) {
@@ -595,7 +596,7 @@
   if (base::FeatureList::IsEnabled(kAdTagging)) {
     // Even though the handle will immediately be destroyed, it will still
     // validate the ruleset on its task runner.
-    VerifiedRuleset::Handle ruleset_handle(ruleset_dealer_.get());
+    VerifiedRuleset::Handle ruleset_handle(GetRulesetDealer());
   }
 
   ruleset_data_ = std::move(ruleset_data);
@@ -613,10 +614,8 @@
   return best_effort_task_runner_;
 }
 
-void ContentRulesetService::SetAndInitializeRulesetService(
-    std::unique_ptr<RulesetService> ruleset_service) {
-  ruleset_service_ = std::move(ruleset_service);
-  ruleset_service_->StartInitialization();
+VerifiedRulesetDealer::Handle* ContentRulesetService::GetRulesetDealer() {
+  return ruleset_dealer_.get();
 }
 
 void ContentRulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h
index e2ed7482..0c63a68 100644
--- a/components/subresource_filter/content/browser/ruleset_service.h
+++ b/components/subresource_filter/content/browser/ruleset_service.h
@@ -183,13 +183,22 @@
 
   // Creates a new instance of a ruleset.  This is then assigned to a
   // Delegate that calls Initialize for this ruleset service.
+  // Starts initialization of the RulesetService, performing tasks that won't
+  // slow down Chrome startup, then queues the FinishInitialization task.
   RulesetService(
       PrefService* local_state,
       scoped_refptr<base::SequencedTaskRunner> background_task_runner,
-      RulesetServiceDelegate* delegate,
-      const base::FilePath& indexed_ruleset_base_dir);
+      const base::FilePath& indexed_ruleset_base_dir,
+      scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
+      // Note: Optional delegate parameter used exclusively for testing.
+      std::unique_ptr<RulesetServiceDelegate> delegate = nullptr);
   virtual ~RulesetService();
 
+  // Pass-through function to set the callback on publishing.
+  void SetRulesetPublishedCallbackForTesting(base::OnceClosure callback) {
+    delegate_->SetRulesetPublishedCallbackForTesting(std::move(callback));
+  }
+
   // Indexes, stores, and publishes the given unindexed ruleset, unless its
   // |content_version| matches that of the most recently indexed version, in
   // which case it does nothing. The files comprising the unindexed ruleset
@@ -206,12 +215,16 @@
   // Get the ruleset version associated with the current local_state_.
   IndexedRulesetVersion GetMostRecentlyIndexedVersion() const;
 
-  // Starts initialization of the RulesetService, performing tasks that won't
-  // slow down Chrome startup, then queues the FinishInitialization task.
-  void StartInitialization();
+  VerifiedRulesetDealer::Handle* GetRulesetDealer() {
+    return delegate_->GetRulesetDealer();
+  }
 
  private:
   friend class SubresourceFilteringRulesetServiceTest;
+  friend class SubresourceFilterBrowserTest;
+  FRIEND_TEST_ALL_PREFIXES(
+      SubresourceFilterContentRulesetServiceTest,
+      PublishedRuleset_IsDistributedToExistingAndNewRenderers);
   FRIEND_TEST_ALL_PREFIXES(SubresourceFilterContentRulesetServiceTest,
                            PublishesRulesetInOnePostTask);
   FRIEND_TEST_ALL_PREFIXES(SubresourceFilteringRulesetServiceTest,
@@ -279,8 +292,7 @@
   // Obsolete files deletion and indexing should be done on this runner.
   scoped_refptr<base::SequencedTaskRunner> background_task_runner_;
 
-  // Must outlive |this| object.
-  RulesetServiceDelegate* delegate_;
+  std::unique_ptr<RulesetServiceDelegate> delegate_;
 
   UnindexedRulesetInfo queued_unindexed_ruleset_info_;
   bool is_initialized_;
@@ -290,12 +302,11 @@
   DISALLOW_COPY_AND_ASSIGN(RulesetService);
 };
 
-// The content-layer specific implementation of RulesetServiceDelegate. Owns the
-// underlying RulesetService.
-//
-// Its main responsibility is receiving new versions of subresource filtering
-// rules from the RulesetService, and distributing them to renderer processes,
-// where they will be memory-mapped as-needed by the UnverifiedRulesetDealer.
+// The content-layer specific implementation of RulesetServiceDelegate. Owned by
+// the underlying RulesetService. Its main responsibility is receiving new
+// versions of subresource filtering rules from the RulesetService, and
+// distributing them to renderer processes, where they will be memory-mapped
+// as-needed by the UnverifiedRulesetDealer.
 //
 // The distribution pipeline looks like this:
 //
@@ -323,11 +334,10 @@
                               content::NotificationObserver {
  public:
   explicit ContentRulesetService(
+      RulesetService* ruleset_service,
       scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
   ~ContentRulesetService() override;
 
-  void SetRulesetPublishedCallbackForTesting(base::OnceClosure callback);
-
   // RulesetServiceDelegate:
   void TryOpenAndSetRulesetFile(
       const base::FilePath& file_path,
@@ -335,10 +345,9 @@
       base::OnceCallback<void(base::File)> callback) override;
   void PublishNewRulesetVersion(base::File ruleset_data) override;
   scoped_refptr<base::SingleThreadTaskRunner> BestEffortTaskRunner() override;
-
-  // Sets the ruleset_service_ member and calls its Initialize function.
-  void SetAndInitializeRulesetService(
-      std::unique_ptr<RulesetService> ruleset_service);
+  VerifiedRulesetDealer::Handle* GetRulesetDealer() override;
+  void SetRulesetPublishedCallbackForTesting(
+      base::OnceClosure callback) override;
 
   // Forwards calls to the underlying ruleset_service_.
   void IndexAndStoreAndPublishRulesetIfNeeded(
@@ -349,9 +358,6 @@
     return ruleset_service_->GetMostRecentlyIndexedVersion();
   }
 
-  VerifiedRulesetDealer::Handle* ruleset_dealer() {
-    return ruleset_dealer_.get();
-  }
  private:
   // content::NotificationObserver:
   void Observe(int type,
@@ -362,7 +368,8 @@
   base::File ruleset_data_;
   base::OnceClosure ruleset_published_callback_;
 
-  std::unique_ptr<RulesetService> ruleset_service_;
+  // The service owns the delegate, and therefor outlives it.
+  RulesetService* ruleset_service_;
   std::unique_ptr<VerifiedRulesetDealer::Handle> ruleset_dealer_;
   scoped_refptr<base::SingleThreadTaskRunner> best_effort_task_runner_;
 
diff --git a/components/subresource_filter/content/browser/ruleset_service_unittest.cc b/components/subresource_filter/content/browser/ruleset_service_unittest.cc
index 229b714..3271683 100644
--- a/components/subresource_filter/content/browser/ruleset_service_unittest.cc
+++ b/components/subresource_filter/content/browser/ruleset_service_unittest.cc
@@ -34,6 +34,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "components/prefs/testing_pref_service.h"
+#include "components/subresource_filter/content/browser/ruleset_service.h"
 #include "components/subresource_filter/content/common/subresource_filter_messages.h"
 #include "components/subresource_filter/core/browser/ruleset_service_delegate.h"
 #include "components/subresource_filter/core/common/test_ruleset_creator.h"
@@ -163,6 +164,11 @@
     return best_effort_task_runner_;
   }
 
+  VerifiedRulesetDealer::Handle* GetRulesetDealer() override { return nullptr; }
+
+  void SetRulesetPublishedCallbackForTesting(
+      base::OnceClosure callback) override {}
+
   std::vector<base::File>& published_rulesets() { return published_rulesets_; }
 
   void RunBestEffortUntilIdle() {
@@ -242,17 +248,17 @@
   }
 
   void ResetRulesetService() {
-    mock_delegate_ = std::make_unique<MockRulesetServiceDelegate>(
-        blocking_task_runner_, best_effort_task_runner_);
+    // Note that this takes a dummy task runner as the dealer is not used as the
+    // overridden functions use the blocking_task_runner_ explicitly.
     service_ = std::make_unique<RulesetService>(
-        &pref_service_, background_task_runner_, mock_delegate_.get(),
-        base_dir());
-    service_->StartInitialization();
+        &pref_service_, background_task_runner_, base_dir(),
+        blocking_task_runner_,
+        std::make_unique<MockRulesetServiceDelegate>(blocking_task_runner_,
+                                                     best_effort_task_runner_));
   }
 
   void ClearRulesetService() {
     service_.reset();
-    mock_delegate_.reset();
   }
 
   // Creates a new file with the given license |contents| at a unique temporary
@@ -340,7 +346,7 @@
     while (best_effort_task_runner_->HasPendingTask() ||
            blocking_task_runner_->HasPendingTask() ||
            background_task_runner_->HasPendingTask()) {
-      mock_delegate_->RunBestEffortUntilIdle();
+      mock_delegate()->RunBestEffortUntilIdle();
       RunBlockingUntilIdle();
       RunBackgroundUntilIdle();
     }
@@ -384,7 +390,9 @@
 
   PrefService* prefs() { return &pref_service_; }
   RulesetService* service() { return service_.get(); }
-  MockRulesetServiceDelegate* mock_delegate() { return mock_delegate_.get(); }
+  MockRulesetServiceDelegate* mock_delegate() {
+    return static_cast<MockRulesetServiceDelegate*>(service_->delegate_.get());
+  }
 
   virtual base::FilePath effective_temp_dir() const {
     return scoped_temp_dir_.GetPath();
@@ -412,7 +420,6 @@
   TestRulesetPair test_ruleset_2_;
   TestRulesetPair test_ruleset_3_;
 
-  std::unique_ptr<MockRulesetServiceDelegate> mock_delegate_;
   std::unique_ptr<RulesetService> service_;
 
   DISALLOW_COPY_AND_ASSIGN(SubresourceFilteringRulesetServiceTest);
@@ -510,7 +517,7 @@
 
 TEST_F(SubresourceFilterContentRulesetServiceTest, NoRuleset_NoIPCMessages) {
   NotifyingMockRenderProcessHost existing_renderer(browser_context());
-  ContentRulesetService service(base::ThreadTaskRunnerHandle::Get());
+  ContentRulesetService service(nullptr, base::ThreadTaskRunnerHandle::Get());
   NotifyingMockRenderProcessHost new_renderer(browser_context());
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0u, existing_renderer.sink().message_count());
@@ -528,8 +535,8 @@
                   base::File::FLAG_OPEN | base::File::FLAG_READ);
 
   NotifyingMockRenderProcessHost existing_renderer(browser_context());
-  ContentRulesetService service(base::ThreadTaskRunnerHandle::Get());
   MockClosureTarget publish_callback_target;
+  ContentRulesetService service(nullptr, base::ThreadTaskRunnerHandle::Get());
   service.SetRulesetPublishedCallbackForTesting(base::BindOnce(
       &MockClosureTarget::Call, base::Unretained(&publish_callback_target)));
   EXPECT_CALL(publish_callback_target, Call()).Times(1);
@@ -590,16 +597,19 @@
   scoped_refptr<base::TestSimpleTaskRunner> background_task_runner =
       base::MakeRefCounted<base::TestSimpleTaskRunner>();
   NotifyingMockRenderProcessHost renderer_host(browser_context());
-  auto service = std::make_unique<ContentRulesetService>(blocking_task_runner);
   base::RunLoop callback_waiter;
-  service->SetRulesetPublishedCallbackForTesting(callback_waiter.QuitClosure());
+  auto content_service =
+      std::make_unique<ContentRulesetService>(nullptr, blocking_task_runner);
+  content_service->SetRulesetPublishedCallbackForTesting(
+      callback_waiter.QuitClosure());
 
   // |RulesetService| constructor should read the last indexed ruleset version
   // and post ruleset setup on |blocking_task_runner|. (Yes, exactly
   // |blocking_task_runner| via |ContentRulesetService| as its delegate).
   ASSERT_EQ(0u, blocking_task_runner->NumPendingTasks());
-  service->SetAndInitializeRulesetService(std::make_unique<RulesetService>(
-      &prefs, background_task_runner, service.get(), base_dir));
+  auto service =
+      std::make_unique<RulesetService>(&prefs, background_task_runner, base_dir,
+                                       nullptr, std::move(content_service));
 
   // The key test assertion is that ruleset data is published via exactly one
   // post task on |blocking_task_runner|. It is important to run pending tasks
diff --git a/components/subresource_filter/core/browser/ruleset_service_delegate.h b/components/subresource_filter/core/browser/ruleset_service_delegate.h
index 21cf0f20..f829608 100644
--- a/components/subresource_filter/core/browser/ruleset_service_delegate.h
+++ b/components/subresource_filter/core/browser/ruleset_service_delegate.h
@@ -13,6 +13,8 @@
 
 namespace subresource_filter {
 
+class VerifiedRulesetDealer;
+
 // Interface for a delegate that implements RulesetService operations that
 // depend on content/, thus allowing the service to not directly depend on it.
 class RulesetServiceDelegate {
@@ -37,6 +39,13 @@
   // interfere with startup.  Runs in the UI thread.
   virtual scoped_refptr<base::SingleThreadTaskRunner>
   BestEffortTaskRunner() = 0;
+
+  // Gets the ruleset dealer associated with the RulesetServiceDelegate.
+  virtual VerifiedRulesetDealer::Handle* GetRulesetDealer() = 0;
+
+  // Set the callback on publish associated with the RulesetServiceDelegate.
+  virtual void SetRulesetPublishedCallbackForTesting(
+      base::OnceClosure callback) = 0;
 };
 
 }  // namespace subresource_filter
diff --git a/components/viz/service/main/viz_main_impl.h b/components/viz/service/main/viz_main_impl.h
index e8885713..876ba38 100644
--- a/components/viz/service/main/viz_main_impl.h
+++ b/components/viz/service/main/viz_main_impl.h
@@ -109,15 +109,15 @@
     return discardable_shared_memory_manager_.get();
   }
 
+  // Cleanly exits the process.
+  void ExitProcess();
+
  private:
   // Initializes GPU's UkmRecorder if GPU is running in it's own process.
   void CreateUkmRecorderIfNeeded(service_manager::Connector* connector);
 
   void CreateFrameSinkManagerInternal(mojom::FrameSinkManagerParamsPtr params);
 
-  // Cleanly exits the process.
-  void ExitProcess();
-
   // gpu::GpuSandboxHelper:
   void PreSandboxStartup() override;
   bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
diff --git a/content/browser/android/selection/selection_popup_controller.cc b/content/browser/android/selection/selection_popup_controller.cc
index 8a30f1a2..f8a7db7 100644
--- a/content/browser/android/selection/selection_popup_controller.cc
+++ b/content/browser/android/selection/selection_popup_controller.cc
@@ -49,6 +49,15 @@
   wcva->set_selection_popup_controller(this);
 }
 
+SelectionPopupController::~SelectionPopupController() {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = java_obj_.get(env);
+  if (!obj.is_null()) {
+    Java_SelectionPopupControllerImpl_nativeSelectionPopupControllerDestroyed(
+        env, obj);
+  }
+}
+
 ScopedJavaLocalRef<jobject> SelectionPopupController::GetContext() const {
   JNIEnv* env = AttachCurrentThread();
 
diff --git a/content/browser/android/selection/selection_popup_controller.h b/content/browser/android/selection/selection_popup_controller.h
index 900cfbb..d8f29db 100644
--- a/content/browser/android/selection/selection_popup_controller.h
+++ b/content/browser/android/selection/selection_popup_controller.h
@@ -54,7 +54,7 @@
                                 const gfx::PointF& extent);
 
  private:
-  ~SelectionPopupController() override {}
+  ~SelectionPopupController() override;
   base::android::ScopedJavaLocalRef<jobject> GetContext() const;
   RenderWidgetHostViewAndroid* rwhva_ = nullptr;
 
diff --git a/content/browser/android/synchronous_compositor_sync_call_bridge.cc b/content/browser/android/synchronous_compositor_sync_call_bridge.cc
index 5a312ae..8410eaa 100644
--- a/content/browser/android/synchronous_compositor_sync_call_bridge.cc
+++ b/content/browser/android/synchronous_compositor_sync_call_bridge.cc
@@ -93,7 +93,7 @@
     return true;
   }
   window_android_in_vsync_ = window_android;
-  window_android_in_vsync_->AddVSyncCompleteCallback(base::BindRepeating(
+  window_android_in_vsync_->AddVSyncCompleteCallback(base::BindOnce(
       &SynchronousCompositorSyncCallBridge::VSyncCompleteOnUIThread, this));
   return true;
 }
diff --git a/content/browser/background_sync/background_sync.proto b/content/browser/background_sync/background_sync.proto
index 62dbe72..164c4c1 100644
--- a/content/browser/background_sync/background_sync.proto
+++ b/content/browser/background_sync/background_sync.proto
@@ -15,7 +15,7 @@
 }
 
 message BackgroundSyncRegistrationProto {
-  required int64 id = 1;
+  // required int64 id = 1;
   required string tag = 2;
   // required SyncPeriodicity periodicity = 3;
   // required int64 min_period = 4;
@@ -27,6 +27,6 @@
 
 message BackgroundSyncRegistrationsProto {
   repeated BackgroundSyncRegistrationProto registration = 1;
-  required int64 next_registration_id = 2;
+  // required int64 next_registration_id = 2;
   required string origin = 3;
 }
\ No newline at end of file
diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc
index 1833012..4fa06d307 100644
--- a/content/browser/background_sync/background_sync_manager.cc
+++ b/content/browser/background_sync/background_sync_manager.cc
@@ -175,16 +175,13 @@
 }  // namespace
 
 BackgroundSyncManager::BackgroundSyncRegistrations::
-    BackgroundSyncRegistrations()
-    : next_id(BackgroundSyncRegistration::kInitialId) {
-}
+    BackgroundSyncRegistrations() = default;
 
 BackgroundSyncManager::BackgroundSyncRegistrations::BackgroundSyncRegistrations(
     const BackgroundSyncRegistrations& other) = default;
 
 BackgroundSyncManager::BackgroundSyncRegistrations::
-    ~BackgroundSyncRegistrations() {
-}
+    ~BackgroundSyncRegistrations() = default;
 
 // static
 std::unique_ptr<BackgroundSyncManager> BackgroundSyncManager::Create(
@@ -391,7 +388,6 @@
     if (registrations_proto.ParseFromString(data.second)) {
       BackgroundSyncRegistrations* registrations =
           &active_registrations_[data.first];
-      registrations->next_id = registrations_proto.next_registration_id();
       registrations->origin = GURL(registrations_proto.origin());
 
       for (int i = 0, max = registrations_proto.registration_size(); i < max;
@@ -399,11 +395,6 @@
         const BackgroundSyncRegistrationProto& registration_proto =
             registrations_proto.registration(i);
 
-        if (registration_proto.id() >= registrations->next_id) {
-          corruption_detected = true;
-          break;
-        }
-
         BackgroundSyncRegistration* registration =
             &registrations->registration_map[registration_proto.tag()];
 
@@ -411,7 +402,6 @@
         options->tag = registration_proto.tag();
         options->network_state = registration_proto.network_state();
 
-        registration->set_id(registration_proto.id());
         registration->set_num_attempts(registration_proto.num_attempts());
         registration->set_delay_until(
             base::Time::FromInternalValue(registration_proto.delay_until()));
@@ -564,10 +554,6 @@
 
   *new_registration.options() = options;
 
-  BackgroundSyncRegistrations* registrations =
-      &active_registrations_[sw_registration_id];
-  new_registration.set_id(registrations->next_id++);
-
   AddActiveRegistration(sw_registration_id,
                         sw_registration->scope().GetOrigin(), new_registration);
 
@@ -643,7 +629,6 @@
     return nullptr;
 
   BackgroundSyncRegistrations& registrations = it->second;
-  DCHECK_LE(BackgroundSyncRegistration::kInitialId, registrations.next_id);
   DCHECK(!registrations.origin.is_empty());
 
   auto key_and_registration_iter = registrations.registration_map.find(tag);
@@ -662,7 +647,6 @@
   const BackgroundSyncRegistrations& registrations =
       active_registrations_[sw_registration_id];
   BackgroundSyncRegistrationsProto registrations_proto;
-  registrations_proto.set_next_registration_id(registrations.next_id);
   registrations_proto.set_origin(registrations.origin.spec());
 
   for (const auto& key_and_registration : registrations.registration_map) {
@@ -670,7 +654,6 @@
         key_and_registration.second;
     BackgroundSyncRegistrationProto* registration_proto =
         registrations_proto.add_registration();
-    registration_proto->set_id(registration.id());
     registration_proto->set_tag(registration.options()->tag);
     registration_proto->set_network_state(
         registration.options()->network_state);
@@ -744,7 +727,6 @@
     const GURL& origin,
     const BackgroundSyncRegistration& sync_registration) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  DCHECK(sync_registration.IsValid());
 
   BackgroundSyncRegistrations* registrations =
       &active_registrations_[sw_registration_id];
@@ -996,14 +978,12 @@
         base::BindOnce(
             &BackgroundSyncManager::FireReadyEventsDidFindRegistration,
             weak_ptr_factory_.GetWeakPtr(), sw_id_and_tag.second,
-            registration->id(), events_fired_barrier_closure,
-            events_completed_barrier_closure));
+            events_fired_barrier_closure, events_completed_barrier_closure));
   }
 }
 
 void BackgroundSyncManager::FireReadyEventsDidFindRegistration(
     const std::string& tag,
-    BackgroundSyncRegistration::RegistrationId registration_id,
     base::OnceClosure event_fired_callback,
     base::OnceClosure event_completed_callback,
     blink::ServiceWorkerStatusCode service_worker_status,
@@ -1134,8 +1114,7 @@
     const std::string& registration_tag = registration->options()->tag;
     BackgroundSyncRegistration* active_registration =
         LookupActiveRegistration(service_worker_id, registration_tag);
-    if (active_registration &&
-        active_registration->id() == registration->id()) {
+    if (active_registration) {
       RemoveActiveRegistration(service_worker_id, registration_tag);
     }
   }
diff --git a/content/browser/background_sync/background_sync_manager.h b/content/browser/background_sync/background_sync_manager.h
index 84449a9..e513b81 100644
--- a/content/browser/background_sync/background_sync_manager.h
+++ b/content/browser/background_sync/background_sync_manager.h
@@ -149,7 +149,6 @@
     ~BackgroundSyncRegistrations();
 
     RegistrationMap registration_map;
-    BackgroundSyncRegistration::RegistrationId next_id;
     GURL origin;
   };
 
@@ -244,7 +243,6 @@
   void FireReadyEventsImpl(base::OnceClosure callback);
   void FireReadyEventsDidFindRegistration(
       const std::string& tag,
-      BackgroundSyncRegistration::RegistrationId registration_id,
       base::OnceClosure event_fired_callback,
       base::OnceClosure event_completed_callback,
       blink::ServiceWorkerStatusCode service_worker_status,
diff --git a/content/browser/background_sync/background_sync_manager_unittest.cc b/content/browser/background_sync/background_sync_manager_unittest.cc
index 28207e10..a163e68 100644
--- a/content/browser/background_sync/background_sync_manager_unittest.cc
+++ b/content/browser/background_sync/background_sync_manager_unittest.cc
@@ -443,7 +443,6 @@
   EXPECT_TRUE(Register(sync_options_1_));
   EXPECT_STREQ(sync_options_1_.tag.c_str(),
                callback_registration_->options()->tag.c_str());
-  EXPECT_TRUE(callback_registration_->IsValid());
 }
 
 TEST_F(BackgroundSyncManagerTest, RegisterWithoutLiveSWRegistration) {
@@ -588,16 +587,6 @@
   EXPECT_EQ(BACKGROUND_SYNC_STATUS_NOT_ALLOWED, callback_status_);
 }
 
-TEST_F(BackgroundSyncManagerTest, RegistrationIncreasesId) {
-  EXPECT_TRUE(Register(sync_options_1_));
-  BackgroundSyncRegistration::RegistrationId cur_id =
-      callback_registration_->id();
-
-  EXPECT_TRUE(GetRegistration(sync_options_1_));
-  EXPECT_TRUE(Register(sync_options_2_));
-  EXPECT_LT(cur_id, callback_registration_->id());
-}
-
 TEST_F(BackgroundSyncManagerTest, RebootRecovery) {
   EXPECT_TRUE(Register(sync_options_1_));
 
@@ -747,15 +736,6 @@
   EXPECT_TRUE(GetRegistration(sync_options_2_));
 }
 
-TEST_F(BackgroundSyncManagerTest, RegistrationEqualsId) {
-  BackgroundSyncRegistration reg_1;
-  BackgroundSyncRegistration reg_2;
-
-  EXPECT_TRUE(reg_1.Equals(reg_2));
-  reg_2.set_id(reg_1.id() + 1);
-  EXPECT_TRUE(reg_1.Equals(reg_2));
-}
-
 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsTag) {
   BackgroundSyncRegistration reg_1;
   BackgroundSyncRegistration reg_2;
diff --git a/content/browser/background_sync/background_sync_registration.cc b/content/browser/background_sync/background_sync_registration.cc
index a0e96ab0..8e9a1e8 100644
--- a/content/browser/background_sync/background_sync_registration.cc
+++ b/content/browser/background_sync/background_sync_registration.cc
@@ -12,21 +12,11 @@
 
 namespace content {
 
-const BackgroundSyncRegistration::RegistrationId
-    BackgroundSyncRegistration::kInvalidRegistrationId = -1;
-
-const BackgroundSyncRegistration::RegistrationId
-    BackgroundSyncRegistration::kInitialId = 0;
-
 bool BackgroundSyncRegistration::Equals(
     const BackgroundSyncRegistration& other) const {
   return options_.Equals(other.options_);
 }
 
-bool BackgroundSyncRegistration::IsValid() const {
-  return id_ != kInvalidRegistrationId;
-}
-
 bool BackgroundSyncRegistration::IsFiring() const {
   switch (sync_state_) {
     case blink::mojom::BackgroundSyncState::FIRING:
diff --git a/content/browser/background_sync/background_sync_registration.h b/content/browser/background_sync/background_sync_registration.h
index 46fbd2f..18b16d4d 100644
--- a/content/browser/background_sync/background_sync_registration.h
+++ b/content/browser/background_sync/background_sync_registration.h
@@ -21,10 +21,6 @@
 
 class CONTENT_EXPORT BackgroundSyncRegistration {
  public:
-  using RegistrationId = int64_t;
-
-  static const RegistrationId kInitialId;
-
   BackgroundSyncRegistration() = default;
   BackgroundSyncRegistration(const BackgroundSyncRegistration& other) = default;
   BackgroundSyncRegistration& operator=(
@@ -32,15 +28,11 @@
   ~BackgroundSyncRegistration() = default;
 
   bool Equals(const BackgroundSyncRegistration& other) const;
-  bool IsValid() const;
   bool IsFiring() const;
 
   const BackgroundSyncRegistrationOptions* options() const { return &options_; }
   BackgroundSyncRegistrationOptions* options() { return &options_; }
 
-  RegistrationId id() const { return id_; }
-  void set_id(RegistrationId id) { id_ = id; }
-
   blink::mojom::BackgroundSyncState sync_state() const { return sync_state_; }
   void set_sync_state(blink::mojom::BackgroundSyncState state) {
     sync_state_ = state;
@@ -53,10 +45,7 @@
   void set_delay_until(base::Time delay_until) { delay_until_ = delay_until; }
 
  private:
-  static const RegistrationId kInvalidRegistrationId;
-
   BackgroundSyncRegistrationOptions options_;
-  RegistrationId id_ = kInvalidRegistrationId;
   blink::mojom::BackgroundSyncState sync_state_ =
       blink::mojom::BackgroundSyncState::PENDING;
   int num_attempts_ = 0;
diff --git a/content/browser/background_sync/background_sync_service_impl.cc b/content/browser/background_sync/background_sync_service_impl.cc
index 7af8177d1..5ecef2f2 100644
--- a/content/browser/background_sync/background_sync_service_impl.cc
+++ b/content/browser/background_sync/background_sync_service_impl.cc
@@ -30,7 +30,6 @@
 blink::mojom::SyncRegistrationPtr ToMojoRegistration(
     const BackgroundSyncRegistration& in) {
   blink::mojom::SyncRegistrationPtr out(blink::mojom::SyncRegistration::New());
-  out->id = in.id();
   out->tag = in.options()->tag;
   out->network_state = static_cast<blink::mojom::BackgroundSyncNetworkState>(
       in.options()->network_state);
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc
index 360d3f4..92994d5 100644
--- a/content/browser/download/download_manager_impl.cc
+++ b/content/browser/download/download_manager_impl.cc
@@ -88,6 +88,17 @@
 namespace content {
 namespace {
 
+#if defined(OS_ANDROID)
+void DeleteDownloadedFileOnUIThread(const base::FilePath& file_path) {
+  if (!file_path.empty()) {
+    download::GetDownloadTaskRunner()->PostTask(
+        FROM_HERE,
+        base::BindOnce(base::IgnoreResult(&download::DeleteDownloadedFile),
+                       file_path));
+  }
+}
+#endif
+
 StoragePartitionImpl* GetStoragePartition(BrowserContext* context,
                                           int render_process_id,
                                           int render_frame_id) {
@@ -566,6 +577,7 @@
     if (ShouldClearDownloadFromDB(download->GetState(),
                                   download->GetLastReason())) {
       cleared_download_guids_on_startup_.insert(download->GetGuid());
+      DeleteDownloadedFileOnUIThread(download->GetFullPath());
       continue;
     }
 #endif  // defined(OS_ANDROID)
@@ -970,8 +982,11 @@
   // download. Simply returning null and don't store them in this class to
   // reduce memory usage.
   if (cleared_download_guids_on_startup_.find(guid) !=
-          cleared_download_guids_on_startup_.end() ||
-      ShouldClearDownloadFromDB(state, interrupt_reason)) {
+      cleared_download_guids_on_startup_.end()) {
+    return nullptr;
+  }
+  if (ShouldClearDownloadFromDB(state, interrupt_reason)) {
+    DeleteDownloadedFileOnUIThread(current_path);
     return nullptr;
   }
 #endif
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 297f831..75e8d21 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -1075,8 +1075,16 @@
       static_cast<SiteInstanceImpl*>(new_instance.get());
   if (!frame_tree_node_->IsMainFrame() && !new_instance_impl->HasProcess() &&
       new_instance_impl->RequiresDedicatedProcess()) {
-    new_instance_impl->set_process_reuse_policy(
-        SiteInstanceImpl::ProcessReusePolicy::REUSE_PENDING_OR_COMMITTED_SITE);
+    // Also give the embedder a chance to override this decision.  Certain
+    // frames have different enough workloads so that it's better to avoid
+    // placing a subframe into an existing process for better performance
+    // isolation.  See https://crbug.com/899418.
+    if (GetContentClient()->browser()->ShouldSubframesTryToReuseExistingProcess(
+            frame_tree_node_->frame_tree()->GetMainFrame())) {
+      new_instance_impl->set_process_reuse_policy(
+          SiteInstanceImpl::ProcessReusePolicy::
+              REUSE_PENDING_OR_COMMITTED_SITE);
+    }
   }
 
   return new_instance;
diff --git a/content/browser/media/session/media_session_impl.cc b/content/browser/media/session/media_session_impl.cc
index 037e7c6..750494fc 100644
--- a/content/browser/media/session/media_session_impl.cc
+++ b/content/browser/media/session/media_session_impl.cc
@@ -80,7 +80,7 @@
       return MediaSessionUserAction::SeekForward;
   }
   NOTREACHED();
-  return MediaSessionUserAction::Count;
+  return MediaSessionUserAction::Play;
 }
 
 // If the string is not empty then push it to the back of a vector.
diff --git a/content/browser/media/session/media_session_uma_helper.cc b/content/browser/media/session/media_session_uma_helper.cc
index 32195e4..d961917 100644
--- a/content/browser/media/session/media_session_uma_helper.cc
+++ b/content/browser/media/session/media_session_uma_helper.cc
@@ -23,17 +23,12 @@
 // static
 void MediaSessionUmaHelper::RecordMediaSessionUserAction(
     MediaSessionUserAction action) {
-  UMA_HISTOGRAM_ENUMERATION(
-      "Media.Session.UserAction", static_cast<HistogramBase::Sample>(action),
-      static_cast<HistogramBase::Sample>(MediaSessionUserAction::Count));
+  UMA_HISTOGRAM_ENUMERATION("Media.Session.UserAction", action);
 }
 
 void MediaSessionUmaHelper::RecordSessionSuspended(
     MediaSessionSuspendedSource source) const {
-  UMA_HISTOGRAM_ENUMERATION(
-      "Media.Session.Suspended",
-      static_cast<HistogramBase::Sample>(source),
-      static_cast<HistogramBase::Sample>(MediaSessionSuspendedSource::Count));
+  UMA_HISTOGRAM_ENUMERATION("Media.Session.Suspended", source);
 }
 
 void MediaSessionUmaHelper::RecordRequestAudioFocusResult(bool result) const {
diff --git a/content/browser/media/session/media_session_uma_helper.h b/content/browser/media/session/media_session_uma_helper.h
index 99f40c5..58d909fc 100644
--- a/content/browser/media/session/media_session_uma_helper.h
+++ b/content/browser/media/session/media_session_uma_helper.h
@@ -26,7 +26,7 @@
     UI = 2,
     CONTENT = 3,
     SystemTransientDuck = 4,
-    Count // Leave at the end.
+    kMaxValue = SystemTransientDuck,
   };
 
   // Extended enum to blink::mojom::MediaSessionAction, distinguishing default
@@ -41,7 +41,7 @@
     NextTrack = 6,
     SeekBackward = 7,
     SeekForward = 8,
-    Count  // Leave at the end.
+    kMaxValue = SeekForward,
   };
 
   MediaSessionUmaHelper();
diff --git a/content/browser/network_service_instance.cc b/content/browser/network_service_instance.cc
index 91b9781..5438bae 100644
--- a/content/browser/network_service_instance.cc
+++ b/content/browser/network_service_instance.cc
@@ -81,13 +81,22 @@
 
 CONTENT_EXPORT network::mojom::NetworkService* GetNetworkServiceFromConnector(
     service_manager::Connector* connector) {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  const bool is_network_service_enabled =
+      base::FeatureList::IsEnabled(network::features::kNetworkService);
+  // The DCHECK for thread is only done without network service enabled. This is
+  // because the connector and the pre-existing |g_network_service_ptr| are
+  // bound to the right thread in the network service case, and this allows
+  // Android to instantiate the NetworkService before UI thread is promoted to
+  // BrowserThread::UI.
+  if (!is_network_service_enabled)
+    DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
   if (!g_network_service_ptr)
     g_network_service_ptr = new network::mojom::NetworkServicePtr;
   static NetworkServiceClient* g_client;
   if (!g_network_service_ptr->is_bound() ||
       g_network_service_ptr->encountered_error()) {
-    if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
+    if (is_network_service_enabled) {
       connector->BindInterface(mojom::kNetworkServiceName,
                                g_network_service_ptr);
       g_network_service_ptr->set_connection_error_handler(
@@ -107,7 +116,7 @@
 
       const base::CommandLine* command_line =
           base::CommandLine::ForCurrentProcess();
-      if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
+      if (is_network_service_enabled) {
         if (command_line->HasSwitch(network::switches::kLogNetLog)) {
           base::FilePath log_path =
               command_line->GetSwitchValuePath(network::switches::kLogNetLog);
diff --git a/content/browser/portal/portal_browsertest.cc b/content/browser/portal/portal_browsertest.cc
index 82fdddf2..a0b63ea 100644
--- a/content/browser/portal/portal_browsertest.cc
+++ b/content/browser/portal/portal_browsertest.cc
@@ -344,13 +344,7 @@
 }
 
 // Tests that a portal can be activated in content_shell.
-// Disabled due to flakiness on Android.  See https://crbug.com/892669.
-#if defined(OS_ANDROID)
-#define MAYBE_ActivatePortalInShell DISABLED_ActivatePortalInShell
-#else
-#define MAYBE_ActivatePortalInShell ActivatePortalInShell
-#endif
-IN_PROC_BROWSER_TEST_F(PortalBrowserTest, MAYBE_ActivatePortalInShell) {
+IN_PROC_BROWSER_TEST_F(PortalBrowserTest, ActivatePortalInShell) {
   EXPECT_TRUE(NavigateToURL(
       shell(), embedded_test_server()->GetURL("portal.test", "/title1.html")));
   WebContentsImpl* web_contents_impl =
diff --git a/content/browser/renderer_host/input/gesture_event_queue.cc b/content/browser/renderer_host/input/gesture_event_queue.cc
index d98d1b1..bb4358e 100644
--- a/content/browser/renderer_host/input/gesture_event_queue.cc
+++ b/content/browser/renderer_host/input/gesture_event_queue.cc
@@ -82,6 +82,17 @@
   return false;
 }
 
+void GestureEventQueue::QueueDeferredEvents(
+    const GestureEventWithLatencyInfo& gesture_event) {
+  deferred_gesture_queue_.push_back(gesture_event);
+}
+
+GestureEventQueue::GestureQueue GestureEventQueue::TakeDeferredEvents() {
+  GestureQueue deferred_gesture_events;
+  deferred_gesture_events.swap(deferred_gesture_queue_);
+  return deferred_gesture_events;
+}
+
 void GestureEventQueue::StopFling() {
   fling_controller_.StopFling();
 }
diff --git a/content/browser/renderer_host/input/gesture_event_queue.h b/content/browser/renderer_host/input/gesture_event_queue.h
index 98ceda8..fd86714 100644
--- a/content/browser/renderer_host/input/gesture_event_queue.h
+++ b/content/browser/renderer_host/input/gesture_event_queue.h
@@ -59,6 +59,7 @@
 // http://crbug.com/148443.
 class CONTENT_EXPORT GestureEventQueue {
  public:
+  using GestureQueue = base::circular_deque<GestureEventWithLatencyInfo>;
   struct CONTENT_EXPORT Config {
     Config();
 
@@ -85,6 +86,14 @@
   // if the event wasn't queued.
   bool DebounceOrQueueEvent(const GestureEventWithLatencyInfo&);
 
+  // Adds a gesture to the queue of events that needs to be deferred until the
+  // touch action is known.
+  void QueueDeferredEvents(const GestureEventWithLatencyInfo&);
+
+  // Returns events in the |deferred_gesture_queue_| and empty
+  // the queue.
+  GestureQueue TakeDeferredEvents();
+
   // Indicates that the caller has received an acknowledgement from the renderer
   // with state |ack_result| and event |type|. May send events if the queue is
   // not empty.
@@ -192,7 +201,6 @@
 
   bool processing_acks_ = false;
 
-  using GestureQueue = base::circular_deque<GestureEventWithLatencyInfo>;
   using GestureQueueWithAckState =
       base::circular_deque<GestureEventWithLatencyInfoAndAckState>;
 
@@ -213,6 +221,10 @@
   // Queue of events that have been deferred for debounce.
   GestureQueue debouncing_deferral_queue_;
 
+  // Queue of gesture events that have been deferred until the main thread touch
+  // action is known.
+  GestureQueue deferred_gesture_queue_;
+
   // Time window in which to debounce scroll/fling ends. Note that an interval
   // of zero effectively disables debouncing.
   base::TimeDelta debounce_interval_;
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index 6a55e15..2b6d838 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -26,6 +26,7 @@
 #include "content/public/common/input_event_ack_state.h"
 #include "ipc/ipc_sender.h"
 #include "ui/events/blink/blink_event_util.h"
+#include "ui/events/blink/blink_features.h"
 #include "ui/events/blink/web_input_event_traits.h"
 #include "ui/events/event.h"
 #include "ui/events/keycodes/keyboard_codes.h"
@@ -81,6 +82,8 @@
                            fling_scheduler_client,
                            config.gesture_config),
       device_scale_factor_(1.f),
+      compositor_touch_action_enabled_(
+          base::FeatureList::IsEnabled(features::kCompositorTouchAction)),
       host_binding_(this),
       frame_host_binding_(this),
       weak_ptr_factory_(this) {
@@ -142,7 +145,22 @@
     return;
   }
 
-  if (touch_action_filter_.FilterGestureEvent(&gesture_event.event) ==
+  FilterGestureEventResult result =
+      touch_action_filter_.FilterGestureEvent(&gesture_event.event);
+  if (compositor_touch_action_enabled_ &&
+      result == FilterGestureEventResult::kFilterGestureEventDelayed) {
+    gesture_event_queue_.QueueDeferredEvents(gesture_event);
+    return;
+  }
+  SendGestureEventWithoutQueueing(gesture_event, result);
+}
+
+void InputRouterImpl::SendGestureEventWithoutQueueing(
+    GestureEventWithLatencyInfo& gesture_event,
+    const FilterGestureEventResult& existing_result) {
+  DCHECK_NE(existing_result,
+            FilterGestureEventResult::kFilterGestureEventDelayed);
+  if (existing_result ==
       FilterGestureEventResult::kFilterGestureEventFiltered) {
     disposition_handler_->OnGestureEventAck(gesture_event,
                                             InputEventAckSource::BROWSER,
@@ -237,7 +255,21 @@
   return gesture_event_queue_.FlingCancellationIsDeferred();
 }
 
-void InputRouterImpl::CancelTouchTimeout() {
+void InputRouterImpl::ProcessDeferredGestureEventQueue() {
+  GestureEventQueue::GestureQueue deferred_gesture_events =
+      gesture_event_queue_.TakeDeferredEvents();
+  for (auto& it : deferred_gesture_events) {
+    FilterGestureEventResult result =
+        touch_action_filter_.FilterGestureEvent(&(it.event));
+    SendGestureEventWithoutQueueing(it, result);
+  }
+}
+
+void InputRouterImpl::SetTouchActionFromMain(cc::TouchAction touch_action) {
+  if (compositor_touch_action_enabled_) {
+    touch_action_filter_.OnSetTouchAction(touch_action);
+    ProcessDeferredGestureEventQueue();
+  }
   UpdateTouchAckTimeoutEnabled();
 }
 
@@ -246,6 +278,8 @@
                                                 InputEventAckState state) {
   touch_action_filter_.OnSetWhiteListedTouchAction(touch_action);
   client_->OnSetWhiteListedTouchAction(touch_action);
+  if (compositor_touch_action_enabled_)
+    UpdateTouchAckTimeoutEnabled();
 }
 
 void InputRouterImpl::DidOverscroll(const ui::DidOverscrollParams& params) {
@@ -322,6 +356,11 @@
                              std::move(callback));
 }
 
+void InputRouterImpl::FlushDeferredGestureQueue() {
+  touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  ProcessDeferredGestureEventQueue();
+}
+
 void InputRouterImpl::OnTouchEventAck(const TouchEventWithLatencyInfo& event,
                                       InputEventAckSource ack_source,
                                       InputEventAckState ack_result) {
@@ -332,12 +371,13 @@
     touch_action_filter_.AppendToGestureSequenceForDebugging(
         base::NumberToString(event.event.unique_touch_event_id).c_str());
     touch_action_filter_.IncreaseActiveTouches();
-    // There are some cases the touch action may not have value when receiving
-    // the ACK for the touch start, such as input ack state is
-    // NO_CONSUMER_EXISTS, or the renderer has swapped out. In these cases, set
-    // touch action Auto.
-    if (!touch_action_filter_.allowed_touch_action().has_value()) {
+    if ((compositor_touch_action_enabled_ &&
+         ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) ||
+        (!compositor_touch_action_enabled_ &&
+         !touch_action_filter_.allowed_touch_action().has_value())) {
       touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+      if (compositor_touch_action_enabled_)
+        touch_event_queue_.StopTimeoutMonitor();
       UpdateTouchAckTimeoutEnabled();
     }
   }
@@ -534,9 +574,14 @@
   if (touch_action.has_value())
     OnSetTouchAction(touch_action.value());
 
+  bool should_stop_timeout_monitor =
+      !compositor_touch_action_enabled_ ||
+      (compositor_touch_action_enabled_ &&
+       touch_action_filter_.allowed_touch_action().has_value());
   // |touch_event_queue_| will forward to OnTouchEventAck when appropriate.
   touch_event_queue_.ProcessTouchAck(source, state, latency,
-                                     touch_event.event.unique_touch_event_id);
+                                     touch_event.event.unique_touch_event_id,
+                                     should_stop_timeout_monitor);
 }
 
 void InputRouterImpl::GestureEventHandled(
@@ -596,6 +641,8 @@
 void InputRouterImpl::ForceSetTouchActionAuto() {
   touch_action_filter_.AppendToGestureSequenceForDebugging("F");
   touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  if (compositor_touch_action_enabled_)
+    touch_event_queue_.StopTimeoutMonitor();
 }
 
 void InputRouterImpl::ForceResetTouchActionForTest() {
@@ -615,6 +662,8 @@
   touch_action_filter_.AppendToGestureSequenceForDebugging(
       base::NumberToString(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.
   UpdateTouchAckTimeoutEnabled();
@@ -624,9 +673,16 @@
   // kTouchActionNone 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.
-  const bool touch_ack_timeout_enabled =
-      touch_action_filter_.allowed_touch_action() != cc::kTouchActionNone;
-  touch_event_queue_.SetAckTimeoutEnabled(touch_ack_timeout_enabled);
+  base::Optional<cc::TouchAction> allowed_touch_action =
+      touch_action_filter_.allowed_touch_action();
+  base::Optional<cc::TouchAction> white_listed_touch_action =
+      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.has_value() &&
+       white_listed_touch_action.value() == cc::kTouchActionNone);
+  touch_event_queue_.SetAckTimeoutEnabled(!touch_ack_timeout_disabled);
 }
 
 }  // namespace content
diff --git a/content/browser/renderer_host/input/input_router_impl.h b/content/browser/renderer_host/input/input_router_impl.h
index cda2e68..05bb0d01 100644
--- a/content/browser/renderer_host/input/input_router_impl.h
+++ b/content/browser/renderer_host/input/input_router_impl.h
@@ -89,7 +89,7 @@
   void ForceSetTouchActionAuto() override;
 
   // InputHandlerHost impl
-  void CancelTouchTimeout() override;
+  void SetTouchActionFromMain(cc::TouchAction touch_action) override;
   void SetWhiteListedTouchAction(cc::TouchAction touch_action,
                                  uint32_t unique_touch_event_id,
                                  InputEventAckState state) override;
@@ -129,6 +129,7 @@
                        InputEventAckSource ack_source,
                        InputEventAckState ack_result) override;
   void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override;
+  void FlushDeferredGestureQueue() override;
 
   // GestureEventFilterClient
   void SendGestureEventImmediately(
@@ -211,6 +212,11 @@
   // non-zero touch timeout configuration.
   void UpdateTouchAckTimeoutEnabled();
 
+  void SendGestureEventWithoutQueueing(
+      GestureEventWithLatencyInfo& gesture_event,
+      const FilterGestureEventResult& existing_result);
+  void ProcessDeferredGestureEventQueue();
+
   InputRouterImplClient* client_;
   InputDispositionHandler* disposition_handler_;
   int frame_tree_node_id_;
@@ -234,6 +240,8 @@
 
   float device_scale_factor_;
 
+  bool compositor_touch_action_enabled_;
+
   // Last touch position relative to screen. Used to compute movementX/Y.
   base::flat_map<int, gfx::Point> global_touch_position_;
 
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 912c07a..49327ed 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -382,7 +382,12 @@
     input_router_->OnHasTouchEventHandlers(has_handlers);
   }
 
-  void CancelTouchTimeout() { input_router_->CancelTouchTimeout(); }
+  void CancelTouchTimeout() {
+    // InputRouterImpl::SetTouchActionFromMain calls
+    // InputRouterImpl::UpdateTouchAckTimeoutEnabled and that will cancel the
+    // touch timeout when the touch action is None.
+    input_router_->SetTouchActionFromMain(cc::kTouchActionNone);
+  }
 
   void OnSetWhiteListedTouchAction(cc::TouchAction white_listed_touch_action,
                                    uint32_t unique_touch_event_id,
@@ -430,15 +435,16 @@
     EXPECT_EQ(input_router_->touch_action_filter_.num_of_active_touches_, 0);
   }
 
-  void OnTouchEventAckWithAckState(InputEventAckState ack_state) {
+  void OnTouchEventAckWithAckState(
+      InputEventAckState ack_state,
+      base::Optional<cc::TouchAction> expected_touch_action) {
     input_router_->OnHasTouchEventHandlers(true);
     EXPECT_FALSE(input_router_->AllowedTouchAction().has_value());
     PressTouchPoint(1, 1);
     input_router_->SendTouchEvent(TouchEventWithLatencyInfo(touch_event_));
     input_router_->OnTouchEventAck(TouchEventWithLatencyInfo(touch_event_),
                                    InputEventAckSource::BROWSER, ack_state);
-    EXPECT_EQ(input_router_->AllowedTouchAction().value(),
-              cc::kTouchActionAuto);
+    EXPECT_EQ(input_router_->AllowedTouchAction(), expected_touch_action);
   }
 
   InputRouter::Config config_;
@@ -454,7 +460,7 @@
 class InputRouterImplTest : public InputRouterImplTestBase,
                             public testing::WithParamInterface<bool> {
  public:
-  InputRouterImplTest() {
+  InputRouterImplTest() : compositor_touch_action_enabled_(GetParam()) {
     if (GetParam()) {
       touch_action_feature_list_.InitAndEnableFeature(
           features::kCompositorTouchAction);
@@ -464,6 +470,9 @@
     }
   }
 
+ protected:
+  const bool compositor_touch_action_enabled_;
+
  private:
   base::test::ScopedFeatureList touch_action_feature_list_;
 };
@@ -656,32 +665,53 @@
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateConsumed) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_CONSUMED);
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_CONSUMED, touch_action);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNotConsumed) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_action);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateConsumedShouldBubble) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_CONSUMED_SHOULD_BUBBLE);
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_CONSUMED_SHOULD_BUBBLE,
+                              touch_action);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNoConsumerExists) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
+                              cc::kTouchActionAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateIgnored) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_IGNORED);
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_IGNORED, touch_action);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNonBlocking) {
-  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
+  OnTouchEventAckWithAckState(INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING,
+                              touch_action);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNonBlockingDueToFling) {
+  base::Optional<cc::TouchAction> touch_action =
+      compositor_touch_action_enabled_ ? base::Optional<cc::TouchAction>()
+                                       : cc::kTouchActionAuto;
   OnTouchEventAckWithAckState(
-      INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING);
+      INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING, touch_action);
 }
 
 // Tests that touch-events are sent properly.
@@ -690,6 +720,7 @@
 
   PressTouchPoint(1, 1);
   SendTouchEvent();
+  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
   EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
   DispatchedMessages touch_start_event = GetAndResetDispatchedMessages();
   ASSERT_EQ(1U, touch_start_event.size());
@@ -1263,8 +1294,7 @@
   // End the touch sequence.
   ReleaseTouchPoint(0);
   SendTouchEvent();
-  ResetTouchAction();
-  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+  input_router_->SetTouchActionFromMain(cc::kTouchActionAuto);
   dispatched_messages = GetAndResetDispatchedMessages();
   EXPECT_EQ(1U, dispatched_messages.size());
   dispatched_messages[0]->ToEvent()->CallCallback(
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
index fb39905..6b84186 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
@@ -115,10 +115,12 @@
     InputEventAckSource ack_source,
     InputEventAckState ack_result,
     const LatencyInfo& latency_info,
-    const uint32_t unique_touch_event_id) {
+    const uint32_t unique_touch_event_id,
+    bool should_stop_timeout_monitor) {
   TRACE_EVENT0("input", "PassthroughTouchEventQueue::ProcessTouchAck");
   if (timeout_handler_ &&
-      timeout_handler_->ConfirmTouchEvent(unique_touch_event_id, ack_result))
+      timeout_handler_->ConfirmTouchEvent(unique_touch_event_id, ack_result,
+                                          should_stop_timeout_monitor))
     return;
 
   auto touch_event_iter = outstanding_touches_.begin();
@@ -195,6 +197,7 @@
 
 void PassthroughTouchEventQueue::FlushQueue() {
   drop_remaining_touches_in_sequence_ = true;
+  client_->FlushDeferredGestureQueue();
   while (!outstanding_touches_.empty()) {
     auto iter = outstanding_touches_.begin();
     TouchEventWithLatencyInfoAndAckState event = *iter;
@@ -206,6 +209,11 @@
   }
 }
 
+void PassthroughTouchEventQueue::StopTimeoutMonitor() {
+  if (timeout_handler_)
+    timeout_handler_->StopTimeoutMonitor();
+}
+
 void PassthroughTouchEventQueue::AckCompletedEvents() {
   // Don't allow re-entrancy into this method otherwise
   // the ordering of acks won't be preserved.
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.h b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
index 65d881e..04088dd 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.h
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
@@ -33,6 +33,8 @@
 
   virtual void OnFilteringTouchEvent(
       const blink::WebTouchEvent& touch_event) = 0;
+
+  virtual void FlushDeferredGestureQueue() = 0;
 };
 
 // A queue that processes a touch-event and forwards it on to the
@@ -78,7 +80,8 @@
   void ProcessTouchAck(InputEventAckSource ack_source,
                        InputEventAckState ack_result,
                        const ui::LatencyInfo& latency_info,
-                       const uint32_t unique_touch_event_id);
+                       const uint32_t unique_touch_event_id,
+                       bool should_stop_timeout_monitor);
   void OnGestureScrollEvent(const GestureEventWithLatencyInfo& gesture_event);
 
   void OnGestureEventAck(const GestureEventWithLatencyInfo& event,
@@ -96,6 +99,8 @@
 
   bool Empty() const;
 
+  void StopTimeoutMonitor();
+
  protected:
   void SendTouchCancelEventForTouchEvent(
       const TouchEventWithLatencyInfo& event_to_cancel);
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
index a7b9c1d..2c869a0 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
@@ -95,6 +95,8 @@
   void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override {
   }
 
+  void FlushDeferredGestureQueue() override {}
+
  protected:
   void SetUpForTouchMoveSlopTesting(double slop_length_dips) {
     slop_length_dips_ = slop_length_dips;
@@ -141,21 +143,21 @@
   void SendTouchEventAck(InputEventAckState ack_result) {
     DCHECK(!sent_events_ids_.empty());
     queue_->ProcessTouchAck(InputEventAckSource::COMPOSITOR_THREAD, ack_result,
-                            ui::LatencyInfo(), sent_events_ids_.front());
+                            ui::LatencyInfo(), sent_events_ids_.front(), true);
     sent_events_ids_.pop_front();
   }
 
   void SendTouchEventAckLast(InputEventAckState ack_result) {
     DCHECK(!sent_events_ids_.empty());
     queue_->ProcessTouchAck(InputEventAckSource::COMPOSITOR_THREAD, ack_result,
-                            ui::LatencyInfo(), sent_events_ids_.back());
+                            ui::LatencyInfo(), sent_events_ids_.back(), true);
     sent_events_ids_.pop_back();
   }
 
   void SendTouchEventAckWithID(InputEventAckState ack_result,
                                int unique_event_id) {
     queue_->ProcessTouchAck(InputEventAckSource::COMPOSITOR_THREAD, ack_result,
-                            ui::LatencyInfo(), unique_event_id);
+                            ui::LatencyInfo(), unique_event_id, true);
     base::Erase(sent_events_ids_, unique_event_id);
   }
 
diff --git a/content/browser/renderer_host/input/touch_action_filter.cc b/content/browser/renderer_host/input/touch_action_filter.cc
index 2010ea3c..697c98f1 100644
--- a/content/browser/renderer_host/input/touch_action_filter.cc
+++ b/content/browser/renderer_host/input/touch_action_filter.cc
@@ -18,6 +18,28 @@
 namespace content {
 namespace {
 
+bool TouchActionRequiredToFilterGestureEvent(
+    const WebGestureEvent* gesture_event) {
+  switch (gesture_event->GetType()) {
+    case WebInputEvent::kGestureScrollBegin:
+    case WebInputEvent::kGestureScrollUpdate:
+    case WebInputEvent::kGestureScrollEnd:
+    case WebInputEvent::kGesturePinchBegin:
+    case WebInputEvent::kGesturePinchUpdate:
+    case WebInputEvent::kGesturePinchEnd:
+    case WebInputEvent::kGestureDoubleTap:
+    case WebInputEvent::kGestureTapUnconfirmed:
+    case WebInputEvent::kGestureTap:
+    case WebInputEvent::kGestureTapCancel:
+    case WebInputEvent::kGestureLongTap:
+    case WebInputEvent::kGestureTwoFingerTap:
+      return true;
+    default:
+      break;
+  }
+  return false;
+}
+
 // 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) {
@@ -47,6 +69,10 @@
   if (gesture_event->SourceDevice() != blink::kWebGestureDeviceTouchscreen)
     return FilterGestureEventResult::kFilterGestureEventAllowed;
 
+  if (TouchActionRequiredToFilterGestureEvent(gesture_event) &&
+      !active_touch_action_.has_value() && gesture_sequence_in_progress_)
+    return FilterGestureEventResult::kFilterGestureEventDelayed;
+
   // Filter for allowable touch actions first (eg. before the TouchEventQueue
   // can decide to send a touch cancel event).
   switch (gesture_event->GetType()) {
@@ -186,12 +212,9 @@
 
     case WebInputEvent::kGestureTapDown:
       gesture_sequence_in_progress_ = true;
-      // If the gesture is hitting a region that has a non-blocking (such as a
-      // passive) event listener.
       // In theory, the num_of_active_touches_ should be > 0 at this point. But
       // crash reports suggest otherwise.
-      if (gesture_event->is_source_touch_event_set_non_blocking ||
-          num_of_active_touches_ <= 0)
+      if (num_of_active_touches_ <= 0)
         SetTouchAction(cc::kTouchActionAuto);
       active_touch_action_ = allowed_touch_action_;
       if (active_touch_action_.has_value())
diff --git a/content/browser/renderer_host/input/touch_action_filter.h b/content/browser/renderer_host/input/touch_action_filter.h
index 623d31d..f5ee0d9 100644
--- a/content/browser/renderer_host/input/touch_action_filter.h
+++ b/content/browser/renderer_host/input/touch_action_filter.h
@@ -20,7 +20,8 @@
 
 enum class FilterGestureEventResult {
   kFilterGestureEventAllowed,
-  kFilterGestureEventFiltered
+  kFilterGestureEventFiltered,
+  kFilterGestureEventDelayed
 };
 
 // The TouchActionFilter is responsible for filtering scroll and pinch gesture
@@ -33,9 +34,11 @@
   ~TouchActionFilter();
 
   // Returns kFilterGestureEventFiltered if the supplied gesture event should be
-  // dropped based on the current touch-action state. Otherwise returns
-  // kFilterGestureEventAllowed, and possibly modifies the event's directional
-  // parameters to make the event compatible with the effective touch-action.
+  // dropped based on the current touch-action state.
+  // kFilterGestureEventDelayed if the |scrolling_touch_action_| has no value.
+  // Returns kFilterGestureEventAllowed, and possibly modifies the event's
+  // directional parameters to make the event compatible with the effective
+  // touch-action.
   FilterGestureEventResult FilterGestureEvent(
       blink::WebGestureEvent* gesture_event);
 
@@ -56,6 +59,10 @@
     return allowed_touch_action_;
   }
 
+  base::Optional<cc::TouchAction> white_listed_touch_action() const {
+    return white_listed_touch_action_;
+  }
+
   void SetForceEnableZoom(bool enabled) { force_enable_zoom_ = enabled; }
 
   void OnHasTouchEventHandlers(bool has_handlers);
diff --git a/content/browser/renderer_host/input/touch_timeout_handler.cc b/content/browser/renderer_host/input/touch_timeout_handler.cc
index 3c192c8..53e30fd 100644
--- a/content/browser/renderer_host/input/touch_timeout_handler.cc
+++ b/content/browser/renderer_host/input/touch_timeout_handler.cc
@@ -81,7 +81,8 @@
 }
 
 bool TouchTimeoutHandler::ConfirmTouchEvent(uint32_t unique_touch_event_id,
-                                            InputEventAckState ack_result) {
+                                            InputEventAckState ack_result,
+                                            bool should_stop_timeout_monitor) {
   if (timeout_event_.event.unique_touch_event_id != unique_touch_event_id)
     return false;
 
@@ -89,7 +90,8 @@
     case PENDING_ACK_NONE:
       if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED)
         enabled_for_current_sequence_ = false;
-      timeout_monitor_.Stop();
+      if (should_stop_timeout_monitor)
+        timeout_monitor_.Stop();
       return false;
     case PENDING_ACK_ORIGINAL_EVENT:
       if (AckedTimeoutEventRequiresCancel(ack_result)) {
@@ -122,6 +124,10 @@
   return true;
 }
 
+void TouchTimeoutHandler::StopTimeoutMonitor() {
+  timeout_monitor_.Stop();
+}
+
 void TouchTimeoutHandler::SetEnabled(bool enabled) {
   if (enabled_ == enabled)
     return;
diff --git a/content/browser/renderer_host/input/touch_timeout_handler.h b/content/browser/renderer_host/input/touch_timeout_handler.h
index 641db79..05ea554 100644
--- a/content/browser/renderer_host/input/touch_timeout_handler.h
+++ b/content/browser/renderer_host/input/touch_timeout_handler.h
@@ -28,10 +28,12 @@
 
   void StartIfNecessary(const TouchEventWithLatencyInfo& event);
   bool ConfirmTouchEvent(uint32_t unique_touch_event_id,
-                         InputEventAckState ack_result);
+                         InputEventAckState ack_result,
+                         bool should_stop_timeout_monitor);
   bool FilterEvent(const blink::WebTouchEvent& event);
   void SetEnabled(bool enabled);
   void SetUseMobileTimeout(bool use_mobile_timeout);
+  void StopTimeoutMonitor();
   bool IsTimeoutTimerRunning() const { return timeout_monitor_.IsRunning(); }
   bool IsEnabled() const { return enabled_ && !GetTimeoutDelay().is_zero(); }
 
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 3e81f84..2e6d707 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -12460,11 +12460,16 @@
     ack_observer.Wait();
     effective_touch_action =
         input_router->touch_action_filter_.allowed_touch_action_;
-    // Whitelisted touch action is sent from a separate IPC channel, so it is
-    // not guaranteed to have value when the ACK for the touch start arrived
-    // because the ACK is from the main thread.
+    // Effective touch action are sent from a separate IPC
+    // channel, so it is not guaranteed to have value when the ACK for the
+    // touch start arrived because the ACK is from the main thread.
     whitelisted_touch_action =
         input_router->touch_action_filter_.white_listed_touch_action_;
+    while (!effective_touch_action.has_value()) {
+      GiveItSomeTime(TestTimeouts::tiny_timeout());
+      effective_touch_action =
+          input_router->touch_action_filter_.allowed_touch_action_;
+    }
 
     // Send a touch move and touch end to complete the sequence, this also
     // avoids triggering DCHECKs when sending followup events.
@@ -12481,6 +12486,13 @@
     ack_observer.Wait();
   }
 
+  void GiveItSomeTime(const base::TimeDelta& t) {
+    base::RunLoop run_loop;
+    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+        FROM_HERE, run_loop.QuitClosure(), t);
+    run_loop.Run();
+  }
+
   // Waits until the parent frame has had enough time to propagate the effective
   // touch action to the child frame and the child frame has had enough time to
   // process it.
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index b064ad6..02d641b 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -97,6 +97,8 @@
 class ScreenOrientationProvider;
 class SiteInstance;
 class TestWCBeforeUnloadDelegate;  // site_per_process_browsertest.cc
+class
+    TestWCDelegateForDialogsAndFullscreen;  // web_contents_impl_browsertest.cc
 class TestWebContents;
 class TextInputManager;
 class WebContentsAudioMuter;
@@ -1000,6 +1002,7 @@
   friend class RenderFrameHostImplBeforeUnloadBrowserTest;
   friend class WebContentsImplBrowserTest;
   friend class TestWCBeforeUnloadDelegate;
+  friend class TestWCDelegateForDialogsAndFullscreen;
 
   FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, NoJSMessageOnInterstitials);
   FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, UpdateTitle);
@@ -1035,20 +1038,6 @@
                            TwoSubframesCreatePopupMenuWidgetsSimultaneously);
   FRIEND_TEST_ALL_PREFIXES(SitePerProcessAccessibilityBrowserTest,
                            CrossSiteIframeAccessibility);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           JavaScriptDialogsInMainAndSubframes);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           JavaScriptDialogsNormalizeText);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           DialogsFromJavaScriptEndFullscreen);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           DialogsFromJavaScriptEndFullscreenEvenInInnerWC);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           FileChooserEndsFullscreen);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           PopupsFromJavaScriptEndFullscreen);
-  FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
-                           FocusFromJavaScriptEndsFullscreen);
   FRIEND_TEST_ALL_PREFIXES(RenderFrameHostImplBrowserTest,
                            IframeBeforeUnloadParentHang);
   FRIEND_TEST_ALL_PREFIXES(RenderFrameHostImplBrowserTest,
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index b814f649..ffb6eb9 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -1519,13 +1519,18 @@
       shell(), UNLOAD_AND_BEFORE_UNLOAD_HTML, true, true);
 }
 
-namespace {
-
 class TestWCDelegateForDialogsAndFullscreen : public JavaScriptDialogManager,
                                               public WebContentsDelegate {
  public:
-  TestWCDelegateForDialogsAndFullscreen() = default;
-  ~TestWCDelegateForDialogsAndFullscreen() override = default;
+  explicit TestWCDelegateForDialogsAndFullscreen(WebContentsImpl* web_contents)
+      : web_contents_(web_contents) {
+    old_delegate_ = web_contents_->GetDelegate();
+    web_contents_->SetDelegate(this);
+  }
+  ~TestWCDelegateForDialogsAndFullscreen() override {
+    web_contents_->SetJavaScriptDialogManagerForTesting(nullptr);
+    web_contents_->SetDelegate(old_delegate_);
+  }
 
   void WillWaitForDialog() { waiting_for_ = kDialog; }
   void WillWaitForNewContents() { waiting_for_ = kNewContents; }
@@ -1620,6 +1625,9 @@
                      bool reset_state) override {}
 
  private:
+  WebContentsImpl* web_contents_;
+  WebContentsDelegate* old_delegate_;
+
   enum {
     kNothing,
     kDialog,
@@ -1646,13 +1654,10 @@
   void FileSelectionCanceled() override {}
 };
 
-}  // namespace
-
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        JavaScriptDialogsInMainAndSubframes) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   ASSERT_TRUE(embedded_test_server()->Start());
 
@@ -1733,16 +1738,12 @@
   test_delegate.Wait();
   EXPECT_EQ(GURL("http://a.com/title1.html"),
             GURL(test_delegate.last_message()).ReplaceComponents(clear_port));
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        JavaScriptDialogsNormalizeText) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -1753,9 +1754,6 @@
   EXPECT_TRUE(content::ExecuteScript(wc, alert));
   test_delegate.Wait();
   EXPECT_EQ("1\n2\n3\n4", test_delegate.last_message());
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
@@ -2117,8 +2115,7 @@
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        DialogsFromJavaScriptEndFullscreen) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -2165,17 +2162,13 @@
   EXPECT_TRUE(NavigateToURL(shell(), url));
   test_delegate.Wait();
   EXPECT_FALSE(wc->IsFullscreenForCurrentTab());
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        DialogsFromJavaScriptEndFullscreenEvenInInnerWC) {
   WebContentsImpl* top_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen top_test_delegate;
-  top_contents->SetDelegate(&top_test_delegate);
+  TestWCDelegateForDialogsAndFullscreen top_test_delegate(top_contents);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -2195,8 +2188,7 @@
 
   WebContentsImpl* inner_contents =
       static_cast<WebContentsImpl*>(CreateAndAttachInnerContents(frame));
-  TestWCDelegateForDialogsAndFullscreen inner_test_delegate;
-  inner_contents->SetDelegate(&inner_test_delegate);
+  TestWCDelegateForDialogsAndFullscreen inner_test_delegate(inner_contents);
 
   // A dialog from the inner WebContents should make the outer contents lose
   // fullscreen.
@@ -2207,18 +2199,11 @@
   EXPECT_TRUE(content::ExecuteScript(inner_contents, script));
   inner_test_delegate.Wait();
   EXPECT_FALSE(top_contents->IsFullscreenForCurrentTab());
-
-  inner_contents->SetDelegate(nullptr);
-  inner_contents->SetJavaScriptDialogManagerForTesting(nullptr);
-
-  top_contents->SetDelegate(nullptr);
-  top_contents->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, FileChooserEndsFullscreen) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -2229,16 +2214,12 @@
                      std::make_unique<MockFileSelectListener>(),
                      blink::mojom::FileChooserParams());
   EXPECT_FALSE(wc->IsFullscreenForCurrentTab());
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        PopupsFromJavaScriptEndFullscreen) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -2251,16 +2232,12 @@
   EXPECT_TRUE(content::ExecuteScript(wc, script));
   test_delegate.Wait();
   EXPECT_FALSE(wc->IsFullscreenForCurrentTab());
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
                        FocusFromJavaScriptEndsFullscreen) {
   WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  wc->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(wc);
 
   GURL url("about:blank");
   EXPECT_TRUE(NavigateToURL(shell(), url));
@@ -2284,9 +2261,6 @@
   EXPECT_TRUE(content::ExecuteScript(wc, script));
   test_delegate.Wait();
   EXPECT_FALSE(wc->IsFullscreenForCurrentTab());
-
-  wc->SetDelegate(nullptr);
-  wc->SetJavaScriptDialogManagerForTesting(nullptr);
 }
 
 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
@@ -2680,8 +2654,7 @@
   ASSERT_TRUE(embedded_test_server()->Start());
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  web_contents->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(web_contents);
 
   GURL url = embedded_test_server()->GetURL(
       "a.com", "/cross_site_iframe_factory.html?a(b{allowfullscreen})");
@@ -2774,9 +2747,8 @@
   ASSERT_TRUE(embedded_test_server()->Start());
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
+  TestWCDelegateForDialogsAndFullscreen test_delegate(web_contents);
   test_delegate.WillWaitForFullscreenExit();
-  web_contents->SetDelegate(&test_delegate);
 
   GURL url = embedded_test_server()->GetURL(
       "a.com", "/cross_site_iframe_factory.html?a(b{allowfullscreen})");
@@ -2826,8 +2798,7 @@
   ASSERT_TRUE(embedded_test_server()->Start());
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
-  TestWCDelegateForDialogsAndFullscreen test_delegate;
-  web_contents->SetDelegate(&test_delegate);
+  TestWCDelegateForDialogsAndFullscreen test_delegate(web_contents);
 
   GURL url = embedded_test_server()->GetURL(
       "a.com", "/cross_site_iframe_factory.html?a(a{allowfullscreen})");
diff --git a/content/common/input/input_handler.mojom b/content/common/input/input_handler.mojom
index eb63d1a..95741e1 100644
--- a/content/common/input/input_handler.mojom
+++ b/content/common/input/input_handler.mojom
@@ -156,10 +156,9 @@
 // contained in here are state changes that the renderer has taken
 // that the browser must be aware of.
 interface WidgetInputHandlerHost {
-  // Cancel the active touch timeout. Occurs when the renderer
-  // has processed a touch-action: none but not yet dispatched
-  // the event to javascript.
-  CancelTouchTimeout();
+  // When the renderer's main thread computes the touch action, send this to the
+  // browser.
+  SetTouchActionFromMain(TouchAction touch_action);
 
   // The whitelisted touch action and the associated unique touch event id
   // for a new touch point sent by the compositor. The unique touch event id is
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
index 275911b3..2f0c17f 100644
--- a/content/gpu/gpu_child_thread.cc
+++ b/content/gpu/gpu_child_thread.cc
@@ -178,10 +178,11 @@
 GpuChildThread::GpuChildThread(base::RepeatingClosure quit_closure,
                                const ChildThreadImpl::Options& options,
                                std::unique_ptr<gpu::GpuInit> gpu_init)
-    : ChildThreadImpl(std::move(quit_closure), options),
+    : ChildThreadImpl(MakeQuitSafelyClosure(), options),
       viz_main_(this,
                 CreateVizMainDependencies(GetConnector()),
                 std::move(gpu_init)),
+      quit_closure_(std::move(quit_closure)),
       weak_factory_(this) {
   if (in_process_gpu()) {
     DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
@@ -294,7 +295,7 @@
 }
 
 void GpuChildThread::QuitMainMessageLoop() {
-  ProcessShutdown();
+  quit_closure_.Run();
 }
 
 void GpuChildThread::BindServiceFactoryRequest(
@@ -316,6 +317,28 @@
   SkGraphics::PurgeAllCaches();
 }
 
+void GpuChildThread::QuitSafelyHelper(
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+  // Post a new task (even if we're called on the |task_runner|'s thread) to
+  // ensure that we are post-init.
+  task_runner->PostTask(
+      FROM_HERE, base::BindOnce([]() {
+        ChildThreadImpl* current_child_thread = ChildThreadImpl::current();
+        if (!current_child_thread)
+          return;
+        GpuChildThread* gpu_child_thread =
+            static_cast<GpuChildThread*>(current_child_thread);
+        gpu_child_thread->viz_main_.ExitProcess();
+      }));
+}
+
+// Returns a closure which calls into the VizMainImpl to perform shutdown
+// before quitting the main message loop. Must be called on the main thread.
+base::RepeatingClosure GpuChildThread::MakeQuitSafelyClosure() {
+  return base::BindRepeating(&GpuChildThread::QuitSafelyHelper,
+                             base::ThreadTaskRunnerHandle::Get());
+}
+
 #if defined(OS_ANDROID)
 // static
 std::unique_ptr<media::AndroidOverlay> GpuChildThread::CreateAndroidOverlay(
diff --git a/content/gpu/gpu_child_thread.h b/content/gpu/gpu_child_thread.h
index d6a05aa..6d69712 100644
--- a/content/gpu/gpu_child_thread.h
+++ b/content/gpu/gpu_child_thread.h
@@ -89,6 +89,12 @@
   void BindServiceFactoryRequest(
       service_manager::mojom::ServiceFactoryRequest request);
 
+  // Returns a closure which calls into the VizMainImpl to perform shutdown
+  // before quitting the main message loop. Must be called on the main thread.
+  static base::RepeatingClosure MakeQuitSafelyClosure();
+  static void QuitSafelyHelper(
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+
 #if defined(OS_ANDROID)
   static std::unique_ptr<media::AndroidOverlay> CreateAndroidOverlay(
       scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
@@ -110,6 +116,9 @@
   // Holds a closure that releases pending interface requests on the IO thread.
   base::Closure release_pending_requests_closure_;
 
+  // A closure which quits the main message loop.
+  base::RepeatingClosure quit_closure_;
+
   std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
 
   base::WeakPtrFactory<GpuChildThread> weak_factory_;
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
index ab36d92e..f4b8f5aa 100644
--- a/content/public/android/BUILD.gn
+++ b/content/public/android/BUILD.gn
@@ -450,6 +450,7 @@
     "//third_party/android_support_test_runner:runner_java",
     "//third_party/blink/public:android_mojo_bindings_java",
     "//third_party/blink/public:blink_headers_java",
+    "//third_party/hamcrest:hamcrest_java",
     "//third_party/jsr-305:jsr_305_javalib",
     "//third_party/junit",
     "//ui/android:ui_java",
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 1f4cfc2a..5fb8ab8 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
@@ -1551,6 +1551,11 @@
         return client == null ? null : client.getCustomTextClassifier();
     }
 
+    @CalledByNative
+    private void nativeSelectionPopupControllerDestroyed() {
+        mNativeSelectionPopupController = 0;
+    }
+
     private native long nativeInit(WebContents webContents);
     private native void nativeSetTextHandlesTemporarilyHidden(
             long nativeSelectionPopupController, boolean hidden);
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index ca4b9259..c689e8f1 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -194,6 +194,11 @@
   return false;
 }
 
+bool ContentBrowserClient::ShouldSubframesTryToReuseExistingProcess(
+    RenderFrameHost* main_frame) {
+  return true;
+}
+
 bool ContentBrowserClient::ShouldSwapBrowsingInstancesForNavigation(
     SiteInstance* site_instance,
     const GURL& current_url,
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 14fa589..95eec34 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -419,6 +419,15 @@
   virtual bool ShouldTryToUseExistingProcessHost(
       BrowserContext* browser_context, const GURL& url);
 
+  // Returns whether or not subframes of |main_frame| should try to
+  // aggressively reuse existing processes, even when below process limit.
+  // This gets called when navigating a subframe to a URL that requires a
+  // dedicated process and defaults to true, which minimizes the process count.
+  // The embedder can choose to override this if there is a reason to avoid the
+  // reuse.
+  virtual bool ShouldSubframesTryToReuseExistingProcess(
+      RenderFrameHost* main_frame);
+
   // Called when a site instance is first associated with a process.
   virtual void SiteInstanceGotProcess(SiteInstance* site_instance) {}
 
diff --git a/content/renderer/input/widget_input_handler_manager.cc b/content/renderer/input/widget_input_handler_manager.cc
index d76df765..20b5963 100644
--- a/content/renderer/input/widget_input_handler_manager.cc
+++ b/content/renderer/input/widget_input_handler_manager.cc
@@ -286,12 +286,8 @@
 
 void WidgetInputHandlerManager::ProcessTouchAction(
     cc::TouchAction touch_action) {
-  // Cancel the touch timeout on TouchActionNone since it is a good hint
-  // that author doesn't want scrolling.
-  if (touch_action == cc::TouchAction::kTouchActionNone) {
-    if (mojom::WidgetInputHandlerHost* host = GetWidgetInputHandlerHost())
-      host->CancelTouchTimeout();
-  }
+  if (mojom::WidgetInputHandlerHost* host = GetWidgetInputHandlerHost())
+    host->SetTouchActionFromMain(touch_action);
 }
 
 mojom::WidgetInputHandlerHost*
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc
index e157bd7..687d3df 100644
--- a/content/renderer/render_widget_unittest.cc
+++ b/content/renderer/render_widget_unittest.cc
@@ -78,7 +78,7 @@
   MockWidgetInputHandlerHost(
       mojo::InterfaceRequest<mojom::WidgetInputHandlerHost> request)
       : binding_(this, std::move(request)) {}
-  MOCK_METHOD0(CancelTouchTimeout, void());
+  MOCK_METHOD1(SetTouchActionFromMain, void(cc::TouchAction));
 
   MOCK_METHOD3(SetWhiteListedTouchAction,
                void(cc::TouchAction, uint32_t, content::InputEventAckState));
diff --git a/content/shell/browser/layout_test/layout_test_content_browser_client.cc b/content/shell/browser/layout_test/layout_test_content_browser_client.cc
index b5bf6e4..e2a1bef0 100644
--- a/content/shell/browser/layout_test/layout_test_content_browser_client.cc
+++ b/content/shell/browser/layout_test/layout_test_content_browser_client.cc
@@ -4,14 +4,7 @@
 
 #include "content/shell/browser/layout_test/layout_test_content_browser_client.h"
 
-#include <algorithm>
-#include <iterator>
-#include <string>
-#include <utility>
-#include <vector>
-
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "base/task/post_task.h"
 #include "content/public/browser/browser_context.h"
@@ -21,9 +14,7 @@
 #include "content/public/browser/overlay_window.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/resource_dispatcher_host.h"
-#include "content/public/browser/site_isolation_policy.h"
 #include "content/public/browser/storage_partition.h"
-#include "content/public/common/content_switches.h"
 #include "content/shell/browser/layout_test/blink_test_controller.h"
 #include "content/shell/browser/layout_test/fake_bluetooth_chooser.h"
 #include "content/shell/browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.h"
@@ -40,7 +31,6 @@
 #include "device/bluetooth/test/fake_bluetooth.h"
 #include "gpu/config/gpu_switches.h"
 #include "services/service_manager/public/cpp/binder_registry.h"
-#include "url/origin.h"
 
 namespace content {
 namespace {
@@ -240,41 +230,6 @@
       "https://devtools.oopif.test:8443/",
   };
 
-  // On platforms with strict Site Isolation, the also isolate WPT origins for
-  // additional OOPIF coverage.
-  //
-  // Don't isolate WPT origins on
-  // 1) platforms where strict Site Isolation is not the default.
-  // 2) in layout tests under virtual/not-site-per-process where
-  //    --disable-site-isolation-trials switch is used.
-  if (SiteIsolationPolicy::UseDedicatedProcessesForAllSites()) {
-    // The list of hostnames below is based on
-    // https://web-platform-tests.org/writing-tests/server-features.html
-    const char* kWptHostnames[] = {
-        "www.web-platform.test",
-        "www1.web-platform.test",
-        "www2.web-platform.test",
-        "xn--n8j6ds53lwwkrqhv28a.web-platform.test",
-        "xn--lve-6lad.web-platform.test",
-    };
-
-    // The list of schemes and ports below is based on
-    // third_party/blink/tools/blinkpy/third_party/wpt/wpt.config.json
-    const char* kOriginTemplates[] = {
-        "http://%s:8001/", "http://%s:8081/", "https://%s:8444/",
-    };
-
-    origins_to_isolate.reserve(origins_to_isolate.size() +
-                               base::size(kWptHostnames) *
-                                   base::size(kOriginTemplates));
-    for (const char* kWptHostname : kWptHostnames) {
-      for (const char* kOriginTemplate : kOriginTemplates) {
-        std::string origin = base::StringPrintf(kOriginTemplate, kWptHostname);
-        origins_to_isolate.push_back(origin);
-      }
-    }
-  }
-
   // Translate std::vector<std::string> into std::vector<url::Origin>.
   std::vector<url::Origin> result;
   result.reserve(origins_to_isolate.size());
@@ -306,6 +261,14 @@
   return !block_popups_ || user_gesture;
 }
 
+bool LayoutTestContentBrowserClient::ShouldEnableStrictSiteIsolation() {
+  // TODO(lukasza, alexmos): Layout tests should have the same default state of
+  // site-per-process as everything else, but because of a backlog of layout
+  // test failures (see https://crbug.com/477150), layout tests still use no
+  // isolation by default.
+  return false;
+}
+
 bool LayoutTestContentBrowserClient::CanIgnoreCertificateErrorIfNeeded() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
       switches::kRunWebTests);
diff --git a/content/shell/browser/layout_test/layout_test_content_browser_client.h b/content/shell/browser/layout_test/layout_test_content_browser_client.h
index b416ba6..c1f0405 100644
--- a/content/shell/browser/layout_test/layout_test_content_browser_client.h
+++ b/content/shell/browser/layout_test/layout_test_content_browser_client.h
@@ -70,6 +70,7 @@
                        bool user_gesture,
                        bool opener_suppressed,
                        bool* no_javascript_access) override;
+  bool ShouldEnableStrictSiteIsolation() override;
   bool CanIgnoreCertificateErrorIfNeeded() override;
 
   // ShellContentBrowserClient overrides.
diff --git a/device/fido/win/authenticator.cc b/device/fido/win/authenticator.cc
index af3ea8e..7bef43c3 100644
--- a/device/fido/win/authenticator.cc
+++ b/device/fido/win/authenticator.cc
@@ -23,7 +23,6 @@
 #include "device/fido/win/webauthn.h"
 
 namespace device {
-namespace fido {
 
 // Time out all Windows API requests after 5 minutes. We maintain our own
 // timeout and cancel the operation when it expires, so this value simply needs
@@ -424,5 +423,4 @@
   std::move(cb).Run(status, std::move(response));
 }
 
-}  // namespace fido
 }  // namespace device
diff --git a/device/fido/win/authenticator.h b/device/fido/win/authenticator.h
index aa786d591..9e46923 100644
--- a/device/fido/win/authenticator.h
+++ b/device/fido/win/authenticator.h
@@ -19,7 +19,6 @@
 #include "device/fido/win/webauthn_api.h"
 
 namespace device {
-namespace fido {
 
 // WinNativeCrossPlatformAuthenticator forwards WebAuthn requests to external
 // authenticators via the native Windows WebAuthentication API
@@ -88,7 +87,6 @@
   DISALLOW_COPY_AND_ASSIGN(WinNativeCrossPlatformAuthenticator);
 };
 
-}  // namespace fido
 }  // namespace device
 
 #endif  // DEVICE_FIDO_WIN_AUTHENTICATOR_H_
diff --git a/device/fido/win/type_conversions.cc b/device/fido/win/type_conversions.cc
index 7ccec0ff..e487689 100644
--- a/device/fido/win/type_conversions.cc
+++ b/device/fido/win/type_conversions.cc
@@ -20,7 +20,6 @@
 #include "device/fido/opaque_attestation_statement.h"
 
 namespace device {
-namespace fido {
 
 base::Optional<AuthenticatorMakeCredentialResponse>
 ToAuthenticatorMakeCredentialResponse(
@@ -68,10 +67,22 @@
                                    assertion.cbAuthenticatorData);
     return base::nullopt;
   }
-  return AuthenticatorGetAssertionResponse(
+  AuthenticatorGetAssertionResponse response(
       std::move(*authenticator_data),
       std::vector<uint8_t>(assertion.pbSignature,
                            assertion.pbSignature + assertion.cbSignature));
+  if (assertion.Credential.cbId > 0) {
+    response.SetCredential(PublicKeyCredentialDescriptor(
+        CredentialType::kPublicKey,
+        std::vector<uint8_t>(
+            assertion.Credential.pbId,
+            assertion.Credential.pbId + assertion.Credential.cbId)));
+  }
+  if (assertion.cbUserId > 0) {
+    response.SetUserEntity(PublicKeyCredentialUserEntity(std::vector<uint8_t>(
+        assertion.pbUserId, assertion.pbUserId + assertion.cbUserId)));
+  }
+  return response;
 }
 
 uint32_t ToWinUserVerificationRequirement(
@@ -116,5 +127,4 @@
              : CtapDeviceResponseCode::kCtap2ErrOther;
 }
 
-}  // namespace fido
 }  // namespace device
diff --git a/device/fido/win/type_conversions.h b/device/fido/win/type_conversions.h
index af874dbf..e3e4c40 100644
--- a/device/fido/win/type_conversions.h
+++ b/device/fido/win/type_conversions.h
@@ -15,7 +15,6 @@
 #include "device/fido/fido_constants.h"
 
 namespace device {
-namespace fido {
 
 COMPONENT_EXPORT(DEVICE_FIDO)
 base::Optional<AuthenticatorMakeCredentialResponse>
@@ -35,7 +34,6 @@
 CtapDeviceResponseCode WinErrorNameToCtapDeviceResponseCode(
     const base::string16& error_name);
 
-}  // namespace fido
 }  // namespace device
 
 #endif  // DEVICE_FIDO_WIN_TYPE_CONVERSIONS_H_
diff --git a/device/fido/win/webauthn_api.cc b/device/fido/win/webauthn_api.cc
index dc232cbe..feed0c5 100644
--- a/device/fido/win/webauthn_api.cc
+++ b/device/fido/win/webauthn_api.cc
@@ -12,7 +12,6 @@
 #include "base/no_destructor.h"
 
 namespace device {
-namespace fido {
 
 // WinWebAuthnApiImpl is the default implementation of WinWebAuthnApi, which
 // attempts to load webauthn.dll on intialization.
@@ -125,5 +124,4 @@
 
 WinWebAuthnApi::~WinWebAuthnApi() = default;
 
-}  // namespace fido
 }  // namespace device
diff --git a/device/fido/win/webauthn_api.h b/device/fido/win/webauthn_api.h
index e5878e5..22441180 100644
--- a/device/fido/win/webauthn_api.h
+++ b/device/fido/win/webauthn_api.h
@@ -14,7 +14,6 @@
 #include "base/macros.h"
 
 namespace device {
-namespace fido {
 
 // WinWebAuthnApi is a wrapper for the native Windows WebAuthn API.
 //
@@ -87,7 +86,6 @@
   virtual const wchar_t* GetErrorName(HRESULT hr) = 0;
 };
 
-}  // namespace fido
 }  // namespace device
 
 #endif  // DEVICE_FIDO_WIN_WEBAUTHN_API_H_
diff --git a/gpu/command_buffer/build_cmd_buffer_lib.py b/gpu/command_buffer/build_cmd_buffer_lib.py
index 8a6bd26..3f95e78 100644
--- a/gpu/command_buffer/build_cmd_buffer_lib.py
+++ b/gpu/command_buffer/build_cmd_buffer_lib.py
@@ -2293,10 +2293,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = k%(types)sStartId;
   expected.data[1] = k%(types)sStartId + 1;
-  gl_->%(name)s(arraysize(ids), &ids[0]);
+  gl_->%(name)s(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(k%(types)sStartId, ids[0]);
   EXPECT_EQ(k%(types)sStartId + 1, ids[1]);
@@ -2442,17 +2442,17 @@
     f.write("  cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" %
                (func.name, func.name))
     f.write("  void* next_cmd = cmd.Set(\n")
-    f.write("      &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n")
+    f.write("      &cmd, static_cast<GLsizei>(base::size(ids)), ids);\n")
     f.write("  EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" %
                func.name)
     f.write("            cmd.header.command);\n")
     f.write("  EXPECT_EQ(sizeof(cmd) +\n")
     f.write("            RoundSizeToMultipleOfEntries(cmd.n * 4u),\n")
     f.write("            cmd.header.size * 4u);\n")
-    f.write("  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n");
+    f.write("  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);\n");
     f.write("  CheckBytesWrittenMatchesExpectedSize(\n")
     f.write("      next_cmd, sizeof(cmd) +\n")
-    f.write("      RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n")
+    f.write("      RoundSizeToMultipleOfEntries(base::size(ids) * 4u));\n")
     f.write("  EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd),\n")
     f.write("                      sizeof(ids)));\n")
     f.write("}\n")
@@ -2671,10 +2671,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = k%(types)sStartId;
   expected.data[1] = k%(types)sStartId + 1;
-  gl_->%(name)s(arraysize(ids), &ids[0]);
+  gl_->%(name)s(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 """
@@ -2878,17 +2878,17 @@
     f.write("  cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" %
                (func.name, func.name))
     f.write("  void* next_cmd = cmd.Set(\n")
-    f.write("      &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n")
+    f.write("      &cmd, static_cast<GLsizei>(base::size(ids)), ids);\n")
     f.write("  EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" %
                func.name)
     f.write("            cmd.header.command);\n")
     f.write("  EXPECT_EQ(sizeof(cmd) +\n")
     f.write("            RoundSizeToMultipleOfEntries(cmd.n * 4u),\n")
     f.write("            cmd.header.size * 4u);\n")
-    f.write("  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n");
+    f.write("  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);\n");
     f.write("  CheckBytesWrittenMatchesExpectedSize(\n")
     f.write("      next_cmd, sizeof(cmd) +\n")
-    f.write("      RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n")
+    f.write("      RoundSizeToMultipleOfEntries(base::size(ids) * 4u));\n")
     f.write("  EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd),\n")
     f.write("                      sizeof(ids)));\n")
     f.write("}\n")
@@ -4174,14 +4174,14 @@
   const char kSource0[] = "hello";
   const char* kSource[] = { kSource0 };
   const char kValidStrEnd = 0;
-  const GLsizei kCount = static_cast<GLsizei>(arraysize(kSource));
+  const GLsizei kCount = static_cast<GLsizei>(base::size(kSource));
   const GLsizei kTests[] = {
       kCount + 1,
       0,
       std::numeric_limits<GLsizei>::max(),
       -1,
   };
-  for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
+  for (size_t ii = 0; ii < base::size(kTests); ++ii) {
     SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
     cmds::%(name)s cmd;
     cmd.Init(%(cmd_args)s);
@@ -7285,7 +7285,7 @@
           continue
         if named_type.GetValidValues():
           code = """%(pre)s%(name)s(
-            valid_%(name)s_table, arraysize(valid_%(name)s_table))"""
+            valid_%(name)s_table, base::size(valid_%(name)s_table))"""
         else:
           code = "%(pre)s%(name)s()"
         f.write(code % {
@@ -7308,14 +7308,14 @@
             continue
           if named_type.GetDeprecatedValuesES3():
             code = """  %(name)s.RemoveValues(
-      deprecated_%(name)s_table_es3, arraysize(deprecated_%(name)s_table_es3));
+      deprecated_%(name)s_table_es3, base::size(deprecated_%(name)s_table_es3));
 """
             f.write(code % {
               'name': ToUnderscore(name),
             })
           if named_type.GetValidValuesES3():
             code = """  %(name)s.AddValues(
-      valid_%(name)s_table_es3, arraysize(valid_%(name)s_table_es3));
+      valid_%(name)s_table_es3, base::size(valid_%(name)s_table_es3));
 """
             f.write(code % {
               'name': ToUnderscore(name),
@@ -7400,7 +7400,7 @@
               f.write('    { %s, "%s" },\n' % (value, value))
             f.write("""  };
   return %sUtil::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+      string_table, base::size(string_table), value);
 }
 
 """ % _prefix)
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index ba84c91..c3fd9fb 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -377,10 +377,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kBuffersStartId;
   expected.data[1] = kBuffersStartId + 1;
-  gl_->DeleteBuffers(arraysize(ids), &ids[0]);
+  gl_->DeleteBuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -391,10 +391,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kFramebuffersStartId;
   expected.data[1] = kFramebuffersStartId + 1;
-  gl_->DeleteFramebuffers(arraysize(ids), &ids[0]);
+  gl_->DeleteFramebuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -416,10 +416,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kRenderbuffersStartId;
   expected.data[1] = kRenderbuffersStartId + 1;
-  gl_->DeleteRenderbuffers(arraysize(ids), &ids[0]);
+  gl_->DeleteRenderbuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -430,10 +430,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kSamplersStartId;
   expected.data[1] = kSamplersStartId + 1;
-  gl_->DeleteSamplers(arraysize(ids), &ids[0]);
+  gl_->DeleteSamplers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -466,10 +466,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kTexturesStartId;
   expected.data[1] = kTexturesStartId + 1;
-  gl_->DeleteTextures(arraysize(ids), &ids[0]);
+  gl_->DeleteTextures(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -480,10 +480,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kTransformFeedbacksStartId;
   expected.data[1] = kTransformFeedbacksStartId + 1;
-  gl_->DeleteTransformFeedbacks(arraysize(ids), &ids[0]);
+  gl_->DeleteTransformFeedbacks(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -630,10 +630,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kBuffersStartId;
   expected.data[1] = kBuffersStartId + 1;
-  gl_->GenBuffers(arraysize(ids), &ids[0]);
+  gl_->GenBuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kBuffersStartId, ids[0]);
   EXPECT_EQ(kBuffersStartId + 1, ids[1]);
@@ -659,10 +659,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kFramebuffersStartId;
   expected.data[1] = kFramebuffersStartId + 1;
-  gl_->GenFramebuffers(arraysize(ids), &ids[0]);
+  gl_->GenFramebuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kFramebuffersStartId, ids[0]);
   EXPECT_EQ(kFramebuffersStartId + 1, ids[1]);
@@ -677,10 +677,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kRenderbuffersStartId;
   expected.data[1] = kRenderbuffersStartId + 1;
-  gl_->GenRenderbuffers(arraysize(ids), &ids[0]);
+  gl_->GenRenderbuffers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kRenderbuffersStartId, ids[0]);
   EXPECT_EQ(kRenderbuffersStartId + 1, ids[1]);
@@ -695,10 +695,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kSamplersStartId;
   expected.data[1] = kSamplersStartId + 1;
-  gl_->GenSamplers(arraysize(ids), &ids[0]);
+  gl_->GenSamplers(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kSamplersStartId, ids[0]);
   EXPECT_EQ(kSamplersStartId + 1, ids[1]);
@@ -713,10 +713,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kTexturesStartId;
   expected.data[1] = kTexturesStartId + 1;
-  gl_->GenTextures(arraysize(ids), &ids[0]);
+  gl_->GenTextures(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kTexturesStartId, ids[0]);
   EXPECT_EQ(kTexturesStartId + 1, ids[1]);
@@ -731,10 +731,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kTransformFeedbacksStartId;
   expected.data[1] = kTransformFeedbacksStartId + 1;
-  gl_->GenTransformFeedbacks(arraysize(ids), &ids[0]);
+  gl_->GenTransformFeedbacks(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kTransformFeedbacksStartId, ids[0]);
   EXPECT_EQ(kTransformFeedbacksStartId + 1, ids[1]);
@@ -2572,10 +2572,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kQueriesStartId;
   expected.data[1] = kQueriesStartId + 1;
-  gl_->GenQueriesEXT(arraysize(ids), &ids[0]);
+  gl_->GenQueriesEXT(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kQueriesStartId, ids[0]);
   EXPECT_EQ(kQueriesStartId + 1, ids[1]);
@@ -2588,10 +2588,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kQueriesStartId;
   expected.data[1] = kQueriesStartId + 1;
-  gl_->DeleteQueriesEXT(arraysize(ids), &ids[0]);
+  gl_->DeleteQueriesEXT(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -2637,10 +2637,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kVertexArraysStartId;
   expected.data[1] = kVertexArraysStartId + 1;
-  gl_->GenVertexArraysOES(arraysize(ids), &ids[0]);
+  gl_->GenVertexArraysOES(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kVertexArraysStartId, ids[0]);
   EXPECT_EQ(kVertexArraysStartId + 1, ids[1]);
@@ -2653,10 +2653,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kVertexArraysStartId;
   expected.data[1] = kVertexArraysStartId + 1;
-  gl_->DeleteVertexArraysOES(arraysize(ids), &ids[0]);
+  gl_->DeleteVertexArraysOES(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
diff --git a/gpu/command_buffer/client/raster_implementation_unittest_autogen.h b/gpu/command_buffer/client/raster_implementation_unittest_autogen.h
index 23d0f18..603578b7 100644
--- a/gpu/command_buffer/client/raster_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/raster_implementation_unittest_autogen.h
@@ -20,10 +20,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kTexturesStartId;
   expected.data[1] = kTexturesStartId + 1;
-  gl_->DeleteTextures(arraysize(ids), &ids[0]);
+  gl_->DeleteTextures(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -65,10 +65,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.gen.Init(arraysize(ids), &ids[0]);
+  expected.gen.Init(base::size(ids), &ids[0]);
   expected.data[0] = kQueriesStartId;
   expected.data[1] = kQueriesStartId + 1;
-  gl_->GenQueriesEXT(arraysize(ids), &ids[0]);
+  gl_->GenQueriesEXT(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(kQueriesStartId, ids[0]);
   EXPECT_EQ(kQueriesStartId + 1, ids[1]);
@@ -81,10 +81,10 @@
     GLuint data[2];
   };
   Cmds expected;
-  expected.del.Init(arraysize(ids), &ids[0]);
+  expected.del.Init(base::size(ids), &ids[0]);
   expected.data[0] = kQueriesStartId;
   expected.data[1] = kQueriesStartId + 1;
-  gl_->DeleteQueriesEXT(arraysize(ids), &ids[0]);
+  gl_->DeleteQueriesEXT(base::size(ids), &ids[0]);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index eb73a3a73..7fce9eb 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -731,15 +731,15 @@
   };
   cmds::DeleteBuffersImmediate& cmd =
       *GetBufferAs<cmds::DeleteBuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteBuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -749,15 +749,15 @@
   };
   cmds::DeleteFramebuffersImmediate& cmd =
       *GetBufferAs<cmds::DeleteFramebuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteFramebuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -777,15 +777,15 @@
   };
   cmds::DeleteRenderbuffersImmediate& cmd =
       *GetBufferAs<cmds::DeleteRenderbuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteRenderbuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -795,15 +795,15 @@
   };
   cmds::DeleteSamplersImmediate& cmd =
       *GetBufferAs<cmds::DeleteSamplersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteSamplersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -833,15 +833,15 @@
   };
   cmds::DeleteTexturesImmediate& cmd =
       *GetBufferAs<cmds::DeleteTexturesImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteTexturesImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -851,16 +851,16 @@
   };
   cmds::DeleteTransformFeedbacksImmediate& cmd =
       *GetBufferAs<cmds::DeleteTransformFeedbacksImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(
       static_cast<uint32_t>(cmds::DeleteTransformFeedbacksImmediate::kCmdId),
       cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1062,15 +1062,15 @@
       12, 23, 34,
   };
   cmds::GenBuffersImmediate& cmd = *GetBufferAs<cmds::GenBuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenBuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1090,15 +1090,15 @@
   };
   cmds::GenFramebuffersImmediate& cmd =
       *GetBufferAs<cmds::GenFramebuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenFramebuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1108,15 +1108,15 @@
   };
   cmds::GenRenderbuffersImmediate& cmd =
       *GetBufferAs<cmds::GenRenderbuffersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenRenderbuffersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1125,15 +1125,15 @@
       12, 23, 34,
   };
   cmds::GenSamplersImmediate& cmd = *GetBufferAs<cmds::GenSamplersImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenSamplersImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1142,15 +1142,15 @@
       12, 23, 34,
   };
   cmds::GenTexturesImmediate& cmd = *GetBufferAs<cmds::GenTexturesImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenTexturesImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -1160,15 +1160,15 @@
   };
   cmds::GenTransformFeedbacksImmediate& cmd =
       *GetBufferAs<cmds::GenTransformFeedbacksImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenTransformFeedbacksImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -3743,15 +3743,15 @@
   };
   cmds::GenQueriesEXTImmediate& cmd =
       *GetBufferAs<cmds::GenQueriesEXTImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenQueriesEXTImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -3761,15 +3761,15 @@
   };
   cmds::DeleteQueriesEXTImmediate& cmd =
       *GetBufferAs<cmds::DeleteQueriesEXTImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteQueriesEXTImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -3884,15 +3884,15 @@
   };
   cmds::GenVertexArraysOESImmediate& cmd =
       *GetBufferAs<cmds::GenVertexArraysOESImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenVertexArraysOESImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -3902,15 +3902,15 @@
   };
   cmds::DeleteVertexArraysOESImmediate& cmd =
       *GetBufferAs<cmds::DeleteVertexArraysOESImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteVertexArraysOESImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
diff --git a/gpu/command_buffer/common/gles2_cmd_utils.cc b/gpu/command_buffer/common/gles2_cmd_utils.cc
index 78ee2641..7afc509 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils.cc
+++ b/gpu/command_buffer/common/gles2_cmd_utils.cc
@@ -16,6 +16,7 @@
 #include <sstream>
 
 #include "base/numerics/safe_math.h"
+#include "base/stl_util.h"
 
 namespace gpu {
 namespace gles2 {
diff --git a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
index b3ce56f..d6f5eaddb8 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
@@ -4931,7 +4931,7 @@
       {GL_DEPTH_STENCIL_ATTACHMENT, "GL_DEPTH_STENCIL_ATTACHMENT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringAttachmentQuery(uint32_t value) {
@@ -4945,7 +4945,7 @@
       {GL_STENCIL_EXT, "GL_STENCIL_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBackbufferAttachment(uint32_t value) {
@@ -4955,7 +4955,7 @@
       {GL_STENCIL_EXT, "GL_STENCIL_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBlitFilter(uint32_t value) {
@@ -4963,7 +4963,7 @@
       {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferMode(uint32_t value) {
@@ -4972,7 +4972,7 @@
       {GL_SEPARATE_ATTRIBS, "GL_SEPARATE_ATTRIBS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferParameter(uint32_t value) {
@@ -4983,7 +4983,7 @@
       {GL_BUFFER_MAPPED, "GL_BUFFER_MAPPED"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferParameter64(uint32_t value) {
@@ -4993,7 +4993,7 @@
       {GL_BUFFER_MAP_OFFSET, "GL_BUFFER_MAP_OFFSET"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferTarget(uint32_t value) {
@@ -5008,7 +5008,7 @@
       {GL_UNIFORM_BUFFER, "GL_UNIFORM_BUFFER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferUsage(uint32_t value) {
@@ -5024,7 +5024,7 @@
       {GL_DYNAMIC_COPY, "GL_DYNAMIC_COPY"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferfi(uint32_t value) {
@@ -5032,7 +5032,7 @@
       {GL_DEPTH_STENCIL, "GL_DEPTH_STENCIL"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferfv(uint32_t value) {
@@ -5040,7 +5040,7 @@
       {GL_COLOR, "GL_COLOR"}, {GL_DEPTH, "GL_DEPTH"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferiv(uint32_t value) {
@@ -5048,7 +5048,7 @@
       {GL_COLOR, "GL_COLOR"}, {GL_STENCIL, "GL_STENCIL"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferuiv(uint32_t value) {
@@ -5056,7 +5056,7 @@
       {GL_COLOR, "GL_COLOR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringCapability(uint32_t value) {
@@ -5074,7 +5074,7 @@
       {GL_PRIMITIVE_RESTART_FIXED_INDEX, "GL_PRIMITIVE_RESTART_FIXED_INDEX"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringClientBufferUsage(uint32_t value) {
@@ -5082,7 +5082,7 @@
       {GL_SCANOUT_CHROMIUM, "GL_SCANOUT_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringCmpFunction(uint32_t value) {
@@ -5093,7 +5093,7 @@
       {GL_GEQUAL, "GL_GEQUAL"},   {GL_ALWAYS, "GL_ALWAYS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringCompressedTextureFormat(uint32_t value) {
@@ -5108,7 +5108,7 @@
       {GL_NONE, "GL_NONE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringDrawMode(uint32_t value) {
@@ -5122,7 +5122,7 @@
       {GL_TRIANGLES, "GL_TRIANGLES"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringDstBlendFactor(uint32_t value) {
@@ -5144,7 +5144,7 @@
       {GL_SRC_ALPHA_SATURATE, "GL_SRC_ALPHA_SATURATE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringEquation(uint32_t value) {
@@ -5156,7 +5156,7 @@
       {GL_MAX, "GL_MAX"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringFaceMode(uint32_t value) {
@@ -5164,7 +5164,7 @@
       {GL_CW, "GL_CW"}, {GL_CCW, "GL_CCW"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringFaceType(uint32_t value) {
@@ -5174,7 +5174,7 @@
       {GL_FRONT_AND_BACK, "GL_FRONT_AND_BACK"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringFramebufferAttachmentParameter(uint32_t value) {
@@ -5207,7 +5207,7 @@
        "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringFramebufferParameter(uint32_t value) {
@@ -5221,7 +5221,7 @@
       {GL_READ_FRAMEBUFFER, "GL_READ_FRAMEBUFFER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringGLState(uint32_t value) {
@@ -5412,7 +5412,7 @@
       {GL_UNPACK_SKIP_ROWS, "GL_UNPACK_SKIP_ROWS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringGetMaxIndexType(uint32_t value) {
@@ -5422,7 +5422,7 @@
       {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringGetTexParamTarget(uint32_t value) {
@@ -5433,7 +5433,7 @@
       {GL_TEXTURE_3D, "GL_TEXTURE_3D"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringHintMode(uint32_t value) {
@@ -5443,7 +5443,7 @@
       {GL_DONT_CARE, "GL_DONT_CARE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringHintTarget(uint32_t value) {
@@ -5455,7 +5455,7 @@
        "GL_FRAGMENT_SHADER_DERIVATIVE_HINT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringImageInternalFormat(uint32_t value) {
@@ -5467,7 +5467,7 @@
       {GL_RGBA, "GL_RGBA"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringIndexType(uint32_t value) {
@@ -5477,7 +5477,7 @@
       {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringIndexedBufferTarget(uint32_t value) {
@@ -5486,7 +5486,7 @@
       {GL_UNIFORM_BUFFER, "GL_UNIFORM_BUFFER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringIndexedGLState(uint32_t value) {
@@ -5501,7 +5501,7 @@
       {GL_UNIFORM_BUFFER_START, "GL_UNIFORM_BUFFER_START"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringIndexedStringType(uint32_t value) {
@@ -5509,7 +5509,7 @@
       {GL_EXTENSIONS, "GL_EXTENSIONS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringInternalFormatParameter(uint32_t value) {
@@ -5518,7 +5518,7 @@
       {GL_SAMPLES, "GL_SAMPLES"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringMapBufferAccess(uint32_t value) {
@@ -5531,7 +5531,7 @@
       {GL_MAP_UNSYNCHRONIZED_BIT, "GL_MAP_UNSYNCHRONIZED_BIT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringMatrixMode(uint32_t value) {
@@ -5540,7 +5540,7 @@
       {GL_PATH_MODELVIEW_CHROMIUM, "GL_PATH_MODELVIEW_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathCoordType(uint32_t value) {
@@ -5550,7 +5550,7 @@
       {GL_FLOAT, "GL_FLOAT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathCoverMode(uint32_t value) {
@@ -5559,7 +5559,7 @@
       {GL_BOUNDING_BOX_CHROMIUM, "GL_BOUNDING_BOX_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathFillMode(uint32_t value) {
@@ -5569,7 +5569,7 @@
       {GL_COUNT_DOWN_CHROMIUM, "GL_COUNT_DOWN_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathFragmentInputGenMode(uint32_t value) {
@@ -5580,7 +5580,7 @@
       {GL_CONSTANT_CHROMIUM, "GL_CONSTANT_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathInstancedCoverMode(uint32_t value) {
@@ -5591,7 +5591,7 @@
        "GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathNameType(uint32_t value) {
@@ -5601,7 +5601,7 @@
       {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"},     {GL_INT, "GL_INT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathParameter(uint32_t value) {
@@ -5613,7 +5613,7 @@
       {GL_PATH_STROKE_BOUND_CHROMIUM, "GL_PATH_STROKE_BOUND_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPathTransformType(uint32_t value) {
@@ -5629,7 +5629,7 @@
       {GL_TRANSPOSE_AFFINE_3D_CHROMIUM, "GL_TRANSPOSE_AFFINE_3D_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPixelStore(uint32_t value) {
@@ -5646,7 +5646,7 @@
       {GL_UNPACK_SKIP_IMAGES, "GL_UNPACK_SKIP_IMAGES"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringPixelType(uint32_t value) {
@@ -5669,7 +5669,7 @@
       {GL_FLOAT_32_UNSIGNED_INT_24_8_REV, "GL_FLOAT_32_UNSIGNED_INT_24_8_REV"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringProgramParameter(uint32_t value) {
@@ -5692,7 +5692,7 @@
        "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryObjectParameter(uint32_t value) {
@@ -5703,7 +5703,7 @@
        "GL_QUERY_RESULT_AVAILABLE_NO_FLUSH_CHROMIUM_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryParameter(uint32_t value) {
@@ -5711,7 +5711,7 @@
       {GL_CURRENT_QUERY_EXT, "GL_CURRENT_QUERY_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryTarget(uint32_t value) {
@@ -5729,7 +5729,7 @@
        "GL_READBACK_SHADOW_COPIES_UPDATED_CHROMIUM"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringReadBuffer(uint32_t value) {
@@ -5754,7 +5754,7 @@
       {GL_COLOR_ATTACHMENT15, "GL_COLOR_ATTACHMENT15"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringReadPixelFormat(uint32_t value) {
@@ -5770,7 +5770,7 @@
       {GL_RGBA_INTEGER, "GL_RGBA_INTEGER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringReadPixelType(uint32_t value) {
@@ -5789,7 +5789,7 @@
       {GL_UNSIGNED_INT_2_10_10_10_REV, "GL_UNSIGNED_INT_2_10_10_10_REV"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferFormat(uint32_t value) {
@@ -5830,7 +5830,7 @@
       {GL_DEPTH32F_STENCIL8, "GL_DEPTH32F_STENCIL8"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferParameter(uint32_t value) {
@@ -5847,7 +5847,7 @@
       {GL_RENDERBUFFER_SAMPLES, "GL_RENDERBUFFER_SAMPLES"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferTarget(uint32_t value) {
@@ -5855,7 +5855,7 @@
       {GL_RENDERBUFFER, "GL_RENDERBUFFER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringResetStatus(uint32_t value) {
@@ -5865,7 +5865,7 @@
       {GL_UNKNOWN_CONTEXT_RESET_ARB, "GL_UNKNOWN_CONTEXT_RESET_ARB"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringSamplerParameter(uint32_t value) {
@@ -5881,7 +5881,7 @@
       {GL_TEXTURE_COMPARE_FUNC, "GL_TEXTURE_COMPARE_FUNC"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderBinaryFormat(uint32_t value) {
@@ -5899,7 +5899,7 @@
        "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderPrecision(uint32_t value) {
@@ -5909,7 +5909,7 @@
       {GL_MEDIUM_INT, "GL_MEDIUM_INT"}, {GL_HIGH_INT, "GL_HIGH_INT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderType(uint32_t value) {
@@ -5918,7 +5918,7 @@
       {GL_FRAGMENT_SHADER, "GL_FRAGMENT_SHADER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringSrcBlendFactor(uint32_t value) {
@@ -5940,7 +5940,7 @@
       {GL_SRC_ALPHA_SATURATE, "GL_SRC_ALPHA_SATURATE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringStencilOp(uint32_t value) {
@@ -5951,7 +5951,7 @@
       {GL_DECR_WRAP, "GL_DECR_WRAP"}, {GL_INVERT, "GL_INVERT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringStringType(uint32_t value) {
@@ -5963,7 +5963,7 @@
       {GL_EXTENSIONS, "GL_EXTENSIONS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringSyncCondition(uint32_t value) {
@@ -5971,7 +5971,7 @@
       {GL_SYNC_GPU_COMMANDS_COMPLETE, "GL_SYNC_GPU_COMMANDS_COMPLETE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringSyncParameter(uint32_t value) {
@@ -5982,7 +5982,7 @@
       {GL_SYNC_FLAGS, "GL_SYNC_FLAGS"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTexture3DTarget(uint32_t value) {
@@ -5991,7 +5991,7 @@
       {GL_TEXTURE_2D_ARRAY, "GL_TEXTURE_2D_ARRAY"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureBindTarget(uint32_t value) {
@@ -6002,7 +6002,7 @@
       {GL_TEXTURE_2D_ARRAY, "GL_TEXTURE_2D_ARRAY"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureCompareFunc(uint32_t value) {
@@ -6013,7 +6013,7 @@
       {GL_ALWAYS, "GL_ALWAYS"}, {GL_NEVER, "GL_NEVER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureCompareMode(uint32_t value) {
@@ -6022,7 +6022,7 @@
       {GL_COMPARE_REF_TO_TEXTURE, "GL_COMPARE_REF_TO_TEXTURE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureDepthRenderableInternalFormat(
@@ -6035,7 +6035,7 @@
       {GL_DEPTH32F_STENCIL8, "GL_DEPTH32F_STENCIL8"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureFormat(uint32_t value) {
@@ -6055,7 +6055,7 @@
       {GL_DEPTH_STENCIL, "GL_DEPTH_STENCIL"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureInternalFormat(uint32_t value) {
@@ -6121,7 +6121,7 @@
       {GL_DEPTH32F_STENCIL8, "GL_DEPTH32F_STENCIL8"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureInternalFormatStorage(uint32_t value) {
@@ -6187,7 +6187,7 @@
       {GL_DEPTH32F_STENCIL8, "GL_DEPTH32F_STENCIL8"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureMagFilterMode(uint32_t value) {
@@ -6195,7 +6195,7 @@
       {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureMinFilterMode(uint32_t value) {
@@ -6208,7 +6208,7 @@
       {GL_LINEAR_MIPMAP_LINEAR, "GL_LINEAR_MIPMAP_LINEAR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureParameter(uint32_t value) {
@@ -6228,7 +6228,7 @@
       {GL_TEXTURE_WRAP_R, "GL_TEXTURE_WRAP_R"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureSizedColorRenderableInternalFormat(
@@ -6264,7 +6264,7 @@
       {GL_RGBA32I, "GL_RGBA32I"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureSizedTextureFilterableInternalFormat(
@@ -6296,7 +6296,7 @@
       {GL_R16_EXT, "GL_R16_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureSrgbDecodeExt(uint32_t value) {
@@ -6305,7 +6305,7 @@
       {GL_SKIP_DECODE_EXT, "GL_SKIP_DECODE_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureStencilRenderableInternalFormat(
@@ -6316,7 +6316,7 @@
       {GL_DEPTH32F_STENCIL8, "GL_DEPTH32F_STENCIL8"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureSwizzle(uint32_t value) {
@@ -6325,7 +6325,7 @@
       {GL_ALPHA, "GL_ALPHA"}, {GL_ZERO, "GL_ZERO"},   {GL_ONE, "GL_ONE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureTarget(uint32_t value) {
@@ -6339,7 +6339,7 @@
       {GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureUnsizedInternalFormat(uint32_t value) {
@@ -6351,7 +6351,7 @@
       {GL_RGBA, "GL_RGBA"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureUsage(uint32_t value) {
@@ -6360,7 +6360,7 @@
       {GL_FRAMEBUFFER_ATTACHMENT_ANGLE, "GL_FRAMEBUFFER_ATTACHMENT_ANGLE"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureWrapMode(uint32_t value) {
@@ -6370,7 +6370,7 @@
       {GL_REPEAT, "GL_REPEAT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTransformFeedbackBindTarget(uint32_t value) {
@@ -6378,7 +6378,7 @@
       {GL_TRANSFORM_FEEDBACK, "GL_TRANSFORM_FEEDBACK"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringTransformFeedbackPrimitiveMode(uint32_t value) {
@@ -6388,7 +6388,7 @@
       {GL_TRIANGLES, "GL_TRIANGLES"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringUniformBlockParameter(uint32_t value) {
@@ -6405,7 +6405,7 @@
        "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringUniformParameter(uint32_t value) {
@@ -6420,7 +6420,7 @@
       {GL_UNIFORM_IS_ROW_MAJOR, "GL_UNIFORM_IS_ROW_MAJOR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexAttribIType(uint32_t value) {
@@ -6430,7 +6430,7 @@
       {GL_INT, "GL_INT"},     {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexAttribType(uint32_t value) {
@@ -6447,7 +6447,7 @@
       {GL_UNSIGNED_INT_2_10_10_10_REV, "GL_UNSIGNED_INT_2_10_10_10_REV"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexAttribute(uint32_t value) {
@@ -6464,7 +6464,7 @@
       {GL_VERTEX_ATTRIB_ARRAY_DIVISOR, "GL_VERTEX_ATTRIB_ARRAY_DIVISOR"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexPointer(uint32_t value) {
@@ -6472,7 +6472,7 @@
       {GL_VERTEX_ATTRIB_ARRAY_POINTER, "GL_VERTEX_ATTRIB_ARRAY_POINTER"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 std::string GLES2Util::GetStringWindowRectanglesMode(uint32_t value) {
@@ -6481,7 +6481,7 @@
       {GL_EXCLUSIVE_EXT, "GL_EXCLUSIVE_EXT"},
   };
   return GLES2Util::GetQualifiedEnumString(string_table,
-                                           arraysize(string_table), value);
+                                           base::size(string_table), value);
 }
 
 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_UTILS_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/common/raster_cmd_format_test_autogen.h b/gpu/command_buffer/common/raster_cmd_format_test_autogen.h
index 95b11bd..5c588a6 100644
--- a/gpu/command_buffer/common/raster_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/raster_cmd_format_test_autogen.h
@@ -20,15 +20,15 @@
   };
   cmds::DeleteTexturesImmediate& cmd =
       *GetBufferAs<cmds::DeleteTexturesImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteTexturesImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -79,15 +79,15 @@
   };
   cmds::GenQueriesEXTImmediate& cmd =
       *GetBufferAs<cmds::GenQueriesEXTImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::GenQueriesEXTImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
@@ -97,15 +97,15 @@
   };
   cmds::DeleteQueriesEXTImmediate& cmd =
       *GetBufferAs<cmds::DeleteQueriesEXTImmediate>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(base::size(ids)), ids);
   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteQueriesEXTImmediate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
             cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
+  EXPECT_EQ(static_cast<GLsizei>(base::size(ids)), cmd.n);
   CheckBytesWrittenMatchesExpectedSize(
       next_cmd,
-      sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
+      sizeof(cmd) + RoundSizeToMultipleOfEntries(base::size(ids) * 4u));
   EXPECT_EQ(0, memcmp(ids, ImmediateDataAddress(&cmd), sizeof(ids)));
 }
 
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
index 64dc8f9f..1e405a91 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
@@ -866,11 +866,11 @@
   const char kSource0[] = "hello";
   const char* kSource[] = {kSource0};
   const char kValidStrEnd = 0;
-  const GLsizei kCount = static_cast<GLsizei>(arraysize(kSource));
+  const GLsizei kCount = static_cast<GLsizei>(base::size(kSource));
   const GLsizei kTests[] = {
       kCount + 1, 0, std::numeric_limits<GLsizei>::max(), -1,
   };
-  for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
+  for (size_t ii = 0; ii < base::size(kTests); ++ii) {
     SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
     cmds::ShaderSourceBucket cmd;
     cmd.Init(client_shader_id_, kBucketId);
@@ -1165,11 +1165,11 @@
   const char kSource0[] = "hello";
   const char* kSource[] = {kSource0};
   const char kValidStrEnd = 0;
-  const GLsizei kCount = static_cast<GLsizei>(arraysize(kSource));
+  const GLsizei kCount = static_cast<GLsizei>(base::size(kSource));
   const GLsizei kTests[] = {
       kCount + 1, 0, std::numeric_limits<GLsizei>::max(), -1,
   };
-  for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
+  for (size_t ii = 0; ii < base::size(kTests); ++ii) {
     SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
     cmds::TransformFeedbackVaryingsBucket cmd;
     cmd.Init(client_program_id_, kBucketId, GL_INTERLEAVED_ATTRIBS);
diff --git a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
index 74e2dde..3d7085a 100644
--- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
@@ -1372,163 +1372,164 @@
 }
 
 Validators::Validators()
-    : attachment(valid_attachment_table, arraysize(valid_attachment_table)),
+    : attachment(valid_attachment_table, base::size(valid_attachment_table)),
       attachment_query(valid_attachment_query_table,
-                       arraysize(valid_attachment_query_table)),
-      bufferfi(valid_bufferfi_table, arraysize(valid_bufferfi_table)),
-      bufferuiv(valid_bufferuiv_table, arraysize(valid_bufferuiv_table)),
-      capability(valid_capability_table, arraysize(valid_capability_table)),
+                       base::size(valid_attachment_query_table)),
+      bufferfi(valid_bufferfi_table, base::size(valid_bufferfi_table)),
+      bufferuiv(valid_bufferuiv_table, base::size(valid_bufferuiv_table)),
+      capability(valid_capability_table, base::size(valid_capability_table)),
       compressed_texture_format(),
       coverage_modulation_components(
           valid_coverage_modulation_components_table,
-          arraysize(valid_coverage_modulation_components_table)),
+          base::size(valid_coverage_modulation_components_table)),
       dst_blend_factor(valid_dst_blend_factor_table,
-                       arraysize(valid_dst_blend_factor_table)),
-      equation(valid_equation_table, arraysize(valid_equation_table)),
+                       base::size(valid_dst_blend_factor_table)),
+      equation(valid_equation_table, base::size(valid_equation_table)),
       framebuffer_attachment_parameter(
           valid_framebuffer_attachment_parameter_table,
-          arraysize(valid_framebuffer_attachment_parameter_table)),
+          base::size(valid_framebuffer_attachment_parameter_table)),
       framebuffer_parameter(),
       framebuffer_target(valid_framebuffer_target_table,
-                         arraysize(valid_framebuffer_target_table)),
-      g_l_state(valid_g_l_state_table, arraysize(valid_g_l_state_table)),
+                         base::size(valid_framebuffer_target_table)),
+      g_l_state(valid_g_l_state_table, base::size(valid_g_l_state_table)),
       get_tex_param_target(valid_get_tex_param_target_table,
-                           arraysize(valid_get_tex_param_target_table)),
-      hint_target(valid_hint_target_table, arraysize(valid_hint_target_table)),
+                           base::size(valid_get_tex_param_target_table)),
+      hint_target(valid_hint_target_table, base::size(valid_hint_target_table)),
       image_internal_format(valid_image_internal_format_table,
-                            arraysize(valid_image_internal_format_table)),
-      index_type(valid_index_type_table, arraysize(valid_index_type_table)),
+                            base::size(valid_image_internal_format_table)),
+      index_type(valid_index_type_table, base::size(valid_index_type_table)),
       indexed_g_l_state(valid_indexed_g_l_state_table,
-                        arraysize(valid_indexed_g_l_state_table)),
-      pixel_store(valid_pixel_store_table, arraysize(valid_pixel_store_table)),
-      pixel_type(valid_pixel_type_table, arraysize(valid_pixel_type_table)),
+                        base::size(valid_indexed_g_l_state_table)),
+      pixel_store(valid_pixel_store_table, base::size(valid_pixel_store_table)),
+      pixel_type(valid_pixel_type_table, base::size(valid_pixel_type_table)),
       program_parameter(valid_program_parameter_table,
-                        arraysize(valid_program_parameter_table)),
-      read_buffer(valid_read_buffer_table, arraysize(valid_read_buffer_table)),
+                        base::size(valid_program_parameter_table)),
+      read_buffer(valid_read_buffer_table, base::size(valid_read_buffer_table)),
       read_pixel_format(valid_read_pixel_format_table,
-                        arraysize(valid_read_pixel_format_table)),
+                        base::size(valid_read_pixel_format_table)),
       read_pixel_type(valid_read_pixel_type_table,
-                      arraysize(valid_read_pixel_type_table)),
+                      base::size(valid_read_pixel_type_table)),
       render_buffer_format(valid_render_buffer_format_table,
-                           arraysize(valid_render_buffer_format_table)),
+                           base::size(valid_render_buffer_format_table)),
       render_buffer_parameter(valid_render_buffer_parameter_table,
-                              arraysize(valid_render_buffer_parameter_table)),
+                              base::size(valid_render_buffer_parameter_table)),
       render_buffer_target(valid_render_buffer_target_table,
-                           arraysize(valid_render_buffer_target_table)),
+                           base::size(valid_render_buffer_target_table)),
       shader_binary_format(),
       shader_parameter(valid_shader_parameter_table,
-                       arraysize(valid_shader_parameter_table)),
+                       base::size(valid_shader_parameter_table)),
       src_blend_factor(valid_src_blend_factor_table,
-                       arraysize(valid_src_blend_factor_table)),
+                       base::size(valid_src_blend_factor_table)),
       sync_flush_flags(valid_sync_flush_flags_table,
-                       arraysize(valid_sync_flush_flags_table)),
+                       base::size(valid_sync_flush_flags_table)),
       texture_bind_target(valid_texture_bind_target_table,
-                          arraysize(valid_texture_bind_target_table)),
+                          base::size(valid_texture_bind_target_table)),
       texture_compare_mode(valid_texture_compare_mode_table,
-                           arraysize(valid_texture_compare_mode_table)),
+                           base::size(valid_texture_compare_mode_table)),
       texture_depth_renderable_internal_format(),
       texture_format(valid_texture_format_table,
-                     arraysize(valid_texture_format_table)),
+                     base::size(valid_texture_format_table)),
       texture_internal_format(valid_texture_internal_format_table,
-                              arraysize(valid_texture_internal_format_table)),
+                              base::size(valid_texture_internal_format_table)),
       texture_internal_format_storage(
           valid_texture_internal_format_storage_table,
-          arraysize(valid_texture_internal_format_storage_table)),
+          base::size(valid_texture_internal_format_storage_table)),
       texture_parameter(valid_texture_parameter_table,
-                        arraysize(valid_texture_parameter_table)),
+                        base::size(valid_texture_parameter_table)),
       texture_sized_color_renderable_internal_format(
           valid_texture_sized_color_renderable_internal_format_table,
-          arraysize(
+          base::size(
               valid_texture_sized_color_renderable_internal_format_table)),
       texture_sized_texture_filterable_internal_format(
           valid_texture_sized_texture_filterable_internal_format_table,
-          arraysize(
+          base::size(
               valid_texture_sized_texture_filterable_internal_format_table)),
       texture_stencil_renderable_internal_format(),
       texture_target(valid_texture_target_table,
-                     arraysize(valid_texture_target_table)),
+                     base::size(valid_texture_target_table)),
       texture_unsized_internal_format(
           valid_texture_unsized_internal_format_table,
-          arraysize(valid_texture_unsized_internal_format_table)),
+          base::size(valid_texture_unsized_internal_format_table)),
       transform_feedback_bind_target(
           valid_transform_feedback_bind_target_table,
-          arraysize(valid_transform_feedback_bind_target_table)),
+          base::size(valid_transform_feedback_bind_target_table)),
       vertex_attrib_type(valid_vertex_attrib_type_table,
-                         arraysize(valid_vertex_attrib_type_table)),
+                         base::size(valid_vertex_attrib_type_table)),
       vertex_attribute(valid_vertex_attribute_table,
-                       arraysize(valid_vertex_attribute_table)),
+                       base::size(valid_vertex_attribute_table)),
       vertex_pointer(valid_vertex_pointer_table,
-                     arraysize(valid_vertex_pointer_table)) {}
+                     base::size(valid_vertex_pointer_table)) {}
 
 void Validators::UpdateValuesES3() {
   attachment.AddValues(valid_attachment_table_es3,
-                       arraysize(valid_attachment_table_es3));
+                       base::size(valid_attachment_table_es3));
   attachment_query.AddValues(valid_attachment_query_table_es3,
-                             arraysize(valid_attachment_query_table_es3));
+                             base::size(valid_attachment_query_table_es3));
   buffer_parameter.SetIsES3(true);
   buffer_target.SetIsES3(true);
   buffer_usage.SetIsES3(true);
   capability.AddValues(valid_capability_table_es3,
-                       arraysize(valid_capability_table_es3));
+                       base::size(valid_capability_table_es3));
   dst_blend_factor.AddValues(valid_dst_blend_factor_table_es3,
-                             arraysize(valid_dst_blend_factor_table_es3));
+                             base::size(valid_dst_blend_factor_table_es3));
   equation.AddValues(valid_equation_table_es3,
-                     arraysize(valid_equation_table_es3));
+                     base::size(valid_equation_table_es3));
   framebuffer_attachment_parameter.AddValues(
       valid_framebuffer_attachment_parameter_table_es3,
-      arraysize(valid_framebuffer_attachment_parameter_table_es3));
+      base::size(valid_framebuffer_attachment_parameter_table_es3));
   framebuffer_target.AddValues(valid_framebuffer_target_table_es3,
-                               arraysize(valid_framebuffer_target_table_es3));
+                               base::size(valid_framebuffer_target_table_es3));
   g_l_state.AddValues(valid_g_l_state_table_es3,
-                      arraysize(valid_g_l_state_table_es3));
+                      base::size(valid_g_l_state_table_es3));
   get_tex_param_target.AddValues(
       valid_get_tex_param_target_table_es3,
-      arraysize(valid_get_tex_param_target_table_es3));
+      base::size(valid_get_tex_param_target_table_es3));
   hint_target.AddValues(valid_hint_target_table_es3,
-                        arraysize(valid_hint_target_table_es3));
+                        base::size(valid_hint_target_table_es3));
   index_type.AddValues(valid_index_type_table_es3,
-                       arraysize(valid_index_type_table_es3));
+                       base::size(valid_index_type_table_es3));
   pixel_store.AddValues(valid_pixel_store_table_es3,
-                        arraysize(valid_pixel_store_table_es3));
+                        base::size(valid_pixel_store_table_es3));
   pixel_type.AddValues(valid_pixel_type_table_es3,
-                       arraysize(valid_pixel_type_table_es3));
+                       base::size(valid_pixel_type_table_es3));
   program_parameter.AddValues(valid_program_parameter_table_es3,
-                              arraysize(valid_program_parameter_table_es3));
+                              base::size(valid_program_parameter_table_es3));
   read_pixel_format.AddValues(valid_read_pixel_format_table_es3,
-                              arraysize(valid_read_pixel_format_table_es3));
+                              base::size(valid_read_pixel_format_table_es3));
   read_pixel_type.AddValues(valid_read_pixel_type_table_es3,
-                            arraysize(valid_read_pixel_type_table_es3));
+                            base::size(valid_read_pixel_type_table_es3));
   render_buffer_format.AddValues(
       valid_render_buffer_format_table_es3,
-      arraysize(valid_render_buffer_format_table_es3));
+      base::size(valid_render_buffer_format_table_es3));
   render_buffer_parameter.AddValues(
       valid_render_buffer_parameter_table_es3,
-      arraysize(valid_render_buffer_parameter_table_es3));
-  texture_bind_target.AddValues(valid_texture_bind_target_table_es3,
-                                arraysize(valid_texture_bind_target_table_es3));
+      base::size(valid_render_buffer_parameter_table_es3));
+  texture_bind_target.AddValues(
+      valid_texture_bind_target_table_es3,
+      base::size(valid_texture_bind_target_table_es3));
   texture_depth_renderable_internal_format.AddValues(
       valid_texture_depth_renderable_internal_format_table_es3,
-      arraysize(valid_texture_depth_renderable_internal_format_table_es3));
+      base::size(valid_texture_depth_renderable_internal_format_table_es3));
   texture_format.AddValues(valid_texture_format_table_es3,
-                           arraysize(valid_texture_format_table_es3));
+                           base::size(valid_texture_format_table_es3));
   texture_internal_format.AddValues(
       valid_texture_internal_format_table_es3,
-      arraysize(valid_texture_internal_format_table_es3));
+      base::size(valid_texture_internal_format_table_es3));
   texture_internal_format_storage.RemoveValues(
       deprecated_texture_internal_format_storage_table_es3,
-      arraysize(deprecated_texture_internal_format_storage_table_es3));
+      base::size(deprecated_texture_internal_format_storage_table_es3));
   texture_internal_format_storage.AddValues(
       valid_texture_internal_format_storage_table_es3,
-      arraysize(valid_texture_internal_format_storage_table_es3));
+      base::size(valid_texture_internal_format_storage_table_es3));
   texture_parameter.AddValues(valid_texture_parameter_table_es3,
-                              arraysize(valid_texture_parameter_table_es3));
+                              base::size(valid_texture_parameter_table_es3));
   texture_stencil_renderable_internal_format.AddValues(
       valid_texture_stencil_renderable_internal_format_table_es3,
-      arraysize(valid_texture_stencil_renderable_internal_format_table_es3));
+      base::size(valid_texture_stencil_renderable_internal_format_table_es3));
   vertex_attrib_type.AddValues(valid_vertex_attrib_type_table_es3,
-                               arraysize(valid_vertex_attrib_type_table_es3));
+                               base::size(valid_vertex_attrib_type_table_es3));
   vertex_attribute.AddValues(valid_vertex_attribute_table_es3,
-                             arraysize(valid_vertex_attribute_table_es3));
+                             base::size(valid_vertex_attribute_table_es3));
 }
 
 void Validators::UpdateETCCompressedTextureFormats() {
diff --git a/gpu/command_buffer/service/raster_cmd_validation.cc b/gpu/command_buffer/service/raster_cmd_validation.cc
index e2f3622..ec66e6ba 100644
--- a/gpu/command_buffer/service/raster_cmd_validation.cc
+++ b/gpu/command_buffer/service/raster_cmd_validation.cc
@@ -5,6 +5,8 @@
 // Contains various validation functions for the Raster service.
 
 #include "gpu/command_buffer/service/raster_cmd_validation.h"
+
+#include "base/stl_util.h"
 #include "gpu/command_buffer/service/gl_utils.h"
 
 namespace gpu {
diff --git a/gpu/command_buffer/service/raster_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/raster_cmd_validation_implementation_autogen.h
index 2e25dac..71a3fa5d 100644
--- a/gpu/command_buffer/service/raster_cmd_validation_implementation_autogen.h
+++ b/gpu/command_buffer/service/raster_cmd_validation_implementation_autogen.h
@@ -82,18 +82,18 @@
 };
 
 Validators::Validators()
-    : g_l_state(valid_g_l_state_table, arraysize(valid_g_l_state_table)),
+    : g_l_state(valid_g_l_state_table, base::size(valid_g_l_state_table)),
       texture_mag_filter_mode(valid_texture_mag_filter_mode_table,
-                              arraysize(valid_texture_mag_filter_mode_table)),
+                              base::size(valid_texture_mag_filter_mode_table)),
       texture_min_filter_mode(valid_texture_min_filter_mode_table,
-                              arraysize(valid_texture_min_filter_mode_table)),
+                              base::size(valid_texture_min_filter_mode_table)),
       texture_parameter(valid_texture_parameter_table,
-                        arraysize(valid_texture_parameter_table)),
+                        base::size(valid_texture_parameter_table)),
       texture_wrap_mode(valid_texture_wrap_mode_table,
-                        arraysize(valid_texture_wrap_mode_table)),
+                        base::size(valid_texture_wrap_mode_table)),
       gfx_buffer_usage(valid_gfx_buffer_usage_table,
-                       arraysize(valid_gfx_buffer_usage_table)),
+                       base::size(valid_gfx_buffer_usage_table)),
       viz_resource_format(valid_viz_resource_format_table,
-                          arraysize(valid_viz_resource_format_table)) {}
+                          base::size(valid_viz_resource_format_table)) {}
 
 #endif  // GPU_COMMAND_BUFFER_SERVICE_RASTER_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index 25e7dec..852a966f 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -320,6 +320,8 @@
       "os": {
         "type": "chromeos"
       },
+      "gl_vendor": "ARM.*",
+      "gl_renderer": "Mali.*",
       "features": [
         "disable_discard_framebuffer"
       ]
diff --git a/infra/config/global/cr-buildbucket-dev.cfg b/infra/config/global/cr-buildbucket-dev.cfg
index c2c3949ba..af86827 100644
--- a/infra/config/global/cr-buildbucket-dev.cfg
+++ b/infra/config/global/cr-buildbucket-dev.cfg
@@ -21,6 +21,7 @@
 
 builder_mixins {
   name: "swarm-ci"
+  dimensions: "cpu:x86-64"
   recipe {
     name: "swarming/staging"
     properties: "mastername:chromium.swarm"
@@ -47,7 +48,6 @@
 
     builder_defaults {
       category: "Chromium"
-      dimensions: "cpu:x86-64"
       execution_timeout_secs: 10800  # 3h
       service_account: "chromium-ci-builder-dev@chops-service-accounts.iam.gserviceaccount.com"
       build_numbers: YES
@@ -87,6 +87,15 @@
       dimensions: "os:Windows-10"
       mixins: "swarm-ci"
     }
+    # TODO(crbug.com/901205): Move these to prod.
+    builders {
+      # An experimental builder that runs a recipe used to flash its DUT.
+      name: "cros-dut-flash"
+      dimensions: "os:ChromeOS"
+      recipe {
+        name: "cros_flash"
+      }
+    }
   }
 }
 
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
index 7b7975e..2f4f822e 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
@@ -30,6 +30,7 @@
 <translation id="4555020257205549924">ይህ ባህሪ ሲበራ Chromium በሌሎች ቋንቋዎች የተጻፉ ገጾች Google ትርጉምን በመጠቀም እንዲተረጎምልዎ ይጠይቀዎታል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">በሌሎች መሣሪያዎችዎ ላይ ባለ Chromium ላይ የከፈቷቸው ትሮች እዚህ ይመጣሉ።</translation>
 <translation id="495292094137889840">የChromium ኪውአር መቃኛውን መጠቀም ይጀምሩ</translation>
+<translation id="4999538639245140991">በ<ph name="SIGNOUT_MANAGED_DOMAIN" /> ከሚተዳደር መለያ ዘግተው እየወጡ ስለሆነ የእርስዎ Chromium ውሂብ ከዚህ መሣሪያ ላይ ይሰረዛል። የእርስዎ ውሂብ በGoogle መለያዎ ውስጥ ይቆያል።</translation>
 <translation id="5231355151045086930">ከChromium ዘግተው ይውጡ</translation>
 <translation id="5862307444128926510">ወደ Chromium እንኳን በደህና መጡ</translation>
 <translation id="5945387852661427312">በ<ph name="DOMAIN" /> ከሚተዳደር መለያ ዘግተው እየወጡና ለአስተዳዳሪው ሙሉውን በChromium ውሂብዎ ቁጥጥር እየሰጡ ነው። የእርስዎ ውሂብ እስከመጨረሻው ከዚህ መለያ ጋር ይተሳሰራል። ከChromium ዘግቶ መውጣት ውሂብዎን ከዚህ መሣሪያ ይሰርዘዋል፣ ነገር ግን በእርስዎ Google መለያ ላይ እንደተከማቸ ይቆያል።</translation>
@@ -49,6 +50,7 @@
 <translation id="7674213385180944843">ቅንብሮች &gt; ግላዊነት &gt; ካሜራ &gt; Chromium ይክፈቱ እና ማይክሮፎን ያብሩ።</translation>
 <translation id="7746854981345936341">የChromium ጠቃሚ ምክር። አሁን እንደ ተመለስ፣ ወደፊት እና ፍለጋ ያሉ አንዳንድ አዝራሮች አሁን በማያ ገጽዎ አናት ላይ ነው ያሉት።</translation>
 <translation id="786327964234957808">የስምረት መለያዎችን ከ<ph name="USER_EMAIL1" /> ወደ <ph name="USER_EMAIL2" /> እየቀየሩ ነው። ነባሩ የChromium ውሂብዎ በ<ph name="DOMAIN" /> ነው የሚተዳደረው። ይሄ ውሂብዎን ከዚህ መሣሪያዎ ይሰርዘዋል፣ ነገር ግን ውሂብዎ በ<ph name="USER_EMAIL1" /> ውስጥ እንዳለ ይቀራል።</translation>
+<translation id="8073677936375100957">የChromium ውሂብዎ ከዚህ መሣሪያ ላይ ይጽዳ?</translation>
 <translation id="8175055321229419309">ጠቃሚ ምክር፦ <ph name="BEGIN_LINK" />Chromiumን ወደ የእርስዎ መትከያ ይውሰዱት<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">በአካባቢዎ ላይ በመመስረት በChromium ውስጥ የተሻለ የGoogle ተሞክሮ ያግኙ።</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" />ን በማንኛውም ጊዜ ማበጀት ይችላሉ። Chromiumን እና እንደ ትርጉም፣ ፍለጋ እና ማስታወቂያዎች ያሉ ሌሎች የGoogle አገልግሎቶችን ግላዊነት ለማላበስ Google እርስዎ በሚጎበኟቸው ጣቢያዎች ላይ ያለ ይዘትን እና የአሰሳ እንቅስቃሴ ሊጠቀም ይችላል።</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
index 24862a50..f3e83a3e 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">‏عند تشغيل هذه الميزة، سيعرض Chromium ترجمة الصفحات المكتوبة بلغات أخرى باستخدام ترجمة Google. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">‏ستظهر علامات التبويب التي فتحتها في Chromium على أجهزتك الأخرى هنا.</translation>
 <translation id="495292094137889840">‏بدء استخدام الماسح الضوئي للاستجابة السريعة في Chromium</translation>
+<translation id="4999538639245140991">‏نظرًا لتسجيل خروجك من حساب يديره <ph name="SIGNOUT_MANAGED_DOMAIN" />، ستُحذَف بيانات Chromium من هذا الجهاز، ولكن ستظل البيانات محفوظة في حسابك على Google.</translation>
 <translation id="5231355151045086930">‏الخروج من Chromium</translation>
 <translation id="5862307444128926510">‏مرحبًا بك في Chromium</translation>
 <translation id="5945387852661427312">‏إنك تسجل الدخول باستخدام حساب تتم إدارته من خلال <ph name="DOMAIN" /> وتمنح مشرفه الحق في التحكم في بياناتك على Chromium. سيؤدي ذلك إلى جعل بياناتك مرتبطة دائمًا بهذا الحساب. كما سيؤدي الخروج من Chromium إلى حذف بياناتك من هذا الجهاز، ولكن ستظل هذه البيانات مخزَّنة على حسابك في Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">‏افتح الإعدادات &gt; الخصوصية &gt; الكاميرا &gt; Chromium وشغِّل الكاميرا.</translation>
 <translation id="7746854981345936341">‏نصيحة لاستخدام Chromium: تظهر حاليًّا بعض الأزرار في أسفل الشاشة، مثل زر "الرجوع" و"التالي" و"البحث".</translation>
 <translation id="786327964234957808">‏أنت تجري تبديلاً لحسابات المزامنة من <ph name="USER_EMAIL1" /> إلى <ph name="USER_EMAIL2" />. تتم إدارة بيانات Chromium الحالية من خلال <ph name="DOMAIN" />. سيؤدي ذلك إلى حذف بياناتك من هذا الجهاز، ولكن ستظل بياناتك في <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">‏هل تريد محو بيانات Chromium من هذا الجهاز؟</translation>
 <translation id="8175055321229419309">‏نصيحة: <ph name="BEGIN_LINK" />انقل Chromium إلى شريط الإرساء<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">‏احصل على تجربة أفضل لاستخدام Google في Chromium استنادًا إلى موقعك.</translation>
 <translation id="8508544542427105412">‏يمكن تخصيص <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" /> في أي وقت. قد تستخدم Google محتوى المواقع الإلكترونية التي تزورها وتفاعلات المتصفّح ونشاطه لتخصيص Chromium وخدمات Google، مثل "ترجمة" و"بحث" والإعلانات.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb
index 3079d87..c57ff6a 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Когато тази функция е включена, Chromium ще предлага да преведе страниците, написани на други езици, посредством Google Преводач. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Тук ще се показват разделите, които сте отворили в Chromium на другите си устройства.</translation>
 <translation id="495292094137889840">Използване на скенера за QR кодове в Chromium</translation>
+<translation id="4999538639245140991">Тъй като излизате от профил, управляван от <ph name="SIGNOUT_MANAGED_DOMAIN" />, данните ви в Chromium ще бъдат изтрити от това устройство, но ще останат в профила ви в Google.</translation>
 <translation id="5231355151045086930">Изход от Chromium</translation>
 <translation id="5862307444128926510">Добре дошли в Chromium</translation>
 <translation id="5945387852661427312">Влизате с профил, управляван от <ph name="DOMAIN" />, и предоставяте на администратора му контрол над данните си в Chromium. Те ще се свържат за постоянно с този профил. При излизане от браузъра информацията ви ще се изтрие от устройството, но ще продължи да се съхранява в профила ви в Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Отворете „Settings“ &gt; „Privacy“ &gt; „Camera“ &gt; „Chromium“ и включете камерата.</translation>
 <translation id="7746854981345936341">Съвет за Chromium. Някои бутони, например тези за връщане назад, преминаване напред и търсене, вече са в долната част на екрана.</translation>
 <translation id="786327964234957808">Заменяте настоящия профил за синхронизиране (<ph name="USER_EMAIL1" />) с друг (<ph name="USER_EMAIL2" />). Съществуващите ви данни в Chromium се управляват от <ph name="DOMAIN" />. Те ще се изтрият от това устройство, но ще останат в профила <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Искате ли данните ви в Chromium да бъдат изчистени от устройството?</translation>
 <translation id="8175055321229419309">Съвет: <ph name="BEGIN_LINK" />Преместете Chromium в лентата „Dock“<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Подобрете работата си с Google в Chromium въз основа на местоположението си.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Настройките<ph name="END_LINK" /> могат да бъдат персонализирани по всяко време. Може да използваме съдържанието на посещаваните от вас сайтове, активността в браузъра и взаимодействията с него, за да персонализираме Chromium и услуги на Google, като Преводач, Търсене и рекламите.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
index b5d8cffc..233a8b9 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">যখন এই বৈশিষ্ট্যটি চালু করা হয় তখন Chromium, Google অনুবাদ ব্যবহার করে অন্যান্য ভাষায় লিখিত পৃষ্ঠাগুলি অনুবাদ করার অফার করবে৷ <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">আপনার অন্য ডিভাইসগুলিতে Chromium এ আপনি যে ট্যাবগুলি খুলেছেন সেগুলি এখানে দেখা যাবে।</translation>
 <translation id="495292094137889840">Chromium QR স্ক্যানার ব্যবহার করা শুরু করুন</translation>
+<translation id="4999538639245140991">কারণ <ph name="SIGNOUT_MANAGED_DOMAIN" /> দ্বারা ম্যানেজ করা একটি অ্যাকাউন্ট থেকে আপনি সাইন-আউট করছেন, এই ডিভাইস থেকে আপনার Chromium ডেটা মুছে ফেলবে। আপনার Google অ্যাকাউন্টে ডেটা থেকে যাবে।</translation>
 <translation id="5231355151045086930">Chromium থেকে প্রস্থান করুন</translation>
 <translation id="5862307444128926510">Chromium-এ স্বাগতম</translation>
 <translation id="5945387852661427312">আপনি <ph name="DOMAIN" /> পরিচালিত একটি অ্যাকাউন্টের মাধ্যমে সাইন ইন করছেন এবং এর প্রশাসককে আপনার Chromium ডেটা নিয়ন্ত্রণ করতে দিচ্ছেন৷ আপনার ডেটা এই অ্যাকাউন্টের সাথে স্থায়ীভাবে আবদ্ধ হবে৷ Chromium থেকে সাইন আউট করলে এই ডিভাইস থেকে আপনার ডেটা মুছে ফেলা হবে, কিন্তু এটি আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে।</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">সেটিংস &gt; গোপনীয়তা &gt; ক্যামেরা &gt; Chromium খুলুন এবং ক্যামেরা চালু করুন।</translation>
 <translation id="7746854981345936341">Chromium টিপ। কিছু বোতাম এখন আপনার স্ক্রিনে নিচের দিকে রয়েছে যেমন, ব্যাক, ফরওয়ার্ড এবং সার্চ বোতাম।</translation>
 <translation id="786327964234957808">আপনি সিঙ্ক অ্যাকাউন্টগুলিকে <ph name="USER_EMAIL1" /> থেকে <ph name="USER_EMAIL2" /> এ সুইচ করছেন। আপনার বিদ্যমান Chromium ডেটা <ph name="DOMAIN" /> দ্বারা পরিচালিত হয়। এটি এই ডিভাইস থেকে আপনার ডেটা মুছে দেবে, কিন্তু <ph name="USER_EMAIL1" /> এ আপনার ডেটা থাকবে।</translation>
+<translation id="8073677936375100957">এই ডিভাইস থেকে আপনার Chromium ডেটা সরিয়ে ফেলবেন?</translation>
 <translation id="8175055321229419309">টিপ: <ph name="BEGIN_LINK" />Chromium কে আপনার ডকে সরান<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">আপনার অবস্থানের উপর ভিত্তি করে Chromium এ আরও ভাল Google অভিজ্ঞতা লাভ করুন৷</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" /> যেকোনও সময় কাস্টমাইজ করা যেতে পারে। Google, আপনার দেখা সাইটগুলির কন্টেন্ট, ব্রাউজার ইন্টার‍্যাকশন এবং অ্যাক্টিভিটিগুলি ব্যবহার করে Chromium এবং অন্যান্য Google পরিষেবা যেমন অনুবাদ, সার্চ ও বিজ্ঞাপনগুলি ব্যক্তিগতকৃত করতে পারে।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb
index 771f9c1d..33ce865 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb
@@ -30,6 +30,7 @@
 <translation id="4555020257205549924">Pokud je tato funkce zapnutá, bude Chromium nabízet překlad stránek v jiných jazycích pomocí Překladače Google.<ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Zde se objeví karty, které jste otevřeli v prohlížeči Chromium ve svých ostatních zařízeních.</translation>
 <translation id="495292094137889840">Začněte používat čtečku QR kódů prohlížeče Chromium</translation>
+<translation id="4999538639245140991">Protože se odhlašujete z účtu spravovaného doménou <ph name="SIGNOUT_MANAGED_DOMAIN" />, vaše data prohlížeče Chromium z tohoto zařízení budou smazána. V účtu Google vám zůstanou.</translation>
 <translation id="5231355151045086930">Odhlášení z prohlížeče Chromium</translation>
 <translation id="5862307444128926510">Vítejte v prohlížeči Chromium</translation>
 <translation id="5945387852661427312">Přihlašujete se pomocí účtu spravovaného doménou <ph name="DOMAIN" /> a poskytujete jeho správci kontrolu nad svými daty prohlížeče Chromium. Vaše data budou trvale přidružena k tomuto účtu. Odhlášením z prohlížeče Chromium svá data smažete z tohoto zařízení, ve vašem účtu Google však uložena zůstanou.</translation>
@@ -49,6 +50,7 @@
 <translation id="7674213385180944843">Otevřete Nastavení &gt; Soukromí &gt; Kamera &gt; Chromium a zapněte fotoaparát.</translation>
 <translation id="7746854981345936341">Tip pro Chromium. Některá tlačítka, například Zpět, Vpřed a Hledat, jsou teď v dolní části obrazovky.</translation>
 <translation id="786327964234957808">Přepínáte účet pro synchronizaci z <ph name="USER_EMAIL1" /> na <ph name="USER_EMAIL2" />. Vaše existující data prohlížeče Chromium jsou spravována doménou <ph name="DOMAIN" />. Touto akcí svá data smažete z tohoto zařízení, v účtu <ph name="USER_EMAIL1" /> však vaše data zůstanou.</translation>
+<translation id="8073677936375100957">Vymazat z tohoto zařízení data prohlížeče Chromium?</translation>
 <translation id="8175055321229419309">Tip: <ph name="BEGIN_LINK" />Přesuňte si prohlížeč Chromium do doku<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Služby Google mohou v prohlížeči Chromium díky údajům o poloze fungovat lépe.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Nastavení<ph name="END_LINK" /> lze kdykoliv upravit. Google může používat obsah na webech, které navštěvujete, interakce s prohlížečem a aktivity k personalizaci prohlížeče Chromium a služeb Google, jako jsou Překladač, Vyhledávání a reklamy.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb
index d228bf5f..693a3c9 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Si activas esta función, Chromium te preguntará si deseas usar Google Traductor para traducir páginas en otros idiomas. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Aquí se mostrarán las pestañas que hayas abierto en Chromium en tus otros dispositivos.</translation>
 <translation id="495292094137889840">Usar el escáner QR de Chromium</translation>
+<translation id="4999538639245140991">Como estás saliendo de una cuenta que administra <ph name="SIGNOUT_MANAGED_DOMAIN" />, tus datos de Chromium se borrarán de este dispositivo, pero permanecerán en tu Cuenta de Google.</translation>
 <translation id="5231355151045086930">Salir de Chromium</translation>
 <translation id="5862307444128926510">Bienvenido a Chromium</translation>
 <translation id="5945387852661427312">Estás accediendo con una cuenta que administra <ph name="DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chromium. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chromium, los datos se borrarán de este dispositivo, pero quedarán almacenados en tu cuenta de Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Abre Configuración &gt; Privacidad &gt; Cámara &gt; Chromium y activa la cámara.</translation>
 <translation id="7746854981345936341">Sugerencia de Chromium: Algunos botones ahora están en la parte inferior de la pantalla, como Retroceder, Avanzar y Buscar.</translation>
 <translation id="786327964234957808">La cuenta de sincronización cambiará de <ph name="USER_EMAIL1" /> a <ph name="USER_EMAIL2" />. El dominio <ph name="DOMAIN" /> administra tus datos existentes de Chromium. Esta acción borrará los datos de este dispositivo, pero permanecerán en <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">¿Quieres borrar tus datos de Chromium de este dispositivo?</translation>
 <translation id="8175055321229419309">Sugerencia: <ph name="BEGIN_LINK" />Lleva Chromium a tu Dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Obtén una mejor experiencia de Google en Chromium según tu ubicación.</translation>
 <translation id="8508544542427105412">Se puede modificar la <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" /> en cualquier momento. Es posible que Google use el contenido de los sitios que visitas, tu actividad de navegación y otras interacciones para personalizar Chromium y los servicios de Google, como el Traductor, la Búsqueda y los anuncios.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
index a1a6025..17e5a76 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Si esta función está activada, Chromium ofrecerá la posibilidad de traducir páginas escritas en otros idiomas con el Traductor de Google. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Aquí aparecerán las pestañas que hayas abierto en Chromium en otros dispositivos.</translation>
 <translation id="495292094137889840">Empezar a usar el escáner de QR de Chromium</translation>
+<translation id="4999538639245140991">Al cerrar sesión en una cuenta gestionada por <ph name="SIGNOUT_MANAGED_DOMAIN" />, se eliminan tus datos de Chromium en este dispositivo, pero permanecen en tu cuenta de Google.</translation>
 <translation id="5231355151045086930">Cerrar sesión en Chromium</translation>
 <translation id="5862307444128926510">Te damos la bienvenida a Chromium</translation>
 <translation id="5945387852661427312">Estás iniciando sesión con una cuenta gestionada por <ph name="DOMAIN" /> y vas a otorgar a su administrador el control sobre tus datos de Chromium. Tus datos se vincularán de forma permanente a esta cuenta. Al cerrar sesión en Chromium, tus datos se eliminarán de este dispositivo, pero permanecerán almacenados en tu cuenta de Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Abre Ajustes &gt; Privacidad &gt; Cámara &gt; Chromium y activa la cámara.</translation>
 <translation id="7746854981345936341">Consejo sobre Chromium. Algunos botones ahora se encuentran en la parte inferior de la pantalla, como Atrás, Adelante y Buscar.</translation>
 <translation id="786327964234957808">Estás cambiando las cuentas de sincronización de <ph name="USER_EMAIL1" /> a <ph name="USER_EMAIL2" />. Tus datos actuales de Chromium están administrados por <ph name="DOMAIN" />. Tus datos se eliminarán de este dispositivo, pero permanecerán en <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">¿Quieres borrar tus datos de Chromium en este dispositivo?</translation>
 <translation id="8175055321229419309">Consejo: <ph name="BEGIN_LINK" />Mueve Chromium a tu Dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Disfruta de una mejor experiencia en Chromium según tu ubicación.</translation>
 <translation id="8508544542427105412">Puedes personalizar la <ph name="BEGIN_LINK" />configuración<ph name="END_LINK" /> en cualquier momento. Google puede utilizar el contenido de los sitios web que visites y la actividad e interacciones de navegación para personalizar Chrome y otros servicios de Google, como el Traductor, la Búsqueda y los anuncios.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
index 89e40f4..5d389ec4 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">‏وقتی این قابلیت روشن است، Chromium ترجمه صفحات نوشته‌شده به سایر زبان‌ها را با استفاده از مترجم Google پیشنهاد می‌دهد. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">‏برگه‌هایی که در دستگاه‌های دیگر در Chromium باز کرده‌اید، در اینجا نشان داده می‌شوند.</translation>
 <translation id="495292094137889840">‏استفاده از اسکنر QR در Chromium را شروع کنید</translation>
+<translation id="4999538639245140991">‏ازآنجایی‌که درحال خارج شدن از حسابی هستید که <ph name="SIGNOUT_MANAGED_DOMAIN" /> آن را مدیریت می‌کند، داده‌های Chromium شما از این دستگاه حذف خواهد شد. داده‌هایتان در حساب Google شما باقی می‌ماند.</translation>
 <translation id="5231355151045086930">‏خروج از سیستم Chromium</translation>
 <translation id="5862307444128926510">‏به Chromium خوش آمدید</translation>
 <translation id="5945387852661427312">‏هم‌اکنون درحال ورود به سیستم با حسابی مدیریت‌شده توسط <ph name="DOMAIN" /> و دادن کنترل داده‌های Chromium خود به سرپرست این حساب هستید. داده‌هایتان به‌طور دائم به این حساب مرتبط می‌شوند. با خروج از Chrome، داده‌هایتان از این دستگاه حذف می‌شوند اما همچنان در حساب Google شما باقی می‌ماند.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">‏Settings (تنظیمات) &gt; Privacy (حریم خصوصی) &gt; Camera (دوربین) &gt; Chromium را باز کنید و دوربین را روشن کنید.</translation>
 <translation id="7746854981345936341">‏نکته Chromium. بعضی از دکمه‌ها مثل Back (برگشت)، Forward (به جلو) و Search (جستجو) اکنون در پایین صفحه هستند.</translation>
 <translation id="786327964234957808">‏هم‌اکنون درحال تغییر حساب‌های همگام‌سازی از <ph name="USER_EMAIL1" /> به <ph name="USER_EMAIL2" /> هستید. داده‌های موجود Chromium شما توسط <ph name="DOMAIN" /> مدیریت می‌شوند. با این کار، داده‌هایتان از این دستگاه حذف می‌شود اما همچنان در <ph name="USER_EMAIL1" /> باقی می‌ماند.</translation>
+<translation id="8073677936375100957">‏داده‌های Chromium شما از این دستگاه پاک شود؟</translation>
 <translation id="8175055321229419309">‏نکته: <ph name="BEGIN_LINK" />Chromium را به لنگرگاهتان انتقال دهید<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">‏با استفاده از مکانتان در Chromium، تجربه بهتری از Google داشته باشید.</translation>
 <translation id="8508544542427105412">‏هرزمان بخواهید می‌توانید <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> را سفارشی کنید. ممکن است Google از محتوای موجود در سایت‌هایی که بازدید می‌کنید و تعاملات و فعالیت مرورگر برای شخصی‌سازی Chromium و سرویس‌های Google (مانند «مترجم»، «جستجو» و آگهی‌ها) استفاده کند.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
index 7048c07a..0bea453c 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Kapag naka-on ang feature na ito, mag-aalok ang Chromium na magsalin ng mga page na nakasulat sa ibang mga wika gamit ang Google Translate. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Dito lalabas ang mga nabuksan mong tab sa Chromium sa iba mo pang mga device.</translation>
 <translation id="495292094137889840">Simulan ang paggamit ng Chromium QR scanner</translation>
+<translation id="4999538639245140991">Dahil magsa-sign out ka sa account na pinapamahalaan ng <ph name="SIGNOUT_MANAGED_DOMAIN" />, made-delete ang iyong data sa Chromium sa device na ito. Mananatili ang data mo sa iyong Google Account.</translation>
 <translation id="5231355151045086930">Mag-sign out sa Chromium</translation>
 <translation id="5862307444128926510">Maligayang Pagdating sa Chromium</translation>
 <translation id="5945387852661427312">Nag-sign in ka gamit ang account na pinamamahalaan ng <ph name="DOMAIN" /> at binibigyan mo ang administrator nito ng kontrol sa iyong data sa Chromium. Permanenteng mauugnay ang data mo sa account na ito. Made-delete ang data mo sa device na ito kapag nag-sign out ka sa Chromium, ngunit mananatili itong nakaimbak sa Google Account mo.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Buksan ang Settings &gt; Privacy &gt; Camera &gt; Chromium at i-on ang camera.</translation>
 <translation id="7746854981345936341">Tip sa Chromium. Nasa ibaba na ng iyong screen ang ilang button, tulad ng Bumalik, Susunod, at Maghanap.</translation>
 <translation id="786327964234957808">Pinapalitan mo ang mga sync account mula sa <ph name="USER_EMAIL1" /> patungo sa <ph name="USER_EMAIL2" />. Ang iyong data ng Chromium ay pinamamahalaan ng <ph name="DOMAIN" />. Ide-delete nito ang iyong data mula sa device na ito, ngunit mananatili ang iyong data sa <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">I-clear ang iyong data sa Chromium sa device na ito?</translation>
 <translation id="8175055321229419309">Tip: <ph name="BEGIN_LINK" />Ilipat ang Chromium sa iyong dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Magkaroon ng mas mahusay na karanasan sa Google sa Chromium batay sa iyong lokasyon.</translation>
 <translation id="8508544542427105412">Maaaring i-customize ang <ph name="BEGIN_LINK" />Mga Setting<ph name="END_LINK" /> anumang oras. Maaaring gamitin ng Google ang content sa mga site na binibisita mo, mga pakikipag-ugnayan, at aktibidad sa browser para ma-personalize ang Chromium at ang mga serbisyo ng Google tulad ng Translate, Search at mga ad.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
index fb38f46..fc1bb9f 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">જ્યારે આ સુવિધા ચાલુ કરી હોય, ત્યારે Chromium, Google અનુવાદનો ઉપયોગ કરીને અન્ય ભાષાઓમાં લખેલા પૃષ્ઠોના અનુવાદની ઓફર કરશે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">તમારા અન્ય ઉપકરણો પર તમે Chromium માં ખોલેલા ટૅબ્સ અહીં દેખાશે.</translation>
 <translation id="495292094137889840">Chromium QR સ્કેનરને ઉપયોગમાં લેવાનું શરૂ કરો</translation>
+<translation id="4999538639245140991">કારણ કે તમે <ph name="SIGNOUT_MANAGED_DOMAIN" /> દ્વારા મેનેજ કરવામાં આવેલ એકાઉન્ટમાંથી સાઇન આઉટ કરી રહ્યાં છો, આ ડિવાઇસમાંથી તમારા Chromium ડેટા ડિલીટ થઈ જશે. તમારો ડેટા તમારા Google એકાઉન્ટમાં જળવાઈ રહેશે.</translation>
 <translation id="5231355151045086930">Chromiumમાંથી સાઇન આઉટ કરો</translation>
 <translation id="5862307444128926510">Chromium માં સ્વાગત છે</translation>
 <translation id="5945387852661427312">તમે <ph name="DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chromium ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromiumમાંથી સાઇન આઉટ કરવું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">સેટિંગ્સ &gt; ગોપનીયતા &gt; કૅમેરો &gt; Chromium ખોલો અને કૅમેરો ચાલુ કરો.</translation>
 <translation id="7746854981345936341">Chromium ટિપ. પાછળ, ફૉર્વર્ડ અને શોધ જેવાં કેટલાક બટનો હવે તમારી સ્ક્રીનના તળિયે છે.</translation>
 <translation id="786327964234957808">તમે <ph name="USER_EMAIL1" />થી <ph name="USER_EMAIL2" /> પર સિંક એકાઉન્ટને સ્વિચ કરી રહ્યાં છો. તમારો અસ્તિત્વમાંનો Chromium ડેટા <ph name="DOMAIN" /> દ્વારા મેનેજ કરવામાં આવે છે. આ ડિવાઇસ પરથી આ તમારા ડેટાને ડિલીટ કરશે, પરંતુ તમારો ડેટા <ph name="USER_EMAIL1" /> માં રહેશે.</translation>
+<translation id="8073677936375100957">ડિવાઇસમાંથી તમારા Chromium ડેટાને સાફ કરીએ?</translation>
 <translation id="8175055321229419309">ટિપ: <ph name="BEGIN_LINK" />Chromium ને તમારા ડૉક પર ખસેડો<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Chromium માં તમારા સ્થાન પર આધારિત બહેતર Google અનુભવ મેળવો.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />સેટિંગ<ph name="END_LINK" />ને કોઈપણ સમયે કસ્ટમાઇઝ કરી શકાય છે. Google તમે મુલાકાત લીધેલ સાઇટના કન્ટેન્ટનો તથા બ્રાઉઝિંગ ક્રિયાપ્રતિક્રિયા અને પ્રવૃત્તિનો ઉપયોગ Chromium અને Google સેવાઓ જેમ કે અનુવાદ, શોધ, અને જાહેરાતોને વ્યક્તિગત બનાવવા માટે કરી શકે છે.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb
index 0b0947a6..3de80304 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb
@@ -30,6 +30,7 @@
 <translation id="4555020257205549924">जब यह सुविधा चालू होती है, तो क्रोमियम अन्य भाषा में लिखे पृष्ठों को Google अनुवाद का उपयोग करके अनुवाद करने के लिए ऑफ़र करेगा. <ph name="BEGIN_LINK" />अधिक जानें<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">आपके अन्य डिवाइस पर क्रोमियम में खोले हुए आपके टैब यहां दिखाई देंगे.</translation>
 <translation id="495292094137889840">क्रोमियम QR स्कैनर का उपयोग करना शुरू करें</translation>
+<translation id="4999538639245140991">चूंकि आप <ph name="SIGNOUT_MANAGED_DOMAIN" /> की ओर से प्रबंधित खाते से साइन आउट कर रहे हैं, इसलिए आपका क्रोमियम डेटा इस डिवाइस से मिट जाएगा. आपका डेटा आपके Google खाते में बना रहेगा.</translation>
 <translation id="5231355151045086930">क्रोमियम से प्रस्थान करें</translation>
 <translation id="5862307444128926510">क्रोमियम में आपका स्वागत है</translation>
 <translation id="5945387852661427312">आप <ph name="DOMAIN" /> द्वारा प्रबंधित खाते में प्रवेश कर रहे हैं और उसके व्यवस्थापक को अपने क्रोमियम डेटा पर नियंत्रण प्रदान कर रहे हैं. आपका डेटा इस खाते से स्थायी रूप से संबद्ध हो जाएगा. क्रोमियम से प्रस्थान करने से आपका डेटा इस डिवाइस से हट जाएगा, लेकिन वह आपके Google खाते में संग्रहित रहेगा.</translation>
@@ -49,6 +50,7 @@
 <translation id="7674213385180944843">सेटिंग &gt; निजता &gt; कैमरा &gt; क्रोमियम खोलें और कैमरा चालू करें.</translation>
 <translation id="7746854981345936341">क्रोमियम के लिए सलाह. 'वापस जाएं', 'आगे जाएं' और 'खोजें' जैसे कुछ बटन अब आपकी स्क्रीन के सबसे नीचे मिलेंगे.</translation>
 <translation id="786327964234957808">आप सिंक खातों को <ph name="USER_EMAIL1" /> से <ph name="USER_EMAIL2" /> में बदल रहे हैं. आपका मौजूदा क्रोमियम डेटा <ph name="DOMAIN" /> द्वारा प्रबंधित होता है. इससे इस डिवाइस से आपका डेटा हट जाएगा, लेकिन आपका डेटा <ph name="USER_EMAIL1" /> में बना रहेगा.</translation>
+<translation id="8073677936375100957">इस डिवाइस से अपना क्रोमियम डेटा हटाएं?</translation>
 <translation id="8175055321229419309">टिप्स: <ph name="BEGIN_LINK" />क्रोमियम को अपने डॉक में ले जाएं<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">अपने स्थान के आधार पर क्रोमियम में एक बेहतर Google अनुभव प्राप्त करें.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> कभी भी पसंद के मुताबिक बनाई जा सकती हैं. Google उन साइटों की सामग्री, जिन पर आप जाते हैं, आपकी ब्राउज़िंग गतिविधि और इंटरैक्शन का इस्तेमाल 'क्रोमियम' और दूसरी 'Google सेवाओं', जैसे कि अनुवाद, खोज और विज्ञापनों को आपकी पसंद के मुताबिक बनाने के लिए कर सकता है.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb
index 9a017a43..55d248c 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Saat fitur ini diaktifkan, Chromium akan menawarkan untuk menerjemahkan halaman yang ditulis dalam bahasa lain menggunakan Google Terjemahan. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Tab yang telah dibuka di Chromium pada perangkat lainnya akan muncul di sini.</translation>
 <translation id="495292094137889840">Mulai gunakan pemindai QR Chromium</translation>
+<translation id="4999538639245140991">Karena Anda logout dari akun yang dikelola oleh <ph name="SIGNOUT_MANAGED_DOMAIN" />, data Chromium Anda akan dihapus dari perangkat ini. Data Anda akan tetap tersedia di Akun Google Anda.</translation>
 <translation id="5231355151045086930">Keluar dari Chromium</translation>
 <translation id="5862307444128926510">Selamat Datang di Chromium</translation>
 <translation id="5945387852661427312">Anda masuk dengan akun yang dikelola oleh <ph name="DOMAIN" /> dan memberikan kontrol data Chromium kepada administrator. Data Anda akan terikat dengan akun ini secara permanen. Bila Anda keluar dari Chromium, data akan dihapus dari perangkat ini, namun tetap disimpan di Akun Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Buka Setelan &gt; Privasi &gt; Kamera &gt; Chromium, lalu aktifkan kamera.</translation>
 <translation id="7746854981345936341">Tips Chromium. Beberapa tombol sekarang terdapat di bagian bawah layar, seperti Kembali, Teruskan, dan Telusuri.</translation>
 <translation id="786327964234957808">Anda beralih akun sinkronisasi dari <ph name="USER_EMAIL1" /> ke <ph name="USER_EMAIL2" />. Data Chromium Anda yang sudah ada dikelola oleh <ph name="DOMAIN" />. Tindakan ini akan menghapus data dari perangkat, namun data Anda akan tetap tersedia di <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Hapus data Chromium Anda dari perangkat ini?</translation>
 <translation id="8175055321229419309">Tips: <ph name="BEGIN_LINK" />Pindahkan Chromium ke dok<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Dapatkan pengalaman menggunakan Google yang lebih baik di Chromium berdasarkan lokasi Anda.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Setelan<ph name="END_LINK" /> dapat disesuaikan kapan saja. Google dapat menggunakan konten di situs yang Anda buka, serta interaksi dan aktivitas browser untuk mempersonalisasi Chromium dan layanan Google seperti Terjemahan, Penelusuran, dan iklan.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
index eb122ac4..80ccc8f 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">この機能を有効にすると、外国語のページを開いたときに翻訳ツールが表示されます。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">他の端末の Chromium で開いているタブがここに表示されます。</translation>
 <translation id="495292094137889840">Chromium の QR スキャナの使用を開始する</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> で管理されているアカウントからログアウトするにあたり、Chromium データはこの端末から削除されます(ただし Google アカウントには残ります)。</translation>
 <translation id="5231355151045086930">Chromium からのログアウト</translation>
 <translation id="5862307444128926510">Chromium へようこそ</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> で管理されているアカウントでログインして、Chromium データの管理を管理者に委ねようとしています。この操作を行うと、データはこのアカウントに恒久的に関連付けられます。Chromium からログアウトすると、データはこの端末から削除されますが、Google アカウントには残ります。</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">[設定] &gt; [プライバシー] &gt; [カメラ] &gt; [Chromium] の順に選択し、カメラをオンにします。</translation>
 <translation id="7746854981345936341">Chromium の使い方のヒント: 戻る、進む、検索など一部のボタンは画面の下部に表示されるようになりました。</translation>
 <translation id="786327964234957808">同期アカウントを <ph name="USER_EMAIL1" /> から <ph name="USER_EMAIL2" /> に切り替えようとしています。既存の Chromium データは <ph name="DOMAIN" /> で管理されています。この操作を行うと、データはこの端末から削除されますが、<ph name="USER_EMAIL1" /> には残ります。</translation>
+<translation id="8073677936375100957">Chromium データをこの端末から削除しますか?</translation>
 <translation id="8175055321229419309">ヒント: <ph name="BEGIN_LINK" />Chromium を Dock に移動<ph name="END_LINK" />するとアクセスしやすくなります</translation>
 <translation id="8252885722420466166">ユーザーの現在時に基づいて Chromium で Google を使いやすくします。</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />設定<ph name="END_LINK" />はいつでも変更できます。Google は、Chromium やその他の Google サービス(翻訳、検索、広告など)をカスタマイズする目的で、ユーザーがアクセスしたサイトのコンテンツ、ユーザーの閲覧行動や操作を使用することがあります。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb
index 0f6799aa..29f6a4fe 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆನ್ ಮಾಡಿದಾಗ, Google ಅನುವಾದ ಬಳಸಿಕೊಂಡು ಬೇರೆ ಭಾಷೆಗಳಲ್ಲಿ ಬರೆದ ಪುಟಗಳನ್ನು ಅನುವಾದಿಸಲು Chromium ಅವಕಾಶ ನೀಡುತ್ತದೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಲ್ಲಿನ Chromium ನಲ್ಲಿ ನೀವು ತೆರೆದಿರುವಂತಹ ಟ್ಯಾಬ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation>
 <translation id="495292094137889840">Chromium QR ಸ್ಕ್ಯಾನರ್ ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿ</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲ್ಪಡುವ ಖಾತೆಯಿಂದ ನೀವು ಸೈನ್ ಔಟ್ ಮಾಡುತ್ತಿರುವ ಕಾರಣ, ನಿಮ್ಮ Chromium ಡೇಟಾವನ್ನು ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾ ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿಯೇ ಇರುತ್ತದೆ.</translation>
 <translation id="5231355151045086930">Chromium ನಿಂದ ಸೈನ್‌ ಔಟ್‌ ಮಾಡಿ</translation>
 <translation id="5862307444128926510">Chromium ಗೆ ಸುಸ್ವಾಗತ</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> ನಿರ್ವಹಿಸಿದ ಖಾತೆಯ ಮೂಲಕ ನೀವು ಸೈನ್‍‍ ಇನ್ ಮಾಡುತ್ತಿರುವಿರಿ ಮತ್ತು ಅದರ ನಿರ್ವಾಹಕರಿಗೆ ನಿಮ್ಮ Chromium ಡೇಟಾದ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತಿರುವಿರಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಈ ಖಾತೆಯೊಂದಿಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ. Chromium ನಿಂದ ಸೈನ್ ಔಟ್ ಮಾಡುವುದರಿಂದ ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ, ಆದರೆ ಅದು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹಿತವಾಗಿಯೇ ಇರುತ್ತದೆ.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">ಸೆಟ್ಟಿಂಗ್‌ಗಳು &gt; ಗೌಪ್ಯತೆ &gt; ಕ್ಯಾಮರಾ &gt; Chromium ತೆರೆಯಿರಿ ಮತ್ತು ಕ್ಯಾಮರಾ ಆನ್ ಮಾಡಿ.</translation>
 <translation id="7746854981345936341">Chromium ಸಲಹೆ. ಹಿಂದೆ, ಮುಂದೆ ಮತ್ತು ಹುಡುಕಾಟದಂತಹ ಕೆಲವು ಬಟನ್‌ಗಳು ಈಗ ನಿಮ್ಮ ಪರದೆಯ ಕೆಳಭಾಗದಲ್ಲಿವೆ.</translation>
 <translation id="786327964234957808"><ph name="USER_EMAIL1" /> ರಿಂದ <ph name="USER_EMAIL2" /> ಗೆ ನೀವು ಸಿಂಕ್ ಖಾತೆಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತಿರುವಿರಿ. ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ Chromium ಡೇಟಾವನ್ನು <ph name="DOMAIN" /> ರಿಂದ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ. ಈ ಸಾಧನದಲ್ಲಿರುವ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಇದು ಅಳಿಸಿಹಾಕುತ್ತದೆ, ಆದರೆ ನಿಮ್ಮ ಡೇಟಾ <ph name="USER_EMAIL1" /> ರಲ್ಲಿಯೇ ಇರುತ್ತದೆ.</translation>
+<translation id="8073677936375100957">ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ Chromium ಡೇಟಾ ತೆರವುಗೊಳಿಸುವುದೇ?</translation>
 <translation id="8175055321229419309">ಸುಳಿವು: <ph name="BEGIN_LINK" />Chromium ಅನ್ನು ನಿಮ್ಮ ಡಾಕ್‌ಗೆ ಸರಿಸಿ<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಆಧರಿಸಿ Chromium ನಲ್ಲಿ ಉತ್ತಮ Google ಅನುಭವವನ್ನು ಪಡೆಯಿರಿ.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್‍ಗಳನ್ನು<ph name="END_LINK" /> ಯಾವ ಸಮಯದಲ್ಲಾದರೂ ಕಸ್ಟಮೈಸ್‌ ಮಾಡಬಹುದು. ಅನುವಾದ, ಹುಡುಕಾಟ ಮತ್ತು ಜಾಹೀರಾತುಗಳಂತಹ Google ಸೇವೆಗಳನ್ನು ಮತ್ತು Chromium ಅನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್‌ಗಳಲ್ಲಿನ ವಿಷಯ, ಬ್ರೌಸರ್‌ನೊಂದಿಗಿನ ಸಂವಾದಗಳು ಹಾಗೂ ಚಟುವಟಿಕೆಗಳನ್ನು Google ಬಳಸಬಹುದು.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb
index 9b8de41..d38c0f7 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">이 기능을 사용하면 Chromium에서 Google 번역을 사용하여 외국어로 작성된 페이지를 번역합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">다른 기기의 Chromium에서 연 탭이 여기에 표시됩니다.</translation>
 <translation id="495292094137889840">Chromium QR 스캐너 사용 시작</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" />에서 관리하는 계정에서 로그아웃하면 Chromium 데이터가 기기에서 삭제됩니다. Google 계정에 저장된 데이터는 그대로 유지됩니다.</translation>
 <translation id="5231355151045086930">Chromium에서 로그아웃</translation>
 <translation id="5862307444128926510">Chromium에 오신 것을 환영합니다.</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" />에서 관리하는 계정으로 로그인합니다. 계정 관리자가 내 Chromium 데이터를 관리하게 되며 데이터는 이 계정에 영구적으로 연결됩니다. Chromium에서 로그아웃하면 데이터가 기기에서 삭제되지만 Google 계정에는 그대로 유지됩니다.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">설정 &gt; 개인정보 보호 &gt; 카메라 &gt; Chromium을 열고 카메라를 사용 설정하세요.</translation>
 <translation id="7746854981345936341">Chromium 도움말. 뒤로, 앞으로, 검색과 같은 일부 버튼이 화면 하단으로 이동했습니다.</translation>
 <translation id="786327964234957808">동기화 계정을 <ph name="USER_EMAIL1" />에서 <ph name="USER_EMAIL2" />(으)로 전환합니다. 기존 Chromium 데이터는 <ph name="DOMAIN" />에서 관리됩니다. 이 기기에서는 데이터가 삭제되지만 <ph name="USER_EMAIL1" />에 계속해서 데이터가 보관됩니다.</translation>
+<translation id="8073677936375100957">기기에서 Chromium 데이터를 삭제하시겠습니까?</translation>
 <translation id="8175055321229419309">도움말: <ph name="BEGIN_LINK" />Chromium을 내 Dock에 추가하세요.<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">위치 정보를 기반으로 Chromium에서 더 좋은 Google 서비스를 제공할 수 있습니다.</translation>
 <translation id="8508544542427105412">언제든지 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />을 변경할 수 있습니다. Google에서 Chromium 및 번역, 검색과 같은 기타 Google 서비스, 광고를 맞춤설정하기 위해 사용자가 방문한 사이트의 콘텐츠, 탐색 활동, 상호작용 기록을 사용할 수 있습니다.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb
index c25a55a..f5a1b9f 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">ഈ ഫീച്ചർ ഓണായിരിക്കുമ്പോൾ, മറ്റ് ഭാഷകളിൽ എഴുതിയിരിക്കുന്ന പേജുകൾ Google വിവർത്തനം ഉപയോഗിച്ച് വിവർത്തനം ചെയ്യുന്നത് Chromium ഓഫർ ചെയ്യും. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിലെ Chromium-ത്തിൽ തുറന്ന ടാബുകൾ ഇവിടെ ദൃശ്യമാകും.</translation>
 <translation id="495292094137889840">Chromium QR സ്‌കാനർ ഉപയോഗിക്കാൻ തുടങ്ങൂ</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> മാനേജ് ചെയ്യുന്ന ഒരു അക്കൗണ്ടിൽ നിന്നും നിങ്ങള്‍ സൈൻ ഔട്ട് ചെയ്യുന്നത് കാരണം, ഈ ഉപകരണത്തില്‍ നിന്ന് Chromium ഡാറ്റ ഇല്ലാതാക്കപ്പെടും. നിങ്ങളുടെ ഡാറ്റ തുടര്‍ന്നും Google അക്കൗണ്ടില്‍ ഉണ്ടായിരിക്കും.</translation>
 <translation id="5231355151045086930">Chromium-ത്തിൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യുക</translation>
 <translation id="5862307444128926510">Chromium-ത്തിലേക്ക് സ്വാഗതം</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> മാനേജുചെയ്യുന്ന ഒരു അക്കൗണ്ട് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുകയും ഇതിന്റെ അഡ്‌മിനിസ്‌ട്രേറ്റർക്ക് നിങ്ങളുടെ Chromium വിവരങ്ങളിന്മേൽ നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു. വിവരങ്ങളെ ഈ അക്കൗണ്ടുമായി ശാശ്വതമായി ബന്ധിപ്പിക്കും. Chromium-ത്തിൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യുന്നത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ വിവരങ്ങളെ ഇല്ലാതാക്കുമെങ്കിലും, Google അക്കൗണ്ടിൽ തുടർന്നും അവ സൂക്ഷിക്കുന്നതാണ്.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">ക്രമീകരണം &gt; സ്വകാര്യത &gt; ക്യാമറ &gt; Chromium തുറന്ന് ക്യാമറ ഓണാക്കുക.</translation>
 <translation id="7746854981345936341">Chromium നുറുങ്ങ്. മടങ്ങുക, മുമ്പോട്ട് പോകുക, തിരയൽ എന്നീ ചില ബട്ടണുകൾ, ഇപ്പോൾ നിങ്ങളുടെ സ്‌ക്രീനിന്റെ താഴെയാണ്.</translation>
 <translation id="786327964234957808">നിങ്ങൾ <ph name="USER_EMAIL1" /> എന്നതിൽ നിന്ന് <ph name="USER_EMAIL2" /> എന്നതിലേക്ക് സമന്വയ അക്കൗണ്ടുകൾ മാറ്റുകയാണ്. <ph name="DOMAIN" /> ഡൊമെയ്‌നാണ് നിങ്ങളുടെ നിലവിലുള്ള Chromium വിവരങ്ങൾ മാനേജുചെയ്യുന്നത്. ഇത് ഈ ഉപകരണത്തിൽ നിന്ന് വിവരങ്ങൾ ഇല്ലാതാക്കുമെങ്കിലും <ph name="USER_EMAIL1" /> എന്നതിൽ തുടർന്നും അവ ഉണ്ടായിരിക്കുന്നതാണ്.</translation>
+<translation id="8073677936375100957">ഉപകരണത്തില്‍ നിന്ന് Chromium ഡാറ്റ മായ്ക്കണോ?</translation>
 <translation id="8175055321229419309">നുറുങ്ങ്: <ph name="BEGIN_LINK" />Chromium-ത്തെ നിങ്ങളുടെ ഡോക്കിലേക്ക് നീക്കുക<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Chromium-ത്തിൽ നിങ്ങളുടെ ലൊക്കേഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഒരു മികച്ച Google അനുഭവം സ്വന്തമാക്കുക.</translation>
 <translation id="8508544542427105412">ഏതുസമയത്തും <ph name="BEGIN_LINK" />ക്രമീകരണം<ph name="END_LINK" /> ഇഷ്‌ടാനുസൃതമാക്കാം. Translate, തിരയൽ, പരസ്യങ്ങൾ എന്നിവ പോലുള്ള Google സേവനങ്ങൾ, Chromium എന്നിവ വ്യക്തിപരമാക്കാൻ, നിങ്ങൾ സന്ദർശിക്കുന്ന സൈറ്റുകളിലെ ഉള്ളടക്കം, ബ്രൗസർ ഇടപെടലുകൾ, ആക്‌റ്റിവിറ്റി എന്നിവ Google ഉപയോഗിച്ചേക്കാം.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
index a844798..4813df765 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">हे वैशिष्ट्य चालू केल्यावर, Chromium Google भाषांतर वापरून अन्य भाषामध्ये लिहिलेल्या पृष्ठांचा भाषांतर ऑफर करेल. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">आपल्या अन्य डिव्हाइसवर तुम्ही Chromium मध्ये उघडलेले टॅब येथे दिसतील.</translation>
 <translation id="495292094137889840">Chromium QR स्कॅनर वापण्यास प्रारंभ करा</translation>
+<translation id="4999538639245140991">तुम्ही <ph name="SIGNOUT_MANAGED_DOMAIN" /> द्वारे व्यवस्थापित केलेल्या खात्यातून साइन आउट केले आहे, तुमचा Chromium डेटा या डिव्हाइसवरून हटवला जाईल. तुमचा डेटा तुमच्या Google खाते मध्ये असेल.</translation>
 <translation id="5231355151045086930">Chromium मधून साइन आउट करा</translation>
 <translation id="5862307444128926510">Chromium वर तुमचे स्‍वागत आहे</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> द्वारे व्यवस्थापित केलेल्या खात्यासह तुम्ही साइन इन करीत आहात आणि त्याच्या प्रशासकास आपल्या Chromium डेटाचे नियंत्रण देत आहात. तुमचा डेटा कायमचा या खात्यामध्ये असेल. Chromium मधून साइन आउट केल्याने तुमचा डेटा या डिव्हाइस वरून हटवला जाईल परंतु तो आपल्या Google खात्यामध्ये संचयित केलेला असेल.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">सेटिंग्ज &gt; गोपनीयता &gt; कॅमेरा &gt; Chromium उघडा आणि कॅमेरा चालू करा.</translation>
 <translation id="7746854981345936341">Chromium टीप. काही बटणे आता तुमच्या स्क्रीनच्या तळाशी आहेत, जसे की मागे, पुढे आणि शोध.</translation>
 <translation id="786327964234957808">तुम्ही संकालित केलेली खाती <ph name="USER_EMAIL1" /> वरून <ph name="USER_EMAIL2" /> वर स्विच करीत आहात. तुमचा विद्यमान Chromium डेटा <ph name="DOMAIN" /> द्वारे व्यवस्थापित केला आहे. हे तुमचा डेटा या डिव्हाइस वरून हटवेल परंतु तुमचा डेटा <ph name="USER_EMAIL1" /> मध्ये असेल.</translation>
+<translation id="8073677936375100957">या डिव्हाइसवरून तुमचा Chromium डेटा साफ करायचा?</translation>
 <translation id="8175055321229419309">टीप: <ph name="BEGIN_LINK" />Chromium आपल्या डॉकमध्ये हलवा<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">आपल्या स्थानावर आधारित Chromium मध्ये उत्कृष्ट Google अनुभव मिळवा.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />सेटिंग्ज<ph name="END_LINK" /> कधीही कस्टमाइझ केली जाऊ शकतात. Chromium आणि भाषांतर, शोध आणि जाहिरातींसारख्या Google सेवा पर्सनलाइझ करण्यासाठी Google तुम्ही भेट देत असलेल्या साइटवरील आशय, ब्राउझर परस्परसंवाद आणि अॅक्टिव्हिटी वापरू शकते.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb
index 62a4c25..d0c648b3 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Apabila ciri ini dihidupkan, Chromium akan menawarkan untuk menterjemah halaman yang ditulis dalam bahasa lain menggunakan Terjemahan Google. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Tab yang telah dibuka dalam Chromium pada peranti anda yang lain akan dipaparkan di sini.</translation>
 <translation id="495292094137889840">Mula menggunakan pengimbas QR Chromium</translation>
+<translation id="4999538639245140991">Oleh sebab anda log keluar daripada akaun yang diurus oleh <ph name="SIGNOUT_MANAGED_DOMAIN" />, data Chromium anda akan dipadamkan daripada peranti ini. Data anda akan kekal dalam Akaun Google anda.</translation>
 <translation id="5231355151045086930">Log keluar daripada Chromium</translation>
 <translation id="5862307444128926510">Selamat datang ke Chromium</translation>
 <translation id="5945387852661427312">Anda mengelog masuk dengan akaun yang diurus oleh <ph name="DOMAIN" /> dan memberi kawalan terhadap data Chromium anda kepada pentadbirnya. Data anda akan terikat secara kekal kepada akaun ini. Tindakan mengelog keluar daripada Chromium akan memadamkan data anda daripada peranti ini, tetapi data itu akan kekal disimpan dalam Akaun Google anda.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Buka Tetapan &gt; Privasi &gt; Kamera &gt; Chromium dan hidupkan kamera.</translation>
 <translation id="7746854981345936341">Petua Chromium. Sesetengah butang kini terletak di bahagian bawah skrin anda, seperti Kembali, Ke Hadapan dan Carian.</translation>
 <translation id="786327964234957808">Anda sedang menukar akaun penyegerakan daripada <ph name="USER_EMAIL1" /> kepada <ph name="USER_EMAIL2" />. Data Chromium sedia ada diurus oleh <ph name="DOMAIN" />. Tindakan ini akan memadamkan data anda daripada peranti ini, tetapi data itu akan kekal disimpan dalam <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Kosongkan data Chromium anda daripada peranti ini?</translation>
 <translation id="8175055321229419309">Petua: <ph name="BEGIN_LINK" />Alihkan Chromium ke dok anda<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Dapatkan pengalaman yang lebih baik di Chromium berdasarkan lokasi anda.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Tetapan<ph name="END_LINK" /> boleh disesuaikan pada bila-bila masa. Google boleh menggunakan kandungan di tapak yang anda lawati, interaksi dan aktiviti penyemak imbas untuk memperibadikan Chromium dan perkhidmatan Google seperti Terjemahan, Carian dan iklan.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
index f802485..7b069e67 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Når denne funksjonen er slått på, tilbyr Chromium å oversette sider som er skrevet på andre språk, ved hjelp av Google Oversetter. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Faner du har åpnet i Chromium på de andre enhetene dine, vises her.</translation>
 <translation id="495292094137889840">Begynn å bruke Chromium QR-skanneren</translation>
+<translation id="4999538639245140991">Fordi du logger av en konto som er administrert av <ph name="SIGNOUT_MANAGED_DOMAIN" />, blir Chromium-dataene dine slettet fra denne enheten, men de blir værende i Google-kontoen din.</translation>
 <translation id="5231355151045086930">Vil du logge av Chromium?</translation>
 <translation id="5862307444128926510">Velkommen til Chromium</translation>
 <translation id="5945387852661427312">Du logger på med en konto som administreres av <ph name="DOMAIN" />, og du gir dermed administratoren for dette domenet kontroll over Chromium-dataene dine. Dataene dine blir knyttet til denne kontoen permanent. Når du logger av Chromium, slettes dataene dine fra denne enheten, men de er fortsatt lagret i Google-kontoen din.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Åpne Innstillinger &gt; Personvern &gt; Kamera &gt; Chromium, og slå på kameraet.</translation>
 <translation id="7746854981345936341">Chromium-tips. Noen knapper, slik som Tilbake, Frem og Søk, er nå nederst på skjermen.</translation>
 <translation id="786327964234957808">Du bytter synkroniseringskonto fra <ph name="USER_EMAIL1" /> til <ph name="USER_EMAIL2" />. De eksisterende Chromium-dataene dine administreres av <ph name="DOMAIN" />. Dette fører til at dataene dine slettes fra denne enheten, men de blir værende i <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Vil du fjerne Chromium-dataene dine fra denne enheten?</translation>
 <translation id="8175055321229419309">Tips: <ph name="BEGIN_LINK" />Flytt Chromium til dokken<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Få en bedre Google-opplevelse i Chromium basert på hvor du er.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Innstillinger<ph name="END_LINK" /> kan tilpasses når som helst. Google kan bruke innhold på nettsteder du besøker, nettleserinteraksjoner og annen aktivitet for å gi Chromium og Google-tjenester (som Oversetter, Søk og annonser) et personlig preg</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb
index c6c5fdbd..294a2c6 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Gdy ta funkcja jest włączona, Chromium oferuje tłumaczenie stron w innych językach przy użyciu Tłumacza Google. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Tutaj wyświetlą się karty otwarte w Chromium na innych urządzeniach.</translation>
 <translation id="495292094137889840">Skaner QR w Chromium</translation>
+<translation id="4999538639245140991">Wylogowujesz się z konta, którym zarządza <ph name="SIGNOUT_MANAGED_DOMAIN" />. Spowoduje to usunięcie danych Chromium z tego urządzenia, ale pozostaną one na koncie Google.</translation>
 <translation id="5231355151045086930">Wylogowanie z Chromium</translation>
 <translation id="5862307444128926510">Chromium – witamy!</translation>
 <translation id="5945387852661427312">Logujesz się na konto, którym zarządza <ph name="DOMAIN" />, i przekazujesz jego administratorowi kontrolę nad Twoimi danymi Chromium. Zostaną one trwale przypisane do tego konta. Gdy się wylogujesz, znikną one z tego urządzenia, ale pozostaną zapisane na Twoim koncie Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Wybierz Ustawienia &gt; Prywatność &gt; Aparat &gt; Chromium i włącz aparat.</translation>
 <translation id="7746854981345936341">Wskazówka dla użytkowników Chromium. Niektóre przyciski (na przykład Wstecz, Dalej i Szukaj) znajdują się teraz na dole ekranu.</translation>
 <translation id="786327964234957808">Przełączasz synchronizację kont z <ph name="USER_EMAIL1" /> na <ph name="USER_EMAIL2" />. Twoimi istniejącymi danymi Chromium zarządza <ph name="DOMAIN" />. Dane zostaną usunięte z tego urządzenia, ale pozostaną na koncie <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Usunąć dane Chromium z tego urządzenia?</translation>
 <translation id="8175055321229419309">Wskazówka: <ph name="BEGIN_LINK" />przenieś Chromium do Docka<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Włączenie udostępniania lokalizacji w Chromium pozwala w pełni korzystać z usług Google.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Ustawienia<ph name="END_LINK" /> możesz zmienić w dowolnym momencie. Google może używać zawartości odwiedzanych przez Ciebie stron oraz informacji o Twojej aktywności i interakcjach w przeglądarce, by personalizować Chromium i usługi Google takie jak Tłumacz, wyszukiwarka czy reklamy.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb
index 067ff3f..6e906d3 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Când această funcție este activată, Chromium se va oferi să traducă paginile scrise în alte limbi utilizând Google Traducere. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Filele deschise în Chromium pe alte dispozitive vor apărea aici.</translation>
 <translation id="495292094137889840">Începe să folosești scanerul QR din Chromium</translation>
+<translation id="4999538639245140991">Deoarece te deconectezi de la un cont gestionat de <ph name="SIGNOUT_MANAGED_DOMAIN" />, datele tale Chromium de pe acest dispozitiv vor fi șterse. Datele tale vor rămâne în Contul Google.</translation>
 <translation id="5231355151045086930">Deconectează-te de la Chromium</translation>
 <translation id="5862307444128926510">Bun venit la Chromium</translation>
 <translation id="5945387852661427312">Te conectezi cu un cont gestionat de <ph name="DOMAIN" /> și acorzi administratorului acestuia controlul asupra datelor Chromium. Datele vor fi asociate definitiv acestui cont. Dacă te deconectezi de la Chromium, datele vor fi șterse de pe acest dispozitiv, dar vor rămâne stocate în Contul Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Deschide Setări &gt; Confidențialitate &gt; Cameră foto &gt; Chromium și activează camera foto.</translation>
 <translation id="7746854981345936341">Sfat pentru Chromium: unele butoane se află acum în partea de jos a ecranului, cum ar fi Înapoi, Înainte și Caută.</translation>
 <translation id="786327964234957808">Comuți contul pentru sincronizare de la <ph name="USER_EMAIL1" /> la <ph name="USER_EMAIL2" />. Datele Chromium existente sunt gestionate de <ph name="DOMAIN" />. Astfel, datele vor fi șterse de pe acest dispozitiv, dar vor rămâne în <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Ștergi datele tale Chromium de pe dispozitiv?</translation>
 <translation id="8175055321229419309">Sfat: <ph name="BEGIN_LINK" />mută Chromium în bara de andocare<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Beneficiază de o experiență Google mai bună în Chromium pe baza locației.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Setările<ph name="END_LINK" /> pot fi personalizate oricând. Google poate folosi conținutul de pe site-urile pe care le accesezi, interacțiunile cu browserul și activitatea pentru a personaliza Chromium și servicii Google precum Traducere, Căutare și anunțuri.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb
index 8e8d5d5e..73db548 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Po zapnutí tejto funkcie bude prehliadač Chromium ponúkať preloženie stránok napísaných v inom jazyku pomocou Prekladača Google. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Tu sa zobrazia karty, ktoré ste otvorili v prehliadači Chromium na iných zariadeniach.</translation>
 <translation id="495292094137889840">Začnite používať čítačku kódov QR Chromium</translation>
+<translation id="4999538639245140991">Odhlasujete sa z účtu spravovaného doménou <ph name="SIGNOUT_MANAGED_DOMAIN" />, takže údaje prehliadača Chromium budú z tohto zariadenia odstránené. Vaše údaje zostanú vo vašom účte Google.</translation>
 <translation id="5231355151045086930">Odhlásenie sa z prehliadača Chromium</translation>
 <translation id="5862307444128926510">Vitajte v prehliadači Chromium</translation>
 <translation id="5945387852661427312">Prihlasujete sa pomocou účtu spravovaného doménou <ph name="DOMAIN" /> a jej správcovi tým dávate kontrolu nad vašimi údajmi prehliadača Chromium. Vaše údaje budú natrvalo prepojené s týmto účtom. Odhlásením z prehliadača Chromium odstránite údaje z príslušného zariadenia, avšak naďalej zostanú uložené vo vašom účte Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Otvorte Nastavenia &gt; Súkromie &gt; Fotoaparát &gt; Chromium a zapnite fotoaparát.</translation>
 <translation id="7746854981345936341">Tip pre Chromium: niektoré tlačidlá sa teraz nachádzajú v dolnej časti obrazovky, napríklad Dopredu, Späť a Hľadať.</translation>
 <translation id="786327964234957808">Účet na synchronizáciu <ph name="USER_EMAIL1" /> prepínate na <ph name="USER_EMAIL2" />. Vaše existujúce údaje prehliadača Chromium spravuje doména <ph name="DOMAIN" />. Touto akciou odstránite údaje z vášho zariadenia, avšak zostanú naďalej v účte <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Chcete vymazať údaje prehliadača Chromium z tohto zariadenia?</translation>
 <translation id="8175055321229419309">Tip: <ph name="BEGIN_LINK" />Presuňte Chromium do doku<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Získajte lepšie prostredie Google v prehliadači Chromium na základe svojej polohy.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Nastavenia<ph name="END_LINK" /> si môžete kedykoľvek prispôsobiť. Google môže použiť obsah na weboch, ktoré navštívite, interakcie a aktivitu v prehliadači na prispôsobenie prehliadača Chromium a služieb Googlu, ako sú Prekladač, Vyhľadávanie a reklamy.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
index e49a178..c99a6e5 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">இந்த அம்சம் இயக்கப்பட்டிருக்கும் போது, பிற மொழிகளில் எழுதப்பட்டுள்ள பக்கங்களை Google மொழியாக்கத்தைப் பயன்படுத்தி, உங்கள் மொழியில் மொழிபெயர்த்துக்கொள்ளும் வசதியை Chromium வழங்கும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">உங்கள் பிற சாதனங்களில் Chromium மூலம் திறந்த தாவல்கள் இங்கே தோன்றும்.</translation>
 <translation id="495292094137889840">Chromium QR ஸ்கேனரைப் பயன்படுத்தத் தொடங்கவும்</translation>
+<translation id="4999538639245140991">நீங்கள் <ph name="SIGNOUT_MANAGED_DOMAIN" /> நிர்வகிக்கும் கணக்கிலிருந்து வெளியேறுவதால், இந்தச் சாதனத்திலிருந்து உங்கள் Chromium தரவு நீக்கப்படும். எனினும் உங்கள் Google கணக்கிலிருந்து உங்கள் தரவு நீக்கப்படாது.</translation>
 <translation id="5231355151045086930">Chromium இலிருந்து வெளியேறு</translation>
 <translation id="5862307444128926510">Chromium க்கு வரவேற்கிறோம்</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> நிர்வகிக்கும் கணக்கில் உள்நுழைந்து, உங்கள் Chromium தரவு மீதான கட்டுப்பாட்டை அதன் நிர்வாகிக்கு வழங்குகிறீர்கள். இந்தக் கணக்குடன் தரவு நிரந்தரமாக இணைக்கப்படும். Chromium இலிருந்து வெளியேறுவதால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் உங்கள் Google கணக்கில் தரவு தொடர்ந்து இருக்கும்.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">அமைப்புகள் &gt; தனியுரிமை &gt; கேமரா &gt; Chromium என்பதைத் திறந்து, கேமராவை இயக்கவும்.</translation>
 <translation id="7746854981345936341">Chromium உதவிக்குறிப்பு: 'பின்செல்’, ‘முன்செல்’, ‘தேடு’ போன்ற சில பட்டன்கள் இப்போது உங்கள் திரையின் அடிப்பகுதியில் உள்ளன.</translation>
 <translation id="786327964234957808">ஒத்திசைவுக் கணக்குகளை <ph name="USER_EMAIL1" /> இலிருந்து <ph name="USER_EMAIL2" />க்கு மாற்றுகிறீர்கள். தற்போதுள்ள Chromium தரவை <ph name="DOMAIN" /> நிர்வகிக்கிறது. இவ்வாறு செய்வதால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் <ph name="USER_EMAIL1" /> இல் தரவு தொடர்ந்து இருக்கும்.</translation>
+<translation id="8073677936375100957">இந்தச் சாதனத்திலிருந்து உங்கள் Chromium தரவை அழிக்கவா?</translation>
 <translation id="8175055321229419309">உதவிக் குறிப்பு: <ph name="BEGIN_LINK" />Chromiumஐ உங்கள் டாக்கிற்கு நகர்த்துங்கள்<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">உங்கள் இருப்பிடத்தின் அடிப்படையில், சிறந்த Google அனுபவத்தை Chromium இல் பெறவும்.</translation>
 <translation id="8508544542427105412">எப்போது வேண்டுமானாலும் <ph name="BEGIN_LINK" />அமைப்புகளைத்<ph name="END_LINK" /> தனிப்பயனாக்கலாம். Chromium, மொழியாக்கம், தேடல், விளம்பரங்கள் போன்ற Google சேவைகளைத் தனிப்பயனாக்க, நீங்கள் பார்வையிடும் தளங்களில் உள்ள உள்ளடக்கம், உலாவி உரையாடல்கள், மேற்கொள்ளும் செயல்பாடு ஆகியவற்றை Google பயன்படுத்தக்கூடும்.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
index 3d47cb9..b3dcae2 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">ఈ లక్షణం ప్రారంభించినప్పుడు, Chromium ఇతర భాషల్లో వ్రాసిన పేజీలకు Google అనువాదం ఉపయోగించి అనువాదాన్ని ఆఫర్ చేస్తుంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">మీరు మీ ఇతర పరికరాల్లోని Chromiumలో తెరిచిన ట్యాబ్‌లు ఇక్కడ చూపబడతాయి.</translation>
 <translation id="495292094137889840">Chromium QR స్కానర్ వినియోగం ప్రారంభించండి</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> నిర్వహిస్తున్న ఖాతా నుండి మీరు సైన్ అవుట్ చేస్తున్నారు కనుక మీ Chromium డేటా ఈ పరికరం నుండి తొలగించబడుతుంది. మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
 <translation id="5231355151045086930">Chromium నుండి సైన్ అవుట్ చేయండి</translation>
 <translation id="5862307444128926510">Chromiumకు స్వాగతం</translation>
 <translation id="5945387852661427312">మీరు <ph name="DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకునికి మీ Chromium డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chromium నుండి సైన్ అవుట్ చేయడం వలన ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది, కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">సెట్టింగ్‌లు &gt; గోప్యత &gt; కెమెరా &gt; Chromium తెరిచి, కెమెరాను ఆన్ చేయండి.</translation>
 <translation id="7746854981345936341">Chromium చిట్కా. వెనకకు, ముందుకు మరియు శోధన వంటి కొన్ని బటన్‌లు ఇప్పుడు మీ స్క్రీన్ దిగువన ఉన్నాయి.</translation>
 <translation id="786327964234957808">మీరు సమకాలీకరణ ఖాతాలను <ph name="USER_EMAIL1" /> నుండి <ph name="USER_EMAIL2" />కి మారుస్తున్నారు. ఇప్పటికే ఉన్న మీ Chromium డేటా <ph name="DOMAIN" /> నిర్వహణలో ఉంది. దీని వలన మీ డేటా ఈ పరికరం నుండి తొలగించబడుతుంది, కానీ మీ డేటా <ph name="USER_EMAIL1" />లో అలాగే ఉంటుంది.</translation>
+<translation id="8073677936375100957">ఈ పరికరం నుండి మీ Chromium డేటాని తీసివేయాలా?</translation>
 <translation id="8175055321229419309">చిట్కా: <ph name="BEGIN_LINK" />Chromiumని మీ డాక్‌కి తరలించండి<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">మీ స్థానం ఆధారంగా Chromiumలో మెరుగైన Google అనుభవాన్ని పొందండి.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />సెట్టింగ్‌ల<ph name="END_LINK" />ను ఎప్పుడైనా అనుకూలీకరించవచ్చు. Chromiumని మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి, మీరు సందర్శించే సైట్‌ల‌లోని కంటెంట్‌ను, అలాగే బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపాన్ని Google ఉపయోగించవచ్చు.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb
index d55bcb9..c3a8430 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">เมื่อเปิดฟีเจอร์นี้ Chromium จะเสนอให้แปลหน้าต่างๆ ที่เขียนด้วยภาษาอื่นโดยใช้ Google แปลภาษา <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">แท็บที่คุณเปิดไว้ใน Chromium ในอุปกรณ์เครื่องอื่นๆ จะปรากฏที่นี่</translation>
 <translation id="495292094137889840">เริ่มใช้โปรแกรมสแกนโค้ด QR ของ Chromium</translation>
+<translation id="4999538639245140991">เนื่องจากคุณกำลังออกจากระบบบัญชีที่จัดการโดย <ph name="SIGNOUT_MANAGED_DOMAIN" /> ข้อมูล Chromium ของคุณจะถูกลบออกจากอุปกรณ์นี้ แต่ข้อมูลจะยังคงอยู่ในบัญชี Google</translation>
 <translation id="5231355151045086930">ออกจากระบบ Chromium</translation>
 <translation id="5862307444128926510">ยินดีต้อนรับสู่ Chromium</translation>
 <translation id="5945387852661427312">คุณกำลังลงชื่อเข้าใช้ด้วยบัญชีที่จัดการโดย <ph name="DOMAIN" /> และทำให้ผู้ดูแลระบบของโดเมนควบคุมข้อมูล Chromium ของคุณได้ ข้อมูลของคุณจะโยงกับบัญชีนี้อย่างถาวร การออกจากระบบ Chromium จะลบข้อมูลของคุณจากอุปกรณ์เครื่องนี้ แต่ข้อมูลจะยังจัดเก็บอยู่ในบัญชี Google</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">เปิดการตั้งค่า &gt; ความเป็นส่วนตัว &gt; กล้อง &gt; Chromium แล้วเปิดกล้องถ่ายรูป</translation>
 <translation id="7746854981345936341">เคล็ดลับสำหรับ Chromium ตอนนี้บางปุ่มแสดงอยู่ที่ด้านล่างของหน้าจอแล้ว เช่น ปุ่มกลับ ไปข้างหน้า และค้นหา</translation>
 <translation id="786327964234957808">คุณกำลังเปลี่ยนบัญชีในการซิงค์จาก <ph name="USER_EMAIL1" /> เป็น <ph name="USER_EMAIL2" /> ข้อมูล Chromium ที่มีอยู่ของคุณจัดการโดย <ph name="DOMAIN" /> การเปลี่ยนบัญชีจะลบข้อมูลจากอุปกรณ์นี้ แต่ข้อมูลจะยังคงอยู่ใน <ph name="USER_EMAIL1" /></translation>
+<translation id="8073677936375100957">ล้างข้อมูล Chromium ของคุณออกจากอุปกรณ์นี้ไหม</translation>
 <translation id="8175055321229419309">เคล็ดลับ: <ph name="BEGIN_LINK" />ย้าย Chromium ไปไว้ที่ Dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">รับประสบการณ์การใช้งาน Google ที่ดีขึ้นใน Chromium โดยอิงจากตำแหน่งของคุณ</translation>
 <translation id="8508544542427105412">คุณปรับแต่ง<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" />ได้ทุกเมื่อ Google อาจใช้เนื้อหาในเว็บไซต์ที่คุณเข้าชม รวมถึงการโต้ตอบและกิจกรรมในเบราว์เซอร์เพื่อปรับ Chromium และบริการของ Google อย่างเช่น แปลภาษา, Search และโฆษณาให้เหมาะกับคุณ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
index 9f9c865c..3ac32f3 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Bu özellik açık durumdayken Chromium, diğer dillerde yazılmış sayfaları Google Çeviri'yi kullanarak çevirmeyi teklif eder. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Diğer cihazlarınızda Chromium'da açtığınız sekmeler burada görünür.</translation>
 <translation id="495292094137889840">Chromium QR tarayıcısını kullanmaya başlayın</translation>
+<translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> tarafından yönetilen bir hesabın oturumunu kapattığınız için Chromium verileriniz bu cihazdan silinecek. Ancak verileriniz Google Hesabınızda kalmaya devam edecek.</translation>
 <translation id="5231355151045086930">Chromium oturumunu kapatın</translation>
 <translation id="5862307444128926510">Chromium'a Hoş Geldiniz</translation>
 <translation id="5945387852661427312"><ph name="DOMAIN" /> tarafından yönetilen bir hesapla oturum açıyor ve yöneticiye tüm Chromium verileriniz üzerinde denetim olanağı veriyorsunuz. Verileriniz kalıcı olarak bu hesaba bağlanacaktır. Chromium'da oturumu kapattığınızda verileriniz bu cihazdan silinir ancak Google Hesabınızda kalmaya devam eder.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Ayarlar &gt; Gizlilik &gt; Kamera &gt; Chromium'a gidin ve kamerayı açın.</translation>
 <translation id="7746854981345936341">Chromium için ipucu: Geri, İleri ve Ara gibi bazı düğmeler artık ekranınızın alt bölümünde bulunuyor.</translation>
 <translation id="786327964234957808">Senkronizasyon hesapları arasında (<ph name="USER_EMAIL1" /> hesabından <ph name="USER_EMAIL2" /> hesabına) geçiş yapıyorsunuz. Mevcut Chromium verileriniz <ph name="DOMAIN" /> tarafından yönetiliyor. Bu işlemle verileriniz bu cihazdan silinir, ancak <ph name="USER_EMAIL1" /> hesabınızda kalmaya devam eder.</translation>
+<translation id="8073677936375100957">Chromium verileriniz bu cihazdan temizlensin mi?</translation>
 <translation id="8175055321229419309">İpucu: <ph name="BEGIN_LINK" />Chromium'u yuva bölümüne taşıyın<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Chromium'da, konumunuza dayalı olarak daha iyi bir Google deneyimi yaşayın.</translation>
 <translation id="8508544542427105412"><ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" />'ı istediğiniz zaman özelleştirebilirsiniz. Chromium'u ve diğer Google hizmetlerini (Çeviri, Arama, reklamlar gibi) kişiselleştirmek için Google, ziyaret ettiğiniz sitelerdeki içeriği, tarayıcı etkileşimlerini ve etkinlikleri kullanabilir.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb
index 1aa96af..b7264e24 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">Khi tính năng này được bật, Chromium sẽ đề xuất sử dụng Google Dịch để dịch các trang viết bằng ngôn ngữ khác. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">Các tab bạn đã mở trong Chromium trên thiết bị khác sẽ xuất hiện tại đây.</translation>
 <translation id="495292094137889840">Bắt đầu dùng trình quét QR của Chromium</translation>
+<translation id="4999538639245140991">Vì bạn đăng xuất khỏi tài khoản do <ph name="SIGNOUT_MANAGED_DOMAIN" /> quản lý, nên dữ liệu Chromium sẽ bị xóa khỏi thiết bị này. Dữ liệu đó sẽ vẫn còn trong Tài khoản Google của bạn.</translation>
 <translation id="5231355151045086930">Đăng xuất khỏi Chromium</translation>
 <translation id="5862307444128926510">Chào mừng bạn đến với Chromium</translation>
 <translation id="5945387852661427312">Bạn đang đăng nhập bằng tài khoản do <ph name="DOMAIN" /> quản lý và cấp cho quản trị viên quyền kiểm soát dữ liệu Chromium của bạn. Dữ liệu của bạn sẽ được liên kết vĩnh viễn với tài khoản này. Đăng xuất khỏi Chromium sẽ xóa dữ liệu của bạn khỏi thiết bị này nhưng dữ liệu đó sẽ vẫn được lưu trữ trong Tài khoản Google.</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">Mở Cài đặt &gt; Bảo mật &gt; Máy ảnh &gt; Chromium và bật máy ảnh.</translation>
 <translation id="7746854981345936341">Mẹo dành cho Chromium. Một số nút hiện nằm ở cuối màn hình, chẳng hạn như nút Quay lại, Tiến lên và Tìm kiếm.</translation>
 <translation id="786327964234957808">Bạn đang chuyển các tài khoản đồng bộ hóa từ <ph name="USER_EMAIL1" /> về <ph name="USER_EMAIL2" />. Dữ liệu Chromium hiện có của bạn do <ph name="DOMAIN" /> quản lý. Thao tác này sẽ xóa dữ liệu của bạn khỏi thiết bị này nhưng dữ liệu đó sẽ vẫn còn trong <ph name="USER_EMAIL1" />.</translation>
+<translation id="8073677936375100957">Bạn muốn xóa dữ liệu Chromium khỏi thiết bị này?</translation>
 <translation id="8175055321229419309">Mẹo: <ph name="BEGIN_LINK" />Di chuyển Chromium sang thanh dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Có được trải nghiệm Google tốt hơn trong Chromium dựa trên vị trí của bạn.</translation>
 <translation id="8508544542427105412">Bạn có thể tùy chỉnh mục <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" /> bất cứ lúc nào. Google có thể sử dụng nội dung trên các trang web bạn truy cập, hoạt động và những tương tác trên trình duyệt để cá nhân hóa Chromium và các dịch vụ của Google, chẳng hạn như Dịch, Tìm kiếm và quảng cáo.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb
index d9e7df7..ee2e1703 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">启用此功能后,Chromium 将使用 Google 翻译对其他语言的网页进行翻译。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">您在其他设备上的 Chromium 中打开的标签页将列在此处。</translation>
 <translation id="495292094137889840">开始使用 Chromium QR 码扫描器</translation>
+<translation id="4999538639245140991">由于您正要退出的帐号是由 <ph name="SIGNOUT_MANAGED_DOMAIN" /> 管理,因此系统将会从这部设备中删除您的 Chromium 数据,但这些数据仍会保留在您的 Google 帐号中。</translation>
 <translation id="5231355151045086930">退出 Chromium</translation>
 <translation id="5862307444128926510">欢迎使用 Chromium</translation>
 <translation id="5945387852661427312">您正要登录由 <ph name="DOMAIN" /> 管理的帐号,并要授权其管理员控制您的 Chromium 数据。您的数据将与此帐号永久关联。退出 Chromium 后,您的数据将从这台设备上删除,但仍会保留在您的 Google 帐号中。</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">打开“设置”&gt;“隐私”&gt;“相机”&gt;“Chromium”,然后开启相机。</translation>
 <translation id="7746854981345936341">Chromium 提示。现在屏幕底部会显示“后退”、“前进”和“搜索”等按钮。</translation>
 <translation id="786327964234957808">您正要将同步帐号从 <ph name="USER_EMAIL1" /> 切换到 <ph name="USER_EMAIL2" />。您现有的 Chromium 数据由 <ph name="DOMAIN" /> 管理。切换同步帐号后,您的数据将从这台设备上删除,但仍会保留在 <ph name="USER_EMAIL1" /> 中。</translation>
+<translation id="8073677936375100957">从这部设备中清除您的 Chromium 数据?</translation>
 <translation id="8175055321229419309">提示:<ph name="BEGIN_LINK" />将 Chromium 移到 Dock 中<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Chromium 可根据您的位置信息为您提供更好的 Google 产品使用体验。</translation>
 <translation id="8508544542427105412">您随时可以自定义<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />。Google 可能会根据您访问的网站上的内容、您在浏览器中的互动行为和活动,为您提供个性化的 Chromium 体验和其他 Google 服务体验(例如翻译、搜索和广告)。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
index e93c6d2..5f40c723 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
@@ -31,6 +31,7 @@
 <translation id="4555020257205549924">開啟這項功能後,Chromium 會使用 Google 翻譯來翻譯其他語言的網頁。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="4787850887676698916">你在其他裝置上透過 Chromium 開啟的分頁會顯示在這裡。</translation>
 <translation id="495292094137889840">開始使用 Chromium QR 掃描器</translation>
+<translation id="4999538639245140991">由於你即將登出由 <ph name="SIGNOUT_MANAGED_DOMAIN" /> 所管理的帳戶,系統將刪除你在這個裝置上的 Chromium 資料,但這些資料仍會保留在你的 Google 帳戶中。</translation>
 <translation id="5231355151045086930">登出 Chromium</translation>
 <translation id="5862307444128926510">歡迎使用 Chromium</translation>
 <translation id="5945387852661427312">你即將使用由 <ph name="DOMAIN" /> 所管理的帳戶登入,並授權該網域的管理員控管你的 Chromium 資料。你的資料會與這個帳戶建立永久連結。登出 Chromium 後,系統會將你的資料從這個裝置上刪除,但繼續保留在你的 Google 帳戶中。</translation>
@@ -50,6 +51,7 @@
 <translation id="7674213385180944843">請前往 [設定] &gt; [隱私權] &gt; [相機] &gt; [Chromium],並開啟相機。</translation>
 <translation id="7746854981345936341">Chromium 提示。部分按鈕 (例如 [返回]、[往前] 和 [搜尋]) 現在位於畫面底部。</translation>
 <translation id="786327964234957808">你設定同步處理的帳戶即將從 <ph name="USER_EMAIL1" /> 改為 <ph name="USER_EMAIL2" />。你現有的 Chrome 資料是由 <ph name="DOMAIN" /> 所管理。系統會將你的資料從這個裝置上刪除,但繼續保留在 <ph name="USER_EMAIL1" /> 中。</translation>
+<translation id="8073677936375100957">要清除這個裝置上的 Chromium 資料嗎?</translation>
 <translation id="8175055321229419309">提示:<ph name="BEGIN_LINK" />將 Chromium 移至 Dock<ph name="END_LINK" /></translation>
 <translation id="8252885722420466166">Chromium 可根據您的位置資訊提供更優質的 Google 服務。</translation>
 <translation id="8508544542427105412">你隨時可以調整<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />。Google 可能會根據你所造訪網站的內容、瀏覽器互動行為和瀏覽活動,提供個人化的 Chromium 體驗和 Google 服務體驗,例如翻譯、搜尋和廣告。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
index a90fbdf..5e9d143 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome አሁን ተሻሽሏል! አዲስ ስሪት አለ።</translation>
 <translation id="257708665678654955">Google Chrome በሚቀጥለው ጊዜ ከዚህ ጣቢያ የመጡ የ<ph name="LANGUAGE_NAME" /> ገጾች እንዲተረጎምልዎ ይፈልጋሉ?</translation>
 <translation id="2943166482989655199">የሥርዓት እና አጠቃቀም ውሂብ ወደ Google በመላክ Chrome እና ደህንነቱን ያሻሽሉ</translation>
+<translation id="3030414234702425231">እርስዎ በ<ph name="SIGNOUT_MANAGED_DOMAIN" /> ከሚተዳደር መለያ ዘግተው እየወጡ ስለሆነ Chrome ውሂብዎ ከዚህ መሣሪያ ላይ ይሰረዛል። የእርስዎ ውሂብ በእርስዎ Google መለያ ውስጥ ይቆያል።</translation>
 <translation id="3148434565183091099">የእርስዎን ዕልባቶች በሁሉም መሣሪያዎችዎ ላይ ለማግኘት ወደ Chrome ይግቡ።</translation>
 <translation id="3148688391461398285">Chrome ውስጥ በአካባቢዎ ላይ የተመሠረተ የተሻለ ተሞክሮ ያግኙ።</translation>
 <translation id="3167189358072330585">መለያዎ በGoogle Chrome ላይ አይሠራም። እባክዎ የጎራዎ አስተዳዳሪውን ያነጋግሩ ወይም ለመግባት መደበኛ የሆነ የGoogle መለያ ይጠቀሙ።</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">በሌሎች መሣሪያዎችዎ ላይ ባለ Chrome ላይ የከፈቷቸው ትሮች እዚህ ይመጣሉ።</translation>
 <translation id="6600954340915313787">ወደ Chrome ተቀድቷል</translation>
 <translation id="6648150602980899529">በ<ph name="DOMAIN" /> ከሚተዳደር መለያ ዘግተው እየወጡና ለአስተዳዳሪው ሙሉውን በChrome ውሂብዎ ቁጥጥር እየሰጡ ነው። የእርስዎ ውሂብ እስከመጨረሻው ከዚህ መለያ ጋር ይተሳሰራል። ከChrome ዘግቶ መውጣት ውሂብዎን ከዚህ መሣሪያ ይሰርዘዋል፣ ነገር ግን በእርስዎ Google መለያ ላይ እንደተከማቸ ይቆያል።</translation>
+<translation id="6676840375528380067">የChrome ውሂብዎ ከዚህ መሣሪያ ላይ ይጽዳ?</translation>
 <translation id="690638524486313356">የGoogle Chrome አገልግሎት ውል</translation>
 <translation id="7165736900384873061">የGoogle Chrome QR መቃኛን መጠቀም ይጀምሩ</translation>
 <translation id="7172660552945675509">ጠቃሚ ምክር፦ <ph name="BEGIN_LINK" />Chromeን ወደ የእርስዎ መትከያ ይውሰዱት<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
index 937fddc..72d6609f 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">‏لقد أصبح Chrome أفضل من ذي قبل! يتوفر إصدار جديد.</translation>
 <translation id="257708665678654955">‏هل تريد أن يعرض Google Chrome ترجمة صفحات <ph name="LANGUAGE_NAME" /> من موقع الويب هذا في المرة القادمة؟</translation>
 <translation id="2943166482989655199">‏تحسين Chrome وإعدادات الأمان فيه عن طريق إرسال بيانات النظام والاستخدام إلى Google</translation>
+<translation id="3030414234702425231">‏نظرًا لتسجيل خروجك من حساب يديره <ph name="SIGNOUT_MANAGED_DOMAIN" />، ستُحذَف بيانات Chrome من هذا الجهاز، ولكن ستظل البيانات محفوظة في حسابك على Google.</translation>
 <translation id="3148434565183091099">‏للحصول على الإشارات المرجعية على جميع أجهزتك، سجِّل الدخول إلى Chrome.</translation>
 <translation id="3148688391461398285">‏احصل على تجربة أفضل في Chrome حسب موقعك.</translation>
 <translation id="3167189358072330585">‏لا يعمل حسابك على Google Chrome. يُرجى الاتصال بمشرف النطاق أو استخدام حساب Google عادي لتسجيل الدخول.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">‏ستظهر هنا علامات التبويب التي فتحتها في Chrome من أجهزتك الأخرى.</translation>
 <translation id="6600954340915313787">‏تم النسخ إلى Chrome</translation>
 <translation id="6648150602980899529">‏يتم تسجيل دخولك باستخدام حساب يتم إدارته من خلال <ph name="DOMAIN" /> ومنح مشرفه الحق في التحكم في بياناتك على Chrome. سيؤدي ذلك إلى جعل بياناتك مرتبطة دائمًا بهذا الحساب. كما سيؤدي تسجيل الخروج من Chrome إلى حذف بياناتك من هذا الجهاز، ولكن ستظل هذه البيانات مخزنة على حسابك في Google.</translation>
+<translation id="6676840375528380067">‏هل تريد محو بيانات Chrome من هذا الجهاز؟</translation>
 <translation id="690638524486313356">‏بنود خدمة Google Chrome</translation>
 <translation id="7165736900384873061">‏بدء استخدام الماسح الضوئي للاستجابة السريعة في Google Chrome</translation>
 <translation id="7172660552945675509">‏نصيحة: <ph name="BEGIN_LINK" />نقل Chrome إلى شريط الإرساء<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb
index 5552a05..c510644 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome току-що се подобри! Налице е нова версия.</translation>
 <translation id="257708665678654955">Искате ли следващия път Google Chrome да предложи да преведе от <ph name="LANGUAGE_NAME" /> страниците от този сайт?</translation>
 <translation id="2943166482989655199">Подобрете браузъра Chrome и сигурността му, като ни изпращате системна информация и данни за употребата</translation>
+<translation id="3030414234702425231">Тъй като излизате от профил, управляван от <ph name="SIGNOUT_MANAGED_DOMAIN" />, данните ви в Chrome ще бъдат изтрити от това устройство, но ще останат в профила ви в Google.</translation>
 <translation id="3148434565183091099">Влезте в Chrome, за да получите отметките си на всичките си устройства.</translation>
 <translation id="3148688391461398285">Подобрете практическата си работа в Chrome въз основа на местоположението си.</translation>
 <translation id="3167189358072330585">Профилът ви не е съвместим с Google Chrome. Моля, свържете се с администратора на домейна си или влезте с обикновен профил в Google.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Тук ще се показват разделите, които сте отворили в Chrome на другите си устройства.</translation>
 <translation id="6600954340915313787">Копирано в Chrome</translation>
 <translation id="6648150602980899529">Влизате с профил, управляван от <ph name="DOMAIN" />, и предоставяте на администратора му контрол над данните си в Chrome. Те ще се свържат за постоянно с този профил. При излизане от браузъра информацията ви ще се изтрие от устройството, но ще продължи да се съхранява в профила ви в Google.</translation>
+<translation id="6676840375528380067">Искате ли данните ви в Chrome да бъдат изчистени от устройството?</translation>
 <translation id="690638524486313356">Общи условия на Google Chrome</translation>
 <translation id="7165736900384873061">Използване на скенера за QR кодове в Google Chrome</translation>
 <translation id="7172660552945675509">Съвет: <ph name="BEGIN_LINK" />Преместете Chrome в лентата „Dock“<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
index 3e545c74..1bbeedf 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome আরও ভাল হয়েছে! একটি নতুন সংস্করণ উপলব্ধ আছে৷</translation>
 <translation id="257708665678654955">আপনি কি পরবর্তী বারে এই সাইটটির <ph name="LANGUAGE_NAME" /> পৃষ্ঠাগুলিকে অনুবাদ করে দেওয়ার জন্য Google Chrome কে বলতে চান?</translation>
 <translation id="2943166482989655199">Google-এ সিস্টেম ও ব্যবহারের ডেটা পাঠিয়ে Chrome এবং তার নিরাপত্তা উন্নত করুন</translation>
+<translation id="3030414234702425231">কারণ <ph name="SIGNOUT_MANAGED_DOMAIN" /> দ্বারা ম্যানেজ করা একটি অ্যাকাউন্ট থেকে আপনি সাইন-আউট করছেন, এই ডিভাইস থেকে আপনার Chrome ডেটা মুছে ফেলবে। আপনার Google অ্যাকাউন্টে ডেটা থেকে যাবে৷</translation>
 <translation id="3148434565183091099">সব ডিভাইসে আপনার বুকমার্কগুলি পেতে, Chrome এ প্রবেশ করুন।</translation>
 <translation id="3148688391461398285">আপনার অবস্থানের উপর ভিত্তি করে Chrome এ একটি ভাল অভিজ্ঞতা লাভ করুন৷</translation>
 <translation id="3167189358072330585">আপনার অ্যাকাউন্ট Google Chrome এ কাজ করে না৷ দয়া করে প্রবেশ করার জন্য আপনার ডোমেন প্রশাসকের সঙ্গে যোগাযোগ করুন বা কোন নিয়মিত Google অ্যাকাউন্ট ব্যবহার করুন৷</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">আপনার অন্য ডিভাইসগুলিতে Chrome এ আপনি যে ট্যাবগুলি খুলেছেন সেগুলি এখানে দেখা যাবে।</translation>
 <translation id="6600954340915313787">Chrome-এ প্রতিলিপি করা হয়েছে</translation>
 <translation id="6648150602980899529">আপনি <ph name="DOMAIN" /> পরিচালিত একটি অ্যাকাউন্টের মাধ্যমে প্রবেশ করুন করছেন এবং এর প্রশাসককে আপনার Chrome ডেটা নিয়ন্ত্রণ করতে দিচ্ছেন৷ আপনার ডেটা এই অ্যাকাউন্টের সাথে স্থায়ীভাবে আবদ্ধ হবে৷ Chrome থেকে প্রস্থান করুন করলে এই ডিভাইস থেকে আপনার ডেটা মুছে ফেলা হবে, কিন্তু এটি আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে।</translation>
+<translation id="6676840375528380067">এই ডিভাইস থেকে Chrome ডেটা সরিয়ে ফেলবেন?</translation>
 <translation id="690638524486313356">Google Chrome পরিষেবার শর্তাবলী</translation>
 <translation id="7165736900384873061">Google Chrome QR স্ক্যানারের ব্যবহার শুরু করুন</translation>
 <translation id="7172660552945675509">টিপ: <ph name="BEGIN_LINK" />Chrome কে আপনার ডকে সরান<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb
index 82477b7..0eea130 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome je opět o něco lepší. K dispozici je nová verze.</translation>
 <translation id="257708665678654955">Chcete, aby Google Chrome příště pro stránky v jazyce <ph name="LANGUAGE_NAME" /> z tohoto webu nabízel překlad?</translation>
 <translation id="2943166482989655199">Vylepšete Chrome a jeho zabezpečení tím, že do Googlu budete odesílat údaje o systému a využití</translation>
+<translation id="3030414234702425231">Protože se odhlašujete z účtu spravovaného doménou <ph name="SIGNOUT_MANAGED_DOMAIN" />, vaše data prohlížeče Chrome z tohoto zařízení budou smazána. V účtu Google vám zůstanou.</translation>
 <translation id="3148434565183091099">Chcete-li záložky synchronizovat do všech zařízení, přihlaste se do Chromu.</translation>
 <translation id="3148688391461398285">Získejte v Chromu lepší funkce založené na poloze.</translation>
 <translation id="3167189358072330585">Váš účet v prohlížeči Google Chrome nefunguje. Kontaktujte administrátora domény nebo se přihlaste pomocí běžného účtu Google.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Zde se objeví karty, které jste otevřeli v Chromu ve svých ostatních zařízeních.</translation>
 <translation id="6600954340915313787">Zkopírováno do Chromu</translation>
 <translation id="6648150602980899529">Přihlašujete se pomocí účtu spravovaného doménou <ph name="DOMAIN" /> a poskytujete jeho správci kontrolu nad svými daty prohlížeče Chrome. Vaše data budou trvale přidružena k tomuto účtu. Odhlášením z Chromu svá data smažete z tohoto zařízení, ve vašem účtu Google však uložena zůstanou.</translation>
+<translation id="6676840375528380067">Vymazat z tohoto zařízení data prohlížeče Chrome?</translation>
 <translation id="690638524486313356">Smluvní podmínky Google Chrome</translation>
 <translation id="7165736900384873061">Začněte používat čtečku QR kódů prohlížeče Google Chrome</translation>
 <translation id="7172660552945675509">Tip: <ph name="BEGIN_LINK" />Přesuňte si Chrome do doku<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb
index 2d0fdcc..77fda5f1 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">¡Chrome mejoró! Hay una nueva versión disponible.</translation>
 <translation id="257708665678654955">¿Quieres que Google Chrome te ofrezca traducir las páginas de este sitio que estén en <ph name="LANGUAGE_NAME" /> la próxima vez?</translation>
 <translation id="2943166482989655199">Para mejorar Chrome y su seguridad, envía información a Google sobre el sistema y el uso</translation>
+<translation id="3030414234702425231">Como estás saliendo de una cuenta que administra <ph name="SIGNOUT_MANAGED_DOMAIN" />, tus datos de Chrome se borrarán de este dispositivo, pero permanecerán en tu Cuenta de Google.</translation>
 <translation id="3148434565183091099">Para usar tus favoritos en todos los dispositivos, accede a Chrome.</translation>
 <translation id="3148688391461398285">Obtén una mejor experiencia en Chrome según tu ubicación.</translation>
 <translation id="3167189358072330585">Tu cuenta no funciona en Google Chrome. Comunícate con tu administrador de dominio o utiliza una cuenta común de Google para acceder.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Aquí aparecerán las pestañas que abriste en Chrome en tus otros dispositivos.</translation>
 <translation id="6600954340915313787">Se copió en Chrome.</translation>
 <translation id="6648150602980899529">Estás accediendo con una cuenta administrada por <ph name="DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chrome. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chrome, tus datos se borrarán en este dispositivo, pero quedarán guardados en tu cuenta de Google.</translation>
+<translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome de este dispositivo?</translation>
 <translation id="690638524486313356">Condiciones del servicio de Google Chrome</translation>
 <translation id="7165736900384873061">Usar el escáner QR en Google Chrome</translation>
 <translation id="7172660552945675509">Sugerencia: <ph name="BEGIN_LINK" />Lleva Chrome a tu Dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
index 5a3da0a..4293f3b62 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome sigue mejorando. Hay una nueva versión disponible.</translation>
 <translation id="257708665678654955">¿Quieres que Google Chrome te ofrezca la posibilidad de traducir las páginas en <ph name="LANGUAGE_NAME" /> de este sitio web la próxima vez?</translation>
 <translation id="2943166482989655199">Envía información de uso y del sistema a Google para mejorar Chrome y su seguridad</translation>
+<translation id="3030414234702425231">Al cerrar sesión en una cuenta gestionada por <ph name="SIGNOUT_MANAGED_DOMAIN" />, se eliminan tus datos de Chrome en este dispositivo, pero permanecen en tu cuenta de Google.</translation>
 <translation id="3148434565183091099">Inicia sesión en Chrome para ver tus marcadores en todos tus dispositivos.</translation>
 <translation id="3148688391461398285">Disfruta de una mejor experiencia en Chrome basada en tu ubicación.</translation>
 <translation id="3167189358072330585">Tu cuenta no funciona en Google Chrome. Ponte en contacto con el administrador del dominio o utiliza una cuenta de Google normal para iniciar sesión.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Aquí aparecen las pestañas que hayas abierto en Chrome en otros dispositivos.</translation>
 <translation id="6600954340915313787">Copiada a Chrome</translation>
 <translation id="6648150602980899529">Estás iniciando sesión con una cuenta gestionada por <ph name="DOMAIN" />, lo que significa que vas a proporcionar a su administrador el control sobre tus datos de Chrome. Los datos se van a vincular de forma permanente a esta cuenta. Si cierras sesión en Chrome, se eliminarán los datos de este dispositivo pero permanecerán almacenados en tu cuenta de Google.</translation>
+<translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome en este dispositivo?</translation>
 <translation id="690638524486313356">Condiciones de Servicio de Google Chrome</translation>
 <translation id="7165736900384873061">Empezar a usar el escáner de QR de Google Chrome</translation>
 <translation id="7172660552945675509">Consejo: <ph name="BEGIN_LINK" />Mueve Chrome a tu Dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
index baa3ea2..9ab988d68 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">‏‫Chrome بهتر شده است! نسخه جدید آن در دسترس است.</translation>
 <translation id="257708665678654955">‏می‌خواهید دفعه بعد Google Chrome ترجمه صفحات <ph name="LANGUAGE_NAME" /> این سایت را به شما پیشنهاد دهد؟</translation>
 <translation id="2943166482989655199">‏بهبود Chrome و امنیت آن با ارسال داده‌های سیستم و آمار استفاده به Google</translation>
+<translation id="3030414234702425231">‏ازآنجایی‌که درحال خارج شدن از حسابی هستید که <ph name="SIGNOUT_MANAGED_DOMAIN" /> آن را مدیریت می‌کند، داده‌های Chrome شما از این دستگاه حذف خواهد شد. داده‌هایتان در حساب Google شما باقی می‌ماند.</translation>
 <translation id="3148434565183091099">‏برای اینکه نشانک‌ها را در همه دستگاه‌هایتان دریافت کنید به سیستم Chrome وارد شوید.</translation>
 <translation id="3148688391461398285">‏تجربه بهتری از Chrome بر مبنای مکانتان کسب کنید.</translation>
 <translation id="3167189358072330585">‏حساب شما در Google Chrome کار نمی‌کند. لطفاً با سرپرست دامنه‌تان تماس بگیرید یا از یک حساب Google معمولی برای ثبت ورود استفاده کنید.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">‏برگه‌هایی که در دستگاه‌های دیگر در Chrome باز کرده‌اید، در اینجا نمایان می‌شوند.</translation>
 <translation id="6600954340915313787">‏کپی در Chrome</translation>
 <translation id="6648150602980899529">‏هم‌اکنون درحال ورود به سیستم با یک حساب مدیریت‌شده توسط <ph name="DOMAIN" /> و ارائه کنترل داده‌های Chrome خودتان به سرپرست این حساب هستید. داده‌هایتان به‌طور دائم به این حساب مرتبط می‌شوند. با خروج از Chrome، داده‌هایتان از این دستگاه حذف می‌شوند اما همچنان در حساب Google شما باقی می‌ماند.</translation>
+<translation id="6676840375528380067">‏داده‌های Chrome شما از این دستگاه پاک شود؟</translation>
 <translation id="690638524486313356">‏شرایط خدمات Google Chrome</translation>
 <translation id="7165736900384873061">‏استفاده از اسکنر QR در Google Chrome را شروع کنید</translation>
 <translation id="7172660552945675509">‏نکته: <ph name="BEGIN_LINK" />Chrome را به داکتان انتقال دهید<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
index d0ba20a..9f6e5ae3 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Naging mas mahusay na ang Chrome! Available na ang bagong bersyon.</translation>
 <translation id="257708665678654955">Gusto mo bang mag-alok ang Google Chrome na isalin ang mga <ph name="LANGUAGE_NAME" /> page mula sa site na ito sa susunod na pagkakataon?</translation>
 <translation id="2943166482989655199">Pahusayin ang Chrome at ang seguridad nito sa pamamagitan ng pagpapadala ng data ng system at paggamit sa Google</translation>
+<translation id="3030414234702425231">Dahil magsa-sign out ka sa account na pinapamahalaan ng <ph name="SIGNOUT_MANAGED_DOMAIN" />, made-delete ang iyong data sa Chrome sa device na ito. Mananatili ang data mo sa iyong Google Account.</translation>
 <translation id="3148434565183091099">Upang mailagay ang iyong mga bookmark sa lahat ng iyong device, mag-sign in sa Chrome.</translation>
 <translation id="3148688391461398285">Magkaroon ng mas mahusay na karanasan sa Chrome batay sa iyong lokasyon.</translation>
 <translation id="3167189358072330585">Hindi gumagana ang iyong account sa Google Chrome. Mangyaring makipag-ugnayan sa iyong administrator ng domain o gumamit ng regular na Google Account upang mag-sign in.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Dito lalabas ang mga nabuksan mong tab sa Chrome sa iba mo pang mga device.</translation>
 <translation id="6600954340915313787">Kinopya sa Chrome</translation>
 <translation id="6648150602980899529">Nagsa-sign in ka gamit ang isang account na pinamamahalaan ng <ph name="DOMAIN" /> at binibigyan mo ang administrator nito ng kontrol sa iyong data sa Chrome. Permanenteng mauugnay ang iyong data sa account na ito. Made-delete ang data mo sa device na ito kapag nag-sign out ka sa Chrome, ngunit mananatili itong nakaimbak sa iyong Google Account.</translation>
+<translation id="6676840375528380067">I-clear ang iyong data sa Chrome sa device na ito?</translation>
 <translation id="690638524486313356">Tuntunin ng Serbisyo ng Google Chrome</translation>
 <translation id="7165736900384873061">Simulan ang paggamit ng QR scanner ng Google Chrome</translation>
 <translation id="7172660552945675509">Tip: <ph name="BEGIN_LINK" />Ilipat ang Chrome sa iyong dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
index 10dde557..698b83e 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome હમણાં જ વધુ સારું થયું છે! એક નવું વર્ઝન ઉપલબ્ધ છે.</translation>
 <translation id="257708665678654955">શું તમે Google Chrome ને આ સાઇટથી આગલી વખતે <ph name="LANGUAGE_NAME" /> પેજને અનુવાદ કરવાની ઓફર કરવા માગો છો?</translation>
 <translation id="2943166482989655199">Googleને સિસ્ટમ તથા વપરાશ ડેટા મોકલીને Chrome અને તેની સુરક્ષા બહેતર બનાવો</translation>
+<translation id="3030414234702425231">કારણ કે તમે <ph name="SIGNOUT_MANAGED_DOMAIN" /> દ્વારા મેનેજ કરવામાં આવેલ એકાઉન્ટમાંથી સાઇન આઉટ કરી રહ્યાં છો, આ ડિવાઇસમાંથી તમારા Chrome ડેટા ડિલીટ થઈ જશે. તમારો ડેટા તમારા Google એકાઉન્ટમાં જળવાઈ રહેશે.</translation>
 <translation id="3148434565183091099">તમારા સમગ્ર ઉપકરણો પર તમારા બુકમાર્ક્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
 <translation id="3148688391461398285">તમારા સ્થાનના આધારે Chrome માં બહેતર અનુભવ મેળવો.</translation>
 <translation id="3167189358072330585">તમારું એકાઉન્ટ, Google Chrome પર કાર્ય કરતું નથી. કૃપા કરીને તમારા ડોમેન એડમિનનો સંપર્ક કરો અથવા સાઇન ઇન કરવા માટે નિયમિત Google એકાઉન્ટનો ઉપયોગ કરો.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">તમારા અન્ય ઉપકરણો પર તમે Chrome માં ખોલેલા ટૅબ્સ અહીં દેખાશે.</translation>
 <translation id="6600954340915313787">Chrome માં કોપી કરાયું</translation>
 <translation id="6648150602980899529">તમે <ph name="DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chrome ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromeમાંથી સાઇન આઉટ કરવાનું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation>
+<translation id="6676840375528380067">આ ડિવાઇસમાંથી તમારા Chrome ડેટાને સાફ કરીએ?</translation>
 <translation id="690638524486313356">Google Chrome સેવાની શરતો</translation>
 <translation id="7165736900384873061">Google Chrome QR સ્કૅનરને ઉપયોગમાં લેવાનું શરૂ કરો</translation>
 <translation id="7172660552945675509">ટિપ: <ph name="BEGIN_LINK" />Chrome ને તમારા ડૉક પર ખસેડો<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb
index c1402edf..cc4ac3f5 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome अब बेहतर हो गया है! एक नया वर्शन उपलब्ध है.</translation>
 <translation id="257708665678654955">क्या आप चाहते हैं कि Google Chrome अगली बार इस साइट के <ph name="LANGUAGE_NAME" /> पृष्ठों का अनुवाद करने का ऑफ़र दे?</translation>
 <translation id="2943166482989655199">Google को सिस्टम और इस्तेमाल का डेटा भेजकर Chrome और उसकी सुरक्षा को बेहतर बनाएं</translation>
+<translation id="3030414234702425231">चूंकि आप <ph name="SIGNOUT_MANAGED_DOMAIN" /> की ओर से प्रबंधित खाते से साइन आउट कर रहे हैं, इसलिए आपका Chrome डेटा इस डिवाइस से मिट जाएगा. आपका डेटा आपके Google खाते में बना रहेगा.</translation>
 <translation id="3148434565183091099">अपने सभी डिवाइस पर अपने बुकमार्क प्राप्‍त करने के लिए, Chrome में प्रवेश करें.</translation>
 <translation id="3148688391461398285">अपने स्थान के आधार पर Chrome में बेहतर अनुभव प्राप्त करें.</translation>
 <translation id="3167189358072330585">आपका खाता Google Chrome पर काम नहीं करता. कृपया साइन इन करने के लिए अपने डोमेन व्यवस्थापक से संपर्क करें या नियमित Google खाते का उपयोग करें.</translation>
@@ -42,6 +43,7 @@
 <translation id="6573431926118603307">आपके द्वारा अपने अन्य डिवाइस पर खोले गए टैब यहां दिखाई देंगे.</translation>
 <translation id="6600954340915313787">Chrome पर कॉपी किया गया</translation>
 <translation id="6648150602980899529">आप <ph name="DOMAIN" /> द्वारा प्रबंधित खाते में प्रवेश कर रहे हैं और उसके व्यवस्थापक को अपने Chrome डेटा पर नियंत्रण प्रदान कर रहे हैं. आपका डेटा इस खाते से स्थायी रूप से संबद्ध हो जाएगा. Chrome से प्रस्थान करने से आपका डेटा इस डिवाइस से हट जाएगा, लेकिन वह आपके Google खाते में संग्रहित रहेगा.</translation>
+<translation id="6676840375528380067">इस डिवाइस से अपना Chrome डेटा हटाएं?</translation>
 <translation id="690638524486313356">Google Chrome सेवा की शर्तें</translation>
 <translation id="7165736900384873061">Google Chrome QR स्कैनर उपयोग शुरू करें</translation>
 <translation id="7172660552945675509">टिप्स: <ph name="BEGIN_LINK" />Chrome को अपने डॉक में ले जाएं<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb
index 98dd74ad..b29796b 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome jadi semakin baik! Versi baru telah tersedia.</translation>
 <translation id="257708665678654955">Ingin Google Chrome menawarkan untuk menerjemahkan halaman berbahasa <ph name="LANGUAGE_NAME" /> dari situs ini saat Anda mengunjunginya lagi?</translation>
 <translation id="2943166482989655199">Sempurnakan Chrome dan keamanannya dengan mengirimkan data penggunaan dan sistem ke Google</translation>
+<translation id="3030414234702425231">Karena Anda logout dari akun yang dikelola oleh <ph name="SIGNOUT_MANAGED_DOMAIN" />, data Chrome Anda akan dihapus dari perangkat ini. Data Anda akan tetap tersedia di Akun Google Anda.</translation>
 <translation id="3148434565183091099">Untuk mendapatkan bookmark di semua perangkat Anda, masuk ke Chrome.</translation>
 <translation id="3148688391461398285">Dapatkan pengalaman yang lebih baik di Chrome berdasarkan lokasi Anda.</translation>
 <translation id="3167189358072330585">Akun Anda tidak berfungsi di Google Chrome. Harap hubungi administrator domain atau gunakan Akun Google biasa untuk masuk.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Tab yang telah dibuka di Chrome pada perangkat lainnya akan muncul di sini.</translation>
 <translation id="6600954340915313787">Disalin ke Chrome</translation>
 <translation id="6648150602980899529">Anda masuk dengan akun yang dikelola oleh <ph name="DOMAIN" /> dan memberikan kontrol kepada administrator atas data Chrome Anda. Data Anda akan terikat dengan akun ini secara permanen. Dengan keluar dari Chrome, Anda akan menghapus data dari perangkat ini, namun data akan tetap tersimpan di Akun Google.</translation>
+<translation id="6676840375528380067">Hapus data Chrome Anda dari perangkat ini?</translation>
 <translation id="690638524486313356">Persyaratan Layanan Google Chrome</translation>
 <translation id="7165736900384873061">Mulai menggunakan pemindai QR Google Chrome</translation>
 <translation id="7172660552945675509">Kiat: <ph name="BEGIN_LINK" />Pindahkan Chrome ke dok<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
index bb8a6e3..04385c1 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome のアップデートが見つかりました。新しいバージョンが利用可能です。</translation>
 <translation id="257708665678654955">次回から Google Chrome でこのサイトの <ph name="LANGUAGE_NAME" /> ページの翻訳を表示しますか?</translation>
 <translation id="2943166482989655199">システムと使用状況に関するデータが Google に送信され、Chrome とそのセキュリティの向上に役立てられます</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> で管理されているアカウントからログアウトするにあたり、Chrome データはこの端末から削除されます(ただし Google アカウントには残ります)。</translation>
 <translation id="3148434565183091099">お使いのどの端末でも同じブックマークを使用するには、Chrome にログインします。</translation>
 <translation id="3148688391461398285">Chromeの機能がユーザーの所在地に応じて便利に変化します。</translation>
 <translation id="3167189358072330585">このアカウントは Google Chrome では使用できません。ドメイン管理者に問い合わせるか、通常の Google アカウントでログインしてください。</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">他の端末の Chrome で開いているタブがここに表示されます。</translation>
 <translation id="6600954340915313787">Chrome にコピー済み</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> で管理されているアカウントでログインし、管理者に Chrome データの管理を委託します。今後 Chrome データはこのアカウントに関連付けられます。Chrome からログアウトすると、データはこのデバイスから削除されますが、Google アカウントで保持されます。</translation>
+<translation id="6676840375528380067">Chrome データをこの端末から削除しますか?</translation>
 <translation id="690638524486313356">Google Chrome 利用規約</translation>
 <translation id="7165736900384873061">Google Chrome の QR スキャナの使用を開始する</translation>
 <translation id="7172660552945675509">ヒント: <ph name="BEGIN_LINK" />Chrome を Dock に移動<ph name="END_LINK" />するとアクセスしやすくなります</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb
index 04d53dd..0dd0f90d 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome ಈಗ ತಾನೇ ಉತ್ತಮಗೊಂಡಿದೆ! ಹೊಸ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆ.</translation>
 <translation id="257708665678654955">ಮುಂದಿನ ಬಾರಿ ಈ ಸೈಟ್‌ನಿಂದ <ph name="LANGUAGE_NAME" /> ಪುಟಗಳನ್ನು ಅನುವಾದಿಸಲು Google Chrome ಗೆ ಅವಕಾಶ ಕಲ್ಪಿಸಲು ನೀವು ಬಯಸುವಿರಾ?</translation>
 <translation id="2943166482989655199">Google ಗೆ ಸಿಸ್ಟಮ್ ಮತ್ತು ಬಳಕೆಯ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ Chrome ಮತ್ತು ಅದರ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಿ</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲ್ಪಡುವ ಖಾತೆಯಿಂದ ನೀವು ಸೈನ್ ಔಟ್ ಮಾಡುತ್ತಿರುವ ಕಾರಣ, ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾ ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿಯೇ ಇರುತ್ತದೆ.</translation>
 <translation id="3148434565183091099">ನಿಮ್ಮ ಎಲ್ಲ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="3148688391461398285">ನಿಮ್ಮ ಸ್ಥಾನವನ್ನು ಆಧರಿಸಿ Chrome ನಲ್ಲಿ ಉತ್ತಮ ಅನುಭವವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.</translation>
 <translation id="3167189358072330585">ನಿಮ್ಮ ಖಾತೆಯು Google Chrome ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಡೊಮೇನ್ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ ಅಥವಾ ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಯಮಿತ Google ಖಾತೆಯನ್ನು ಬಳಸಿ.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಲ್ಲಿನ Chrome ನಲ್ಲಿ ನೀವು ತೆರೆದಿರುವಂತಹ ಟ್ಯಾಬ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation>
 <translation id="6600954340915313787">Chrome ಗೆ ನಕಲಿಸಲಾಗಿದೆ</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> ನಿರ್ವಹಿಸಿದ ಖಾತೆಯ ಮೂಲಕ ನೀವು ಸೈನ್‍‍ ಇನ್ ಮಾಡುತ್ತಿರುವಿರಿ ಮತ್ತು ಅದರ ನಿರ್ವಾಹಕ ನಿಯಂತ್ರಣವನ್ನು ನಿಮ್ಮ Chrome ಡೇಟಾದ ಮೂಲಕ ನೀಡುತ್ತಿರುವಿರಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಈ ಖಾತೆಯೊಂದಿಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ. Chrome ನಿಂದ ಸೈನ್ ಔಟ್ ಮಾಡುವುದರಿಂದ ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ, ಆದರೆ ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿ  ಉಳಿದಿರುತ್ತದೆ.</translation>
+<translation id="6676840375528380067">ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?</translation>
 <translation id="690638524486313356">Google Chrome ಸೇವಾ ನಿಯಮಗಳು</translation>
 <translation id="7165736900384873061">Google Chrome QR ಸ್ಕ್ಯಾನರ್ ಬಳಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="7172660552945675509">ಸುಳಿವು: <ph name="BEGIN_LINK" />Chrome ಅನ್ನು ನಿಮ್ಮ ಡಾಕ್‌ಗೆ ಸರಿಸಿ<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb
index 366a758..296f8ab 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">한층 개선된 Chrome의 최신 버전이 출시되었습니다.</translation>
 <translation id="257708665678654955">다음에 Chrome에서 이 사이트의 <ph name="LANGUAGE_NAME" /> 페이지를 번역하시겠습니까?</translation>
 <translation id="2943166482989655199">시스템 정보와 사용 데이터를 Google에 전송하여 Chrome 및 보안을 개선합니다.</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" />에서 관리하는 계정에서 로그아웃하면 Chrome 데이터가 기기에서 삭제됩니다. Google 계정에 저장된 데이터는 그대로 유지됩니다.</translation>
 <translation id="3148434565183091099">어느 기기에서나 내 북마크를 사용하려면 Chrome에 로그인하세요.</translation>
 <translation id="3148688391461398285">위치 정보를 기반으로 Chrome에서 더 나은 환경을 이용할 수 있습니다.</translation>
 <translation id="3167189358072330585">계정이 Chrome에서 작동하지 않습니다. 도메인 관리자에게 문의하거나 일반 Google 계정으로 로그인하세요.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">다른 기기의 Chrome에서 연 탭이 여기에 표시됩니다.</translation>
 <translation id="6600954340915313787">Chrome에 복사됨</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" />에서 관리하는 계정으로 로그인합니다. 계정 관리자가 내 Chrome 데이터를 관리하게 되며 데이터는 이 계정에 영구적으로 연결됩니다. Chrome에서 로그아웃하면 데이터가 기기에서 삭제되지만 Google 계정에는 그대로 유지됩니다.</translation>
+<translation id="6676840375528380067">기기에서 Chrome 데이터를 삭제하시겠습니까?</translation>
 <translation id="690638524486313356">Chrome 서비스 약관</translation>
 <translation id="7165736900384873061">Chrome QR 스캐너 사용 시작</translation>
 <translation id="7172660552945675509">도움말: <ph name="BEGIN_LINK" />Chrome을 내 Dock에 추가하세요.<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb
index 90723b1..d8b2f84c 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome ഒന്നുകൂടി മികച്ചതായി! ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്.</translation>
 <translation id="257708665678654955">അടുത്ത തവണ ഈ സൈറ്റിൽ നിന്ന് <ph name="LANGUAGE_NAME" /> പേജുകൾ വിവർത്തനം ചെയ്യാൻ Google Chrome ഓഫർ ചെയ്യുന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടോ?</translation>
 <translation id="2943166482989655199">സിസ്‌റ്റം, ഉപയോഗം എന്നിവയുടെ ഡാറ്റ Google-ന് അയച്ച് Chrome-ഉം അതിന്റെ സുരക്ഷയും മെച്ചപ്പെടുത്തുക</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> മാനേജ് ചെയ്യുന്ന ഒരു അക്കൗണ്ടിൽ നിന്നും നിങ്ങള്‍ സൈൻ ഔട്ട് ചെയ്യുന്നത് കാരണം, ഈ ഉപകരണത്തില്‍ നിന്ന് Chrome ഡാറ്റ ഇല്ലാതാക്കപ്പെടും. നിങ്ങളുടെ ഡാറ്റ തുടര്‍ന്നും Google അക്കൗണ്ടില്‍ ഉണ്ടായിരിക്കും.</translation>
 <translation id="3148434565183091099">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകൾ ലഭിക്കാൻ, Chrome-ലേക്ക് സൈൻ ഇൻ ചെയ്യുക.</translation>
 <translation id="3148688391461398285">നിങ്ങളുടെ ലൊക്കേഷനെ അടിസ്ഥാനമാക്കി Chrome-ൽ മികച്ച അനുഭവം നേടുക.</translation>
 <translation id="3167189358072330585">നിങ്ങളുടെ അക്കൗണ്ട് Google Chrome-ല്‍ പ്രവര്‍ത്തിക്കുന്നില്ല. നിങ്ങളുടെ ഡൊമെയ്ന്‍ അഡ്‌മിനിസ്‌ട്രേറ്ററുമായി ബന്ധപ്പെടുക അല്ലെങ്കില്‍ സൈൻ ഇൻ ചെയ്യുന്നതിന് പതിവ് Google അക്കൗണ്ട് ഉപയോഗിക്കുക.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിലെ Chrome-ൽ തുറന്ന ടാബുകൾ ഇവിടെ ദൃശ്യമാകും.</translation>
 <translation id="6600954340915313787">Chrome-ലേക്ക് പ്കർത്തി</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> മാനേജുചെയ്യുന്ന ഒരു അക്കൗണ്ട് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുകയും ഇതിന്റെ അഡ്‌മിനിസ്‌ട്രേറ്റർക്ക് നിങ്ങളുടെ Chrome വിവരങ്ങളിന്മേൽ നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു. വിവരങ്ങളെ ഈ അക്കൗണ്ടുമായി ശാശ്വതമായി ബന്ധിപ്പിക്കും. Chrome-ൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യുന്നത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ വിവരങ്ങളെ ഇല്ലാതാക്കുമെങ്കിലും, Google അക്കൗണ്ടിൽ തുടർന്നും അവ സൂക്ഷിക്കുന്നതാണ്.</translation>
+<translation id="6676840375528380067">ഉപകരണത്തില്‍ നിന്ന് Chrome ഡാറ്റ മായ്ക്കണോ?</translation>
 <translation id="690638524486313356">Google Chrome സേവന നിബന്ധനകൾ</translation>
 <translation id="7165736900384873061">Google Chrome QR സ്‌കാനർ ഉപയോഗിക്കാൻ തുടങ്ങൂ</translation>
 <translation id="7172660552945675509">നുറുങ്ങ്: <ph name="BEGIN_LINK" />Chrome-നെ നിങ്ങളുടെ ഡോക്കിലേക്ക് നീക്കുക<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
index ced0aaf..d54959b0 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome आता आणखी सर्वोत्तम झाले आहे! नवीन आवृत्ती उपलब्ध आहे.</translation>
 <translation id="257708665678654955">पुढील वेळी Google Chrome ने या साइटवरील <ph name="LANGUAGE_NAME" /> पृष्ठांचे भाषांतर करण्याची ऑफर द्यावी असे तुम्ही इच्छिता?</translation>
 <translation id="2943166482989655199">Google ला सिस्टम आणि वापर डेटा पाठवून Chrome आणि त्याच्या सुरक्षिततेत सुधारणा करा</translation>
+<translation id="3030414234702425231">तुम्ही <ph name="SIGNOUT_MANAGED_DOMAIN" /> द्वारे व्यवस्थापित केलेल्या खात्यातून साइन आउट केले आहे, तुमचा Chrom डेटा या डिव्हाइसवरून हटवला जाईल. तुमचा डेटा तुमच्या Google खाते मध्ये असेल</translation>
 <translation id="3148434565183091099">आपल्या सर्व डिव्हाइसेसवर तुमचे बुकमार्क प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
 <translation id="3148688391461398285">आपल्या स्थानाच्या आधारावर Chrome मध्ये उत्कृष्ट अनुभव मिळवा.</translation>
 <translation id="3167189358072330585">तुमचे खाते Google Chrome वर कार्य करीत नाही. कृपया आपल्या डोमेन प्रशासकाशी संपर्क साधा किंवा साइन इन करण्यासाठी एक नियमित Google खाते वापरा.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">आपल्या अन्य डिव्हाइसेसवर तुम्ही Chrome मध्ये उघडलेले टॅब येथे दिसतील.</translation>
 <translation id="6600954340915313787">Chrome वर कॉपी केले</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> द्वारे व्यवस्थापित केलेल्या खात्यासह तुम्ही साइन इन करीत आहात आणि त्याच्या प्रशासकास आपल्या Chrome डेटाचे नियंत्रण देत आहात. तुमचा डेटा कायमचा या खात्यामध्ये असेल. Chrome मधून साइन आउट केल्याने तुमचा डेटा या डिव्हाइस वरून हटवला जाईल परंतु तो आपल्या Google खात्यामध्ये संचयित केलेला असेल.</translation>
+<translation id="6676840375528380067">या डिव्हाइसवरून तुमचा Chrom डेटा साफ करायचा?</translation>
 <translation id="690638524486313356">Google Chrome सेवा अटी</translation>
 <translation id="7165736900384873061">Google Chrome QR स्कॅनर वापरणे आरंभ करा</translation>
 <translation id="7172660552945675509">टीप: <ph name="BEGIN_LINK" />Chrome आपल्या डॉकमध्ये हलवा<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb
index bc8bbd7..1a4e22d2 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome telah dipertingkatkan! Versi baharu kini boleh didapati.</translation>
 <translation id="257708665678654955">Adakah anda ingin Google Chrome menawarkan halaman <ph name="LANGUAGE_NAME" /> dari tapak ini diterjemahkan pada masa akan datang?</translation>
 <translation id="2943166482989655199">Tingkatkan Chrome dan keselamatannya dengan menghantar data sistem dan penggunaan kepada Google</translation>
+<translation id="3030414234702425231">Oleh sebab anda log keluar daripada akaun yang diurus oleh <ph name="SIGNOUT_MANAGED_DOMAIN" />, data Chrome anda akan dipadamkan daripada peranti ini. Data anda akan kekal dalam Akaun Google anda.</translation>
 <translation id="3148434565183091099">Log masuk ke Chrome untuk mendapatkan penanda halaman pada semua peranti anda.</translation>
 <translation id="3148688391461398285">Dapatkan pengalaman yang lebih baik di Chrome berdasarkan lokasi anda.</translation>
 <translation id="3167189358072330585">Akaun anda tidak berfungsi pada Google Chrome. Sila hubungi pentadbir domain anda atau gunakan Akaun Google biasa untuk log masuk.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Tab yang telah anda buka dalam Chrome pada peranti anda yang lain akan dipaparkan di sini.</translation>
 <translation id="6600954340915313787">Disalin ke Chrome</translation>
 <translation id="6648150602980899529">Anda log masuk dengan akaun yang diurus oleh <ph name="DOMAIN" /> dan memberi kawalan terhadap data Chrome anda kepada  pentadbirnya. Data anda akan terikat secara kekal kepada akaun ini. Tindakan log keluar daripada Chrome akan memadamkan data anda daripada peranti ini, tetapi data itu akan kekal disimpan dalam Akaun Google anda.</translation>
+<translation id="6676840375528380067">Kosongkan data Chrome anda daripada peranti ini?</translation>
 <translation id="690638524486313356">Syarat Perkhidmatan Google Chrome</translation>
 <translation id="7165736900384873061">Mula menggunakan pengimbas QR Google Chrome</translation>
 <translation id="7172660552945675509">Petua: <ph name="BEGIN_LINK" />Alihkan Chrome ke dok anda<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
index 4aaed57..b83ec78 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome har blitt enda bedre. En ny versjon er nå tilgjengelig.</translation>
 <translation id="257708665678654955">Vil du at Google Chrome skal tilby å oversette sider på <ph name="LANGUAGE_NAME" /> på dette nettstedet neste gang?</translation>
 <translation id="2943166482989655199">Gjør Chrome bedre og sikrere ved å sende systemdata og bruksdata til Google</translation>
+<translation id="3030414234702425231">Fordi du logger av en konto som er administrert av <ph name="SIGNOUT_MANAGED_DOMAIN" />, blir Chrome-dataene dine slettet fra denne enheten, men de blir værende i Google-kontoen din.</translation>
 <translation id="3148434565183091099">Logg på Chrome for å få bokmerkene dine på alle enhetene du bruker.</translation>
 <translation id="3148688391461398285">Optimaliser Chrome-opplevelsen i henhold til hvor du befinner deg.</translation>
 <translation id="3167189358072330585">Kontoen din fungerer ikke i Google Chrome. Kontakt domeneadministratoren din, eller logg på med en vanlig Google-konto.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Faner du har åpnet i Chrome på de andre enhetene dine, vises her.</translation>
 <translation id="6600954340915313787">Kopiert til Chrome</translation>
 <translation id="6648150602980899529">Du logger på med en konto som administreres av <ph name="DOMAIN" />, og du gir administratoren for dette domenet kontroll over Chrome-dataene dine. Dataene dine blir permanent knyttet til denne kontoen. Når du logger av Chrome, slettes dataene dine fra denne enheten, men de lagres fortsatt i Google-kontoen din.</translation>
+<translation id="6676840375528380067">Vil du fjerne Chrome-dataene dine fra denne enheten?</translation>
 <translation id="690638524486313356">Vilkår for Google Chrome</translation>
 <translation id="7165736900384873061">Begynn å bruke Google Chrome QR-skanneren</translation>
 <translation id="7172660552945675509">Tips: <ph name="BEGIN_LINK" />Flytt Chrome til dokken<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb
index a9d46c29..f99c0f17 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome jest teraz jeszcze lepszy! Dostępna jest nowa wersja.</translation>
 <translation id="257708665678654955">Czy następnym razem Google Chrome ma zaproponować Ci tłumaczenie stron tej witryny, których język to <ph name="LANGUAGE_NAME" />?</translation>
 <translation id="2943166482989655199">Pomóż nam ulepszyć działanie i zwiększyć bezpieczeństwo Chrome, wysyłając informacje o systemie i użytkowaniu do Google</translation>
+<translation id="3030414234702425231">Wylogowujesz się z konta, którym zarządza <ph name="SIGNOUT_MANAGED_DOMAIN" />. Spowoduje to usunięcie danych Chrome z tego urządzenia, ale pozostaną one na koncie Google.</translation>
 <translation id="3148434565183091099">Aby korzystać ze swoich zakładek na wszystkich urządzeniach, zaloguj się w Chrome.</translation>
 <translation id="3148688391461398285">Dzięki dostępowi do Twojej lokalizacji Chrome będzie działać lepiej.</translation>
 <translation id="3167189358072330585">Twoje konto nie działa w Google Chrome. Skontaktuj się z administratorem domeny lub zaloguj się przy użyciu zwykłego konta Google.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Tutaj wyświetlą się karty otwarte w Chrome na innych urządzeniach.</translation>
 <translation id="6600954340915313787">Skopiowana do Chrome</translation>
 <translation id="6648150602980899529">Logujesz się na konto, którym zarządza <ph name="DOMAIN" />, i przekazujesz jego administratorowi kontrolę nad Twoimi danymi Chrome. Zostaną one trwale przypisane do tego konta. Gdy się wylogujesz, znikną one z tego urządzenia, ale pozostaną zapisane na Twoim koncie Google.</translation>
+<translation id="6676840375528380067">Usunąć dane Chrome z tego urządzenia?</translation>
 <translation id="690638524486313356">Warunki korzystania z Google Chrome</translation>
 <translation id="7165736900384873061">Skaner QR w Google Chrome</translation>
 <translation id="7172660552945675509">Wskazówka: <ph name="BEGIN_LINK" />przenieś Chrome do Docka<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb
index 96b725e9..dabdabe 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome a devenit și mai bun! Este disponibilă o nouă versiune.</translation>
 <translation id="257708665678654955">Dorești ca data viitoare Google Chrome să propună traducerea paginilor în limba <ph name="LANGUAGE_NAME" /> de pe acest site?</translation>
 <translation id="2943166482989655199">Poți îmbunătăți browserul Chrome și securitatea acestuia dacă trimiți la Google date despre sistem și utilizare</translation>
+<translation id="3030414234702425231">Deoarece te deconectezi de la un cont gestionat de <ph name="SIGNOUT_MANAGED_DOMAIN" />, datele tale Chrome de pe acest dispozitiv vor fi șterse. Datele tale vor rămâne în Contul Google.</translation>
 <translation id="3148434565183091099">Pentru a accesa marcajele pe toate dispozitivele, conectează-te la Chrome.</translation>
 <translation id="3148688391461398285">Beneficiați de o experiență mai bună în Chrome pe baza locației dvs.</translation>
 <translation id="3167189358072330585">Contul nu funcționează pe Google Chrome. Contactează administratorul domeniului sau folosește un Cont Google obișnuit pentru a te conecta.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Filele deschise în Chrome pe alte dispozitive vor apărea aici.</translation>
 <translation id="6600954340915313787">Copiat în Chrome</translation>
 <translation id="6648150602980899529">Te conectezi cu un cont gestionat de <ph name="DOMAIN" /> și acorzi administratorului acestuia controlul asupra datelor Chrome. Datele vor fi asociate definitiv acestui cont. Dacă te deconectezi de la Chrome, datele vor fi șterse de pe acest dispozitiv, dar vor rămâne stocate în Contul Google.</translation>
+<translation id="6676840375528380067">Ștergi datele tale Chrome de pe acest dispozitiv?</translation>
 <translation id="690638524486313356">Termenii și condițiile Google Chrome</translation>
 <translation id="7165736900384873061">Începe să folosești scanerul QR din Google Chrome</translation>
 <translation id="7172660552945675509">Sfat: <ph name="BEGIN_LINK" />mută Chrome în bara de andocare<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
index 44502002..04b1fa8 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Prehliadač Chrome bol práve vylepšený. K dispozícii je nová verzia.</translation>
 <translation id="257708665678654955">Chcete, aby prehliadač Google Chrome nabudúce ponúkol možnosť prekladu stránok tohto webu v jazyku <ph name="LANGUAGE_NAME" />?</translation>
 <translation id="2943166482989655199">Zlepšite Chrome a jeho zabezpečenie odosielaním systémových dát a údajov o využívaní do Googlu</translation>
+<translation id="3030414234702425231">Odhlasujete sa z účtu spravovaného doménou <ph name="SIGNOUT_MANAGED_DOMAIN" />, takže údaje Chromu budú z tohto zariadenia odstránené. Vaše údaje zostanú vo vašom účte Google.</translation>
 <translation id="3148434565183091099">Ak chcete mať záložky na všetkých zariadeniach, prihláste sa do Chromu.</translation>
 <translation id="3148688391461398285">Získajte lepšie prostredie v prehliadači Chrome na základe svojej polohy.</translation>
 <translation id="3167189358072330585">Váš účet nefunguje v prehliadači Google Chrome. Kontaktujte správcu domény alebo sa prihláste pomocou bežného účtu Google.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Tu sa zobrazia karty, ktoré ste otvorili v Chrome na iných zariadeniach.</translation>
 <translation id="6600954340915313787">Skopírovaná do prehliadača Chrome</translation>
 <translation id="6648150602980899529">Prihlasujete sa pomocou účtu spravovaného doménou <ph name="DOMAIN" /> a jej správcovi tým dávate kontrolu nad vašimi údajmi prehliadača Chrome. Vaše údaje budú natrvalo prepojené s týmto účtom. Odhlásením z Chromu odstránite údaje z príslušného zariadenia, avšak naďalej zostanú uložené vo vašom účte Google.</translation>
+<translation id="6676840375528380067">Chcete vymazať údaje Chromu z tohto zariadenia?</translation>
 <translation id="690638524486313356">Zmluvné podmienky prehliadača Google Chrome</translation>
 <translation id="7165736900384873061">Začnite používať čítačku QR prehliadača Google Chrome</translation>
 <translation id="7172660552945675509">Tip: <ph name="BEGIN_LINK" />Presuňte Chrome do doku<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
index ed3fd5f..35d669c5 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome தற்போதுதான் சிறப்பைப் பெற்றது! புதிய பதிப்பு உள்ளது.</translation>
 <translation id="257708665678654955">அடுத்த முறை இந்தத் தளத்தின் <ph name="LANGUAGE_NAME" /> பக்கங்களை மொழிபெயர்க்கவா என்று Google Chrome  கேட்க வேண்டுமென விரும்புகிறீர்களா?</translation>
 <translation id="2943166482989655199">சாதனம் மற்றும் உபயோகத் தரவை Googleளுக்கு அனுப்புவதன் மூலம், Chromeமையும் அதன் பாதுகாப்பையும் மேம்படுத்தும்</translation>
+<translation id="3030414234702425231">நீங்கள் <ph name="SIGNOUT_MANAGED_DOMAIN" /> நிர்வகிக்கும் கணக்கிலிருந்து வெளியேறுவதால், இந்தச் சாதனத்திலிருந்து உங்கள் Chrome தரவு நீக்கப்படும். ஆனால் உங்கள் Google கணக்கிலிருந்து உங்கள் தரவு நீக்கப்படாது.</translation>
 <translation id="3148434565183091099">உங்கள் எல்லா சாதனங்களிலும் புத்தகக்குறிகளைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
 <translation id="3148688391461398285">உங்கள் இருப்பிடத்தின் அடிப்படையில் Chrome இல் சிறந்த அனுபவத்தைப் பெறவும்.</translation>
 <translation id="3167189358072330585">Google Chrome இல் உங்கள் கணக்கு செயல்படாது. உங்கள் டொமைன் நிர்வாகியைத் தொடர்பு கொள்ளவும் அல்லது உள்நுழைவதற்கு வழக்கமான Google கணக்கைப் பயன்படுத்தவும்.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">உங்கள் பிற சாதனங்களில் பயன்படுத்திய Chrome இல் திறந்த தாவல்கள் இங்கே தோன்றும்.</translation>
 <translation id="6600954340915313787">Chromeக்கு நகலெடுக்கப்பட்டது</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> நிர்வகிக்கும் கணக்கில் உள்நுழைந்து, உங்கள் Chrome தரவு மீதான கட்டுப்பாட்டை அதன் நிர்வாகிக்கு வழங்குகிறீர்கள். இந்தக் கணக்குடன் தரவு நிரந்தரமாக இணைக்கப்படும். Chrome இலிருந்து வெளியேறுவதால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் உங்கள் Google கணக்கில் தரவு தொடர்ந்து இருக்கும்.</translation>
+<translation id="6676840375528380067">இந்தச் சாதனத்திலிருந்து உங்கள் Chrome தரவை அழிக்கவா?</translation>
 <translation id="690638524486313356">Google Chrome இன் சேவை விதிமுறைகள்</translation>
 <translation id="7165736900384873061">Google Chrome QR ஸ்கேனரைப் பயன்படுத்தத் தொடங்கவும்</translation>
 <translation id="7172660552945675509">உதவிக் குறிப்பு: <ph name="BEGIN_LINK" />Chromeஐ உங்கள் டாக்கிற்கு நகர்த்துங்கள்<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
index 3156212b..bbc1297 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome ఇప్పుడే మెరుగుపరచబడింది! క్రొత్త సంస్కరణ అందుబాటులో ఉంది.</translation>
 <translation id="257708665678654955">మీరు తదుపరి సారి సందర్శించినప్పుడు Google Chrome ఈ సైట్‌లోని <ph name="LANGUAGE_NAME" /> పేజీలను అనువదించే సదుపాయాన్ని అందించాలని కోరుకుంటున్నారా?</translation>
 <translation id="2943166482989655199">సిస్టమ్ సమాచారం మరియు వినియోగ వివరాలను Googleకి పంపడం ద్వారా Chromeని మరియు దాని భద్రతను మెరుగుపరచండి</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> నిర్వహిస్తున్న ఖాతా నుండి మీరు సైన్ అవుట్ చేస్తున్నారు కనుక మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది. మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
 <translation id="3148434565183091099">మీ అన్ని పరికరాల్లో మీ బుక్‌మార్క్‌లను పొందడానికి, Chromeకి సైన్ ఇన్ చేయండి.</translation>
 <translation id="3148688391461398285">మీ స్థానం ఆధారంగా Chromeలో మెరుగైన అనుభవాన్ని పొందండి.</translation>
 <translation id="3167189358072330585">మీ ఖాతా Google Chromeలో పని చేయదు. దయచేసి మీ డొమైన్ నిర్వాహకుడిని సంప్రదించండి లేదా సైన్ ఇన్ చేయడానికి సాధారణ Google ఖాతాని ఉపయోగించండి.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">మీరు మీ ఇతర పరికరాల్లోని Chromeలో తెరిచిన ట్యాబ్‌లు ఇక్కడ చూపబడతాయి.</translation>
 <translation id="6600954340915313787">Chromeకి కాపీ చేయబడింది</translation>
 <translation id="6648150602980899529">మీరు <ph name="DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకుడికి మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వలన ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది, కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
+<translation id="6676840375528380067">ఈ పరికరం నుండి మీ Chrome డేటాని తీసివేయాలా?</translation>
 <translation id="690638524486313356">Google Chrome సేవా నిబంధనలు</translation>
 <translation id="7165736900384873061">Google Chrome QR స్కానర్‌ని వినియోగించండి</translation>
 <translation id="7172660552945675509">చిట్కా: <ph name="BEGIN_LINK" />Chromeని మీ డాక్‌కి తరలించండి<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb
index 291bc80..250d4b6 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome พัฒนาใหม่! มีรุ่นใหม่ให้ใช้งานแล้ว</translation>
 <translation id="257708665678654955">คุณต้องการให้ Google Chrome เสนอการแปลหน้าภาษา<ph name="LANGUAGE_NAME" />จากเว็บไซต์นี้ในครั้งถัดไปไหม</translation>
 <translation id="2943166482989655199">ปรับปรุง Chrome และความปลอดภัยด้วยการส่งข้อมูลระบบและการใช้งานไปยัง Google</translation>
+<translation id="3030414234702425231">เนื่องจากคุณกำลังออกจากระบบบัญชีที่จัดการโดย <ph name="SIGNOUT_MANAGED_DOMAIN" /> ข้อมูล Chrome ของคุณจะถูกลบออกจากอุปกรณ์นี้ แต่ข้อมูลจะยังคงอยู่ในบัญชี Google</translation>
 <translation id="3148434565183091099">ลงชื่อเข้าใช้ Chrome เพื่อรับบุ๊กมาร์กในอุปกรณ์ทุกเครื่องของคุณ</translation>
 <translation id="3148688391461398285">รับประสบการณ์ที่ดีขึ้นใน Chrome ตามสถานที่ที่คุณอยู่</translation>
 <translation id="3167189358072330585">บัญชีของคุณใช้งานไม่ได้บน Google Chrome โปรดติดต่อผู้ดูแลระบบโดเมนหรือใช้บัญชี Google ปกติเพื่อลงชื่อเข้าใช้</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">แท็บที่คุณเปิดไว้ใน Chrome ในอุปกรณ์เครื่องอื่นๆ จะปรากฏที่นี่</translation>
 <translation id="6600954340915313787">คัดลอกไปยัง Chrome แล้ว</translation>
 <translation id="6648150602980899529">คุณกำลังลงชื่อเข้าใช้ด้วยบัญชีที่จัดการโดย <ph name="DOMAIN" /> และทำให้ผู้ดูแลระบบของโดเมนควบคุมข้อมูล Chrome ของคุณได้ ข้อมูลของคุณจะโยงกับบัญชีนี้อย่างถาวร การออกจากระบบ Chrome จะลบข้อมูลของคุณจากอุปกรณ์เครื่องนี้ แต่ข้อมูลจะยังจัดเก็บอยู่ในบัญชี Google</translation>
+<translation id="6676840375528380067">ล้างข้อมูล Chrome ของคุณออกจากอุปกรณ์นี้ไหม</translation>
 <translation id="690638524486313356">ข้อกำหนดในการให้บริการ Google Chrome</translation>
 <translation id="7165736900384873061">เริ่มใช้โปรแกรมสแกนโค้ด QR ของ Google Chrome</translation>
 <translation id="7172660552945675509">เคล็ดลับ: <ph name="BEGIN_LINK" />ย้าย Chrome ไปไว้ที่ Dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
index ddeaf81..181f8bc 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome daha da iyi hale geldi! Yeni bir sürüm var.</translation>
 <translation id="257708665678654955">Google Chrome'un bir dahaki sefere bu siteden <ph name="LANGUAGE_NAME" /> dilindeki sayfaları çevirmeyi önermesini ister misiniz?</translation>
 <translation id="2943166482989655199">Google'a sistem ve kullanım verilerini göndererek Chrome ürününü ve güvenliğini iyileştirin</translation>
+<translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> tarafından yönetilen bir hesabın oturumunu kapattığınız için Chrome verileriniz bu cihazdan silinecek. Ancak verileriniz Google Hesabınızda kalmaya devam edecek.</translation>
 <translation id="3148434565183091099">Yer işaretlerinizi tüm cihazlarınızda almak için Chrome'da oturum açın.</translation>
 <translation id="3148688391461398285">Konumunuza dayalı olarak Chrome'da daha iyi deneyim elde edin.</translation>
 <translation id="3167189358072330585">Hesabınız Google Chrome'da kullanılamıyor. Lütfen alan adı yöneticinizle iletişim kurun veya oturum açmak için normal bir Google Hesabı kullanın.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Diğer cihazlarınızda Chrome ile açtığınız sekmeler burada görünür.</translation>
 <translation id="6600954340915313787">Chrome'a kopyalandı</translation>
 <translation id="6648150602980899529"><ph name="DOMAIN" /> tarafından yönetilen bir hesapla oturum açıyorsunuz ve yöneticiye tüm Chrome verileriniz üzerinde denetim olanağı veriyorsunuz. Verileriniz kalıcı olarak bu hesaba bağlanacaktır. Chrome'da oturumu kapattığınızda verileriniz bu cihazdan silinir ancak Google Hesabınızda kalmaya devam eder.</translation>
+<translation id="6676840375528380067">Chrome verileriniz bu cihazdan temizlensin mi?</translation>
 <translation id="690638524486313356">Google Chrome Hizmet Şartları</translation>
 <translation id="7165736900384873061">Google Chrome QR tarayıcısını kullanmaya başlayın</translation>
 <translation id="7172660552945675509">İpucu: <ph name="BEGIN_LINK" />Chrome'u yuva bölümüne taşıyın<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb
index 7ea52de8..474b7e6 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome được cải tiến hơn! Đã có phiên bản mới.</translation>
 <translation id="257708665678654955">Bạn có muốn Google Chrome đề xuất dịch các trang <ph name="LANGUAGE_NAME" /> của trang web này vào lần tiếp theo không?</translation>
 <translation id="2943166482989655199">Cải thiện Chrome và tăng cường bảo mật bằng cách gửi dữ liệu sử dụng và dữ liệu về hệ thống cho Google</translation>
+<translation id="3030414234702425231">Vì bạn đăng xuất khỏi tài khoản do <ph name="SIGNOUT_MANAGED_DOMAIN" /> quản lý, nên dữ liệu Chrome sẽ bị xóa khỏi thiết bị này. Dữ liệu đó sẽ vẫn còn trong Tài khoản Google của bạn.</translation>
 <translation id="3148434565183091099">Để nhận dấu trang trên tất cả các thiết bị của bạn, hãy đăng nhập vào Chrome.</translation>
 <translation id="3148688391461398285">Có được trải nghiệm tốt hơn trong Chrome dựa trên vị trí của bạn.</translation>
 <translation id="3167189358072330585">Tài khoản của bạn không hoạt động trên Google Chrome. Vui lòng liên hệ với quản trị viên miền của bạn hoặc sử dụng Tài khoản Google thông thường để đăng nhập.</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">Các tab bạn đã mở trong Chrome trên thiết bị khác sẽ xuất hiện tại đây.</translation>
 <translation id="6600954340915313787">Đã sao chép vào Chrome</translation>
 <translation id="6648150602980899529">Bạn đang đăng nhập bằng tài khoản do <ph name="DOMAIN" /> quản lý và cấp cho quản trị viên quyền kiểm soát dữ liệu Chrome của bạn. Dữ liệu của bạn sẽ được liên kết vĩnh viễn với tài khoản này. Việc đăng xuất khỏi Chrome sẽ xóa dữ liệu của bạn khỏi thiết bị này nhưng dữ liệu đó sẽ vẫn được lưu trữ trong Tài khoản Google.</translation>
+<translation id="6676840375528380067">Bạn muốn xóa dữ liệu Chrome khỏi thiết bị này?</translation>
 <translation id="690638524486313356">Ðiều khoản dịch vụ của Google Chrome</translation>
 <translation id="7165736900384873061">Bắt đầu dùng trình quét QR của Chrome</translation>
 <translation id="7172660552945675509">Mẹo: <ph name="BEGIN_LINK" />Di chuyển Chrome sang thanh dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb
index f9cf161d..d5873eee 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome 浏览器刚刚经过了改进!新版本已推出。</translation>
 <translation id="257708665678654955">下次访问这个网站时,您希望 Google Chrome 翻译其中的<ph name="LANGUAGE_NAME" />网页吗?</translation>
 <translation id="2943166482989655199">将系统信息和使用情况数据发送给 Google,帮助改进 Chrome 并提高其安全性</translation>
+<translation id="3030414234702425231">由于您正要退出的帐号是由 <ph name="SIGNOUT_MANAGED_DOMAIN" /> 管理,因此系统将会从这部设备中删除您的 Chrome 数据,但这些数据仍会保留在您的 Google 帐号中。</translation>
 <translation id="3148434565183091099">要将您的书签同步到您所有的设备上,请登录 Chrome。</translation>
 <translation id="3148688391461398285">要在Chrome中获得更好的使用体验,需要用到您的位置信息。</translation>
 <translation id="3167189358072330585">无法在 Google Chrome 上登录您的帐号。请与您的网域管理员联系,或使用普通的 Google 帐号登录。</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">您在其他设备上的 Chrome 中打开的标签页将列在此处。</translation>
 <translation id="6600954340915313787">已复制到 Chrome</translation>
 <translation id="6648150602980899529">您正要登录由 <ph name="DOMAIN" /> 管理的帐号,并要授权其管理员控制您的 Chrome 数据。您的数据将与此帐号永久关联。退出 Chrome 后,您的数据将从这台设备上删除,但仍会保留在您的 Google 帐号中。</translation>
+<translation id="6676840375528380067">从这部设备中清除您的 Chrome 数据?</translation>
 <translation id="690638524486313356">Google Chrome 服务条款</translation>
 <translation id="7165736900384873061">开始使用 Google Chrome QR 码扫描器</translation>
 <translation id="7172660552945675509">提示:<ph name="BEGIN_LINK" />将 Chrome 移到 Dock 中<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
index 72a38522..604160a 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
@@ -16,6 +16,7 @@
 <translation id="2576431527583832481">Chrome 現在變得更進步了!歡迎你升級使用新版本。</translation>
 <translation id="257708665678654955">下次造訪這個網站時,需要 Google Chrome 為您翻譯其中的<ph name="LANGUAGE_NAME" />網頁嗎?</translation>
 <translation id="2943166482989655199">傳送系統資訊和使用情形資料給 Google,協助改善 Chrome 及其安全性</translation>
+<translation id="3030414234702425231">由於你即將登出由 <ph name="SIGNOUT_MANAGED_DOMAIN" /> 所管理的帳戶,系統將刪除你在這個裝置上的 Chrome 資料,但這些資料仍會保留在你的 Google 帳戶中。</translation>
 <translation id="3148434565183091099">如要在所有裝置上使用您的書籤,請登入 Chrome。</translation>
 <translation id="3148688391461398285">讓應用程式根據您的位置資訊在 Chrome 中為您提供更優質的服務。</translation>
 <translation id="3167189358072330585">無法使用您的帳戶登入 Google Chrome,請洽詢您的網域管理員或使用一般 Google 帳戶登入。</translation>
@@ -43,6 +44,7 @@
 <translation id="6573431926118603307">您在其他裝置上透過 Chrome 開啟的分頁會顯示在這裡。</translation>
 <translation id="6600954340915313787">已複製到 Chrome</translation>
 <translation id="6648150602980899529">您即將使用由 <ph name="DOMAIN" /> 所管理的帳戶登入,並授權該網域的管理員控管您的 Chrome 資料。您的資料會與這個帳戶建立永久連結。登出 Chrome 後,系統會將您的資料從這個裝置上刪除,但繼續保留在您的 Google 帳戶中。</translation>
+<translation id="6676840375528380067">要清除這個裝置上的 Chrome 資料嗎?</translation>
 <translation id="690638524486313356">Google Chrome 服務條款</translation>
 <translation id="7165736900384873061">開始使用 Google Chrome QR 掃描器</translation>
 <translation id="7172660552945675509">提示:<ph name="BEGIN_LINK" />將 Chrome 移至 Dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index 14b9681..47f1a44 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -235,10 +235,12 @@
 ይህን ቅንብር ለመቀየር <ph name="BEGIN_LINK" />ስምረትን ዳግም ያስጀምሩ<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 ያልተነበበ የንባብ ዝርዝር ጽሑፍ።</translation>
 <translation id="481968316161811770">ኩኪዎች፣ የጣቢያ ውሂብ</translation>
+<translation id="4840495572919996524">የእርስዎ እልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ተጨማሪ ነገሮች ከእንግዲህ ከGoogle መለያዎ ጋር አይሰምሩም።</translation>
 <translation id="4854345657858711387">የይለፍ ኮድ ያዘጋጁ</translation>
 <translation id="4860895144060829044">ደውል</translation>
 <translation id="4881695831933465202">ክፈት</translation>
 <translation id="4882831918239250449">ፍለጋን፣ ማስታወቂያዎችን እና ተጨማሪ ነገሮችን ግላዊነት ለማላበስ የእርስዎ የአሰሳ ታሪክ እንዴት ጥቅም ላይ እንደሚውል ይቆጣጠሩ</translation>
+<translation id="4895709476292058519">መለያዎችን ለውጥ</translation>
 <translation id="4904877109095351937">እንደተነበበ ምልክት አድርግ</translation>
 <translation id="4930268273022498155">ነባሩን ውሂብ ይሰርዙ። ወደ <ph name="USER_EMAIL1" /> መልሰው በመቀየር ሰርስረው ሊያወጡት ይችላሉ።</translation>
 <translation id="4941089862236492464">ይቅርታ፣ ንጥልዎን ማጋራት ላይ ችግር ነበር።</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">ሁሉም እንዳልተነበቡ ምልክት አድርግባቸው</translation>
 <translation id="9081058212938299310">የ<ph name="USERNAME" /> ይለፍ ቃል ይዘመን?</translation>
 <translation id="9083392325882095631">1 ንጥል</translation>
+<translation id="9083838294503912307">በመላ መሣሪያዎች ላይ ለማስመር እና ግላዊነትን ለማላበስ ስምረትን ያብሩ።</translation>
 <translation id="9100610230175265781">የይለፍ ሐረግ ያስፈልጋል</translation>
 <translation id="9148126808321036104">እንደገና ይግቡ</translation>
 <translation id="9157836665414082580">መገናኛዎችን አፍን</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index 8b013da..c1ea261c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -235,10 +235,12 @@
 لتغيير هذا الإعداد، يُرجى <ph name="BEGIN_LINK" />إعادة ضبط المزامنة<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">مقالة "قائمة قراءة" واحدة غير مقروءة.</translation>
 <translation id="481968316161811770">ملفات تعريف الارتباط، وبيانات موقع الويب</translation>
+<translation id="4840495572919996524">‏لن تتم مزامنة الإشارات المرجعية والسجلّ وكلمات المرور وغيرها مع حسابك على Google بعد الآن.</translation>
 <translation id="4854345657858711387">تعيين رمز المرور</translation>
 <translation id="4860895144060829044">اتصال</translation>
 <translation id="4881695831933465202">فتح</translation>
 <translation id="4882831918239250449">التحكُّم في كيفية استخدامنا لسِجل التصفُّح الخاص بك لتخصيص البحث والإعلانات والمزيد</translation>
+<translation id="4895709476292058519">تغيير الحسابات</translation>
 <translation id="4904877109095351937">وضع علامة كمقروءة</translation>
 <translation id="4930268273022498155">يمكنك حذف البيانات الحالية. يمكنك استرداد هذه البيانات بالتبديل مرة أخرى إلى <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">عذرًا، حدثت مشكلة أثناء مشاركة العنصر.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">وضع علامة كغير مقروءة على الكل</translation>
 <translation id="9081058212938299310">هل تريد تحديث كلمة مرور <ph name="USERNAME" />؟</translation>
 <translation id="9083392325882095631">عنصر واحد</translation>
+<translation id="9083838294503912307">للمزامنة والتخصيص على جميع الأجهزة، يمكنك تفعيل المزامنة.</translation>
 <translation id="9100610230175265781">عبارة المرور مطلوبة</translation>
 <translation id="9148126808321036104">تسجيل الدخول مرة أخرى</translation>
 <translation id="9157836665414082580">إيقاف مربعات الحوار</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index 1801447..3539170 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -235,10 +235,12 @@
 За да промените тази настройка, <ph name="BEGIN_LINK" />нулирайте синхронизирането<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 непрочетена статия в списъка за четене.</translation>
 <translation id="481968316161811770">„Бисквитки“ и данни за сайтове</translation>
+<translation id="4840495572919996524">Вашите отметки, история, пароли и други неща повече няма да се синхронизират с профила ви в Google.</translation>
 <translation id="4854345657858711387">Задайте код за достъп</translation>
 <translation id="4860895144060829044">Обаждане</translation>
 <translation id="4881695831933465202">Отваряне</translation>
 <translation id="4882831918239250449">Контролирайте начина, по който историята ви на сърфиране се използва за персонализиране на търсенето, рекламите и др.</translation>
+<translation id="4895709476292058519">Промяна на профилите</translation>
 <translation id="4904877109095351937">Означаване като прочетено</translation>
 <translation id="4930268273022498155">Изтриване на съществуващите данни. Можете да ги извлечете, като превключите обратно към <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">При споделянето на елемента възникна проблем.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Означаване на всичко като непрочетено</translation>
 <translation id="9081058212938299310">Да се актуализира ли паролата за <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 елемент</translation>
+<translation id="9083838294503912307">Включете синхронизирането, за да се възползвате от синхронизиране и персонализиране на всички устройства.</translation>
 <translation id="9100610230175265781">Изисква се пропуск</translation>
 <translation id="9148126808321036104">Влезте отново</translation>
 <translation id="9157836665414082580">Диалогови прозорци: Блокиране</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index cc21a949..fbcbcd4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -235,10 +235,12 @@
 <ph name="BEGIN_LINK" />রিসেট সিঙ্ক<ph name="END_LINK" /> থেকে এই সেটিং পরিবর্তন করুন</translation>
 <translation id="4807020197310989387">পড়ার তালিকাতে ১টি না পড়া নিবন্ধ।</translation>
 <translation id="481968316161811770">কুকিজ, সাইট ডেটা</translation>
+<translation id="4840495572919996524">আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং আরও অনেক কিছু আপনার Google অ্যাকাউন্টের সাথে আর সিঙ্ক করা হবে না।</translation>
 <translation id="4854345657858711387">একটি পাসকোড সেট করুন</translation>
 <translation id="4860895144060829044">কল করুন</translation>
 <translation id="4881695831933465202">খুলুন</translation>
 <translation id="4882831918239250449">সার্চ, বিজ্ঞাপনসহ আরও অনেক কিছু ব্যক্তিগতকৃত করার জন্য আপনার ব্রাউজিং ইতিহাস কীভাবে ব্যবহার হবে তা নিয়ন্ত্রণ করুন</translation>
+<translation id="4895709476292058519">অ্যাকাউন্ট পরিবর্তন করুন</translation>
 <translation id="4904877109095351937">পঠিত হিসেবে চিহ্নিত করুন</translation>
 <translation id="4930268273022498155">বিদ্যমান ডেটা মুছুন। আপনি <ph name="USER_EMAIL1" /> এ ফিরে গিয়ে এটি পুনরুদ্ধার করতে পারেন।</translation>
 <translation id="4941089862236492464">দুঃখিত, আপনার জিনিস শেয়ার করার সময় একটা সমস্যা ছিল।</translation>
@@ -483,6 +485,7 @@
 <translation id="9079935439869366234">সমস্ত অপঠিত হিসেবে চিহ্নিত করুন</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" />-এর পাসওয়ার্ড আপডেট করবেন?</translation>
 <translation id="9083392325882095631">১টি আইটেম</translation>
+<translation id="9083838294503912307">সমগ্র ডিভাইস জুড়ে সিঙ্ক এবং ব্যক্তিগতকৃত করতে সিঙ্ক বিকল্প চালু করুন।</translation>
 <translation id="9100610230175265781">পাসফ্রেজের প্রয়োজন</translation>
 <translation id="9148126808321036104">আবার প্রবেশ করুন</translation>
 <translation id="9157836665414082580">ডায়ালগ রুদ্ধ করুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index 8e92587..65caf1d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -235,10 +235,12 @@
 Chcete-toto nastavení změnit, <ph name="BEGIN_LINK" />resetujte synchronizaci<ph name="END_LINK" />.</translation>
 <translation id="4807020197310989387">1 nepřečtený článek v seznamu četby.</translation>
 <translation id="481968316161811770">Soubory cookie a data webů</translation>
+<translation id="4840495572919996524">Vaše záložky, historie, hesla a další nastavení již nebudou synchronizovány do účtu Google.</translation>
 <translation id="4854345657858711387">Nastavte heslo</translation>
 <translation id="4860895144060829044">Volat</translation>
 <translation id="4881695831933465202">Otevřít</translation>
 <translation id="4882831918239250449">Nastavte, jak se má vaše historie procházení používat k personalizaci Vyhledávání, reklam a dalších služeb</translation>
+<translation id="4895709476292058519">Změnit účty</translation>
 <translation id="4904877109095351937">Označit jako přečtené</translation>
 <translation id="4930268273022498155">Smazat existující data. Můžete je znovu načíst tím, že přepnete zpět na účet <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Litujeme, ale při sdílení položky došlo k potížím.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Označit vše jako nepřečtené</translation>
 <translation id="9081058212938299310">Aktualizovat heslo uživatele <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 položka</translation>
+<translation id="9083838294503912307">Chcete-li synchronizovat a přizpůsobit různá zařízení, zapněte synchronizaci.</translation>
 <translation id="9100610230175265781">Je vyžadována heslová fráze</translation>
 <translation id="9148126808321036104">Znovu přihlásit</translation>
 <translation id="9157836665414082580">Potlačit dialogová okna</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
index f7f64540..e56f77f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -235,10 +235,12 @@
 Para cambiar esta configuración, <ph name="BEGIN_LINK" />restablece la sincronización<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 artículo sin leer en tu lista de lectura</translation>
 <translation id="481968316161811770">Cookies, datos del sitio</translation>
+<translation id="4840495572919996524">Ya no se sincronizarán los favoritos, el historial, las contraseñas y otras opciones de configuración con tu Cuenta de Google.</translation>
 <translation id="4854345657858711387">Establecer una contraseña</translation>
 <translation id="4860895144060829044">Llamar</translation>
 <translation id="4881695831933465202">Abrir</translation>
 <translation id="4882831918239250449">Controlar cómo se usa tu historial de navegación para personalizar la Búsqueda, los anuncios y mucho más</translation>
+<translation id="4895709476292058519">Cambiar de cuenta</translation>
 <translation id="4904877109095351937">Marcar como leídas</translation>
 <translation id="4930268273022498155">Borra los datos existentes. Para recuperarlos, cambia de nuevo a <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Se produjo un error al compartir tu elemento.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Marcar todas como no leídas</translation>
 <translation id="9081058212938299310">¿Quieres actualizar la contraseña para <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 elemento</translation>
+<translation id="9083838294503912307">Para sincronizar diferentes dispositivos y personalizar tu experiencia, activa la sincronización.</translation>
 <translation id="9100610230175265781">Se necesita una frase de contraseña.</translation>
 <translation id="9148126808321036104">Accede nuevamente</translation>
 <translation id="9157836665414082580">Suprimir diálogos</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 16337916..52bfe2ed 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -235,10 +235,12 @@
 Para cambiar esta opción, <ph name="BEGIN_LINK" />restablece la sincronización<ph name="END_LINK" />.</translation>
 <translation id="4807020197310989387">1 artículo de la lista de lectura no leído.</translation>
 <translation id="481968316161811770">Cookies y datos de sitios web</translation>
+<translation id="4840495572919996524">Tus marcadores, el historial, las contraseñas y otros datos dejarán de sincronizarse con tu cuenta de Google.</translation>
 <translation id="4854345657858711387">Establecer una contraseña</translation>
 <translation id="4860895144060829044">Llamar</translation>
 <translation id="4881695831933465202">Abrir</translation>
 <translation id="4882831918239250449">Controlar cómo se utiliza el historial de navegación para personalizar la Búsqueda, los anuncios y mucho más</translation>
+<translation id="4895709476292058519">Cambiar cuenta</translation>
 <translation id="4904877109095351937">Marcar como leídas</translation>
 <translation id="4930268273022498155">Elimina los datos actuales. Para recuperarlos, cambia a <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Error al compartir tu elemento</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Marcar todo como no leído</translation>
 <translation id="9081058212938299310">¿Quieres actualizar la contraseña de <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 elemento</translation>
+<translation id="9083838294503912307">Activa la sincronización para sincronizar y personalizar todos tus dispositivos.</translation>
 <translation id="9100610230175265781">Se debe introducir una frase de contraseña</translation>
 <translation id="9148126808321036104">Volver a iniciar sesión</translation>
 <translation id="9157836665414082580">Quitar cuadros de diálogo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index be23deb6..297448282 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -235,10 +235,12 @@
 برای تغییر این تنظیم، <ph name="BEGIN_LINK" />همگام‌سازی را بازنشانی کنید<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">۱ مقاله خوانده‌نشده در فهرست مطالعه.</translation>
 <translation id="481968316161811770">کوکی‌ها، داده‌های سایت</translation>
+<translation id="4840495572919996524">‏نشانک‌ها، سابقه، گذرواژه‌ها و سایر موارد، دیگر با حساب Google شما همگام‌سازی نمی‌شود.</translation>
 <translation id="4854345657858711387">تنظیم گذرنویسه</translation>
 <translation id="4860895144060829044">تماس</translation>
 <translation id="4881695831933465202">باز کردن</translation>
 <translation id="4882831918239250449">کنترل نحوه استفاده از سابقه مرور برای شخصی‌سازی «جستجو»، آگهی‌ها و موارد دیگر</translation>
+<translation id="4895709476292058519">تغییر حساب‌ها</translation>
 <translation id="4904877109095351937">علامت‌گذاری به‌عنوان خوانده‌شده</translation>
 <translation id="4930268273022498155">حذف داده‌های موجود. می‌توانید با جابه‌جایی به <ph name="USER_EMAIL1" /> آن را بازیابی کنید.</translation>
 <translation id="4941089862236492464">متأسفیم! مشكلی در اشتراک‌گذاری مورد شما وجود داشت.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">علامت‌گذاری همه موارد به‌‌عنوان خوانده‌شده</translation>
 <translation id="9081058212938299310">گذرواژه <ph name="USERNAME" /> به‌روزرسانی شود؟</translation>
 <translation id="9083392325882095631">۱ مورد</translation>
+<translation id="9083838294503912307">برای همگام‌سازی و شخصی‌سازی در همه دستگاه‌ها، همگام‌سازی را روشن کنید.</translation>
 <translation id="9100610230175265781">عبارت عبور لازم است</translation>
 <translation id="9148126808321036104">ورود مجدد به سیستم</translation>
 <translation id="9157836665414082580">توقف نمایش کادرهای گفتگو</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index c700dc2..26fe489 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -235,10 +235,12 @@
 Para baguhin ang setting na ito, <ph name="BEGIN_LINK" />i-reset ang pag-sync<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 hindi pa nababasang artikulo sa Listahan ng Babasahin.</translation>
 <translation id="481968316161811770">Cookies, Data ng Site</translation>
+<translation id="4840495572919996524">Ang iyong mga bookmark, history, mga password, at higit pa ay hindi na masi-sync sa Google Account mo.</translation>
 <translation id="4854345657858711387">Magtakda ng Passcode</translation>
 <translation id="4860895144060829044">Tawagan</translation>
 <translation id="4881695831933465202">Buksan</translation>
 <translation id="4882831918239250449">Kontrolin kung paano ginagamit ang iyong history ng pag-browse para i-personalize ang Paghahanap, mga ad, at iba pa</translation>
+<translation id="4895709476292058519">Magpalit ng Account</translation>
 <translation id="4904877109095351937">Markahan Bilang Nabasa Na</translation>
 <translation id="4930268273022498155">I-delete ang kasalukuyang data. Mababawi mo ito sa pamamagitan ng paglipat pabalik sa <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Paumanhin, nagkaroon ng problema sa pagbabahagi ng item mo.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Markahan ang Lahat bilang Hindi pa Nababasa</translation>
 <translation id="9081058212938299310">I-update ang password para sa <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 item</translation>
+<translation id="9083838294503912307">Para mag-sync at mag-personalize sa mga device, i-on ang pag-sync.</translation>
 <translation id="9100610230175265781">Kinakailangan ang passphrase</translation>
 <translation id="9148126808321036104">Muling mag-sign in</translation>
 <translation id="9157836665414082580">Pigilan ang Mga Dialog</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 6b2cf0e4..4b80adf 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -235,10 +235,12 @@
 આ સેટિંગ બદલવા માટે, <ph name="BEGIN_LINK" />સિંકને રીસેટ કરો<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">વાંચન સૂચિમાં 1 ન વાંચેલ લેખ.</translation>
 <translation id="481968316161811770">કુકીઝ, સાઇટ ડેટા</translation>
+<translation id="4840495572919996524">તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને અન્ય બાબતો હવેથી Google એકાઉન્ટ પર સિંક થશે નહીં.</translation>
 <translation id="4854345657858711387">એક પાસકોડ સેટ કરો</translation>
 <translation id="4860895144060829044">કૉલ કરો</translation>
 <translation id="4881695831933465202">ખોલો</translation>
 <translation id="4882831918239250449">તમારા બ્રાઉઝિંગ ઇતિહાસને શોધ, જાહેરાતો અને વધુ સુવિધાને વ્યક્તિગત કરવા માટે કેવી રીતે ઉપયોગમાં લેવાય તેને નિયંત્રિત કરો</translation>
+<translation id="4895709476292058519">એકાઉન્ટ બદલો</translation>
 <translation id="4904877109095351937">વાંચેલ તરીકે ચિહ્નિત કરો</translation>
 <translation id="4930268273022498155">અસ્તિત્વમાંનો ડેટા ડિલીટ કરો. તમે <ph name="USER_EMAIL1" /> પર પાછા સ્વિચ કરીને એને પાછું મેળવી શકો છો.</translation>
 <translation id="4941089862236492464">માફ કરશો, તમારી આઇટમને શેર કરવામાં સમસ્યા આવી હતી.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">તમામને વાંચ્યા વગરની તરીકે ચિહ્નિત કરો</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> માટેનો પાસવર્ડ અપડેટ કરીએ?</translation>
 <translation id="9083392325882095631">1 આઇટમ</translation>
+<translation id="9083838294503912307">એકથી વધુ ડિવાઇસને સિંક અને વ્યક્તિગત કરવા માટે સિંક ચાલુ કરો.</translation>
 <translation id="9100610230175265781">પાસફ્રેઝ આવશ્યક છે</translation>
 <translation id="9148126808321036104">ફરીથી સાઇન ઇન કરો </translation>
 <translation id="9157836665414082580">સંવાદો નાબૂદ કરો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index e94a9356..e7e3bc9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -235,10 +235,12 @@
 यह सेटिंग बदलने के लिए, <ph name="BEGIN_LINK" />सिंक रीसेट करें<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">पढ़ने की सूची में एक ऐसा लेख है जो पढ़ा नहीं गया है.</translation>
 <translation id="481968316161811770">कुकी, साइट डेटा</translation>
+<translation id="4840495572919996524">आपके बुकमार्क, इतिहास, पासवर्ड वगैरह अब आपके Google खाते में सिंक नहीं किए जाएंगे.</translation>
 <translation id="4854345657858711387">पासकोड सेट करें</translation>
 <translation id="4860895144060829044">कॉल करें</translation>
 <translation id="4881695831933465202">खोलें</translation>
 <translation id="4882831918239250449">यह नियंत्रित करें कि खोज, विज्ञापनों वगैरह को मनमुताबिक बनाने के लिए आपके ब्राउज़िंग इतिहास का इस्तेमाल कैसे किया जाए</translation>
+<translation id="4895709476292058519">खाते बदलें</translation>
 <translation id="4904877109095351937">पढ़ी गईं चिह्नित करें</translation>
 <translation id="4930268273022498155">मौजूदा डेटा हटाएं. आप <ph name="USER_EMAIL1" /> पर वापस जाकर उसे पुनर्प्राप्त कर सकते हैं.</translation>
 <translation id="4941089862236492464">क्षमा करें, आपके आइटम को शेयर करने में कोई समस्या हुई.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">सभी को अपठित के रूप में चिह्नित करें</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> का पासवर्ड अपडेट करना चाहते हैं?</translation>
 <translation id="9083392325882095631">1 आइटम</translation>
+<translation id="9083838294503912307">सभी डिवाइस पर सिंक करने और मनमुताबिक बनाने के लिए, 'सिंक करें' को चालू करें.</translation>
 <translation id="9100610230175265781">पासफ़्रेज़ आवश्यक</translation>
 <translation id="9148126808321036104">पुन: प्रवेश करें</translation>
 <translation id="9157836665414082580">संवाद छिपाएं</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 00d578c..146e6c3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -235,10 +235,12 @@
 Untuk mengubah setelan ini, <ph name="BEGIN_LINK" />setel ulang sinkronisasi<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 artikel yang belum dibaca di Daftar Bacaan.</translation>
 <translation id="481968316161811770">Cookie, Data Situs</translation>
+<translation id="4840495572919996524">Bookmark, histori, sandi, dan informasi Anda lainnya tidak akan lagi disinkronkan ke Akun Google Anda.</translation>
 <translation id="4854345657858711387">Setel Kode Sandi</translation>
 <translation id="4860895144060829044">Telepon</translation>
 <translation id="4881695831933465202">Buka</translation>
 <translation id="4882831918239250449">Kontrol cara histori browsing digunakan untuk mempersonalisasi Penelusuran, iklan, dan lainnya</translation>
+<translation id="4895709476292058519">Ubah Akun</translation>
 <translation id="4904877109095351937">Tandai Sudah Dibaca</translation>
 <translation id="4930268273022498155">Hapus data yang sudah ada. Anda dapat mengambilnya dengan beralih lagi ke <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Maaf, terjadi masalah saat berbagi item Anda.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Tandai Semua Belum Dibaca</translation>
 <translation id="9081058212938299310">Perbarui sandi untuk <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 item</translation>
+<translation id="9083838294503912307">Untuk menyinkronkan dan mempersonalisasi berbagai perangkat, aktifkan sinkronisasi.</translation>
 <translation id="9100610230175265781">Frasa sandi diwajibkan</translation>
 <translation id="9148126808321036104">Masuk sekali lagi</translation>
 <translation id="9157836665414082580">Sembunyikan Dialog</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index 7854d76..90bf9c1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -235,10 +235,12 @@
 この設定を変更する場合は<ph name="BEGIN_LINK" />同期をリセット<ph name="END_LINK" />してください</translation>
 <translation id="4807020197310989387">1 件のリーディング リストの記事が未読です。</translation>
 <translation id="481968316161811770">Cookie、サイトデータ</translation>
+<translation id="4840495572919996524">ブックマーク、履歴、パスワードなどの設定は Google アカウントと同期されなくなります。</translation>
 <translation id="4854345657858711387">パスコードの設定</translation>
 <translation id="4860895144060829044">通話</translation>
 <translation id="4881695831933465202">開く</translation>
 <translation id="4882831918239250449">検索、広告などのカスタマイズを目的とした閲覧履歴の使用方法を設定</translation>
+<translation id="4895709476292058519">アカウントを変更</translation>
 <translation id="4904877109095351937">既読にする</translation>
 <translation id="4930268273022498155">既存のデータを削除します。<ph name="USER_EMAIL1" /> に切り替えると、削除したデータを取得できます。</translation>
 <translation id="4941089862236492464">アイテムの共有中に問題が発生しました。</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">すべて未読にする</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> のパスワードを更新しますか?</translation>
 <translation id="9083392325882095631">1個のアイテム</translation>
+<translation id="9083838294503912307">カスタマイズした設定を複数の端末で同期して使用するには、同期を有効にします。</translation>
 <translation id="9100610230175265781">パスフレーズを入力してください</translation>
 <translation id="9148126808321036104">もう一度ログインする</translation>
 <translation id="9157836665414082580">ダイアログを表示しない</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index c252f33..b79bea6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -235,10 +235,12 @@
 ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಲು, <ph name="BEGIN_LINK" />ಸಿಂಕ್ ಅನ್ನು ಮರುಹೊಂದಿಸಿ<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 ಓದದಿರುವ ಓದುವ ಪಟ್ಟಿ ಲೇಖನ.</translation>
 <translation id="481968316161811770">ಕುಕೀಗಳು, ಸೈಟ್‌ ಡೇಟಾ</translation>
+<translation id="4840495572919996524">ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ನಿಮ್ಮ Google ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡುವುದಿಲ್ಲ.</translation>
 <translation id="4854345657858711387">ಪಾಸ್‌ಕೋಡ್‌ ಅನ್ನು ಹೊಂದಿಸಿ</translation>
 <translation id="4860895144060829044">ಕರೆ</translation>
 <translation id="4881695831933465202">ತೆರೆ</translation>
 <translation id="4882831918239250449">ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇನ್ನೂ ಹೆಚ್ಚಿನವುಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೇಗೆ ಬಳಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಿ</translation>
+<translation id="4895709476292058519">ಖಾತೆಗಳನ್ನು ಬದಲಿಸು</translation>
 <translation id="4904877109095351937">ಓದಿದೆ ಎಂಬಂತೆ ಗುರುತಿಸಿ</translation>
 <translation id="4930268273022498155">ಪ್ರಸ್ತುತ ಡೇಟಾ ಅಳಿಸಿ. ನೀವು ಮರಳಿ <ph name="USER_EMAIL1" /> ಗೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ ಅದನ್ನು ಹಿಂಪಡೆಯಬಹುದು.</translation>
 <translation id="4941089862236492464">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಐಟಂ ಅನ್ನು ಹಂಚುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">ಎಲ್ಲಾ ಓದದೇ ಇರುವವುಗಳನ್ನು ಗುರುತಿಸಿ</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡುವುದೇ?</translation>
 <translation id="9083392325882095631">1 ಐಟಂ</translation>
+<translation id="9083838294503912307">ಸಾಧನಗಳಾದ್ಯಂತ ಸಿಂಕ್ ಮಾಡಲು ಮತ್ತು ವೈಯಕ್ತೀಕರಿಸಲು, ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation>
 <translation id="9100610230175265781">ಪಾಸ್‌ಫ್ರೇಸ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="9148126808321036104">ಪುನಃ ಸೈನ್ ಇನ್  ಆಗಿ</translation>
 <translation id="9157836665414082580">ಸಂವಾದಗಳನ್ನು ನಿಗ್ರಹಿಸಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index ba0c32e2..07c5aa6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -90,7 +90,7 @@
 <translation id="2339560363438331454">동기화 및 Google 서비스</translation>
 <translation id="2351097562818989364">번역 설정이 재설정되었습니다.</translation>
 <translation id="2359808026110333948">계속</translation>
-<translation id="2360196772093551345">모바일 사이트로 보기</translation>
+<translation id="2360196772093551345">모바일 버전으로 보기</translation>
 <translation id="2381405137052800939">기본설정</translation>
 <translation id="2386793615875593361">1장 선택됨</translation>
 <translation id="2435457462613246316">비밀번호 표시</translation>
@@ -235,10 +235,12 @@
 이 설정을 변경하려면 <ph name="BEGIN_LINK" />동기화를 재설정<ph name="END_LINK" />하세요.</translation>
 <translation id="4807020197310989387">읽기 목록에 읽지 않은 기사가 1개 있습니다.</translation>
 <translation id="481968316161811770">쿠키, 사이트 데이터</translation>
+<translation id="4840495572919996524">북마크, 방문 기록, 비밀번호 등이 더 이상 Google 계정과 동기화되지 않습니다.</translation>
 <translation id="4854345657858711387">비밀번호 설정</translation>
 <translation id="4860895144060829044">전화걸기</translation>
 <translation id="4881695831933465202">열기</translation>
 <translation id="4882831918239250449">검색, 광고 등을 맞춤설정하는 데 인터넷 방문 기록이 사용되는 방식 관리</translation>
+<translation id="4895709476292058519">계정 변경</translation>
 <translation id="4904877109095351937">읽음으로 표시</translation>
 <translation id="4930268273022498155">기존 데이터를 삭제합니다. <ph name="USER_EMAIL1" />(으)로 전환하여 기존 데이터를 가져올 수 있습니다.</translation>
 <translation id="4941089862236492464">죄송합니다. 항목을 공유하는 중에 문제가 발생했습니다.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">모두 읽지않음으로 표시</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" />님의 비밀번호를 업데이트하시겠습니까?</translation>
 <translation id="9083392325882095631">항목 1개</translation>
+<translation id="9083838294503912307">모든 기기에서 동기화 및 맞춤설정하려면 동기화를 사용 설정하세요.</translation>
 <translation id="9100610230175265781">암호를 입력해야 합니다.</translation>
 <translation id="9148126808321036104">다시 로그인</translation>
 <translation id="9157836665414082580">대화상자 숨기기</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index 873ff0f..0e829e72 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -235,10 +235,12 @@
 ഈ ക്രമീകരണം മാറ്റാൻ, <ph name="BEGIN_LINK" />സമന്വയം പുനഃക്രമീകരിക്കുക<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">വായനാ ലിസ്‌റ്റിലുള്ള, വായിക്കാത്ത ഒരു ലേഖനം.</translation>
 <translation id="481968316161811770">കുക്കികളും സൈറ്റ് ഡാറ്റയും</translation>
+<translation id="4840495572919996524">നിങ്ങളുടെ ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ എന്നിവയും മറ്റും ഇനിയങ്ങോട്ട് Google അക്കൗണ്ടുമായി സമന്വയിപ്പിക്കില്ല.</translation>
 <translation id="4854345657858711387">പാസ്‌കോഡ് സജ്ജമാക്കുക</translation>
 <translation id="4860895144060829044">വിളിക്കുക</translation>
 <translation id="4881695831933465202">തുറക്കുക</translation>
 <translation id="4882831918239250449">തിരയൽ, പരസ്യങ്ങൾ എന്നിവയും മറ്റും വ്യക്തിപരമാക്കുന്നതിനായി നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം ഉപയോഗിക്കുന്ന വിധം നിയന്ത്രിക്കുക</translation>
+<translation id="4895709476292058519">അക്കൗണ്ടുകൾ മാറുക</translation>
 <translation id="4904877109095351937">വായിച്ചതായി അടയാളപ്പെടുത്തുക</translation>
 <translation id="4930268273022498155">നിലവിലുള്ള വിവരങ്ങൾ ഇല്ലാതാക്കുക. <ph name="USER_EMAIL1" /> എന്നതിലേക്ക് വീണ്ടും മാറുന്നതിലൂടെ നിങ്ങൾക്ക് ഇത് വീണ്ടെടുക്കാം.</translation>
 <translation id="4941089862236492464">ക്ഷമിക്കണം, നിങ്ങളുടെ ഇനം പങ്കിടുന്നതിൽ ഒരു പ്രശ്‌നമുണ്ടായിരുന്നു.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">എല്ലാം വായിക്കാത്തതായി അടയാളപ്പെടുത്തുക</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> എന്നയാളുടെ പാസ്‌വേഡ് അപ്‌ഡേറ്റ് ചെയ്യണോ?</translation>
 <translation id="9083392325882095631">ഒരു ഇനം</translation>
+<translation id="9083838294503912307">ഉപകരണങ്ങളിൽ ഉടനീളം സമന്വയിപ്പിക്കാനും വ്യക്തിപരമാക്കാനും, സമന്വയിപ്പിക്കൽ ഓണാക്കുക.</translation>
 <translation id="9100610230175265781">പാസ്‌ഫ്രെയ്‌സ് ആവശ്യമാണ്</translation>
 <translation id="9148126808321036104">വീണ്ടും പ്രവേശിക്കുക</translation>
 <translation id="9157836665414082580">ഡയലോഗുകൾ നിയന്ത്രിക്കുക</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 680712f..90cecba 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -236,10 +236,12 @@
 हे सेटिंग बदलण्यासाठी, <ph name="BEGIN_LINK" />सिंक रीसेट करा<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">एक न वाचलेला वाचन सूची लेख.</translation>
 <translation id="481968316161811770">कुकीज, साइट डेटा</translation>
+<translation id="4840495572919996524">तुमचे बुकमार्क, इतिहास, पासवर्ड आणि बरेच काही आता तुमच्या Google खात्यामध्ये सिंक केले जाणार नाही</translation>
 <translation id="4854345657858711387">पासकोड सेट करा</translation>
 <translation id="4860895144060829044">कॉल करा</translation>
 <translation id="4881695831933465202">उघडा</translation>
 <translation id="4882831918239250449">तुम्ही ब्राउझ करत असलेला इतिहास पर्सनलाइझ शोध, जाहिराती आणि बरेच काही करण्यासाठी कसा वापरला जातो ते नियंत्रित करा</translation>
+<translation id="4895709476292058519">खाती बदला</translation>
 <translation id="4904877109095351937">वाचले चिन्हांकित करा</translation>
 <translation id="4930268273022498155">विद्यमान डेटा हटवा. <ph name="USER_EMAIL1" /> वर परत स्विच करून तुम्ही तो पुनर्प्राप्त करू शकता.</translation>
 <translation id="4941089862236492464">क्षमस्व, तुमचा आयटम शेअर करताना समस्या आली.</translation>
@@ -483,6 +485,7 @@
 <translation id="9079935439869366234">सर्व न वाचलेले चिन्हांकित करा</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> साठी पासवर्ड अपडेट करायचा?</translation>
 <translation id="9083392325882095631">1 आयटम</translation>
+<translation id="9083838294503912307">सर्व डिव्हाइसवर सिंक आणि पर्सनलाइझ करण्यासाठी, सिंक सुरू करा.</translation>
 <translation id="9100610230175265781">सांकेतिक वाक्यांश आवश्यक</translation>
 <translation id="9148126808321036104">पुन्हा साइन इन करा </translation>
 <translation id="9157836665414082580">संवाद दर्शवू नका</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index cbf35b20..1148dba 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -235,10 +235,12 @@
 Untuk menukar tetapan ini, <ph name="BEGIN_LINK" />tetapkan semula penyegerakan<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 artikel Senarai Bacaan yang belum dibaca.</translation>
 <translation id="481968316161811770">Kuki, Data Tapak</translation>
+<translation id="4840495572919996524">Penanda halaman, sejarah, kata laluan dan pelbagai lagi tidak akan disegerakkan ke Akaun Google anda.</translation>
 <translation id="4854345657858711387">Tetapkan Kod Laluan</translation>
 <translation id="4860895144060829044">Hubungi</translation>
 <translation id="4881695831933465202">Buka</translation>
 <translation id="4882831918239250449">Kawal cara sejarah penyemakan imbas anda digunakan untuk memperibadikan Carian, iklan dan pelbagai lagi</translation>
+<translation id="4895709476292058519">Tukar Akaun</translation>
 <translation id="4904877109095351937">Tandakan Dibaca</translation>
 <translation id="4930268273022498155">Padam data sedia ada. Anda boleh mendapatkannya semula dengan beralih semula kepada <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Maaf, terdapat masalah mengongsi item anda.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Tandakan Semua Sebagai Belum Dibaca</translation>
 <translation id="9081058212938299310">Kemas kini kata laluan untuk <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 item</translation>
+<translation id="9083838294503912307">Hidupkan penyegerakan untuk melakukan penyegerakan dan pemperibadian pada semua peranti.</translation>
 <translation id="9100610230175265781">Frasa laluan diperlukan</translation>
 <translation id="9148126808321036104">Log masuk semula</translation>
 <translation id="9157836665414082580">Sekat Dialog</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 0481e3f..66eb545 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -235,10 +235,12 @@
 For å endre denne innstillingen, <ph name="BEGIN_LINK" />tilbakestill synkroniseringen<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 ulest leselisteartikkel.</translation>
 <translation id="481968316161811770">Informasjonskapsler og nettstedsdata</translation>
+<translation id="4840495572919996524">Bokmerkene, loggen, passord med mer synkroniseres ikke lenger med Google-kontoen din.</translation>
 <translation id="4854345657858711387">Angi en adgangskode</translation>
 <translation id="4860895144060829044">Ring</translation>
 <translation id="4881695831933465202">Åpne</translation>
 <translation id="4882831918239250449">Kontrollér hvordan nettleserloggen din brukes til personlig tilpasning av søk, annonser med mer</translation>
+<translation id="4895709476292058519">Bytt konto</translation>
 <translation id="4904877109095351937">Merk som lest</translation>
 <translation id="4930268273022498155">Slett eksisterende data. Du kan hente ut dataene ved å bytte tilbake til <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Det oppsto et problem under delingen av artikkelen.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Merk alle som ulest</translation>
 <translation id="9081058212938299310">Vil du oppdatere passordet for <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 element</translation>
+<translation id="9083838294503912307">For å synkronisere og gi et personlig preg på alle enhetene, slå på synkronisering.</translation>
 <translation id="9100610230175265781">Det kreves en passordfrase</translation>
 <translation id="9148126808321036104">Logg på igjen</translation>
 <translation id="9157836665414082580">Ignorer dialogbokser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 60015e5d..b96fdec 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -235,10 +235,12 @@
 Aby zmienić to ustawienie, <ph name="BEGIN_LINK" />zresetuj synchronizację<ph name="END_LINK" />.</translation>
 <translation id="4807020197310989387">1 nieprzeczytany artykuł na liście Do przeczytania.</translation>
 <translation id="481968316161811770">Cookie i dane stron</translation>
+<translation id="4840495572919996524">Twoje zakładki, historia, hasła i inne ustawienia przestaną być synchronizowane z Twoim kontem Google.</translation>
 <translation id="4854345657858711387">Ustaw kod dostępu</translation>
 <translation id="4860895144060829044">Zadzwoń</translation>
 <translation id="4881695831933465202">Otwórz</translation>
 <translation id="4882831918239250449">Zarządzaj personalizacją wyszukiwarki, reklam i innych funkcji na podstawie historii przeglądania</translation>
+<translation id="4895709476292058519">Zmień konto</translation>
 <translation id="4904877109095351937">Oznacz jako przeczytane</translation>
 <translation id="4930268273022498155">Usuń istniejące dane. Aby je pobrać, przełącz się z powrotem na konto <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Niestety, wystąpił problem z udostępnieniem tej rzeczy.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Oznacz wszystkie jako nieprzeczytane</translation>
 <translation id="9081058212938299310">Zaktualizować hasło dla <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">Jeden element</translation>
+<translation id="9083838294503912307">Aby synchronizować i personalizować wszystkie swoje urządzenia, włącz synchronizację.</translation>
 <translation id="9100610230175265781">Wymagane jest hasło</translation>
 <translation id="9148126808321036104">Zaloguj się ponownie</translation>
 <translation id="9157836665414082580">Ukryj okna dialogowe</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index d67faf3..38b3c9c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -235,10 +235,12 @@
 Pentru a modifica această setare, <ph name="BEGIN_LINK" />resetează sincronizarea<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">Un articol necitit în Lista de lectură.</translation>
 <translation id="481968316161811770">Cookie-urile, datele privind site-urile</translation>
+<translation id="4840495572919996524">Marcajele, istoricul, parolele și alte setări nu vor mai fi sincronizate cu Contul Google.</translation>
 <translation id="4854345657858711387">Setează o parolă</translation>
 <translation id="4860895144060829044">Apelează</translation>
 <translation id="4881695831933465202">Deschide</translation>
 <translation id="4882831918239250449">Controlează modul în care istoricul de navigare este folosit pentru a personaliza Căutarea, anunțurile și alte servicii</translation>
+<translation id="4895709476292058519">Schimbă conturile</translation>
 <translation id="4904877109095351937">Marchează ca citite</translation>
 <translation id="4930268273022498155">Șterge datele existente. Le poți recupera comutând înapoi la <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">A apărut o problemă la trimiterea articolului.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Marchează-le pe toate ca necitite</translation>
 <translation id="9081058212938299310">Actualizezi parola pentru <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">Un element</translation>
+<translation id="9083838294503912307">Pentru a sincroniza și a personaliza pe toate dispozitivele, activează sincronizarea.</translation>
 <translation id="9100610230175265781">Este necesară o expresie de acces</translation>
 <translation id="9148126808321036104">Conectează-te din nou</translation>
 <translation id="9157836665414082580">Închide casetele de dialog</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index 539b17a..4c40e07ff 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -235,10 +235,12 @@
 Ak chcete toto nastavenie zmeniť, <ph name="BEGIN_LINK" />resetujte synchronizáciu<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 neprečítaný článok v čitateľskom zozname.</translation>
 <translation id="481968316161811770">Súbory cookie, údaje webu</translation>
+<translation id="4840495572919996524">Záložky, história, heslá a ďalší obsah sa už nebudú synchronizovať do vášho účtu Google.</translation>
 <translation id="4854345657858711387">Nastavenie vstupného kódu</translation>
 <translation id="4860895144060829044">Volajte</translation>
 <translation id="4881695831933465202">Otvoriť</translation>
 <translation id="4882831918239250449">Ovládajte, ako sa pomocou histórie prehliadania prispôsobuje Vyhľadávanie, reklamy a ďalší obsah</translation>
+<translation id="4895709476292058519">Zmeniť účty</translation>
 <translation id="4904877109095351937">Označiť ako prečítané</translation>
 <translation id="4930268273022498155">Odstrániť existujúce údaje. Načítate ich prepnutím späť na účet <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Je nám ľúto, pri zdieľaní položky sa vyskytol problém.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Označiť všetko ako neprečítané</translation>
 <translation id="9081058212938299310">Chcete aktualizovať heslo používateľa <ph name="USERNAME" />?</translation>
 <translation id="9083392325882095631">1 položka</translation>
+<translation id="9083838294503912307">Ak chcete synchronizovať a prispôsobovať viaceré zariadenia, zapnite synchronizáciu.</translation>
 <translation id="9100610230175265781">Vyžaduje sa prístupová fráza</translation>
 <translation id="9148126808321036104">Znova sa prihlásiť</translation>
 <translation id="9157836665414082580">Obmedziť dialógové okná</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index 765787db..ce492208 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -235,10 +235,12 @@
 இந்த அமைப்பை மாற்ற, <ph name="BEGIN_LINK" />ஒத்திசைவை மீட்டமைக்கவும்<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">படிக்கப்படாத 1 வாசிப்புப் பட்டியல் கட்டுரை உள்ளது.</translation>
 <translation id="481968316161811770">குக்கீகள், தளத் தரவு</translation>
+<translation id="4840495572919996524">உங்கள் புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள் இனி உங்கள் Google கணக்குடன் ஒத்திசைக்கப்படாது.</translation>
 <translation id="4854345657858711387">கடவுக்குறியீட்டை அமைக்கவும்</translation>
 <translation id="4860895144060829044">அழை</translation>
 <translation id="4881695831933465202">திற</translation>
 <translation id="4882831918239250449">தேடல், விளம்பரங்கள் மற்றும் பலவற்றைத் தனிப்பயனாக்க உங்கள் உலாவல் வரலாறு எப்படிப் பயன்படுத்தப்படுகிறது என்பதைக் கட்டுப்படுத்துதல்</translation>
+<translation id="4895709476292058519">கணக்குகளை மாற்று</translation>
 <translation id="4904877109095351937">படித்ததாகக் குறி</translation>
 <translation id="4930268273022498155">ஏற்கனவே உள்ள தரவை நீக்கவும். மீண்டும் <ph name="USER_EMAIL1" />க்கு மாற்றுவதன் மூலம் அதை மீட்டெடுக்கலாம்.</translation>
 <translation id="4941089862236492464">மன்னிக்கவும், உங்கள் உருப்படியைப் பகிர்வதில் ஒரு பிரச்சனை ஏற்பட்டது.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">அனைத்தையும் படிக்காததாகக் குறி</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> இன் கடவுச்சொல்லை மாற்றவா?</translation>
 <translation id="9083392325882095631">1 உருப்படி</translation>
+<translation id="9083838294503912307">அனைத்துச் சாதனங்களுக்கு இடையிலும் ஒத்திசைப்பதற்கும் தனிப்பயனாக்குவதற்கும், ஒத்திசைவை இயக்கவும்.</translation>
 <translation id="9100610230175265781">கடவுச்சொற்றொடர் தேவை</translation>
 <translation id="9148126808321036104">மீண்டும் உள்நுழைக</translation>
 <translation id="9157836665414082580">உரையாடல்களை மறை</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index 33ba881..0b6b791 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -235,10 +235,12 @@
 ఈ సెట్టింగ్‌ని మార్చడం కోసం, <ph name="BEGIN_LINK" />సమకాలీకరణను రీసెట్ చేయండి<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">చదవాల్సిన జాబితాలో 1 కథనం ఉంది.</translation>
 <translation id="481968316161811770">కుక్కీలు, సైట్ డేటా</translation>
+<translation id="4840495572919996524">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు మరిన్ని ఇప్పటి నుండి మీ Google ఖాతాకి సమకాలీకరించబడవు.</translation>
 <translation id="4854345657858711387">పాస్‌కోడ్‌ని సెట్ చేయండి</translation>
 <translation id="4860895144060829044">కాల్ చేయండి</translation>
 <translation id="4881695831933465202">తెరువు</translation>
 <translation id="4882831918239250449">శోధన, ప్రకటనలు మరియు మరిన్నింటిని వ్యక్తిగతీకరించడానికి మీ బ్రౌజింగ్ చరిత్ర ఎలా ఉపయోగించబడుతుందో నియంత్రించండి</translation>
+<translation id="4895709476292058519">ఖాతాలను మార్చు</translation>
 <translation id="4904877109095351937">చదివినట్లు గుర్తు పెట్టు</translation>
 <translation id="4930268273022498155">ఇప్పటికే ఉన్న డేటాను తొలగించండి. మీరు <ph name="USER_EMAIL1" />కి తిరిగి వెళ్లడం ద్వారా దాన్ని తిరిగి పొందవచ్చు.</translation>
 <translation id="4941089862236492464">క్షమించండి, మీ అంశాన్ని భాగస్వామ్యం చేయడంలో సమస్య ఉంది.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">అన్నీ చదవనట్లు గుర్తు పెట్టు</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> పాస్‌వర్డ్‌ని అప్‌డేట్ చేయాలా?</translation>
 <translation id="9083392325882095631">1 అంశం</translation>
+<translation id="9083838294503912307">మీ అన్ని పరికరాలలోనూ సమకాలీకరణ మరియు వ్యక్తిగతీకరణ చేయడం కోసం, సమకాలీకరణను ఆన్ చేయండి.</translation>
 <translation id="9100610230175265781">రహస్య పదబంధం అవసరం</translation>
 <translation id="9148126808321036104">మళ్ళీ సైన్ ఇన్ చెయ్యండి</translation>
 <translation id="9157836665414082580">డైలాగ్‌లను కుదించు</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index 6ab93e7..3c6a769b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -235,10 +235,12 @@
 หากต้องการเปลี่ยนแปลงการตั้งค่านี้ ให้<ph name="BEGIN_LINK" />รีเซ็ตการซิงค์<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">บทความในรายการเรื่องรออ่านที่ยังไม่อ่าน 1 รายการ</translation>
 <translation id="481968316161811770">คุกกี้ ข้อมูลเว็บไซต์</translation>
+<translation id="4840495572919996524">บุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และอื่นๆ จะไม่ซิงค์กับบัญชี Google อีกต่อไป</translation>
 <translation id="4854345657858711387">ตั้งพาสโค้ด</translation>
 <translation id="4860895144060829044">โทร</translation>
 <translation id="4881695831933465202">เปิด</translation>
 <translation id="4882831918239250449">ควบคุมการใช้ประวัติการท่องเว็บเพื่อปรับเปลี่ยน Search, โฆษณา และบริการอื่นๆ ในแบบของคุณ</translation>
+<translation id="4895709476292058519">เปลี่ยนบัญชี</translation>
 <translation id="4904877109095351937">ทำเครื่องหมายว่าอ่านแล้ว</translation>
 <translation id="4930268273022498155">ลบข้อมูลที่มีอยู่ คุณสามารถดึงข้อมูลได้ด้วยการเปลี่ยนกลับเป็น <ph name="USER_EMAIL1" /></translation>
 <translation id="4941089862236492464">ขออภัย เกิดปัญหาในการแชร์รายการของคุณ</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">ทำเครื่องหมายทั้งหมดว่ายังไม่ได้อ่าน</translation>
 <translation id="9081058212938299310">อัปเดตรหัสผ่านของ <ph name="USERNAME" /> ไหม</translation>
 <translation id="9083392325882095631">1 รายการ</translation>
+<translation id="9083838294503912307">หากต้องการซิงค์และเห็นข้อมูลซึ่งปรับเปลี่ยนในแบบของคุณในทุกอุปกรณ์ ให้เปิดการซิงค์</translation>
 <translation id="9100610230175265781">ต้องระบุรหัสผ่าน</translation>
 <translation id="9148126808321036104">ลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="9157836665414082580">ระงับกล่องโต้ตอบ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index abad5092..cb1d368 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -235,10 +235,12 @@
 Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlayın<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 okunmamış Okuma Listesi makalesi.</translation>
 <translation id="481968316161811770">Çerezler, Site Verileri</translation>
+<translation id="4840495572919996524">Yer işaretleri, geçmiş, şifreler ve diğer ayarlarınız artık Google Hesabınız ile senkronize edilmeyecek.</translation>
 <translation id="4854345657858711387">Şifre Kodu Ayarlayın</translation>
 <translation id="4860895144060829044">Telefon et</translation>
 <translation id="4881695831933465202">Aç</translation>
 <translation id="4882831918239250449">Göz atma geçmişinizin Arama, reklamlar ve diğer hizmetleri kişiselleştirmek için nasıl kullanıldığını kontrol edin</translation>
+<translation id="4895709476292058519">Hesabı Değiştir</translation>
 <translation id="4904877109095351937">Okundu Olarak İşaretle</translation>
 <translation id="4930268273022498155">Mevcut verileri silin. İlgili verileri tekrar <ph name="USER_EMAIL1" /> hesabına geçerek alabilirsiniz.</translation>
 <translation id="4941089862236492464">Maalesef öğeniz paylaşılırken bir sorun oluştu.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Tümünü Okunmadı Olarak İşaretle</translation>
 <translation id="9081058212938299310"><ph name="USERNAME" /> hesabının şifresi güncellensin mi?</translation>
 <translation id="9083392325882095631">1 öğe</translation>
+<translation id="9083838294503912307">Cihazlar arasında senkronizasyon ve kişiselleştirme yapmak için senkronizasyonu etkinleştirin.</translation>
 <translation id="9100610230175265781">Parola gerekli</translation>
 <translation id="9148126808321036104">Tekrar oturum açın</translation>
 <translation id="9157836665414082580">İletişim Kutularını Gizle</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index d58c835..39af555 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -235,10 +235,12 @@
 Để thay đổi tùy chọn cài đặt này, hãy <ph name="BEGIN_LINK" />đặt lại tính năng đồng bộ hóa<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">1 bài viết chưa đọc trong Danh sách đọc.</translation>
 <translation id="481968316161811770">Cookie, Dữ liệu trang web</translation>
+<translation id="4840495572919996524">Dấu trang, lịch sử, mật khẩu và các dữ liệu khác sẽ không còn đồng bộ hóa với Tài khoản Google của bạn nữa.</translation>
 <translation id="4854345657858711387">Đặt mật mã</translation>
 <translation id="4860895144060829044">Gọi</translation>
 <translation id="4881695831933465202">Mở</translation>
 <translation id="4882831918239250449">Kiểm soát cách Google sử dụng lịch sử duyệt web của bạn để cá nhân hóa dịch vụ Tìm kiếm, quảng cáo và các dịch vụ khác</translation>
+<translation id="4895709476292058519">Thay đổi tài khoản</translation>
 <translation id="4904877109095351937">Đánh dấu là đã đọc</translation>
 <translation id="4930268273022498155">Xóa dữ liệu hiện có. Bạn có thể truy xuất dữ liệu bằng cách chuyển về <ph name="USER_EMAIL1" />.</translation>
 <translation id="4941089862236492464">Rất tiếc, đã xảy ra sự cố khi chia sẻ mục của bạn.</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">Đánh dấu tất cả là chưa đọc</translation>
 <translation id="9081058212938299310">Bạn có muốn cập nhật mật khẩu cho <ph name="USERNAME" /> không?</translation>
 <translation id="9083392325882095631">1 mục</translation>
+<translation id="9083838294503912307">Để đồng bộ hóa và cá nhân hóa trên các thiết bị, hãy bật tính năng đồng bộ hóa.</translation>
 <translation id="9100610230175265781">Yêu cầu cụm mật khẩu</translation>
 <translation id="9148126808321036104">Đăng nhập lại</translation>
 <translation id="9157836665414082580">Hộp thoại loại bỏ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
index 4ecb543..965a2df9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -235,10 +235,12 @@
 要更改此设置,请<ph name="BEGIN_LINK" />重置同步设置<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">阅读清单中有 1 篇未读文章。</translation>
 <translation id="481968316161811770">Cookie 和网站数据</translation>
+<translation id="4840495572919996524">您的书签、历史记录、密码和其他设置将不再同步到您的 Google 帐号中。</translation>
 <translation id="4854345657858711387">设置密码</translation>
 <translation id="4860895144060829044">拨打</translation>
 <translation id="4881695831933465202">打开</translation>
 <translation id="4882831918239250449">控制 Google 如何利用您的浏览记录为您提供个性化的搜索、广告和其他服务</translation>
+<translation id="4895709476292058519">更改帐号</translation>
 <translation id="4904877109095351937">标记为已读</translation>
 <translation id="4930268273022498155">删除现有数据。您可通过切换回 <ph name="USER_EMAIL1" /> 来获取现有数据。</translation>
 <translation id="4941089862236492464">很抱歉,分享您的信息时出现问题。</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">全部标为未读</translation>
 <translation id="9081058212938299310">更新 <ph name="USERNAME" /> 的密码?</translation>
 <translation id="9083392325882095631">有1个书签</translation>
+<translation id="9083838294503912307">要在您的所有设备上保持同步并进行个性化设置,请开启同步功能。</translation>
 <translation id="9100610230175265781">必须提供密码</translation>
 <translation id="9148126808321036104">重新登录</translation>
 <translation id="9157836665414082580">禁止显示对话框</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
index 23bd0c7..41401ca 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -235,10 +235,12 @@
 如要變更這項設定,請<ph name="BEGIN_LINK" />重設同步功能<ph name="END_LINK" /></translation>
 <translation id="4807020197310989387">閱讀清單中有 1 篇未讀文章。</translation>
 <translation id="481968316161811770">Cookie、網站資料</translation>
+<translation id="4840495572919996524">你的書籤、歷史記錄、密碼等資料將停止同步到你的 Google 帳戶。</translation>
 <translation id="4854345657858711387">設定通行碼</translation>
 <translation id="4860895144060829044">撥號</translation>
 <translation id="4881695831933465202">開啟</translation>
 <translation id="4882831918239250449">控制 Google 使用瀏覽記錄提供個人化搜尋服務、廣告和其他內容的方式</translation>
+<translation id="4895709476292058519">變更帳戶</translation>
 <translation id="4904877109095351937">標示為已讀取</translation>
 <translation id="4930268273022498155">刪除現有資料。你可以切換回 <ph name="USER_EMAIL1" />,重新取得現有資料。</translation>
 <translation id="4941089862236492464">很抱歉,分享您的項目時發生問題。</translation>
@@ -482,6 +484,7 @@
 <translation id="9079935439869366234">全部標示為未讀取</translation>
 <translation id="9081058212938299310">要更新 <ph name="USERNAME" /> 的密碼嗎?</translation>
 <translation id="9083392325882095631">1 個項目</translation>
+<translation id="9083838294503912307">想在所有裝置上保持同步並享有個人化體驗,請開啟同步功能。</translation>
 <translation id="9100610230175265781">請提供通關密語</translation>
 <translation id="9148126808321036104">重新登入</translation>
 <translation id="9157836665414082580">禁止顯示對話方塊</translation>
diff --git a/media/base/decoder_buffer.cc b/media/base/decoder_buffer.cc
index 3366d416..4cd4851a 100644
--- a/media/base/decoder_buffer.cc
+++ b/media/base/decoder_buffer.cc
@@ -70,6 +70,11 @@
   void* data_at_initialize = data_at_initialize_;
   base::debug::Alias(&data_at_initialize);
 
+  uint32_t destruction = destruction_;
+  base::debug::Alias(&destruction);
+  CHECK_NE(destruction_, 0xAAAAAAAA);
+  destruction_ = 0xAAAAAAAA;
+
   CHECK_EQ(!!side_data_size_, !!side_data_);
   data_.reset();
   side_data_.reset();
diff --git a/media/base/decoder_buffer.h b/media/base/decoder_buffer.h
index cb727c2..3239282 100644
--- a/media/base/decoder_buffer.h
+++ b/media/base/decoder_buffer.h
@@ -230,6 +230,10 @@
   // Whether the frame was marked as a keyframe in the container.
   bool is_key_frame_;
 
+  // Check for double destruction. This field is not to be used.
+  // crbug.com/794740.
+  uint32_t destruction_ = 0x55555555;
+
   // Constructor helper method for memory allocations.
   void Initialize();
 
diff --git a/net/BUILD.gn b/net/BUILD.gn
index a229e0e..53cd478 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1283,8 +1283,6 @@
       "third_party/quic/core/crypto/crypto_protocol.h",
       "third_party/quic/core/crypto/crypto_secret_boxer.cc",
       "third_party/quic/core/crypto/crypto_secret_boxer.h",
-      "third_party/quic/core/crypto/crypto_server_config_protobuf.cc",
-      "third_party/quic/core/crypto/crypto_server_config_protobuf.h",
       "third_party/quic/core/crypto/crypto_utils.cc",
       "third_party/quic/core/crypto/crypto_utils.h",
       "third_party/quic/core/crypto/curve25519_key_exchange.cc",
@@ -2266,6 +2264,7 @@
 
   sources = [
     "third_party/quic/core/proto/cached_network_parameters.proto",
+    "third_party/quic/core/proto/crypto_server_config.proto",
     "third_party/quic/core/proto/source_address_token.proto",
   ]
   cc_generator_options = "dllexport_decl=NET_EXPORT_PRIVATE:"
diff --git a/net/third_party/quic/core/crypto/crypto_server_config_protobuf.cc b/net/third_party/quic/core/crypto/crypto_server_config_protobuf.cc
deleted file mode 100644
index d9cbadbf..0000000
--- a/net/third_party/quic/core/crypto/crypto_server_config_protobuf.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
-
-#include "net/third_party/quic/core/quic_time.h"
-
-namespace quic {
-
-QuicServerConfigProtobuf::QuicServerConfigProtobuf()
-    : primary_time_(QuicWallTime::Zero().ToUNIXSeconds()), priority_(0) {}
-
-QuicServerConfigProtobuf::~QuicServerConfigProtobuf() {}
-
-}  // namespace quic
diff --git a/net/third_party/quic/core/crypto/crypto_server_config_protobuf.h b/net/third_party/quic/core/crypto/crypto_server_config_protobuf.h
deleted file mode 100644
index ed20143..0000000
--- a/net/third_party/quic/core/crypto/crypto_server_config_protobuf.h
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_THIRD_PARTY_QUIC_CORE_CRYPTO_CRYPTO_SERVER_CONFIG_PROTOBUF_H_
-#define NET_THIRD_PARTY_QUIC_CORE_CRYPTO_CRYPTO_SERVER_CONFIG_PROTOBUF_H_
-
-#include <cstddef>
-#include <cstdint>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/logging.h"
-#include "base/macros.h"
-#include "net/third_party/quic/core/crypto/crypto_protocol.h"
-#include "net/third_party/quic/platform/api/quic_export.h"
-#include "net/third_party/quic/platform/api/quic_string_piece.h"
-
-namespace quic {
-
-// QuicServerConfigProtobuf contains QUIC server config block and the private
-// keys needed to prove ownership.
-// TODO(rch): sync with server more rationally.
-class QUIC_EXPORT_PRIVATE QuicServerConfigProtobuf {
- public:
-  // PrivateKey contains a QUIC tag of a key exchange algorithm and a
-  // serialised private key for that algorithm. The format of the serialised
-  // private key is specific to the algorithm in question.
-  class QUIC_EXPORT_PRIVATE PrivateKey {
-   public:
-    QuicTag tag() const { return tag_; }
-    void set_tag(QuicTag tag) { tag_ = tag; }
-    std::string private_key() const { return private_key_; }
-    void set_private_key(const std::string& key) { private_key_ = key; }
-
-   private:
-    QuicTag tag_;
-    std::string private_key_;
-  };
-
-  QuicServerConfigProtobuf();
-  ~QuicServerConfigProtobuf();
-
-  size_t key_size() const { return keys_.size(); }
-
-  const PrivateKey& key(size_t i) const {
-    DCHECK_GT(keys_.size(), i);
-    return *keys_[i].get();
-  }
-
-  std::string config() const { return config_; }
-
-  void set_config(QuicStringPiece config) { config.CopyToString(&config_); }
-
-  QuicServerConfigProtobuf::PrivateKey* add_key() {
-    keys_.push_back(std::make_unique<PrivateKey>());
-    return keys_.back().get();
-  }
-
-  void clear_key() { keys_.clear(); }
-
-  bool has_primary_time() const { return primary_time_ > 0; }
-
-  int64_t primary_time() const { return primary_time_; }
-
-  void set_primary_time(int64_t primary_time) { primary_time_ = primary_time; }
-
-  bool has_priority() const { return priority_ > 0; }
-
-  uint64_t priority() const { return priority_; }
-
-  void set_priority(int64_t priority) { priority_ = priority; }
-
-  bool has_source_address_token_secret_override() const {
-    return !source_address_token_secret_override_.empty();
-  }
-
-  std::string source_address_token_secret_override() const {
-    return source_address_token_secret_override_;
-  }
-
-  void set_source_address_token_secret_override(
-      QuicStringPiece source_address_token_secret_override) {
-    source_address_token_secret_override.CopyToString(
-        &source_address_token_secret_override_);
-  }
-
- private:
-  std::vector<std::unique_ptr<PrivateKey>> keys_;
-
-  // config_ is a serialised config in QUIC wire format.
-  std::string config_;
-
-  // primary_time_ contains a UNIX epoch seconds value that indicates when this
-  // config should become primary.
-  int64_t primary_time_;
-
-  // Relative priority of this config vs other configs with the same
-  // primary time.  For use as a secondary sort key when selecting the
-  // primary config.
-  uint64_t priority_;
-
-  // Optional override to the secret used to box/unbox source address
-  // tokens when talking to clients that select this server config.
-  // It can be of any length as it is fed into a KDF before use.
-  std::string source_address_token_secret_override_;
-
-  DISALLOW_COPY_AND_ASSIGN(QuicServerConfigProtobuf);
-};
-
-}  // namespace quic
-
-#endif  // NET_THIRD_PARTY_QUIC_CORE_CRYPTO_CRYPTO_SERVER_CONFIG_PROTOBUF_H_
diff --git a/net/third_party/quic/core/crypto/crypto_server_test.cc b/net/third_party/quic/core/crypto/crypto_server_test.cc
index ac0b7d8..3524f84 100644
--- a/net/third_party/quic/core/crypto/crypto_server_test.cc
+++ b/net/third_party/quic/core/crypto/crypto_server_test.cc
@@ -11,11 +11,11 @@
 #include "net/third_party/quic/core/crypto/cert_compressor.h"
 #include "net/third_party/quic/core/crypto/common_cert_set.h"
 #include "net/third_party/quic/core/crypto/crypto_handshake.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
 #include "net/third_party/quic/core/crypto/crypto_utils.h"
 #include "net/third_party/quic/core/crypto/proof_source.h"
 #include "net/third_party/quic/core/crypto/quic_crypto_server_config.h"
 #include "net/third_party/quic/core/crypto/quic_random.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/quic_socket_address_coder.h"
 #include "net/third_party/quic/core/quic_utils.h"
 #include "net/third_party/quic/core/tls_server_handshaker.h"
diff --git a/net/third_party/quic/core/crypto/quic_crypto_server_config.cc b/net/third_party/quic/core/crypto/quic_crypto_server_config.cc
index 11c7802..3ba2bea 100644
--- a/net/third_party/quic/core/crypto/quic_crypto_server_config.cc
+++ b/net/third_party/quic/core/crypto/quic_crypto_server_config.cc
@@ -17,7 +17,6 @@
 #include "net/third_party/quic/core/crypto/channel_id.h"
 #include "net/third_party/quic/core/crypto/crypto_framer.h"
 #include "net/third_party/quic/core/crypto/crypto_handshake_message.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
 #include "net/third_party/quic/core/crypto/crypto_utils.h"
 #include "net/third_party/quic/core/crypto/curve25519_key_exchange.h"
 #include "net/third_party/quic/core/crypto/ephemeral_key_source.h"
@@ -28,6 +27,7 @@
 #include "net/third_party/quic/core/crypto/quic_encrypter.h"
 #include "net/third_party/quic/core/crypto/quic_hkdf.h"
 #include "net/third_party/quic/core/crypto/quic_random.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/proto/source_address_token.pb.h"
 #include "net/third_party/quic/core/quic_packets.h"
 #include "net/third_party/quic/core/quic_socket_address_coder.h"
@@ -1799,7 +1799,7 @@
   static_assert(sizeof(config->orbit) == kOrbitSize, "incorrect orbit size");
   memcpy(config->orbit, orbit.data(), sizeof(config->orbit));
 
-  if (kexs_tags.size() != protobuf->key_size()) {
+  if (kexs_tags.size() != static_cast<size_t>(protobuf->key_size())) {
     QUIC_LOG(WARNING) << "Server config has " << kexs_tags.size()
                       << " key exchange methods configured, but "
                       << protobuf->key_size() << " private keys";
@@ -1822,7 +1822,7 @@
 
     config->kexs.push_back(tag);
 
-    for (size_t j = 0; j < protobuf->key_size(); j++) {
+    for (int j = 0; j < protobuf->key_size(); j++) {
       const QuicServerConfigProtobuf::PrivateKey& key = protobuf->key(i);
       if (key.tag() == tag) {
         private_key = key.private_key();
diff --git a/net/third_party/quic/core/crypto/quic_crypto_server_config_test.cc b/net/third_party/quic/core/crypto/quic_crypto_server_config_test.cc
index 8f1ea9ee..082e7b5 100644
--- a/net/third_party/quic/core/crypto/quic_crypto_server_config_test.cc
+++ b/net/third_party/quic/core/crypto/quic_crypto_server_config_test.cc
@@ -12,8 +12,8 @@
 #include "net/third_party/quic/core/crypto/chacha20_poly1305_encrypter.h"
 #include "net/third_party/quic/core/crypto/crypto_handshake_message.h"
 #include "net/third_party/quic/core/crypto/crypto_secret_boxer.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
 #include "net/third_party/quic/core/crypto/quic_random.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/quic_time.h"
 #include "net/third_party/quic/core/tls_server_handshaker.h"
 #include "net/third_party/quic/platform/api/quic_socket_address.h"
diff --git a/net/third_party/quic/core/proto/crypto_server_config.proto b/net/third_party/quic/core/proto/crypto_server_config.proto
new file mode 100644
index 0000000..06db4a7
--- /dev/null
+++ b/net/third_party/quic/core/proto/crypto_server_config.proto
@@ -0,0 +1,34 @@
+// 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.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package quic;
+
+// QuicServerConfigProtobuf contains QUIC server config block and the private
+// keys needed to prove ownership.
+message QuicServerConfigProtobuf {
+  // config is a serialised config in QUIC wire format.
+  required bytes config = 1;
+
+  // PrivateKey contains a QUIC tag of a key exchange algorithm and a
+  // serialised private key for that algorithm. The format of the serialised
+  // private key is specific to the algorithm in question.
+  message PrivateKey {
+    required uint32 tag = 1;
+    required string private_key = 2;
+  }
+  repeated PrivateKey key = 2;
+
+  // primary_time contains a UNIX epoch seconds value that indicates when this
+  // config should become primary.
+  optional int64 primary_time = 3;
+
+  // Relative priority of this config vs other configs with the same
+  // primary time.  For use as a secondary sort key when selecting the
+  // primary config.
+  optional uint64 priority = 4;
+};
diff --git a/net/third_party/quic/quartc/quartc_session_test.cc b/net/third_party/quic/quartc/quartc_session_test.cc
index c1ea06aa..4607a7c5 100644
--- a/net/third_party/quic/quartc/quartc_session_test.cc
+++ b/net/third_party/quic/quartc/quartc_session_test.cc
@@ -5,7 +5,7 @@
 #include "net/third_party/quic/quartc/quartc_session.h"
 
 #include "build/build_config.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/quic_simple_buffer_allocator.h"
 #include "net/third_party/quic/core/quic_types.h"
 #include "net/third_party/quic/core/tls_client_handshaker.h"
diff --git a/net/third_party/quic/test_tools/crypto_test_utils.cc b/net/third_party/quic/test_tools/crypto_test_utils.cc
index 3080ed39..a9af2c7 100644
--- a/net/third_party/quic/test_tools/crypto_test_utils.cc
+++ b/net/third_party/quic/test_tools/crypto_test_utils.cc
@@ -10,11 +10,11 @@
 #include "net/third_party/quic/core/crypto/channel_id.h"
 #include "net/third_party/quic/core/crypto/common_cert_set.h"
 #include "net/third_party/quic/core/crypto/crypto_handshake.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
 #include "net/third_party/quic/core/crypto/quic_crypto_server_config.h"
 #include "net/third_party/quic/core/crypto/quic_decrypter.h"
 #include "net/third_party/quic/core/crypto/quic_encrypter.h"
 #include "net/third_party/quic/core/crypto/quic_random.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/quic_crypto_client_stream.h"
 #include "net/third_party/quic/core/quic_crypto_server_stream.h"
 #include "net/third_party/quic/core/quic_crypto_stream.h"
@@ -40,7 +40,6 @@
 #include "third_party/boringssl/src/include/openssl/nid.h"
 #include "third_party/boringssl/src/include/openssl/sha.h"
 
-
 namespace quic {
 namespace test {
 
diff --git a/net/third_party/quic/test_tools/crypto_test_utils_test.cc b/net/third_party/quic/test_tools/crypto_test_utils_test.cc
index 900a1437..6d1a5e7b 100644
--- a/net/third_party/quic/test_tools/crypto_test_utils_test.cc
+++ b/net/third_party/quic/test_tools/crypto_test_utils_test.cc
@@ -5,7 +5,7 @@
 #include "net/third_party/quic/test_tools/crypto_test_utils.h"
 
 #include "net/test/gtest_util.h"
-#include "net/third_party/quic/core/crypto/crypto_server_config_protobuf.h"
+#include "net/third_party/quic/core/proto/crypto_server_config.pb.h"
 #include "net/third_party/quic/core/quic_utils.h"
 #include "net/third_party/quic/core/tls_server_handshaker.h"
 #include "net/third_party/quic/platform/api/quic_ptr_util.h"
diff --git a/remoting/host/file_proxy_wrapper.h b/remoting/host/file_proxy_wrapper.h
index 3105e84..0c959dd 100644
--- a/remoting/host/file_proxy_wrapper.h
+++ b/remoting/host/file_proxy_wrapper.h
@@ -12,8 +12,6 @@
 
 namespace remoting {
 
-class CompoundBuffer;
-
 // FileProxyWrapper is an interface for implementing platform-specific file
 // writers for file transfers. Each operation is posted to a separate file IO
 // thread, and possibly a different process depending on the platform.
@@ -43,13 +41,11 @@
     kFailed = 5,
   };
 
-  // If an error occured while writing the file, State will be kFailed and the
-  // Optional will contain the error which occured. If the file was written to
-  // and closed successfully, State will be kClosed and the Optional will be
-  // empty.
-  typedef base::OnceCallback<
-      void(State, base::Optional<protocol::FileTransferResponse_ErrorCode>)>
-      StatusCallback;
+  // If writing the file fails, the status callback will be called with the
+  // causal error. Otherwise, the callback will be called with a nullopt once
+  // the file has been successfully written.
+  typedef base::OnceCallback<void(base::Optional<protocol::FileTransfer_Error>)>
+      ResultCallback;
 
   typedef base::OnceCallback<void(int64_t filesize)> OpenFileCallback;
 
@@ -62,18 +58,18 @@
   FileProxyWrapper();
   virtual ~FileProxyWrapper();
 
-  // |status_callback| is called either when FileProxyWrapper encounters an
+  // |result_callback| is called either when FileProxyWrapper encounters an
   // error or when Close() has been called and the file has been written
-  // successfully. |status_callback| must not immediately destroy this
+  // successfully. |result_callback| must not immediately destroy this
   // FileProxyWrapper.
-  virtual void Init(StatusCallback status_callback) = 0;
+  virtual void Init(ResultCallback result_callback) = 0;
   // Creates a new file and opens it for writing.
   virtual void CreateFile(const base::FilePath& directory,
                           const std::string& filename) = 0;
   // Opens an existing file for reading.
   virtual void OpenFile(const base::FilePath& filepath,
                         OpenFileCallback open_callback) = 0;
-  virtual void WriteChunk(std::unique_ptr<CompoundBuffer> buffer) = 0;
+  virtual void WriteChunk(std::string buffer) = 0;
   // |size| must not be greater than the remaining amount of bytes in the file
   // from the current read offset. After calling ReadChunk(), ReadChunk() cannot
   // be called again until |read_callback| is called and state() returns kReady.
diff --git a/remoting/host/file_proxy_wrapper_linux.cc b/remoting/host/file_proxy_wrapper_linux.cc
index 8ab58a2a..917622a 100644
--- a/remoting/host/file_proxy_wrapper_linux.cc
+++ b/remoting/host/file_proxy_wrapper_linux.cc
@@ -12,28 +12,28 @@
 #include "base/containers/queue.h"
 #include "base/files/file_util.h"
 #include "base/memory/ptr_util.h"
+#include "base/optional.h"
 #include "base/sequenced_task_runner.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_checker.h"
 #include "remoting/base/compound_buffer.h"
+#include "remoting/protocol/file_transfer_helpers.h"
 
 namespace {
 
 constexpr char kTempFileExtension[] = ".crdownload";
 
-remoting::protocol::FileTransferResponse_ErrorCode FileErrorToResponseError(
+remoting::protocol::FileTransfer_Error_Type FileErrorToResponseErrorType(
     base::File::Error file_error) {
   switch (file_error) {
     case base::File::FILE_ERROR_ACCESS_DENIED:
-      return remoting::protocol::
-          FileTransferResponse_ErrorCode_PERMISSIONS_ERROR;
+      return remoting::protocol::FileTransfer_Error_Type_PERMISSION_DENIED;
     case base::File::FILE_ERROR_NO_SPACE:
-      return remoting::protocol::
-          FileTransferResponse_ErrorCode_OUT_OF_DISK_SPACE;
+      return remoting::protocol::FileTransfer_Error_Type_OUT_OF_DISK_SPACE;
     default:
-      return remoting::protocol::FileTransferResponse_ErrorCode_FILE_IO_ERROR;
+      return remoting::protocol::FileTransfer_Error_Type_IO_ERROR;
   }
 }
 
@@ -47,12 +47,12 @@
   ~FileProxyWrapperLinux() override;
 
   // FileProxyWrapper implementation.
-  void Init(StatusCallback status_callback) override;
+  void Init(ResultCallback result_callback) override;
   void CreateFile(const base::FilePath& directory,
                   const std::string& filename) override;
   void OpenFile(const base::FilePath& filepath,
                 OpenFileCallback open_callback) override;
-  void WriteChunk(std::unique_ptr<CompoundBuffer> buffer) override;
+  void WriteChunk(std::string buffer) override;
   void ReadChunk(uint64_t chunk_size, ReadCallback read_callback) override;
   void Close() override;
   void Cancel() override;
@@ -72,7 +72,7 @@
 
   struct FileChunk {
     int64_t write_offset;
-    std::vector<char> data;
+    std::string data;
   };
 
   // Callbacks for CreateFile().
@@ -84,7 +84,7 @@
   void GetInfoCallback(base::File::Error error, const base::File::Info& info);
 
   // Callbacks for WriteChunk().
-  void WriteFileChunk(std::unique_ptr<FileChunk> chunk);
+  void WriteFileChunk(FileChunk chunk);
   void WriteCallback(base::File::Error error, int bytes_written);
 
   // Callbacks for ReadChunk().
@@ -98,14 +98,15 @@
   void MoveToDestination(int unique_path_number);
   void MoveFileCallback(bool success);
 
-  void CancelWithError(protocol::FileTransferResponse_ErrorCode error);
+  void CancelWithError(protocol::FileTransfer_Error error,
+                       const std::string& log_message);
   void SetState(State state);
 
   State state_ = kUninitialized;
   scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
   std::unique_ptr<base::FileProxy> file_proxy_;
 
-  StatusCallback status_callback_;
+  ResultCallback result_callback_;
 
   // CreateFile() state - for writing only
   bool temp_file_created_ = false;
@@ -118,10 +119,10 @@
 
   // WriteChunk() state - for writing only
   int64_t next_write_file_offset_ = 0;
-  base::queue<std::unique_ptr<FileChunk>> file_chunks_;
+  base::queue<FileChunk> file_chunks_;
   // active_file_chunk_ is the chunk currently being written to disk. It is
   // empty if nothing is being written to disk right now.
-  std::unique_ptr<FileChunk> active_file_chunk_;
+  base::Optional<FileChunk> active_file_chunk_;
 
   // ReadChunk() state - for reading only
   ReadCallback read_callback_;
@@ -141,11 +142,11 @@
   DCHECK(thread_checker_.CalledOnValidThread());
 }
 
-void FileProxyWrapperLinux::Init(StatusCallback status_callback) {
+void FileProxyWrapperLinux::Init(ResultCallback result_callback) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
   SetState(kInitialized);
-  status_callback_ = std::move(status_callback);
+  result_callback_ = std::move(result_callback);
 
   file_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
       {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
@@ -154,7 +155,10 @@
   file_proxy_.reset(new base::FileProxy(file_task_runner_.get()));
 
   if (!file_task_runner_) {
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "Failed to create file task runner.");
   }
 }
 
@@ -184,16 +188,19 @@
           temp_filepath_, base::File::FLAG_CREATE | base::File::FLAG_WRITE,
           base::Bind(&FileProxyWrapperLinux::CreateTempFileCallback,
                      weak_ptr_))) {
-    // file_proxy_ failed to post a task to file_task_runner_.
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "File proxy failed to post task to file task runner.");
   }
 }
 
 void FileProxyWrapperLinux::CreateTempFileCallback(base::File::Error error) {
   if (error) {
-    LOG(ERROR) << "Creating temp file \"" << temp_filepath_.value()
-               << "\" failed with error: " << error;
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, FileErrorToResponseErrorType(error), error),
+        base::StringPrintf("Creating temp file failed with error: %d", error));
   } else {
     // Now that the temp file has been created successfully, we could lock it
     // using base::File::Lock(), but this would not prevent the file from being
@@ -205,8 +212,7 @@
     // Chunks to write may have been queued while we were creating the file,
     // start writing them now if there were any.
     if (!file_chunks_.empty()) {
-      std::unique_ptr<FileChunk> chunk_to_write =
-          std::move(file_chunks_.front());
+      FileChunk chunk_to_write = std::move(file_chunks_.front());
       file_chunks_.pop();
       WriteFileChunk(std::move(chunk_to_write));
     }
@@ -225,37 +231,46 @@
   if (!file_proxy_->CreateOrOpen(
           read_filepath_, base::File::FLAG_OPEN | base::File::FLAG_READ,
           base::Bind(&FileProxyWrapperLinux::OpenCallback, weak_ptr_))) {
-    // file_proxy_ failed to post a task to file_task_runner_.
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "File proxy failed to post task to file task runner.");
   }
 }
 
 void FileProxyWrapperLinux::OpenCallback(base::File::Error error) {
   if (error) {
-    LOG(ERROR) << "Opening file \"" << read_filepath_.value()
-               << "\" failed with error: " << error;
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, FileErrorToResponseErrorType(error), error),
+        base::StringPrintf("Opening file failed with error: %d", error));
     return;
   }
 
   if (!file_proxy_->GetInfo(
           base::Bind(&FileProxyWrapperLinux::GetInfoCallback, weak_ptr_))) {
-    // file_proxy_ failed to post a task to file_task_runner_.
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "File proxy failed to post task to file task runner.");
   }
 }
 
 void FileProxyWrapperLinux::GetInfoCallback(base::File::Error error,
                                             const base::File::Info& info) {
   if (error) {
-    LOG(ERROR) << "Getting file info failed with error: " << error;
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, FileErrorToResponseErrorType(error), error),
+        base::StringPrintf("Getting file info failed with error: %d", error));
     return;
   }
 
   if (info.is_directory) {
-    LOG(ERROR) << "Tried to open directory for reading chunks.";
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "Tried to open directory for reading chunks.");
     return;
   }
 
@@ -263,21 +278,15 @@
   std::move(open_callback_).Run(info.size);
 }
 
-void FileProxyWrapperLinux::WriteChunk(std::unique_ptr<CompoundBuffer> buffer) {
+void FileProxyWrapperLinux::WriteChunk(std::string buffer) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK_EQ(mode_, kWriting);
   DCHECK_EQ(state_, kReady);
 
-  std::unique_ptr<FileChunk> new_file_chunk = base::WrapUnique(new FileChunk());
-  new_file_chunk->data.resize(buffer->total_bytes());
-  // This copy could be avoided if CompoundBuffer were updated to allowed us to
-  // access the individual buffers in |buffer|.
-  // TODO(jarhar): Update CompoundBuffer to allow data transfer without a
-  // memcopy.
-  buffer->CopyTo(new_file_chunk->data.data(), new_file_chunk->data.size());
-
-  new_file_chunk->write_offset = next_write_file_offset_;
-  next_write_file_offset_ += new_file_chunk->data.size();
+  FileChunk new_file_chunk;
+  new_file_chunk.data = std::move(buffer);
+  new_file_chunk.write_offset = next_write_file_offset_;
+  next_write_file_offset_ += new_file_chunk.data.size();
 
   // If the file hasn't been created yet or there is another chunk currently
   // being written, we have to queue this chunk to be written later.
@@ -292,15 +301,16 @@
   }
 }
 
-void FileProxyWrapperLinux::WriteFileChunk(std::unique_ptr<FileChunk> chunk) {
+void FileProxyWrapperLinux::WriteFileChunk(FileChunk chunk) {
   active_file_chunk_ = std::move(chunk);
-  DCHECK(active_file_chunk_);
   if (!file_proxy_->Write(
           active_file_chunk_->write_offset, active_file_chunk_->data.data(),
           active_file_chunk_->data.size(),
           base::Bind(&FileProxyWrapperLinux::WriteCallback, weak_ptr_))) {
-    // file_proxy_ failed to post a task to file_task_runner_.
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "File proxy failed to post task to file task runner.");
   }
 }
 
@@ -311,14 +321,15 @@
     if (!error) {
       error = base::File::FILE_ERROR_FAILED;
     }
-    LOG(ERROR) << "Write failed with error: " << error;
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(protocol::MakeFileTransferError(
+                        FROM_HERE, FileErrorToResponseErrorType(error), error),
+                    base::StringPrintf("Write failed with error: %d", error));
     return;
   }
 
   active_file_chunk_.reset();
   if (!file_chunks_.empty()) {
-    std::unique_ptr<FileChunk> chunk_to_write = std::move(file_chunks_.front());
+    FileChunk chunk_to_write = std::move(file_chunks_.front());
     file_chunks_.pop();
     WriteFileChunk(std::move(chunk_to_write));
   } else if (state_ == kBusy) {
@@ -339,8 +350,10 @@
   if (!file_proxy_->Read(
           next_read_file_offset_, expected_bytes_read_,
           base::Bind(&FileProxyWrapperLinux::ReadChunkCallback, weak_ptr_))) {
-    // file_proxy_ failed to post a task to file_task_runner_.
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
+    CancelWithError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+        "File proxy failed to post task to file task runner.");
   }
 }
 
@@ -351,8 +364,9 @@
     if (!error) {
       error = base::File::FILE_ERROR_FAILED;
     }
-    LOG(ERROR) << "Read failed with error: " << error;
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(protocol::MakeFileTransferError(
+                        FROM_HERE, FileErrorToResponseErrorType(error), error),
+                    base::StringPrintf("Read failed with error: %d", error));
     return;
   }
 
@@ -392,7 +406,9 @@
 
 void FileProxyWrapperLinux::CloseCallback(base::File::Error error) {
   if (error) {
-    CancelWithError(FileErrorToResponseError(error));
+    CancelWithError(protocol::MakeFileTransferError(
+                        FROM_HERE, FileErrorToResponseErrorType(error), error),
+                    base::StringPrintf("Close failed with error: %d", error));
     return;
   }
 
@@ -419,11 +435,11 @@
 
   if (success) {
     SetState(kClosed);
-    std::move(status_callback_)
-        .Run(state_,
-             base::Optional<protocol::FileTransferResponse_ErrorCode>());
+    std::move(result_callback_).Run(base::nullopt);
   } else {
-    CancelWithError(protocol::FileTransferResponse_ErrorCode_FILE_IO_ERROR);
+    CancelWithError(protocol::MakeFileTransferError(
+                        FROM_HERE, protocol::FileTransfer_Error_Type_IO_ERROR),
+                    "Failed to move file to final destination.");
   }
 }
 
@@ -432,6 +448,10 @@
     file_proxy_->Close(base::DoNothing());
   }
 
+  // Invalidate any outstanding weak pointers to ensure we don't get unexpected
+  // callbacks.
+  weak_factory_.InvalidateWeakPtrs();
+
   if (mode_ == kWriting) {
     if (state_ == kReady || state_ == kBusy) {
       file_task_runner_->PostTask(
@@ -450,12 +470,11 @@
   SetState(kFailed);
 }
 
-void FileProxyWrapperLinux::CancelWithError(
-    protocol::FileTransferResponse_ErrorCode error) {
+void FileProxyWrapperLinux::CancelWithError(protocol::FileTransfer_Error error,
+                                            const std::string& log_message) {
+  LOG(ERROR) << log_message;
   Cancel();
-  std::move(status_callback_)
-      .Run(state_,
-           base::Optional<protocol::FileTransferResponse_ErrorCode>(error));
+  std::move(result_callback_).Run(error);
 }
 
 void FileProxyWrapperLinux::SetState(State state) {
diff --git a/remoting/host/file_proxy_wrapper_linux_unittest.cc b/remoting/host/file_proxy_wrapper_linux_unittest.cc
index 5ecab66e..440fa27 100644
--- a/remoting/host/file_proxy_wrapper_linux_unittest.cc
+++ b/remoting/host/file_proxy_wrapper_linux_unittest.cc
@@ -26,14 +26,6 @@
 const std::string& kTestDataTwo = "this is the second test string";
 const std::string& kTestDataThree = "this is the third test string";
 
-std::unique_ptr<remoting::CompoundBuffer> ToBuffer(const std::string& data) {
-  std::unique_ptr<remoting::CompoundBuffer> buffer =
-      std::make_unique<remoting::CompoundBuffer>();
-  buffer->Append(base::MakeRefCounted<net::WrappedIOBuffer>(data.data()),
-                 data.size());
-  return buffer;
-}
-
 }  // namespace
 
 namespace remoting {
@@ -52,9 +44,7 @@
     return dir_.GetPath().Append(kTestFilename);
   }
 
-  void StatusCallback(
-      FileProxyWrapper::State state,
-      base::Optional<protocol::FileTransferResponse_ErrorCode> error);
+  void ResultCallback(base::Optional<protocol::FileTransfer_Error> error);
   void OpenFileCallback(int64_t filesize);
   void ReadChunkCallback(std::unique_ptr<std::vector<char>> chunk);
 
@@ -63,8 +53,7 @@
   base::ScopedTempDir dir_;
 
   std::unique_ptr<FileProxyWrapper> file_proxy_wrapper_;
-  base::Optional<protocol::FileTransferResponse_ErrorCode> error_;
-  FileProxyWrapper::State final_state_;
+  base::Optional<protocol::FileTransfer_Error> error_;
   bool done_callback_succeeded_;
 
   base::queue<std::vector<char>> read_chunks_;
@@ -82,10 +71,9 @@
 
   file_proxy_wrapper_ = FileProxyWrapper::Create();
   file_proxy_wrapper_->Init(base::BindOnce(
-      &FileProxyWrapperLinuxTest::StatusCallback, base::Unretained(this)));
+      &FileProxyWrapperLinuxTest::ResultCallback, base::Unretained(this)));
 
-  error_ = base::Optional<protocol::FileTransferResponse_ErrorCode>();
-  final_state_ = FileProxyWrapper::kUninitialized;
+  error_ = base::nullopt;
   done_callback_succeeded_ = false;
 
   read_chunks_ = base::queue<std::vector<char>>();
@@ -96,12 +84,10 @@
   file_proxy_wrapper_.reset();
 }
 
-void FileProxyWrapperLinuxTest::StatusCallback(
-    FileProxyWrapper::State state,
-    base::Optional<protocol::FileTransferResponse_ErrorCode> error) {
-  final_state_ = state;
+void FileProxyWrapperLinuxTest::ResultCallback(
+    base::Optional<protocol::FileTransfer_Error> error) {
   error_ = error;
-  done_callback_succeeded_ = !error_.has_value();
+  done_callback_succeeded_ = !error_;
 }
 
 void FileProxyWrapperLinuxTest::OpenFileCallback(int64_t filesize) {
@@ -117,14 +103,13 @@
 // throwing any errors.
 TEST_F(FileProxyWrapperLinuxTest, WriteThreeChunks) {
   file_proxy_wrapper_->CreateFile(TestDir(), kTestFilename);
-  file_proxy_wrapper_->WriteChunk(ToBuffer(kTestDataOne));
-  file_proxy_wrapper_->WriteChunk(ToBuffer(kTestDataTwo));
-  file_proxy_wrapper_->WriteChunk(ToBuffer(kTestDataThree));
+  file_proxy_wrapper_->WriteChunk(kTestDataOne);
+  file_proxy_wrapper_->WriteChunk(kTestDataTwo);
+  file_proxy_wrapper_->WriteChunk(kTestDataThree);
   file_proxy_wrapper_->Close();
   scoped_task_environment_.RunUntilIdle();
 
   ASSERT_FALSE(error_);
-  ASSERT_EQ(final_state_, FileProxyWrapper::kClosed);
   ASSERT_TRUE(done_callback_succeeded_);
 
   std::string actual_file_data;
@@ -135,7 +120,7 @@
 // Verifies that calling Cancel() deletes any temporary or destination files.
 TEST_F(FileProxyWrapperLinuxTest, CancelDeletesFiles) {
   file_proxy_wrapper_->CreateFile(TestDir(), kTestFilename);
-  file_proxy_wrapper_->WriteChunk(ToBuffer(kTestDataOne));
+  file_proxy_wrapper_->WriteChunk(kTestDataOne);
   scoped_task_environment_.RunUntilIdle();
 
   file_proxy_wrapper_->Cancel();
@@ -151,7 +136,7 @@
   WriteFile(TestFilePath(), kTestDataOne.data(), kTestDataOne.size());
 
   file_proxy_wrapper_->CreateFile(TestDir(), kTestFilename);
-  file_proxy_wrapper_->WriteChunk(ToBuffer(kTestDataTwo));
+  file_proxy_wrapper_->WriteChunk(kTestDataTwo);
   file_proxy_wrapper_->Close();
   scoped_task_environment_.RunUntilIdle();
 
@@ -161,7 +146,6 @@
   ASSERT_STREQ(kTestDataTwo.data(), actual_file_data.data());
 
   ASSERT_FALSE(error_);
-  ASSERT_EQ(final_state_, FileProxyWrapper::kClosed);
 }
 
 // Verifies that FileProxyWrapper can read chunks from a file.
@@ -222,7 +206,9 @@
                                  base::Unretained(this)));
   scoped_task_environment_.RunUntilIdle();
 
-  ASSERT_EQ(error_, protocol::FileTransferResponse_ErrorCode_FILE_IO_ERROR);
+  ASSERT_TRUE(error_);
+  ASSERT_TRUE(error_->has_type());
+  ASSERT_EQ(error_->type(), protocol::FileTransfer_Error_Type_IO_ERROR);
 }
 
 }  // namespace remoting
diff --git a/remoting/host/file_transfer_message_handler.cc b/remoting/host/file_transfer_message_handler.cc
index bf067374..b8f2365 100644
--- a/remoting/host/file_transfer_message_handler.cc
+++ b/remoting/host/file_transfer_message_handler.cc
@@ -7,7 +7,9 @@
 #include "base/bind.h"
 #include "base/path_service.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "remoting/base/compound_buffer.h"
+#include "remoting/protocol/file_transfer_helpers.h"
 
 namespace remoting {
 
@@ -26,26 +28,76 @@
   // base::Unretained is safe here because |file_proxy_wrapper_| is owned by
   // this class, so the callback cannot be run after this class is destroyed.
   file_proxy_wrapper_->Init(base::BindOnce(
-      &FileTransferMessageHandler::StatusCallback, base::Unretained(this)));
+      &FileTransferMessageHandler::SaveResultCallback, base::Unretained(this)));
 }
 
 void FileTransferMessageHandler::OnIncomingMessage(
     std::unique_ptr<CompoundBuffer> buffer) {
-  FileProxyWrapper::State proxy_state = file_proxy_wrapper_->state();
-  if (proxy_state == FileProxyWrapper::kBusy ||
-      proxy_state == FileProxyWrapper::kClosed ||
-      proxy_state == FileProxyWrapper::kFailed) {
+  protocol::FileTransfer message;
+  CompoundBufferInputStream buffer_stream(buffer.get());
+  if (!message.ParseFromZeroCopyStream(&buffer_stream)) {
+    CancelAndSendError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_PROTOCOL_ERROR),
+        "Failed to parse message.");
     return;
   }
 
-  if (request_) {
-    // File transfer is already in progress, just pass the buffer to
-    // FileProxyWrapper to be written.
-    SendToFileProxy(std::move(buffer));
-  } else {
-    // A new file transfer has been started, parse the message into a request
-    // protobuf.
-    ParseNewRequest(std::move(buffer));
+  if (message.has_metadata()) {
+    StartFile(std::move(*message.mutable_metadata()));
+    return;
+  }
+
+  switch (file_proxy_wrapper_->state()) {
+    case FileProxyWrapper::kReady:
+      // This is the expected state.
+      break;
+    case FileProxyWrapper::kFailed:
+      // Ignore any messages that come in after we've returned an error.
+      return;
+    case FileProxyWrapper::kInitialized:
+      // Don't send an error in response to an error.
+      if (!message.has_error()) {
+        CancelAndSendError(
+            protocol::MakeFileTransferError(
+                FROM_HERE, protocol::FileTransfer_Error_Type_PROTOCOL_ERROR),
+            "First message must contain file metadata");
+      }
+      return;
+    case FileProxyWrapper::kBusy:
+    case FileProxyWrapper::kClosed:
+      CancelAndSendError(
+          protocol::MakeFileTransferError(
+              FROM_HERE, protocol::FileTransfer_Error_Type_PROTOCOL_ERROR),
+          "Message received after End");
+      return;
+    default:
+      CancelAndSendError(
+          protocol::MakeFileTransferError(
+              FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
+          base::StringPrintf("Unexpected FileProxyWrapper state: %d",
+                             file_proxy_wrapper_->state()));
+      return;
+  }
+
+  switch (message.message_case()) {
+    case protocol::FileTransfer::kData:
+      file_proxy_wrapper_->WriteChunk(
+          std::move(*message.mutable_data()->mutable_data()));
+      break;
+    case protocol::FileTransfer::kEnd:
+      file_proxy_wrapper_->Close();
+      break;
+    case protocol::FileTransfer::kCancel:
+    case protocol::FileTransfer::kError:
+      file_proxy_wrapper_->Cancel();
+      break;
+    default:
+      CancelAndSendError(
+          protocol::MakeFileTransferError(
+              FROM_HERE, protocol::FileTransfer_Error_Type_PROTOCOL_ERROR),
+          "Received invalid file-transfer message.");
+      break;
   }
 }
 
@@ -58,66 +110,44 @@
   }
 }
 
-void FileTransferMessageHandler::StatusCallback(
-    FileProxyWrapper::State state,
-    base::Optional<protocol::FileTransferResponse_ErrorCode> error) {
-  protocol::FileTransferResponse response;
-  if (error.has_value()) {
-    DCHECK_EQ(state, FileProxyWrapper::kFailed);
-    response.set_error(error.value());
+void FileTransferMessageHandler::SaveResultCallback(
+    base::Optional<protocol::FileTransfer_Error> error) {
+  protocol::FileTransfer result_message;
+  if (error) {
+    *result_message.mutable_error() = std::move(*error);
   } else {
-    DCHECK_EQ(state, FileProxyWrapper::kClosed);
-    response.set_state(protocol::FileTransferResponse_TransferState_DONE);
-    response.set_total_bytes_written(request_->filesize());
+    result_message.mutable_success();
   }
-  Send(response, base::Closure());
+  Send(result_message, base::Closure());
 }
 
-void FileTransferMessageHandler::SendToFileProxy(
-    std::unique_ptr<CompoundBuffer> buffer) {
-  DCHECK_EQ(file_proxy_wrapper_->state(), FileProxyWrapper::kReady);
-
-  total_bytes_written_ += buffer->total_bytes();
-  file_proxy_wrapper_->WriteChunk(std::move(buffer));
-  if (total_bytes_written_ >= request_->filesize()) {
-    file_proxy_wrapper_->Close();
-  }
-
-  if (total_bytes_written_ > request_->filesize()) {
-    LOG(ERROR) << "File transfer received " << total_bytes_written_
-               << " bytes, but request said there would only be "
-               << request_->filesize() << " bytes.";
-  }
-}
-
-void FileTransferMessageHandler::ParseNewRequest(
-    std::unique_ptr<CompoundBuffer> buffer) {
-  std::string message;
-  message.resize(buffer->total_bytes());
-  buffer->CopyTo(base::data(message), message.size());
-
-  request_ = std::make_unique<protocol::FileTransferRequest>();
-  if (!request_->ParseFromString(message)) {
-    CancelAndSendError("Failed to parse request protobuf");
+void FileTransferMessageHandler::StartFile(
+    protocol::FileTransfer::Metadata metadata) {
+  if (file_proxy_wrapper_->state() != FileProxyWrapper::kInitialized) {
+    CancelAndSendError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_PROTOCOL_ERROR),
+        "Only one file per connection is supported.");
     return;
   }
 
   base::FilePath target_directory;
   if (!base::PathService::Get(base::DIR_USER_DESKTOP, &target_directory)) {
     CancelAndSendError(
+        protocol::MakeFileTransferError(
+            FROM_HERE, protocol::FileTransfer_Error_Type_UNEXPECTED_ERROR),
         "Failed to get DIR_USER_DESKTOP from base::PathService::Get");
     return;
   }
-
-  file_proxy_wrapper_->CreateFile(target_directory, request_->filename());
+  file_proxy_wrapper_->CreateFile(target_directory, metadata.filename());
 }
 
-void FileTransferMessageHandler::CancelAndSendError(const std::string& error) {
-  LOG(ERROR) << error;
+void FileTransferMessageHandler::CancelAndSendError(
+    protocol::FileTransfer_Error error,
+    const std::string& log_message) {
+  LOG(ERROR) << log_message;
   file_proxy_wrapper_->Cancel();
-  protocol::FileTransferResponse response;
-  response.set_error(protocol::FileTransferResponse_ErrorCode_UNEXPECTED_ERROR);
-  Send(response, base::Closure());
+  SaveResultCallback(error);
 }
 
 }  // namespace remoting
diff --git a/remoting/host/file_transfer_message_handler.h b/remoting/host/file_transfer_message_handler.h
index 543be54..84b20ff3 100644
--- a/remoting/host/file_transfer_message_handler.h
+++ b/remoting/host/file_transfer_message_handler.h
@@ -9,6 +9,7 @@
 #include <memory>
 #include <string>
 
+#include "base/optional.h"
 #include "remoting/host/file_proxy_wrapper.h"
 #include "remoting/proto/file_transfer.pb.h"
 #include "remoting/protocol/named_message_pipe_handler.h"
@@ -30,16 +31,12 @@
   void OnDisconnecting() override;
 
  private:
-  void StatusCallback(
-      FileProxyWrapper::State state,
-      base::Optional<protocol::FileTransferResponse_ErrorCode> error);
-  void SendToFileProxy(std::unique_ptr<CompoundBuffer> buffer);
-  void ParseNewRequest(std::unique_ptr<CompoundBuffer> buffer);
-  void CancelAndSendError(const std::string& error);
+  void SaveResultCallback(base::Optional<protocol::FileTransfer_Error> error);
+  void StartFile(protocol::FileTransfer_Metadata metadata);
+  void CancelAndSendError(protocol::FileTransfer_Error error,
+                          const std::string& log_message);
 
   std::unique_ptr<FileProxyWrapper> file_proxy_wrapper_;
-  std::unique_ptr<protocol::FileTransferRequest> request_;
-  uint64_t total_bytes_written_ = 0;
 };
 
 }  // namespace remoting
diff --git a/remoting/host/file_transfer_message_handler_unittest.cc b/remoting/host/file_transfer_message_handler_unittest.cc
index 81d00e74..0d22e7f 100644
--- a/remoting/host/file_transfer_message_handler_unittest.cc
+++ b/remoting/host/file_transfer_message_handler_unittest.cc
@@ -17,6 +17,7 @@
 #include "remoting/host/file_proxy_wrapper.h"
 #include "remoting/protocol/fake_message_pipe.h"
 #include "remoting/protocol/fake_message_pipe_wrapper.h"
+#include "remoting/protocol/file_transfer_helpers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
@@ -24,14 +25,27 @@
 constexpr char kTestDatachannelName[] = "filetransfer-test";
 constexpr char kTestFilename[] = "test-file.txt";
 
-std::unique_ptr<remoting::CompoundBuffer> ToBuffer(const std::string& data) {
+std::unique_ptr<remoting::CompoundBuffer> StringToBuffer(
+    const std::string& data) {
   std::unique_ptr<remoting::CompoundBuffer> buffer =
       std::make_unique<remoting::CompoundBuffer>();
-  buffer->Append(base::MakeRefCounted<net::WrappedIOBuffer>(data.data()),
+  buffer->Append(base::MakeRefCounted<net::StringIOBuffer>(data.data()),
                  data.size());
   return buffer;
 }
 
+std::unique_ptr<remoting::CompoundBuffer> MessageToBuffer(
+    const remoting::protocol::FileTransfer& message) {
+  return StringToBuffer(message.SerializeAsString());
+}
+
+std::unique_ptr<remoting::CompoundBuffer> DataToBuffer(
+    const std::string& data) {
+  remoting::protocol::FileTransfer message;
+  message.mutable_data()->set_data(data);
+  return MessageToBuffer(message);
+}
+
 // base::queue doesn't provide operator==.
 template <typename T>
 bool QueuesEqual(const base::queue<T>& a, const base::queue<T>& b) {
@@ -59,27 +73,26 @@
   ~FakeFileProxyWrapper() override;
 
   // FileProxyWrapper implementation.
-  void Init(StatusCallback status_callback) override;
+  void Init(ResultCallback result_callback) override;
   void CreateFile(const base::FilePath& directory,
                   const std::string& filename) override;
   void OpenFile(const base::FilePath& filepath,
                 OpenFileCallback open_callback) override;
-  void WriteChunk(std::unique_ptr<CompoundBuffer> buffer) override;
+  void WriteChunk(std::string buffer) override;
   void ReadChunk(uint64_t chunk_size, ReadCallback read_callback) override;
   void Close() override;
   void Cancel() override;
   State state() override;
 
-  void RunStatusCallback(
-      base::Optional<protocol::FileTransferResponse_ErrorCode> error);
+  void RunResultCallback(base::Optional<protocol::FileTransfer_Error> error);
   const std::string& filename();
-  base::queue<std::vector<char>> chunks();
+  base::queue<std::string> chunks();
 
  private:
   State state_ = kUninitialized;
-  StatusCallback status_callback_;
+  ResultCallback result_callback_;
   std::string filename_;
-  base::queue<std::vector<char>> chunks_;
+  base::queue<std::string> chunks_;
 };
 
 class FileTransferMessageHandlerTest : public testing::Test {
@@ -96,18 +109,18 @@
   const std::string kTestDataTwo = "this is the second test string";
 
   std::unique_ptr<protocol::FakeMessagePipe> fake_pipe_;
-  protocol::FileTransferRequest fake_request_;
-  std::string fake_request_string_;
+  protocol::FileTransfer fake_metadata_;
+  protocol::FileTransfer fake_end_;
 };
 
 FakeFileProxyWrapper::FakeFileProxyWrapper() = default;
 FakeFileProxyWrapper::~FakeFileProxyWrapper() = default;
 
-void FakeFileProxyWrapper::Init(StatusCallback status_callback) {
+void FakeFileProxyWrapper::Init(ResultCallback result_callback) {
   ASSERT_EQ(state_, kUninitialized);
   state_ = kInitialized;
 
-  status_callback_ = std::move(status_callback);
+  result_callback_ = std::move(result_callback);
 }
 
 void FakeFileProxyWrapper::CreateFile(const base::FilePath& directory,
@@ -126,13 +139,10 @@
   // TODO(jarhar): Implement fake file reading.
 }
 
-void FakeFileProxyWrapper::WriteChunk(std::unique_ptr<CompoundBuffer> buffer) {
+void FakeFileProxyWrapper::WriteChunk(std::string buffer) {
   ASSERT_EQ(state_, kReady);
 
-  std::vector<char> data;
-  data.resize(buffer->total_bytes());
-  buffer->CopyTo(data.data(), data.size());
-  chunks_.push(data);
+  chunks_.push(std::move(buffer));
 }
 
 void FakeFileProxyWrapper::ReadChunk(uint64_t chunk_size,
@@ -155,16 +165,16 @@
   return state_;
 }
 
-void FakeFileProxyWrapper::RunStatusCallback(
-    base::Optional<protocol::FileTransferResponse_ErrorCode> error) {
-  std::move(status_callback_).Run(state_, error);
+void FakeFileProxyWrapper::RunResultCallback(
+    base::Optional<protocol::FileTransfer_Error> error) {
+  std::move(result_callback_).Run(std::move(error));
 }
 
 const std::string& FakeFileProxyWrapper::filename() {
   return filename_;
 }
 
-base::queue<std::vector<char>> FakeFileProxyWrapper::chunks() {
+base::queue<std::string> FakeFileProxyWrapper::chunks() {
   return chunks_;
 }
 
@@ -175,10 +185,12 @@
   fake_pipe_ =
       base::WrapUnique(new protocol::FakeMessagePipe(false /* asynchronous */));
 
-  fake_request_ = protocol::FileTransferRequest();
-  fake_request_.set_filename(kTestFilename);
-  fake_request_.set_filesize(kTestDataOne.size() + kTestDataTwo.size());
-  fake_request_.SerializeToString(&fake_request_string_);
+  fake_metadata_.Clear();
+  fake_metadata_.mutable_metadata()->set_filename(kTestFilename);
+  fake_metadata_.mutable_metadata()->set_size(kTestDataOne.size() +
+                                              kTestDataTwo.size());
+  fake_end_.Clear();
+  fake_end_.mutable_end();
 }
 
 void FileTransferMessageHandlerTest::TearDown() {}
@@ -196,36 +208,29 @@
                                  std::move(file_proxy_wrapper));
 
   fake_pipe_->OpenPipe();
-  fake_pipe_->Receive(ToBuffer(fake_request_string_));
-  fake_pipe_->Receive(ToBuffer(kTestDataOne));
-  fake_pipe_->Receive(ToBuffer(kTestDataTwo));
+  fake_pipe_->Receive(MessageToBuffer(fake_metadata_));
+  fake_pipe_->Receive(DataToBuffer(kTestDataOne));
+  fake_pipe_->Receive(DataToBuffer(kTestDataTwo));
+  fake_pipe_->Receive(MessageToBuffer(fake_end_));
 
-  file_proxy_wrapper_ptr->RunStatusCallback(
-      base::Optional<protocol::FileTransferResponse_ErrorCode>());
+  file_proxy_wrapper_ptr->RunResultCallback(base::nullopt);
 
-  base::queue<std::vector<char>> actual_chunks =
-      file_proxy_wrapper_ptr->chunks();
+  base::queue<std::string> actual_chunks = file_proxy_wrapper_ptr->chunks();
 
   fake_pipe_->ClosePipe();
   file_proxy_wrapper_ptr = nullptr;
 
-  base::queue<std::vector<char>> expected_chunks;
-  expected_chunks.push(
-      std::vector<char>(kTestDataOne.begin(), kTestDataOne.end()));
-  expected_chunks.push(
-      std::vector<char>(kTestDataTwo.begin(), kTestDataTwo.end()));
+  base::queue<std::string> expected_chunks;
+  expected_chunks.push(kTestDataOne);
+  expected_chunks.push(kTestDataTwo);
   ASSERT_TRUE(QueuesEqual(expected_chunks, actual_chunks));
 
   const base::queue<std::string>& actual_sent_messages =
       fake_pipe_->sent_messages();
-  protocol::FileTransferResponse expected_response;
-  expected_response.set_state(
-      protocol::FileTransferResponse_TransferState_DONE);
-  expected_response.set_total_bytes_written(fake_request_.filesize());
-  std::string expected_response_string;
-  expected_response.SerializeToString(&expected_response_string);
+  protocol::FileTransfer expected_response;
+  expected_response.mutable_success();
   base::queue<std::string> expected_sent_messages;
-  expected_sent_messages.push(expected_response_string);
+  expected_sent_messages.push(expected_response.SerializeAsString());
   ASSERT_TRUE(QueuesEqual(expected_sent_messages, actual_sent_messages));
 }
 
@@ -237,32 +242,29 @@
   // |file_proxy_wrapper_ptr| is valid until fake_pipe_->ClosePipe() is called.
   FakeFileProxyWrapper* file_proxy_wrapper_ptr = file_proxy_wrapper.get();
 
-  protocol::FileTransferResponse_ErrorCode fake_error =
-      protocol::FileTransferResponse_ErrorCode_FILE_IO_ERROR;
+  protocol::FileTransfer_Error fake_error = protocol::MakeFileTransferError(
+      FROM_HERE, protocol::FileTransfer_Error_Type_IO_ERROR);
 
   // This will delete itself when fake_pipe_->ClosePipe() is called.
   new FileTransferMessageHandler(kTestDatachannelName, fake_pipe_->Wrap(),
                                  std::move(file_proxy_wrapper));
 
   fake_pipe_->OpenPipe();
-  fake_pipe_->Receive(ToBuffer(fake_request_string_));
-  fake_pipe_->Receive(ToBuffer(kTestDataOne));
+  fake_pipe_->Receive(MessageToBuffer(fake_metadata_));
+  fake_pipe_->Receive(DataToBuffer(kTestDataOne));
 
   file_proxy_wrapper_ptr->Cancel();
-  file_proxy_wrapper_ptr->RunStatusCallback(
-      base::Optional<protocol::FileTransferResponse_ErrorCode>(fake_error));
+  file_proxy_wrapper_ptr->RunResultCallback(fake_error);
 
   fake_pipe_->ClosePipe();
   file_proxy_wrapper_ptr = nullptr;
 
   const base::queue<std::string>& actual_sent_messages =
       fake_pipe_->sent_messages();
-  protocol::FileTransferResponse expected_response;
-  expected_response.set_error(fake_error);
-  std::string expected_response_string;
-  expected_response.SerializeToString(&expected_response_string);
+  protocol::FileTransfer expected_response;
+  *expected_response.mutable_error() = fake_error;
   base::queue<std::string> expected_sent_messages;
-  expected_sent_messages.push(expected_response_string);
+  expected_sent_messages.push(expected_response.SerializeAsString());
   ASSERT_TRUE(QueuesEqual(expected_sent_messages, actual_sent_messages));
 }
 
diff --git a/remoting/proto/file_transfer.proto b/remoting/proto/file_transfer.proto
index 12acd48e..9f7304d 100644
--- a/remoting/proto/file_transfer.proto
+++ b/remoting/proto/file_transfer.proto
@@ -4,27 +4,75 @@
 
 package remoting.protocol;
 
-// Next Id: 3
-message FileTransferRequest {
-  optional string filename = 1;
-  optional uint64 filesize = 2;
-}
-
-// Next Id: 4
-message FileTransferResponse {
-  enum TransferState {
-    IN_PROGRESS = 1;
-    DONE = 2;
+// Composite message type for messages sent over file-transfer data channels.
+// Next Id: 7
+message FileTransfer {
+  // Sender->receiver message containing file metadata. Always sent before any
+  // Data messages.
+  // Next Id: 3
+  message Metadata {
+    optional string filename = 1;
+    // Note: there may be edge cases in which the file is transmitted
+    // successfully but doesn't exactly match the number of bytes reported here.
+    // Thus, the implementation should wait for the End message to determine
+    // when the file is complete and not rely on the exact size.
+    optional uint64 size = 2;
   }
-  optional TransferState state = 1;
 
-  enum ErrorCode {
-    OUT_OF_DISK_SPACE = 1;
-    PERMISSIONS_ERROR = 2;
-    FILE_IO_ERROR = 3;
-    UNEXPECTED_ERROR = 4;
+  // Sender->receiver message containing a chunk of file data.
+  // Next Id: 2
+  message Data { optional bytes data = 1; }
+
+  // Sender->receiver message sent after the last data chunk, signaling that
+  // the transfer is complete.
+  // Next Id: 1
+  message End {}
+
+  // Receiver->sender message sent in response to the End message, indicating
+  // that the file has been successfully saved.
+  // Next Id: 1
+  message Success {}
+
+  // Bidirectional message canceling the transfer as the result of a user action
+  // or otherwise not due to an error. When Cancel is received, no more messages
+  // relating to the transfer should be sent, but the canceling end should be
+  // prepared to handle any messages that may already be on the wire.
+  // Next Id: 1
+  message Cancel {}
+
+  // Bidirectional message aborting the transfer due to an error. This may be
+  // sent by the sender to signal a read error, by the receiver to signal a
+  // write error, or by either side to signal any of the myriad of other things
+  // that can go wrong while attempting to transfer a file.
+  // Next Id: 6
+  message Error {
+    enum Type {
+      UNSPECIFIED = 0;
+      UNEXPECTED_ERROR = 1;
+      PROTOCOL_ERROR = 2;
+      PERMISSION_DENIED = 3;
+      OUT_OF_DISK_SPACE = 4;
+      IO_ERROR = 5;
+    }
+
+    // An error category to be used to select a user-displayed error message.
+    optional Type type = 1;
+    // The error code returned by the failed API call (if applicable).
+    optional int32 api_error_code = 2;
+    // The function in which the error occured.
+    optional string function = 3;
+    // The source file in which the error occured.
+    optional string source_file = 4;
+    // The line number on which the error occurred.
+    optional uint32 line_number = 5;
   }
-  optional ErrorCode error = 2;
 
-  optional uint64 total_bytes_written = 3;
+  oneof message {
+    Metadata metadata = 1;
+    Data data = 2;
+    End end = 3;
+    Success success = 4;
+    Cancel cancel = 5;
+    Error error = 6;
+  }
 }
diff --git a/remoting/protocol/BUILD.gn b/remoting/protocol/BUILD.gn
index a7706857..f8af6ab9 100644
--- a/remoting/protocol/BUILD.gn
+++ b/remoting/protocol/BUILD.gn
@@ -54,6 +54,8 @@
     "datagram_channel_factory.h",
     "errors.cc",
     "errors.h",
+    "file_transfer_helpers.cc",
+    "file_transfer_helpers.h",
     "frame_consumer.h",
     "frame_stats.cc",
     "frame_stats.h",
diff --git a/remoting/protocol/file_transfer_helpers.cc b/remoting/protocol/file_transfer_helpers.cc
new file mode 100644
index 0000000..4486c35
--- /dev/null
+++ b/remoting/protocol/file_transfer_helpers.cc
@@ -0,0 +1,26 @@
+// 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.
+
+#include "remoting/protocol/file_transfer_helpers.h"
+
+namespace remoting {
+namespace protocol {
+
+FileTransfer_Error MakeFileTransferError(
+    base::Location location,
+    FileTransfer_Error_Type type,
+    base::Optional<int32_t> api_error_code) {
+  FileTransfer_Error error;
+  error.set_type(type);
+  if (api_error_code) {
+    error.set_api_error_code(*api_error_code);
+  }
+  error.set_function(location.function_name());
+  error.set_source_file(location.file_name());
+  error.set_line_number(location.line_number());
+  return error;
+}
+
+}  // namespace protocol
+}  // namespace remoting
diff --git a/remoting/protocol/file_transfer_helpers.h b/remoting/protocol/file_transfer_helpers.h
new file mode 100644
index 0000000..7fc25fe
--- /dev/null
+++ b/remoting/protocol/file_transfer_helpers.h
@@ -0,0 +1,25 @@
+// 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 REMOTING_PROTOCOL_FILE_TRANSFER_HELPERS_H_
+#define REMOTING_PROTOCOL_FILE_TRANSFER_HELPERS_H_
+
+#include <cstdint>
+
+#include "base/location.h"
+#include "base/optional.h"
+#include "remoting/proto/file_transfer.pb.h"
+
+namespace remoting {
+namespace protocol {
+
+FileTransfer_Error MakeFileTransferError(
+    base::Location location,
+    FileTransfer_Error_Type type,
+    base::Optional<std::int32_t> api_error_code = base::nullopt);
+
+}  // namespace protocol
+}  // namespace remoting
+
+#endif  // REMOTING_PROTOCOL_FILE_TRANSFER_HELPERS_H_
diff --git a/remoting/resources/remoting_strings_sr.xtb b/remoting/resources/remoting_strings_sr.xtb
index 0b76b465c..a022d2f5 100644
--- a/remoting/resources/remoting_strings_sr.xtb
+++ b/remoting/resources/remoting_strings_sr.xtb
@@ -56,7 +56,7 @@
 <translation id="2221097377466213233">Користи десни тастер Ctrl као тастер Windows (⌘ на Mac-у)</translation>
 <translation id="2235518894410572517">Делите овај рачунар да би други корисник могао да га прегледа и контролише.</translation>
 <translation id="2246783206985865117">Овим подешавањем управљају смернице за домен.</translation>
-<translation id="2256115617011615191">Поново покрени одмах</translation>
+<translation id="2256115617011615191">Рестартуј одмах</translation>
 <translation id="225614027745146050">Добро дошли</translation>
 <translation id="228809120910082333">Потврдите налог и PIN у наставку да бисте омогућили да Chromoting приступа.</translation>
 <translation id="2314101195544969792">Сесија апликације <ph name="APPLICATION_NAME" /> је неактивна неко време и веза ће ускоро бити прекинута.</translation>
diff --git a/remoting/resources/remoting_strings_te.xtb b/remoting/resources/remoting_strings_te.xtb
index 723211d..5610e698 100644
--- a/remoting/resources/remoting_strings_te.xtb
+++ b/remoting/resources/remoting_strings_te.xtb
@@ -86,7 +86,7 @@
 
 • మీరు రిమోట్‌గా యాక్సెస్ చేయాలనుకుంటున్న కంప్యూటర్‌లో Chrome వెబ్ స్టోర్ నుండి Chrome రిమోట్ డెస్క్‌టాప్ యాప్‌ని డౌన్‌లోడ్‌ చేయండి.
 • Chrome రిమోట్ డెస్క్‌టాప్ సాఫ్ట్‌వేర్‌ని ఇన్‌స్టాల్ చేసి, సూచనలను అనుసరించడం ద్వారా సెటప్‌ని పూర్తి చేయండి.
-• మీ iOS పరికరంలో, యాప్‌ని తెరిచి, కనెక్ట్ చేయడానికి మీ ఆన్‌లైన్ కంప్యూటర్‌ల్లో దేనినైనా నొక్కండి.</translation>
+• మీ iOS పరికరంలో, యాప్‌ని తెరిచి, కనెక్ట్ చేయడానికి మీ ఆన్‌లైన్ కంప్యూటర్‌లలో దేనినైనా నొక్కండి.</translation>
 <translation id="2894654864775534701">ఈ కంప్యూటర్ ప్రస్తుతం వేరొక ఖాతా క్రింద షేర్ చేయబడింది.</translation>
 <translation id="2919669478609886916">మీరు ప్రస్తుతం ఈ మెషీన్‌ను మరొక వినియోగదారుతో భాగస్వామ్యం చేస్తున్నారు. మీరు భాగస్వామ్యం చేయడాన్ని కొనసాగించాలనుకుంటున్నారా?</translation>
 <translation id="2921543551052660690">మీరు మునుపు <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)గా సైన్ ఇన్ చేసారు.  ఆ ఖాతాలో మీ కంప్యూటర్‌లను ప్రాప్యత చేయడానికి, ఆ ఖాతాతో <ph name="LINK_BEGIN" />Chromiumకి సైన్ ఇన్ చేయండి<ph name="LINK_END" /> మరియు Chromotingని మళ్లీ ఇన్‌స్టాల్ చేయండి.</translation>
diff --git a/services/tracing/coordinator.h b/services/tracing/coordinator.h
index ba773026..2c00c1e7 100644
--- a/services/tracing/coordinator.h
+++ b/services/tracing/coordinator.h
@@ -39,6 +39,10 @@
 //
 // If we see that the above-mentioned assumption does not hold in some cases, we
 // should guard against it using timeouts.
+//
+// Note that this class is only used when TraceLog is used as the tracing
+// backend; when Perfetto is used, PerfettoTracingCoordinator is used instead to
+// implement the same interface.
 class Coordinator : public mojom::Coordinator {
  public:
   explicit Coordinator(AgentRegistry* agent_registry);
diff --git a/services/tracing/perfetto/perfetto_service.cc b/services/tracing/perfetto/perfetto_service.cc
index abd7917..7db1cc7 100644
--- a/services/tracing/perfetto/perfetto_service.cc
+++ b/services/tracing/perfetto/perfetto_service.cc
@@ -21,10 +21,6 @@
 
 PerfettoService* g_perfetto_service;
 
-// Just used to destroy disconnected clients.
-template <typename T>
-void OnClientDisconnect(std::unique_ptr<T>) {}
-
 }  // namespace
 
 /*
@@ -103,13 +99,13 @@
 
 void PerfettoService::ConnectToProducerHost(
     mojom::ProducerClientPtr producer_client,
-    mojom::ProducerHostRequest producer_host) {
+    mojom::ProducerHostRequest producer_host_request) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   auto new_producer = std::make_unique<ProducerHost>();
-  new_producer->Initialize(std::move(producer_client), std::move(producer_host),
-                           service_.get(), kPerfettoProducerName);
-  new_producer->set_connection_error_handler(base::BindOnce(
-      &OnClientDisconnect<ProducerHost>, std::move(new_producer)));
+  new_producer->Initialize(std::move(producer_client), service_.get(),
+                           kPerfettoProducerName);
+  producer_bindings_.AddBinding(std::move(new_producer),
+                                std::move(producer_host_request));
 }
 
 }  // namespace tracing
diff --git a/services/tracing/perfetto/perfetto_service.h b/services/tracing/perfetto/perfetto_service.h
index a44a751..7be1c65d 100644
--- a/services/tracing/perfetto/perfetto_service.h
+++ b/services/tracing/perfetto/perfetto_service.h
@@ -12,6 +12,7 @@
 #include "base/sequence_checker.h"
 #include "base/sequenced_task_runner.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/strong_binding_set.h"
 #include "services/service_manager/public/cpp/identity.h"
 #include "services/tracing/public/cpp/perfetto/task_runner.h"
 #include "services/tracing/public/mojom/perfetto_service.mojom.h"
@@ -58,6 +59,7 @@
   PerfettoTaskRunner perfetto_task_runner_;
   std::unique_ptr<perfetto::TracingService> service_;
   mojo::BindingSet<mojom::PerfettoService, service_manager::Identity> bindings_;
+  mojo::StrongBindingSet<mojom::ProducerHost> producer_bindings_;
   SEQUENCE_CHECKER(sequence_checker_);
 
   DISALLOW_COPY_AND_ASSIGN(PerfettoService);
diff --git a/services/tracing/perfetto/producer_host.cc b/services/tracing/perfetto/producer_host.cc
index 470fac6..24b97cc 100644
--- a/services/tracing/perfetto/producer_host.cc
+++ b/services/tracing/perfetto/producer_host.cc
@@ -17,19 +17,12 @@
 ProducerHost::~ProducerHost() = default;
 
 void ProducerHost::Initialize(mojom::ProducerClientPtr producer_client,
-                              mojom::ProducerHostRequest producer_host,
                               perfetto::TracingService* service,
                               const std::string& name) {
   DCHECK(service);
   DCHECK(!producer_endpoint_);
-  producer_client_ = std::move(producer_client);
-  producer_client_.set_connection_error_handler(
-      base::BindOnce(&ProducerHost::OnConnectionError, base::Unretained(this)));
 
-  binding_ = std::make_unique<mojo::Binding<mojom::ProducerHost>>(
-      this, std::move(producer_host));
-  binding_->set_connection_error_handler(
-      base::BindOnce(&ProducerHost::OnConnectionError, base::Unretained(this)));
+  producer_client_ = std::move(producer_client);
 
   // TODO(oysteine): Figure out an uid once we need it.
   // TODO(oysteine): Figure out a good buffer size.
@@ -37,19 +30,15 @@
       this, 0 /* uid */, name,
       4 * 1024 * 1024 /* shared_memory_size_hint_bytes */);
   DCHECK(producer_endpoint_);
+
+  producer_client_.set_connection_error_handler(
+      base::BindOnce(&ProducerHost::OnConnectionError, base::Unretained(this)));
 }
 
 void ProducerHost::OnConnectionError() {
   // Manually reset to prevent any callbacks from the ProducerEndpoint
   // when we're in a half-destructed state.
   producer_endpoint_.reset();
-  // If the ProducerHost is owned by the PerfettoService, let it know
-  // we're disconnected to let this be cleaned up. Tests manage lifespan
-  // themselves.
-  if (connection_error_handler_) {
-    std::move(connection_error_handler_).Run();
-  }
-  // This object *may* be destroyed at this point.
 }
 
 void ProducerHost::OnConnect() {
diff --git a/services/tracing/perfetto/producer_host.h b/services/tracing/perfetto/producer_host.h
index 5a477c1..a9214c09 100644
--- a/services/tracing/perfetto/producer_host.h
+++ b/services/tracing/perfetto/producer_host.h
@@ -11,12 +11,8 @@
 #include <vector>
 
 #include "base/macros.h"
-
 #include "services/tracing/perfetto/producer_host.h"
 #include "services/tracing/public/mojom/perfetto_service.mojom.h"
-
-#include "mojo/public/cpp/bindings/binding.h"
-
 #include "third_party/perfetto/include/perfetto/tracing/core/producer.h"
 #include "third_party/perfetto/include/perfetto/tracing/core/tracing_service.h"
 
@@ -41,16 +37,10 @@
   ProducerHost();
   ~ProducerHost() override;
 
-  void set_connection_error_handler(
-      base::OnceClosure connection_error_handler) {
-    connection_error_handler_ = std::move(connection_error_handler);
-  }
-
   // Called by the ProducerService to register the
   // Producer with Perfetto and connect to the
   // corresponding remote ProducerClient.
   void Initialize(mojom::ProducerClientPtr producer_client,
-                  mojom::ProducerHostRequest producer_host,
                   perfetto::TracingService* service,
                   const std::string& name);
 
@@ -95,8 +85,6 @@
 
  private:
   mojom::ProducerClientPtr producer_client_;
-  std::unique_ptr<mojo::Binding<mojom::ProducerHost>> binding_;
-  base::OnceClosure connection_error_handler_;
 
  protected:
   // Perfetto guarantees that no OnXX callbacks are invoked on |this|
diff --git a/services/tracing/perfetto/test_utils.cc b/services/tracing/perfetto/test_utils.cc
index 2d5a97c9..5d1b457 100644
--- a/services/tracing/perfetto/test_utils.cc
+++ b/services/tracing/perfetto/test_utils.cc
@@ -233,8 +233,10 @@
     perfetto::TracingService* perfetto_service,
     mojom::ProducerClientPtr producer_client_pipe,
     mojom::ProducerHostRequest producer_host_pipe) {
-  Initialize(std::move(producer_client_pipe), std::move(producer_host_pipe),
-             perfetto_service, kPerfettoProducerName);
+  Initialize(std::move(producer_client_pipe), perfetto_service,
+             kPerfettoProducerName);
+  binding_ = std::make_unique<mojo::Binding<mojom::ProducerHost>>(
+      this, std::move(producer_host_pipe));
 }
 
 MockProducer::MockProducer(const std::string& data_source_name,
diff --git a/services/tracing/perfetto/test_utils.h b/services/tracing/perfetto/test_utils.h
index 0dcf1dc..93deabac 100644
--- a/services/tracing/perfetto/test_utils.h
+++ b/services/tracing/perfetto/test_utils.h
@@ -140,6 +140,7 @@
   base::OnceClosure datasource_registered_callback_;
   const std::string data_source_name_;
   std::string all_host_commit_data_requests_;
+  std::unique_ptr<mojo::Binding<mojom::ProducerHost>> binding_;
 };
 
 class MockProducer {
diff --git a/services/tracing/public/cpp/perfetto/producer_client.cc b/services/tracing/public/cpp/perfetto/producer_client.cc
index c759b781..a02d8b91 100644
--- a/services/tracing/public/cpp/perfetto/producer_client.cc
+++ b/services/tracing/public/cpp/perfetto/producer_client.cc
@@ -100,6 +100,10 @@
   origin_task_runner->PostTask(
       FROM_HERE, base::BindOnce(std::move(callback), std::move(producer_client),
                                 mojo::MakeRequest(&producer_host_)));
+
+  for (auto* data_source : data_sources_) {
+    RegisterDataSourceWithHost(data_source);
+  }
 }
 
 void ProducerClient::AddDataSource(DataSourceBase* data_source) {
@@ -110,7 +114,14 @@
 
 void ProducerClient::AddDataSourceOnSequence(DataSourceBase* data_source) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
   data_sources_.insert(data_source);
+  if (producer_host_) {
+    RegisterDataSourceWithHost(data_source);
+  }
+}
+
+void ProducerClient::RegisterDataSourceWithHost(DataSourceBase* data_source) {
   auto new_registration = mojom::DataSourceRegistration::New();
   new_registration->name = data_source->name();
   new_registration->will_notify_on_stop = true;
@@ -164,7 +175,7 @@
     }
   }
 
-  LOG(FATAL) << "Invalid data source ID.";
+  LOG(DFATAL) << "Invalid data source ID.";
 }
 
 void ProducerClient::Flush(uint64_t flush_request_id,
diff --git a/services/tracing/public/cpp/perfetto/producer_client.h b/services/tracing/public/cpp/perfetto/producer_client.h
index 92a050de..7de4408 100644
--- a/services/tracing/public/cpp/perfetto/producer_client.h
+++ b/services/tracing/public/cpp/perfetto/producer_client.h
@@ -128,6 +128,7 @@
  private:
   void CommitDataOnSequence(mojom::CommitDataRequestPtr request);
   void AddDataSourceOnSequence(DataSourceBase*);
+  void RegisterDataSourceWithHost(DataSourceBase* data_source);
 
   // The callback will be run on the |origin_task_runner|, meaning
   // the same sequence as CreateMojoMessagePipes() got called on.
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 055ac22..831133c 100644
--- a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
+++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
@@ -379,7 +379,6 @@
 
 TraceEventDataSource::TraceEventDataSource()
     : DataSourceBase(mojom::kTraceEventDataSourceName) {
-  RegisterTracedValueProtoWriter();
 }
 
 TraceEventDataSource::~TraceEventDataSource() = default;
@@ -395,6 +394,8 @@
     target_buffer_ = data_source_config.target_buffer;
   }
 
+  RegisterTracedValueProtoWriter(true);
+
   TraceLog::GetInstance()->SetAddTraceEventOverride(
       &TraceEventDataSource::OnAddTraceEvent,
       &TraceEventDataSource::FlushCurrentThread);
@@ -414,6 +415,7 @@
           return;
         }
 
+        RegisterTracedValueProtoWriter(false);
         TraceLog::GetInstance()->SetAddTraceEventOverride(nullptr, nullptr);
 
         // TraceLog::CancelTracing will cause metadata events to be written;
diff --git a/services/tracing/public/cpp/perfetto/traced_value_proto_writer.cc b/services/tracing/public/cpp/perfetto/traced_value_proto_writer.cc
index a279a64..c8e16e6 100644
--- a/services/tracing/public/cpp/perfetto/traced_value_proto_writer.cc
+++ b/services/tracing/public/cpp/perfetto/traced_value_proto_writer.cc
@@ -258,8 +258,8 @@
 
 }  // namespace
 
-void RegisterTracedValueProtoWriter() {
-  TracedValue::SetWriterFactoryCallback(&CreateProtoWriter);
+void RegisterTracedValueProtoWriter(bool enable) {
+  TracedValue::SetWriterFactoryCallback(enable ? &CreateProtoWriter : nullptr);
 }
 
 }  // namespace tracing
diff --git a/services/tracing/public/cpp/perfetto/traced_value_proto_writer.h b/services/tracing/public/cpp/perfetto/traced_value_proto_writer.h
index 3bb39ad..4c88b67 100644
--- a/services/tracing/public/cpp/perfetto/traced_value_proto_writer.h
+++ b/services/tracing/public/cpp/perfetto/traced_value_proto_writer.h
@@ -35,7 +35,7 @@
   perfetto::protos::pbzero::ChromeTraceEvent_Arg* proto_;
 };
 
-void COMPONENT_EXPORT(TRACING_CPP) RegisterTracedValueProtoWriter();
+void COMPONENT_EXPORT(TRACING_CPP) RegisterTracedValueProtoWriter(bool enable);
 }  // namespace tracing
 
 #endif  // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_TRACED_VALUE_PROTO_WRITER_H_
diff --git a/services/tracing/public/cpp/perfetto/traced_value_proto_writer_unittest.cc b/services/tracing/public/cpp/perfetto/traced_value_proto_writer_unittest.cc
index f8bdeb4..e268f219 100644
--- a/services/tracing/public/cpp/perfetto/traced_value_proto_writer_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/traced_value_proto_writer_unittest.cc
@@ -68,9 +68,9 @@
 
 class TracedValueProtoWriterTest : public testing::Test {
  public:
-  void SetUp() override { RegisterTracedValueProtoWriter(); }
+  void SetUp() override { RegisterTracedValueProtoWriter(true); }
 
-  void TearDown() override {}
+  void TearDown() override { RegisterTracedValueProtoWriter(false); }
 };
 
 const perfetto::protos::ChromeTracedValue* FindDictEntry(
diff --git a/services/tracing/public/cpp/trace_event_agent.cc b/services/tracing/public/cpp/trace_event_agent.cc
index ebd6eca2..4ea4c91 100644
--- a/services/tracing/public/cpp/trace_event_agent.cc
+++ b/services/tracing/public/cpp/trace_event_agent.cc
@@ -51,67 +51,50 @@
   return producer_client.get();
 }
 
+void InitializeProducerClient(service_manager::Connector* connector) {
+  mojom::PerfettoServicePtr perfetto_service;
+  connector->BindInterface(mojom::kServiceName, &perfetto_service);
+
+  GetProducerClient()->CreateMojoMessagepipes(base::BindOnce(
+      [](mojom::PerfettoServicePtr perfetto_service,
+         mojom::ProducerClientPtr producer_client_pipe,
+         mojom::ProducerHostRequest producer_host_pipe) {
+        perfetto_service->ConnectToProducerHost(std::move(producer_client_pipe),
+                                                std::move(producer_host_pipe));
+      },
+      std::move(perfetto_service)));
+
+  GetProducerClient()->AddDataSource(TraceEventDataSource::GetInstance());
+}
+
+void AddPerfettoMetadataGeneratorFunction(
+    TraceEventAgent::MetadataGeneratorFunction generator) {
+  // Instantiate and register the metadata data source on the first
+  // call.
+  static TraceEventMetadataSource* metadata_source = []() {
+    static base::NoDestructor<TraceEventMetadataSource> instance;
+    GetProducerClient()->AddDataSource(instance.get());
+    return instance.get();
+  }();
+
+  metadata_source->AddGeneratorFunction(generator);
+}
+
 }  // namespace
 
-class PerfettoTraceEventAgent : public TraceEventAgent {
- public:
-  PerfettoTraceEventAgent(service_manager::Connector* connector,
-                          bool request_clock_sync_marker_on_android)
-      : TraceEventAgent(connector, request_clock_sync_marker_on_android) {
-    mojom::PerfettoServicePtr perfetto_service;
-    connector->BindInterface(mojom::kServiceName, &perfetto_service);
-
-    GetProducerClient()->CreateMojoMessagepipes(base::BindOnce(
-        [](mojom::PerfettoServicePtr perfetto_service,
-           mojom::ProducerClientPtr producer_client_pipe,
-           mojom::ProducerHostRequest producer_host_pipe) {
-          perfetto_service->ConnectToProducerHost(
-              std::move(producer_client_pipe), std::move(producer_host_pipe));
-        },
-        std::move(perfetto_service)));
-
-    GetProducerClient()->AddDataSource(TraceEventDataSource::GetInstance());
-  }
-
-  void AddMetadataGeneratorFunction(
-      MetadataGeneratorFunction generator) override {
-    // Instantiate and register the metadata data source on the first
-    // call.
-    static TraceEventMetadataSource* metadata_source = []() {
-      static base::NoDestructor<TraceEventMetadataSource> instance;
-      GetProducerClient()->AddDataSource(instance.get());
-      return instance.get();
-    }();
-
-    metadata_source->AddGeneratorFunction(generator);
-  }
-};
 #endif
 
 // static
 std::unique_ptr<TraceEventAgent> TraceEventAgent::Create(
     service_manager::Connector* connector,
     bool request_clock_sync_marker_on_android) {
-  std::unique_ptr<TraceEventAgent> new_agent;
 
-  if (TracingUsesPerfettoBackend()) {
 #if defined(PERFETTO_AVAILABLE)
-    new_agent = std::make_unique<PerfettoTraceEventAgent>(
-        connector, request_clock_sync_marker_on_android);
-#else
-    LOG(ERROR) << "Perfetto is not yet available for this platform; falling "
-                  "back to using legacy TraceLog";
+  InitializeProducerClient(connector);
 #endif
-  }
 
-  // Use legacy tracing if we're on an unsupported platform or the feature flag
-  // is disabled.
-  if (!new_agent) {
-    new_agent = std::make_unique<LegacyTraceEventAgent>(
-        connector, request_clock_sync_marker_on_android);
-  }
-
-  return new_agent;
+  return std::make_unique<TraceEventAgent>(
+      connector, request_clock_sync_marker_on_android);
 }
 
 TraceEventAgent::TraceEventAgent(service_manager::Connector* connector,
@@ -124,13 +107,16 @@
 #else
                 false,
 #endif
-                base::trace_event::TraceLog::GetInstance()->process_id()) {
+                base::trace_event::TraceLog::GetInstance()->process_id()),
+      enabled_tracing_modes_(0) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(!g_trace_event_agent);
   g_trace_event_agent = this;
 }
 
 TraceEventAgent::~TraceEventAgent() {
   g_trace_event_agent = nullptr;
+  DCHECK(!trace_log_needs_me_);
 }
 
 void TraceEventAgent::RequestClockSyncMarker(
@@ -151,27 +137,18 @@
   std::move(callback).Run(base::JoinString(category_vector, ","));
 }
 
-LegacyTraceEventAgent::LegacyTraceEventAgent(
-    service_manager::Connector* connector,
-    bool request_clock_sync_marker_on_android)
-    : TraceEventAgent(connector, request_clock_sync_marker_on_android),
-      enabled_tracing_modes_(0) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-}
-
-LegacyTraceEventAgent::~LegacyTraceEventAgent() {
-  DCHECK(!trace_log_needs_me_);
-}
-
-void LegacyTraceEventAgent::AddMetadataGeneratorFunction(
+void TraceEventAgent::AddMetadataGeneratorFunction(
     MetadataGeneratorFunction generator) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   metadata_generator_functions_.push_back(generator);
+#if defined(PERFETTO_AVAILABLE)
+  AddPerfettoMetadataGeneratorFunction(generator);
+#endif
 }
 
-void LegacyTraceEventAgent::StartTracing(const std::string& config,
-                                         base::TimeTicks coordinator_time,
-                                         StartTracingCallback callback) {
+void TraceEventAgent::StartTracing(const std::string& config,
+                                   base::TimeTicks coordinator_time,
+                                   StartTracingCallback callback) {
   DCHECK(!recorder_);
 #if defined(__native_client__)
   // NaCl and system times are offset by a bit, so subtract some time from
@@ -189,7 +166,7 @@
   std::move(callback).Run(true);
 }
 
-void LegacyTraceEventAgent::StopAndFlush(mojom::RecorderPtr recorder) {
+void TraceEventAgent::StopAndFlush(mojom::RecorderPtr recorder) {
   DCHECK(!recorder_);
   recorder_ = std::move(recorder);
   base::trace_event::TraceLog::GetInstance()->SetDisabled(
@@ -201,18 +178,18 @@
       recorder_->AddMetadata(std::move(*metadata));
   }
   trace_log_needs_me_ = true;
-  base::trace_event::TraceLog::GetInstance()->Flush(base::Bind(
-      &LegacyTraceEventAgent::OnTraceLogFlush, base::Unretained(this)));
+  base::trace_event::TraceLog::GetInstance()->Flush(
+      base::Bind(&TraceEventAgent::OnTraceLogFlush, base::Unretained(this)));
 }
 
-void LegacyTraceEventAgent::RequestBufferStatus(
+void TraceEventAgent::RequestBufferStatus(
     RequestBufferStatusCallback callback) {
   base::trace_event::TraceLogStatus status =
       base::trace_event::TraceLog::GetInstance()->GetStatus();
   std::move(callback).Run(status.event_capacity, status.event_count);
 }
 
-void LegacyTraceEventAgent::OnTraceLogFlush(
+void TraceEventAgent::OnTraceLogFlush(
     const scoped_refptr<base::RefCountedString>& events_str,
     bool has_more_events) {
   if (!events_str->data().empty())
diff --git a/services/tracing/public/cpp/trace_event_agent.h b/services/tracing/public/cpp/trace_event_agent.h
index 0e011d3..7828df1 100644
--- a/services/tracing/public/cpp/trace_event_agent.h
+++ b/services/tracing/public/cpp/trace_event_agent.h
@@ -27,6 +27,11 @@
 
 namespace tracing {
 
+// Agent used to interface with the legacy tracing system.
+// When Perfetto is used for the backend instead of TraceLog,
+// most of the mojom::Agent functions will never be used
+// as the control signals will go through the Perfetto
+// interface instead.
 class COMPONENT_EXPORT(TRACING_CPP) TraceEventAgent : public BaseAgent {
  public:
   using MetadataGeneratorFunction =
@@ -36,40 +41,16 @@
       service_manager::Connector* connector,
       bool request_clock_sync_marker_on_android);
 
-  ~TraceEventAgent() override;
-
   TraceEventAgent(service_manager::Connector* connector,
-                  bool request_clock_sync_marker_on_android);
-
-  // mojom::Agent
-  void RequestClockSyncMarker(
-      const std::string& sync_id,
-      Agent::RequestClockSyncMarkerCallback callback) override;
-  void GetCategories(GetCategoriesCallback callback) override;
-
-  virtual void AddMetadataGeneratorFunction(
-      MetadataGeneratorFunction generator) = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(TraceEventAgent);
-};
-
-// Agent used to interface with the legacy tracing system,
-// i.e. without Perfetto.
-class COMPONENT_EXPORT(TRACING_CPP) LegacyTraceEventAgent
-    : public TraceEventAgent {
- public:
-  LegacyTraceEventAgent(service_manager::Connector* connector,
                         bool request_clock_sync_marker_on_android);
 
-  void AddMetadataGeneratorFunction(
-      MetadataGeneratorFunction generator) override;
+  void AddMetadataGeneratorFunction(MetadataGeneratorFunction generator);
 
  private:
-  friend std::default_delete<LegacyTraceEventAgent>;  // For Testing
+  friend std::default_delete<TraceEventAgent>;      // For Testing
   friend class TraceEventAgentTest;                 // For Testing
 
-  ~LegacyTraceEventAgent() override;
+  ~TraceEventAgent() override;
 
   // mojom::Agent
   void StartTracing(const std::string& config,
@@ -77,6 +58,12 @@
                     StartTracingCallback callback) override;
   void StopAndFlush(mojom::RecorderPtr recorder) override;
 
+  void RequestClockSyncMarker(
+      const std::string& sync_id,
+      Agent::RequestClockSyncMarkerCallback callback) override;
+
+  void GetCategories(GetCategoriesCallback callback) override;
+
   void RequestBufferStatus(RequestBufferStatusCallback callback) override;
 
   void OnTraceLogFlush(const scoped_refptr<base::RefCountedString>& events_str,
@@ -89,7 +76,7 @@
 
   THREAD_CHECKER(thread_checker_);
 
-  DISALLOW_COPY_AND_ASSIGN(LegacyTraceEventAgent);
+  DISALLOW_COPY_AND_ASSIGN(TraceEventAgent);
 };
 
 }  // namespace tracing
diff --git a/services/tracing/public/cpp/trace_event_agent_unittest.cc b/services/tracing/public/cpp/trace_event_agent_unittest.cc
index 17db795..a55c310 100644
--- a/services/tracing/public/cpp/trace_event_agent_unittest.cc
+++ b/services/tracing/public/cpp/trace_event_agent_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/callback_forward.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
+#include "base/test/scoped_task_environment.h"
 #include "base/test/trace_event_analyzer.h"
 #include "base/time/time.h"
 #include "base/trace_event/trace_config.h"
@@ -81,16 +82,12 @@
 
 class TraceEventAgentTest : public testing::Test {
  public:
-  void SetUp() override {
-    message_loop_.reset(new base::MessageLoop());
-    agent_.reset(new LegacyTraceEventAgent(nullptr, false));
-  }
+  void SetUp() override { agent_.reset(new TraceEventAgent(nullptr, false)); }
 
   void TearDown() override {
     base::trace_event::TraceLog::GetInstance()->SetDisabled();
     recorder_.reset();
     agent_.reset();
-    message_loop_.reset();
   }
 
   void StartTracing(const std::string& categories) {
@@ -129,8 +126,8 @@
   MockRecorder* recorder() const { return recorder_.get(); }
 
  private:
-  std::unique_ptr<base::MessageLoop> message_loop_;
-  std::unique_ptr<LegacyTraceEventAgent> agent_;
+  base::test::ScopedTaskEnvironment scoped_task_environment_;
+  std::unique_ptr<TraceEventAgent> agent_;
   std::unique_ptr<MockRecorder> recorder_;
 };
 
diff --git a/services/tracing/tracing_service.cc b/services/tracing/tracing_service.cc
index 22c812e..c753cef 100644
--- a/services/tracing/tracing_service.cc
+++ b/services/tracing/tracing_service.cc
@@ -37,7 +37,8 @@
   }
 
   if (perfetto_service_) {
-    task_runner_->DeleteSoon(FROM_HERE, std::move(perfetto_service_));
+    perfetto_service_->task_runner()->DeleteSoon(FROM_HERE,
+                                                 std::move(perfetto_service_));
   }
 #endif
 }
@@ -47,13 +48,15 @@
 
   bool enable_legacy_tracing = true;
 
-  if (TracingUsesPerfettoBackend()) {
 #if defined(PERFETTO_SERVICE_AVAILABLE)
-    perfetto_service_ = std::make_unique<tracing::PerfettoService>();
+  perfetto_service_ = std::make_unique<tracing::PerfettoService>();
+
+  registry_.AddInterface(
+      base::BindRepeating(&tracing::PerfettoService::BindRequest,
+                          base::Unretained(perfetto_service_.get())));
+
+  if (TracingUsesPerfettoBackend()) {
     task_runner_ = perfetto_service_->task_runner();
-    registry_.AddInterface(
-        base::BindRepeating(&tracing::PerfettoService::BindRequest,
-                            base::Unretained(perfetto_service_.get())));
 
     auto perfetto_coordinator = std::make_unique<PerfettoTracingCoordinator>(
         tracing_agent_registry_.get());
@@ -61,9 +64,15 @@
         base::BindRepeating(&PerfettoTracingCoordinator::BindCoordinatorRequest,
                             base::Unretained(perfetto_coordinator.get())));
     perfetto_tracing_coordinator_ = std::move(perfetto_coordinator);
+
     enable_legacy_tracing = false;
-#endif
   }
+#else
+  if (TracingUsesPerfettoBackend()) {
+    LOG(ERROR) << "Perfetto is not yet available for this platform; falling "
+                  "back to using legacy TraceLog";
+  }
+#endif
 
   // Use legacy tracing if we're on an unsupported platform or the feature flag
   // is disabled.
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 1e20491..3a5dbd1d 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -3281,6 +3281,9 @@
         "test": "webapk_client_junit_tests"
       },
       {
+        "test": "webapk_shell_apk_h2o_junit_tests"
+      },
+      {
         "test": "webapk_shell_apk_junit_tests"
       }
     ]
@@ -20791,6 +20794,9 @@
         "test": "webapk_client_junit_tests"
       },
       {
+        "test": "webapk_shell_apk_h2o_junit_tests"
+      },
+      {
         "test": "webapk_shell_apk_junit_tests"
       }
     ]
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index 9e13f454..4be40cf 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -7336,6 +7336,9 @@
         "test": "webapk_client_junit_tests"
       },
       {
+        "test": "webapk_shell_apk_h2o_junit_tests"
+      },
+      {
         "test": "webapk_shell_apk_junit_tests"
       }
     ]
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index bd0710d..72178c3 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -5757,7 +5757,11 @@
       {
         "args": [
           "--additional-driver-flag",
-          "--disable-site-isolation-trials",
+          "--site-per-process",
+          "--additional-driver-flag",
+          "--isolate-origins=http://www.web-platform.test:8001/,http://www1.web-platform.test:8001/,http://www2.web-platform.test:8001/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8001/,http://xn--lve-6lad.web-platform.test:8001/,http://www.web-platform.test:8081/,http://www1.web-platform.test:8081/,http://www2.web-platform.test:8081/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8081/,http://xn--lve-6lad.web-platform.test:8081/,https://www.web-platform.test:8444/,https://www1.web-platform.test:8444/,https://www2.web-platform.test:8444/,https://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8444/,https://xn--lve-6lad.web-platform.test:8444/",
+          "--additional-expectations",
+          "src/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process",
           "--num-retries=3"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
@@ -5767,7 +5771,7 @@
           ],
           "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
-        "name": "not_site_per_process_webkit_layout_tests",
+        "name": "site_per_process_webkit_layout_tests",
         "results_handler": "layout tests",
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6498,7 +6502,11 @@
       {
         "args": [
           "--additional-driver-flag",
-          "--disable-site-isolation-trials",
+          "--site-per-process",
+          "--additional-driver-flag",
+          "--isolate-origins=http://www.web-platform.test:8001/,http://www1.web-platform.test:8001/,http://www2.web-platform.test:8001/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8001/,http://xn--lve-6lad.web-platform.test:8001/,http://www.web-platform.test:8081/,http://www1.web-platform.test:8081/,http://www2.web-platform.test:8081/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8081/,http://xn--lve-6lad.web-platform.test:8081/,https://www.web-platform.test:8444/,https://www1.web-platform.test:8444/,https://www2.web-platform.test:8444/,https://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8444/,https://xn--lve-6lad.web-platform.test:8444/",
+          "--additional-expectations",
+          "src/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process",
           "--num-retries=3"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
@@ -6508,7 +6516,7 @@
           ],
           "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
-        "name": "not_site_per_process_webkit_layout_tests",
+        "name": "site_per_process_webkit_layout_tests",
         "results_handler": "layout tests",
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index 42516fb..b810bf51 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -1527,7 +1527,11 @@
       {
         "args": [
           "--additional-driver-flag",
-          "--disable-site-isolation-trials",
+          "--site-per-process",
+          "--additional-driver-flag",
+          "--isolate-origins=http://www.web-platform.test:8001/,http://www1.web-platform.test:8001/,http://www2.web-platform.test:8001/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8001/,http://xn--lve-6lad.web-platform.test:8001/,http://www.web-platform.test:8081/,http://www1.web-platform.test:8081/,http://www2.web-platform.test:8081/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8081/,http://xn--lve-6lad.web-platform.test:8081/,https://www.web-platform.test:8444/,https://www1.web-platform.test:8444/,https://www2.web-platform.test:8444/,https://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8444/,https://xn--lve-6lad.web-platform.test:8444/",
+          "--additional-expectations",
+          "src/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process",
           "--num-retries=3"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
@@ -1537,7 +1541,7 @@
           ],
           "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
-        "name": "not_site_per_process_webkit_layout_tests",
+        "name": "site_per_process_webkit_layout_tests",
         "results_handler": "layout tests",
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2257,31 +2261,6 @@
         }
       },
       {
-        "args": [
-          "--additional-driver-flag",
-          "--disable-site-isolation-trials",
-          "--num-retries=3"
-        ],
-        "isolate_name": "webkit_layout_tests_exparchive",
-        "merge": {
-          "args": [
-            "--verbose"
-          ],
-          "script": "//third_party/blink/tools/merge_web_test_results.py"
-        },
-        "name": "not_site_per_process_webkit_layout_tests",
-        "results_handler": "layout tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 10
-        }
-      },
-      {
         "isolate_name": "telemetry_gpu_unittests",
         "name": "telemetry_gpu_unittests",
         "swarming": {
@@ -2963,31 +2942,6 @@
         }
       },
       {
-        "args": [
-          "--additional-driver-flag",
-          "--disable-site-isolation-trials",
-          "--num-retries=3"
-        ],
-        "isolate_name": "webkit_layout_tests_exparchive",
-        "merge": {
-          "args": [
-            "--verbose"
-          ],
-          "script": "//third_party/blink/tools/merge_web_test_results.py"
-        },
-        "name": "not_site_per_process_webkit_layout_tests",
-        "results_handler": "layout tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 10
-        }
-      },
-      {
         "isolate_name": "telemetry_gpu_unittests",
         "name": "telemetry_gpu_unittests",
         "swarming": {
@@ -4173,7 +4127,11 @@
       {
         "args": [
           "--additional-driver-flag",
-          "--disable-site-isolation-trials",
+          "--site-per-process",
+          "--additional-driver-flag",
+          "--isolate-origins=http://www.web-platform.test:8001/,http://www1.web-platform.test:8001/,http://www2.web-platform.test:8001/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8001/,http://xn--lve-6lad.web-platform.test:8001/,http://www.web-platform.test:8081/,http://www1.web-platform.test:8081/,http://www2.web-platform.test:8081/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8081/,http://xn--lve-6lad.web-platform.test:8081/,https://www.web-platform.test:8444/,https://www1.web-platform.test:8444/,https://www2.web-platform.test:8444/,https://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8444/,https://xn--lve-6lad.web-platform.test:8444/",
+          "--additional-expectations",
+          "src/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process",
           "--num-retries=3"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
@@ -4183,7 +4141,7 @@
           ],
           "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
-        "name": "not_site_per_process_webkit_layout_tests",
+        "name": "site_per_process_webkit_layout_tests",
         "results_handler": "layout tests",
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/filters/chromeos.single_process_mash.browser_tests.filter b/testing/buildbot/filters/chromeos.single_process_mash.browser_tests.filter
index d7ff47f1..41031580 100644
--- a/testing/buildbot/filters/chromeos.single_process_mash.browser_tests.filter
+++ b/testing/buildbot/filters/chromeos.single_process_mash.browser_tests.filter
@@ -1,11 +1,7 @@
 # These tests currently fail with SingleProcessMash enabled.
 # Bug: crbug.com/877118
 
-# --------------------------------------------------
-# Tests that are also blacklisted for Mash.
-# --------------------------------------------------
-
-# Virtual keyboard not supported.
+# Virtual keyboard not supported. https://crbug.com/646565
 -DefaultKeyboardExtensionBrowserTest.*
 -KeyboardEndToEndFocusTest.*
 -KeyboardEndToEndFormTest.*
@@ -18,8 +14,12 @@
 # Also depends on keyboard. Test hangs in single process mash crbug.com/897012
 -SelectFileDialogExtensionBrowserTest.SelectFileVirtualKeyboard_TabletMode
 
+# Also depends on keyboard. https://crbug.com/899862
+-ShutdownPolicyLockerTest.*
+
 # AutomationManagerAura::Enable() uses ash to get active window. More generally,
 # chrome a11y code directly accesses ash system UI widgets and views.
+# https://crbug.com/888145
 -AutomationApiTest.*
 -AutomationApiTestWithDeviceScaleFactor.*
 -AutomationManagerAuraBrowserTest.*
@@ -28,41 +28,19 @@
 -ChromeVox*
 -SelectToSpeak*
 
-# RefCounted check failed: CalledOnValidSequence() from SchedulerWorkerDelegate::OnMainExit
--CheckSystemTokenAvailability/EnterprisePlatformKeysTest.*
-
 # Viz hit testing not supported with Mash https://crbug.com/879308
 -PDFExtensionHitTestTest.MouseLeave/1
 
-# JS failure: hasAccessToCurrentWindow: FAIL (no message)
+# https://crbug.com/899055
 -LockScreenNoteTakingTest.*
 
-# --------------------------------------------------
-# Tests failing only for SingleProcessMash.
-# --------------------------------------------------
-
-# Crashes on exit, even without SingleProcessMash.
--AffiliationCheck/EnterpriseDeviceAttributesTest.Success/*
-
-# Flaky.  crbug.com/888188.
+# Flaky. https://crbug.com/888188.
 -ChromeSessionManagerTest.LoginExistingUsers
 -ChromeSessionManagerTest.PRE_LoginExistingUsers
 
 # Flaky (regardless of Mash). https://crbug.com/873884
 -CrSettingsResetPageTest.All
 
-# Encrypted media tests are failing on Asan/Lsan bot due to memory leak. crbug.com/889993
--ECKEncryptedMediaTest.*
--EncryptedMediaTest.*
--CDM_9/ECKEncryptedMediaTest.*
--CDM_10/ECKEncryptedMediaTest.*
--CDM_11/ECKEncryptedMediaTest.*
--MSE_ClearKey/EncryptedMediaTest.*
--MSE_ExternalClearKey/EncryptedMediaTest.*
--MSE_Widevine/EncryptedMediaTest.*
--SRC_ClearKey/EncryptedMediaTest.*
--SRC_ExternalClearKey/EncryptedMediaTest.*
-
 # Failing on ASAN bot. crbug.com/882631
 -ExtensionWebRequestApiTest.WebRequestTypes
 
@@ -72,19 +50,8 @@
 # Flaky on ASAN bot. crbug.com/884216
 -KeyboardOverlayUIBrowserTest.*
 
-# Lock screen tests.
--LockScreenNoteTakingTest.Launch
-
-# PRE steps crash on shutdown.
-# FATAL:ref_counted.h(85)] Check failed: CalledOnValidSequence()
--ManagedWithoutPermission/ManagedWithoutPermissionPlatformKeysTest.*
--ManagedWithPermission/ManagedWithPermissionPlatformKeysTest.*
-
 # Flaky https://crbug.com/887175
 -PrerenderBrowserTest.PrerenderHTML5VideoJs
 
-# Uses ash::LockWindow. https://crbug.com/899862
--ShutdownPolicyLockerTest.*
-
 # Flaky tests. crbug.com/833144
 -GetAuthTokenFunctionPublicSessionTest.NonWhitelisted
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index a663989..5a45bd9a0 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1331,6 +1331,10 @@
     "label": "//chrome/android/webapk/libs/client:webapk_client_junit_tests",
     "type": "junit_test",
   },
+  "webapk_shell_apk_h2o_junit_tests": {
+    "label": "//chrome/android/webapk/shell_apk:webapk_shell_apk_h2o_junit_tests",
+    "type": "junit_test",
+  },
   "webapk_shell_apk_junit_tests": {
     "label": "//chrome/android/webapk/shell_apk:webapk_shell_apk_junit_tests",
     "type": "junit_test",
diff --git a/testing/buildbot/manage.py b/testing/buildbot/manage.py
index 3ecec9f..019f4a1 100755
--- a/testing/buildbot/manage.py
+++ b/testing/buildbot/manage.py
@@ -137,6 +137,7 @@
   'vr_common_perftests',
   'vr_perf_tests',
   'webapk_client_junit_tests',
+  'webapk_shell_apk_h2o_junit_tests',
   'webapk_shell_apk_junit_tests',
 
   # These tests are only run on WebRTC CI.
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index f65a958f..866b920 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -669,6 +669,7 @@
       'service_junit_tests': {},
       'ui_junit_tests': {},
       'webapk_client_junit_tests': {},
+      'webapk_shell_apk_h2o_junit_tests': {},
       'webapk_shell_apk_junit_tests': {},
     },
 
@@ -1802,15 +1803,14 @@
     'linux_specific_chromium_isolated_scripts': {
       'devtools_closure_compile': {},
       'devtools_eslint': {},
-      'not_site_per_process_webkit_layout_tests': {
-        # not_site_per_process_webkit_layout_tests provides coverage for
-        # running Layout Tests without site-per-process.  This is the mode used
-        # on Android and Android bots currently do not run the full set of
-        # layout tests.  Running in this mode on linux compensates for lack of
-        # direct Android coverage.
+      'site_per_process_webkit_layout_tests': {
         'args': [
           '--additional-driver-flag',
-          '--disable-site-isolation-trials',
+          '--site-per-process',
+          '--additional-driver-flag',
+          '--isolate-origins=http://www.web-platform.test:8001/,http://www1.web-platform.test:8001/,http://www2.web-platform.test:8001/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8001/,http://xn--lve-6lad.web-platform.test:8001/,http://www.web-platform.test:8081/,http://www1.web-platform.test:8081/,http://www2.web-platform.test:8081/,http://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8081/,http://xn--lve-6lad.web-platform.test:8081/,https://www.web-platform.test:8444/,https://www1.web-platform.test:8444/,https://www2.web-platform.test:8444/,https://xn--n8j6ds53lwwkrqhv28a.web-platform.test:8444/,https://xn--lve-6lad.web-platform.test:8444/',
+          '--additional-expectations',
+          'src/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process',
 
           # layout test failures are retried 3 times when '--test-list' is not
           # passed, but 0 times when '--test-list' is passed. We want to always
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index ee13f2b..c53a011 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -406,6 +406,29 @@
             ]
         }
     ],
+    "AndroidInProductHelpTranslateMenuButton": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "TranslateMenuButton",
+                    "params": {
+                        "availability": "any",
+                        "event_trigger": "name:translate_menu_button_iph_triggered;comparator:<2;window:90;storage:360",
+                        "event_trigger_delay": "name:translate_menu_button_iph_triggered;comparator:<1;window:7;storage:360",
+                        "event_used": "name:translate_menu_button_clicked;comparator:==0;window:90;storage:360",
+                        "session_rate": "==0",
+                        "tracking_only": "true"
+                    },
+                    "enable_features": [
+                        "IPH_TranslateMenuButton"
+                    ]
+                }
+            ]
+        }
+    ],
     "AndroidLanguageSettings": [
         {
             "platforms": [
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process b/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process
new file mode 100644
index 0000000..5c8bdef5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process
@@ -0,0 +1,121 @@
+# These tests currently fail when they run with --site-per-process.
+# See https://crbug.com/477150.
+
+# https://crbug.com/793127: NOTREACHED() from clamy@ tickled by frame consolidation CL?
+crbug.com/793127 http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
+crbug.com/793127 virtual/outofblink-cors/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
+crbug.com/793127 virtual/outofblink-cors-ns/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
+crbug.com/793127 external/wpt/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html [ Crash ]
+
+# https://crbug.com/769508: PlzNavigate-related, not-yet-investigated failures.
+crbug.com/769508 fast/css/acid2.html [ Failure ]
+
+# https://crbug.com/765779: unique name trouble with PlzNavigate
+crbug.com/765779 http/tests/loading/bad-server-subframe.html [ Failure ]
+
+# https://crbug.com/393285: Text-autosizing doesn't support OOPIFs.
+# https://crbug.com/667551: Pixel dumps don't support OOPIFs.
+# Both of the bugs above need to be fixed, before enabling the tests below.
+crbug.com/393285 http/tests/text-autosizing/narrow-iframe.html [ Failure Crash ]
+crbug.com/393285 http/tests/text-autosizing/wide-iframe.html [ Failure Crash ]
+
+# https://crbug.com/669083: console messages mismatch (origin-only VS full-URI)
+crbug.com/669083 http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
+crbug.com/669083 virtual/outofblink-cors/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
+crbug.com/669083 virtual/outofblink-cors-ns/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
+
+# https://crbug.com/608015 - node.contentDocument is undefined.
+crbug.com/608015 http/tests/inspector-protocol/access-inspected-object.js [ Failure Timeout ]
+
+# https://crbug.com/771003 - Dump history from all processes in layout tests
+crbug.com/771003 http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
+crbug.com/771003 virtual/outofblink-cors/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
+crbug.com/771003 virtual/outofblink-cors-ns/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
+
+# https://crbug.com/585188 - testRunner.addOriginAccessAllowListEntry is not replicated to OOPIFs.
+crbug.com/585188 http/tests/xmlhttprequest/origin-whitelisting-all.html [ Failure ]
+crbug.com/585188 virtual/outofblink-cors/http/tests/xmlhttprequest/origin-whitelisting-all.html [ Failure ]
+crbug.com/585188 http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html [ Failure ]
+crbug.com/585188 virtual/outofblink-cors/http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html [ Failure ]
+
+# https://crbug.com/606594 - UaF of delegate_ in WebFrameTestClient::willSendRequest
+# https://crbug.com/786510 - test tries to access cross-origin document body
+crbug.com/606594 http/tests/local/serviceworker/fetch-request-body-file.html [ Skip ]
+
+# https://crbug.com/616626 - allow_universal_access_from_file_urls doesn't work with --site-per-process.
+# https://crbug.com/665058 - EventSender drag-and-drop simulation doesn't support OOPIFs.
+crbug.com/665058 http/tests/local/drag-over-remote-content.html [ Crash ]
+
+# https://crbug.com/619662 - Expected console output differences.
+crbug.com/619662 http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
+crbug.com/619662 virtual/outofblink-cors/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
+crbug.com/619662 virtual/outofblink-cors-ns/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
+crbug.com/619662 virtual/stable/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
+
+# https://crbug.com/623268 - Can't inspect OOPIFs from main page's DevTools window.
+crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-blockable.js [ Timeout ]
+crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-none.js [ Timeout ]
+crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.js [ Timeout ]
+crbug.com/623268 http/tests/devtools/console-cross-origin-iframe-logging.js [ Timeout ]
+
+# https://crbug.com/645641 - test_runner.cc(1863) Check failed:
+# layout_test_runtime_flags_.have_top_loading_frame()
+crbug.com/645641 external/wpt/html/syntax/parsing/html5lib_tests19.html [ Crash Failure ]
+
+# http/ flaky tests w/ --site-per-process
+crbug.com/678482 http/tests/devtools/debugger/fetch-breakpoints.js [ Timeout Pass ]
+crbug.com/678491 http/tests/misc/webtiming-no-origin.html [ Crash Pass ]
+
+# Slow tests. These are listed in SlowTests listed here also because
+# expectations are unfortunately not inherited automatically (e.g. see
+# https://crbug.com/594216)
+crbug.com/451577 http/tests/devtools/network/network-datareceived.js [ Timeout Pass ]
+crbug.com/24182 http/tests/perf/large-inlined-script.html [ Timeout Pass ]
+
+# https://crbug.com/650348: Remove input event forwarding path from RenderFrameProxies
+# This test needs to be modified to not rely on EventSender passing mouse events directly to an OOPIF.
+crbug.com/650348 http/tests/webaudio/autoplay-crossorigin.html [ Timeout ]
+
+# https://crbug.com/778372: Unique name conflict with old entries?
+crbug.com/778372 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Crash ]
+
+# https://crbug.com/819800: Feature policy propagation trouble?  Test synchronization issue?
+crbug.com/819800 external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Failure ]
+
+# The tests below set document.domain.  Such tests are skipped, because they
+# cannot work when same-site WPT origins are isolated from each other via
+# --isolate-origins cmdline flag (which is how bots run the
+# |site_per_process_webkit_layout_tests| step).  Note that
+# https://crbug.com/783416 tracks adding a WPT origin that is cross-site, but
+# even after this bug is fixed we may decide to keep the current
+# --isolate-origins coverage and therefore the tests might end up being skipped
+# for the foreseeable future.
+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) virtual/mojo-blob-urls/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) 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.sub.html [ Skip ]
+Bug(none) external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ Skip ]
+Bug(none) virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html [ Skip ]
+Bug(none) virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ Skip ]
+Bug(none) external/wpt/wasm/serialization/window-domain-success.sub.html [ Skip ]
+Bug(none) external/wpt/wasm/serialization/window-similar-but-cross-origin-success.sub.html [ Skip ]
+
+# Layout tests don't work for printing cross-site frames.
+crbug.com/822372 http/tests/printing/cross-site-frame.html [ Crash ]
+crbug.com/822372 http/tests/printing/cross-site-frame-scrolled.html [ Crash ]
+
+# TODO(lukasza, alexmos): Triage these failures.
+crbug.com/801992 http/tests/misc/iframe-script-modify-attr.html [ Pass Crash ]
+crbug.com/807675 http/tests/images/image-decode-in-frame.html [ Crash Failure ]
+
+# https://crbug.com/872952: Autoplay is still disabled if there is no gesture.
+crbug.com/872952 http/tests/media/autoplay/document-user-activation-feature-policy-iframe-no-gesture.html [ Failure Pass Timeout ]
+
+# https://crbug.com/895001: Blink layout tests with cross-origin mouse clicks can fail without slow path hit testing
+crbug.com/895001 external/wpt/html/user-activation/message-event-activation-api-iframe-cross-origin.sub.tentative.html [ Timeout Pass ]
diff --git a/third_party/WebKit/LayoutTests/NeverFixTests b/third_party/WebKit/LayoutTests/NeverFixTests
index 32c8524..2478647 100644
--- a/third_party/WebKit/LayoutTests/NeverFixTests
+++ b/third_party/WebKit/LayoutTests/NeverFixTests
@@ -1948,32 +1948,3 @@
 
 # Not expected to pass in default configuration, only virtual test suite.
 crbug.com/830901 fast/webgl/video-metadata/texImage-video-last-uploaded-metadata.html [ WontFix ]
-
-# ====== Tests incompatible with the default Site Isolation from here ======
-# See also third_party/WebKit/LayoutTests/virtual/not-site-per-process/README.md
-#
-# When modifying the list of files that behave differently with and without
-# OOPIFs, please consider modifying all the locations below:
-# - LayoutTests/NeverFixTests (the section here)
-# - LayoutTests/VirtualTestSuites (virtual/not-site-per-process suite)
-# - LayoutTests/virtual/not-site-per-process/README.md
-
-# Tests permanently disabled with Site Isolation (e.g. tests that use
-# document.domain are are therefore inherently incompatible with isolation of
-# WPT origins):
-Bug(none) external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction [ WontFix ]
-Bug(none) external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html [ WontFix ]
-Bug(none) virtual/mojo-blob-urls/external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html [ WontFix ]
-Bug(none) external/wpt/dom/events/EventListener-incumbent-global-1.sub.html [ WontFix ]
-Bug(none) external/wpt/dom/events/EventListener-incumbent-global-2.sub.html [ WontFix ]
-Bug(none) external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ WontFix ]
-Bug(none) external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ WontFix ]
-Bug(none) external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html [ WontFix ]
-Bug(none) external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html [ WontFix ]
-Bug(none) external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html [ WontFix ]
-Bug(none) external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ WontFix ]
-Bug(none) virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html [ WontFix ]
-Bug(none) virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ WontFix ]
-Bug(none) external/wpt/wasm/serialization/window-domain-success.sub.html [ WontFix ]
-Bug(none) external/wpt/wasm/serialization/window-similar-but-cross-origin-success.sub.html [ WontFix ]
-# ====== Tests incompatible with the default Site Isolation until here ======
diff --git a/third_party/WebKit/LayoutTests/SlowTests b/third_party/WebKit/LayoutTests/SlowTests
index 1ca9c875c..37a527d 100644
--- a/third_party/WebKit/LayoutTests/SlowTests
+++ b/third_party/WebKit/LayoutTests/SlowTests
@@ -588,7 +588,6 @@
 crbug.com/874695 external/wpt/html/browsers/history/joint-session-history/joint-session-history-remove-iframe.html [ Slow ]
 crbug.com/874695 external/wpt/html/browsers/offline/application-cache-api/api_status_idle.https.html [ Slow ]
 crbug.com/874695 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Slow ]
 crbug.com/874695 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html [ Slow ]
 crbug.com/874695 external/wpt/html/browsers/windows/noreferrer-window-name.html [ Slow ]
 crbug.com/874695 external/wpt/html/dom/documents/resource-metadata-management/document-lastModified-01.html [ Slow ]
@@ -635,7 +634,6 @@
 crbug.com/874695 external/wpt/html/user-activation/activation-api-iframe-no-activate.tenative.html [ Slow ]
 crbug.com/874695 external/wpt/html/user-activation/activation-thru-contextmenu-event-manual.html [ Slow ]
 crbug.com/874695 external/wpt/html/user-activation/message-event-activation-api-iframe-cross-origin.sub.tentative.html [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/external/wpt/html/user-activation/message-event-activation-api-iframe-cross-origin.sub.tentative.html [ Slow ]
 crbug.com/874695 external/wpt/IndexedDB/interleaved-cursors-large.html [ Slow ]
 crbug.com/874695 external/wpt/IndexedDB/interleaved-cursors-small.html [ Slow ]
 crbug.com/874695 external/wpt/IndexedDB/nested-cloning-large-multiple.html [ Slow ]
@@ -658,7 +656,6 @@
 crbug.com/874695 external/wpt/orientation-sensor/AbsoluteOrientationSensor.https.html [ Slow ]
 crbug.com/874695 external/wpt/orientation-sensor/RelativeOrientationSensor.https.html [ Slow ]
 crbug.com/874695 external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Slow ]
 crbug.com/874695 external/wpt/performance-timeline/po-observe.html [ Slow ]
 crbug.com/874695 external/wpt/picture-in-picture/leave-picture-in-picture.html [ Slow ]
 crbug.com/874695 external/wpt/picture-in-picture/picture-in-picture-window.html [ Slow ]
@@ -860,6 +857,7 @@
 crbug.com/874695 http/tests/devtools/audits2/audits2-limited-run.js [ Slow ]
 crbug.com/874695 http/tests/devtools/audits2/audits2-successful-run.js [ Slow ]
 crbug.com/874695 http/tests/devtools/console/console-correct-suggestions.js [ Slow ]
+crbug.com/874695 http/tests/devtools/console-cross-origin-iframe-logging.js [ Slow ]
 crbug.com/874695 http/tests/devtools/editor/text-editor-formatter.js [ Slow ]
 crbug.com/874695 http/tests/devtools/inspect-iframe-from-different-domain.js [ Slow ]
 crbug.com/874695 http/tests/devtools/oopif/oopif-cookies-refresh.js [ Slow ]
@@ -954,11 +952,8 @@
 crbug.com/874695 http/tests/images/png-progressive-load.html [ Slow ]
 crbug.com/874695 http/tests/images/webp-progressive-load.html [ Slow ]
 crbug.com/874695 http/tests/inspector-protocol/request-mixed-content-status-blockable.js [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/http/tests/inspector-protocol/request-mixed-content-status-blockable.js [ Slow ]
 crbug.com/874695 http/tests/inspector-protocol/request-mixed-content-status-none.js [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/http/tests/inspector-protocol/request-mixed-content-status-none.js [ Slow ]
 crbug.com/874695 http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.js [ Slow ]
-crbug.com/874695 virtual/not-site-per-process/http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.js [ Slow ]
 crbug.com/874695 http/tests/media/controls/toggle-class-with-state-source-buffer.html [ Slow ]
 crbug.com/874695 http/tests/media/preload-conditions.html [ Slow ]
 crbug.com/874695 http/tests/media/video-buffered.html [ Slow ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 847609b..9dc12463 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -13,6 +13,7 @@
 
 crbug.com/807686 crbug.com/24182 jquery/manipulation.html [ Timeout Pass ]
 
+
 # See crbug.com/891427. These tests either fail or become flaky on one or more
 # platforms when --enable-display-compositor-pixel-dump is turned on. They need
 # triage. Note that these overlap with several existing entries in this
@@ -220,70 +221,6 @@
 crbug.com/887140 hdr/video-canvas-alpha.html [ Failure ]
 
 
-# ====== Site Isolation failures from here ======
-# See also third_party/WebKit/LayoutTests/virtual/not-site-per-process/README.md
-#
-# When modifying the list of files that behave differently with and without
-# OOPIFs, please consider modifying all the locations below:
-# - LayoutTests/TestExpectations (the section here)
-# - LayoutTests/VirtualTestSuites (virtual/not-site-per-process suite)
-# - LayoutTests/virtual/not-site-per-process/README.md
-
-# Tests temporarily disabled with Site Isolation - test issues or test harness
-# issues (e.g. missing OOPIF support in the test harness).
-# TODO(lukasza, alexmos): Burn down this list.
-crbug.com/585188 http/tests/xmlhttprequest/origin-whitelisting-all.html [ Failure ]
-crbug.com/585188 http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html [ Failure ]
-crbug.com/585188 virtual/outofblink-cors/http/tests/xmlhttprequest/origin-whitelisting-all.html [ Failure ]
-crbug.com/585188 virtual/outofblink-cors/http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html [ Failure ]
-crbug.com/606594 http/tests/local/serviceworker/fetch-request-body-file.html [ Skip ]
-crbug.com/645641 external/wpt/html/syntax/parsing/html5lib_tests19.html [ Crash Failure ]
-crbug.com/650348 http/tests/webaudio/autoplay-crossorigin.html [ Timeout ]
-crbug.com/665058 http/tests/local/drag-over-remote-content.html [ Crash ]
-crbug.com/771003 http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
-crbug.com/771003 virtual/outofblink-cors-ns/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
-crbug.com/771003 virtual/outofblink-cors/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
-
-# Tests temporarily disabled with Site Isolation - known differences in product
-# behavior (either accepted for the long-term, or for the short-term):
-# TODO(lukasza, alexmos): Burn down this list.
-# Text auto-sizing:
-crbug.com/393285 http/tests/text-autosizing/narrow-iframe.html [ Failure Crash ]
-crbug.com/393285 http/tests/text-autosizing/wide-iframe.html [ Failure Crash ]
-# Console message differences (e.g. full URI vs origin-only):
-crbug.com/619662 http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
-crbug.com/619662 virtual/outofblink-cors-ns/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
-crbug.com/619662 virtual/outofblink-cors/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
-crbug.com/619662 virtual/stable/http/tests/navigation/cross-origin-fragment-navigation-is-async.html [ Failure ]
-crbug.com/669083 http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
-crbug.com/669083 virtual/outofblink-cors-ns/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
-crbug.com/669083 virtual/outofblink-cors/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
-crbug.com/886588 external/wpt/dom/events/EventListener-addEventListener.sub.window.html [ Failure ]
-
-# Tests temporarily disabled with Site Isolation - uninvestigated bugs:
-# TODO(lukasza, alexmos): Burn down this list.
-crbug.com/608015 http/tests/inspector-protocol/access-inspected-object.js [ Failure Timeout ]
-crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-blockable.js [ Timeout ]
-crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-none.js [ Timeout ]
-crbug.com/623268 http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.js [ Timeout ]
-crbug.com/678482 http/tests/devtools/debugger/fetch-breakpoints.js [ Timeout Pass ]
-crbug.com/678491 http/tests/misc/webtiming-no-origin.html [ Crash Pass ]
-crbug.com/765779 http/tests/loading/bad-server-subframe.html [ Failure ]
-crbug.com/769508 fast/css/acid2.html [ Failure ]
-crbug.com/778372 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Crash ]
-crbug.com/793127 external/wpt/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html [ Crash ]
-crbug.com/793127 http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
-crbug.com/793127 virtual/outofblink-cors-ns/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
-crbug.com/793127 virtual/outofblink-cors/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
-crbug.com/801992 http/tests/misc/iframe-script-modify-attr.html [ Pass Crash ]
-crbug.com/807675 http/tests/images/image-decode-in-frame.html [ Crash Failure ]
-crbug.com/819800 external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Failure ]
-crbug.com/822372 http/tests/printing/cross-site-frame-scrolled.html [ Crash ]
-crbug.com/822372 http/tests/printing/cross-site-frame.html [ Crash ]
-crbug.com/872952 http/tests/media/autoplay/document-user-activation-feature-policy-iframe-no-gesture.html [ Failure Pass Timeout ]
-crbug.com/895001 external/wpt/html/user-activation/message-event-activation-api-iframe-cross-origin.sub.tentative.html [ Timeout Pass ]
-# ====== Site Isolation failures until here ======
-
 # ====== Oilpan-only failures from here ======
 # Most of these actually cause the tests to report success, rather than
 # failure. Expected outputs will be adjusted for the better once Oilpan
@@ -1932,7 +1869,7 @@
 crbug.com/667560 [ Debug ] http/tests/devtools/elements/styles-3/styles-change-node-while-editing.js [ Pass Failure ]
 crbug.com/778515 http/tests/devtools/elements/styles-3/styles-add-new-rule.js [ Pass Failure ]
 
-crbug.com/667560 http/tests/devtools/console-cross-origin-iframe-logging.js [ Pass Timeout ]
+crbug.com/667560 [ Win ] http/tests/devtools/console-cross-origin-iframe-logging.js [ Pass Timeout ]
 
 crbug.com/778391 http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js [ Pass Failure ]
 crbug.com/778391 http/tests/devtools/elements/styles-3/styles-disable-inherited.js [ Pass Failure ]
@@ -4343,9 +4280,9 @@
 crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.worker.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/798864 [ Android ] virtual/not-site-per-process/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html [ Failure ]
+crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-serviceworker-failure.https.html [ Failure ]
-crbug.com/798864 [ Android ] virtual/not-site-per-process/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ Failure ]
+crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html [ Failure ]
 crbug.com/798864 [ Android ] external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html [ Failure ]
@@ -5026,7 +4963,7 @@
 crbug.com/839332 [ Mac ] virtual/video-surface-layer/media/video-no-audio.html [ Pass Failure ]
 
 # This will break for now
-crbug.com/841933 virtual/not-site-per-process/http/tests/webaudio/autoplay-crossorigin.html [ Skip ]
+crbug.com/841933 http/tests/webaudio/autoplay-crossorigin.html [ Skip ]
 
 # Sheriff 2018-05-22
 crbug.com/845610 [ Win ] http/tests/inspector-protocol/target/target-browser-context.js [ Pass Failure ]
diff --git a/third_party/WebKit/LayoutTests/VirtualTestSuites b/third_party/WebKit/LayoutTests/VirtualTestSuites
index d52f120..389c123 100644
--- a/third_party/WebKit/LayoutTests/VirtualTestSuites
+++ b/third_party/WebKit/LayoutTests/VirtualTestSuites
@@ -805,215 +805,5 @@
     "prefix": "webgl-extra-video-texture-metadata",
     "base": "fast/webgl/video-metadata",
     "args": ["--enable-blink-features=ExtraWebGLVideoTextureMetadata"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/dom/events/EventListener-addEventListener.sub.window.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/dom/events/EventListener-incumbent-global-1.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/dom/events/EventListener-incumbent-global-2.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/syntax/parsing/html5lib_tests19.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/html/user-activation/message-event-activation-api-iframe-cross-origin.sub.tentative.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/wasm/serialization/window-domain-success.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "external/wpt/wasm/serialization/window-similar-but-cross-origin-success.sub.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "fast/css/acid2.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/devtools/debugger/fetch-breakpoints.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/images/image-decode-in-frame.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/inspector-protocol/access-inspected-object.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/inspector-protocol/request-mixed-content-status-blockable.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/inspector-protocol/request-mixed-content-status-none.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.js",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/loading/bad-server-subframe.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/local/drag-over-remote-content.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/local/serviceworker/fetch-request-body-file.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/media/autoplay/document-user-activation-feature-policy-iframe-no-gesture.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/misc/iframe-script-modify-attr.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/misc/webtiming-no-origin.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/navigation/cross-origin-fragment-navigation-is-async.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/printing/cross-site-frame-scrolled.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/printing/cross-site-frame.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/security/mixedContent/insecure-iframe-in-main-frame.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/text-autosizing/narrow-iframe.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/text-autosizing/wide-iframe.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/webaudio/autoplay-crossorigin.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/xmlhttprequest/origin-whitelisting-all.html",
-    "args": ["--disable-site-isolation-trials"]
-  },
-  {
-    "prefix": "not-site-per-process",
-    "base": "http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html",
-    "args": ["--disable-site-isolation-trials"]
   }
 ]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
new file mode 100644
index 0000000..3ef61bc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/overflow-wrap-break-word-001-ref.html">
+<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: pre-wrap' property, that must prevent the word to be broken.">
+<style>
+div {
+   position: relative;
+   font-size: 20px;
+   font-family: Ahem;
+}
+.fail {
+  position: absolute;
+  color: red;
+  z-index: -1;
+}
+span { color: green; }
+.test {
+  color: green;
+  line-height: 1em;
+  width: 5ch;
+
+  white-space: pre-wrap;
+  overflow-wrap: break-word;
+}
+</style>
+<body>
+  <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+  <div class="fail">XXX<span>XX<br></span><span>XXXXX<br></span>XXXXX<br>XXXX<span>X<br></span><span>XXXXX</span></div>
+  <div class="test">XXX
+ XXXXXXXXX</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt
new file mode 100644
index 0000000..85e1b00
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt
@@ -0,0 +1,7 @@
+This is a testharness.js-based test.
+PASS no popups with frame removal
+PASS no popups with frame navigation
+PASS no popups from synchronously reachable window
+FAIL no popups from another synchronously reachable window assert_equals: expected no popup during beforeunload expected null but got object "[object Window]"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js
new file mode 100644
index 0000000..3dff403
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js
@@ -0,0 +1,113 @@
+test(function() {
+  var test_window = window.open('', '', 'height=1,width=1');
+  var test_document = test_window.document;
+
+  var frame = test_document.createElement('iframe');
+  test_document.body.appendChild(frame);
+
+  frame.contentWindow.onpagehide = function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during pagehide");
+  };
+  frame.contentDocument.onvisibilitychange = function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during visibilitychange");
+  };
+  frame.contentWindow.onbeforeunload = function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during beforeunload");
+  };
+  frame.contentWindow.onunload = function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during unload");
+  };
+
+  frame.remove();
+}, 'no popups with frame removal');
+
+async_test(function(t) {
+  var test_window = window.open('', '', 'height=1,width=1');
+  var test_document = test_window.document;
+
+  var frame = test_document.createElement('iframe');
+  test_document.body.appendChild(frame);
+
+  frame.contentWindow.onpagehide = t.step_func(function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during pagehide");
+  });
+  frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during visibilitychange");
+  });
+  frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during beforeunload");
+  });
+  frame.contentWindow.onunload = t.step_func(function(evt) {
+    assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+      "expected no popup during unload");
+  });
+
+  frame.onload = t.step_func_done();
+
+  frame.contentWindow.location.href = "about:blank";
+}, 'no popups with frame navigation');
+
+async_test(function(t) {
+  var test_window = window.open('', '', 'height=1,width=1');
+  var test_document = test_window.document;
+
+  var frame = test_document.createElement('iframe');
+  test_document.body.appendChild(frame);
+
+  frame.contentWindow.onpagehide = t.step_func(function(evt) {
+    assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during pagehide");
+  });
+  frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+    assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during visibilitychange");
+  });
+  frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+    assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during beforeunload");
+  });
+  frame.contentWindow.onunload = t.step_func(function(evt) {
+    assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during unload");
+  });
+
+  frame.onload = t.step_func_done();
+
+  frame.contentWindow.location.href = "about:blank";
+}, 'no popups from synchronously reachable window');
+
+async_test(function(t) {
+  var test_window = window.open('', '', 'height=1,width=1');
+  var test_document = test_window.document;
+
+  var frame = test_document.createElement('iframe');
+  test_document.body.appendChild(frame);
+
+  frame.contentWindow.onpagehide = t.step_func(function(evt) {
+    assert_equals(window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during pagehide");
+  });
+  frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+    assert_equals(window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during visibilitychange");
+  });
+  frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+    assert_equals(window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during beforeunload");
+  });
+  frame.contentWindow.onunload = t.step_func(function(evt) {
+    assert_equals(window.open('', '', 'height=1,width=1'), null,
+      "expected no popup during unload");
+  });
+
+  frame.onload = t.step_func_done();
+
+  frame.contentWindow.location.href = "about:blank";
+}, 'no popups from another synchronously reachable window');
diff --git a/third_party/WebKit/LayoutTests/flag-specific/site-per-process/external/wpt/dom/events/EventListener-addEventListener.sub.window-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/external/wpt/dom/events/EventListener-addEventListener.sub.window-expected.txt
new file mode 100644
index 0000000..d925bb0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/external/wpt/dom/events/EventListener-addEventListener.sub.window-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL EventListener.addEventListener doesn't throw when a cross origin object is passed in. Failed to execute 'addEventListener' on 'EventTarget': The callback provided as parameter 2 is a cross origin object.
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
similarity index 92%
rename from third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
rename to third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
index 16ba086..daf6459 100644
--- a/third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
+++ b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
@@ -4,5 +4,5 @@
 Set-Cookie: name=value
 
 <script src="http://devtools.oopif.test:8000/inspector-protocol/network/resources/cookie.pl">
-Set-Cookie: name=value
+Set-Cookie: undefined
 
diff --git a/third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/security-info-on-response-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
similarity index 81%
rename from third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
rename to third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
index 547fe81..0ca4430 100644
--- a/third_party/WebKit/LayoutTests/flag-specific/disable-site-isolation-trials/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
+++ b/third_party/WebKit/LayoutTests/flag-specific/site-per-process/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
@@ -1,5 +1,5 @@
 Tests that security details are reported, even in the case of site isolation.
 
 Security state: insecure
-Set-Cookie: name=value
+Set-Cookie: undefined
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
index daf6459..16ba086 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/raw-headers-for-protected-document-expected.txt
@@ -4,5 +4,5 @@
 Set-Cookie: name=value
 
 <script src="http://devtools.oopif.test:8000/inspector-protocol/network/resources/cookie.pl">
-Set-Cookie: undefined
+Set-Cookie: name=value
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/security-info-on-response-expected.txt b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
index 0ca4430..547fe81 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/network/security-info-on-response-expected.txt
@@ -1,5 +1,5 @@
 Tests that security details are reported, even in the case of site isolation.
 
 Security state: insecure
-Set-Cookie: undefined
+Set-Cookie: name=value
 
diff --git a/third_party/WebKit/LayoutTests/virtual/not-site-per-process/README.md b/third_party/WebKit/LayoutTests/virtual/not-site-per-process/README.md
deleted file mode 100644
index 6fc09489..0000000
--- a/third_party/WebKit/LayoutTests/virtual/not-site-per-process/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# virtual/not-site-per-process
-
-## Summary
-
-Layout tests use the default site isolation from the platform they are
-run on.  For example, strict site isolation (aka site-per-process) is
-used on desktop platforms.
-
-Additionally, on platforms where strict site isolation is enabled,
-layout tests opt into slightly stricter isolation and enabling isolating
-same-site origins used by Web Platform Tests. This ensures that features
-covered by WPT also provide sufficient coverage of how these feature
-behave in presence of out-of-process iframes.
-
-Tests under `virtual/not-site-per-process` are run with
-`--disable-site-isolation-trials` cmdline flag which turns off site
-isolation.  This is needed to preserve test coverage provided by around
-60 tests that fail when run with site isolation.
-
-When modifying the list of files that behave differently with and without
-OOPIFs, please consider modifying all the locations below:
-- LayoutTests/VirtualTestSuites (virtual/not-site-per-process suite)
-- LayoutTests/virtual/not-site-per-process/README.md
-- LayoutTests/TestExpectations and/or LayoutTests/NeverFixTests
-  ("Site Isolation failures" section)
-
-
-## Tests incompatible with WPT origin isolation
-
-The following tests modify `document.domain` and are therefore incompatible with
-isolation of WPT origins.  The tests need to stay under
-`virtual/not-site-per-process` forever.  These tests are covered by
-`LayoutTests/NeverFixTests` expectations file.
-
-- external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction
-- external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html
-- external/wpt/dom/events/EventListener-incumbent-global-1.sub.html
-- external/wpt/dom/events/EventListener-incumbent-global-2.sub.html
-- external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html
-- external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html
-- external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html
-- external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html
-- external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html
-- external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html
-- external/wpt/wasm/serialization/window-domain-success.sub.html
-- external/wpt/wasm/serialization/window-similar-but-cross-origin-success.sub.html
-
-## Tests that need further investigation and/or decisions
-
-Remaining tests need further investigation as they may either 1) hide
-previously unknown OOPIF-related bugs or 2) expose known OOPIF-related
-differences in product behavior or 3) expose known OOPIF-support issues
-in tests or in the test harness.  Over time, such tests should be
-removed from `virtual/not-site-per-process`.  These tests are covered
-by `LayoutTests/TestExpectations` file.
diff --git a/third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom b/third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom
index ef7f815..728e4c50 100644
--- a/third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom
+++ b/third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom
@@ -9,6 +9,9 @@
 // hints are provided to the renderer and aid in optimizing the loading of
 // resources.
 struct PreviewsResourceLoadingHints {
+    // SourceId to use when recording UKM for the resource loading hints. This
+    // is based on the browser NavigationHandle's navigation id.
+    int64 ukm_source_id;
     // List of subresources to block. The list contains the URL patterns of
     // subresources to block.
     // TODO(tbansal): https://crbug.com/856243. Update the mojom message below
diff --git a/third_party/blink/public/platform/modules/background_sync/background_sync.mojom b/third_party/blink/public/platform/modules/background_sync/background_sync.mojom
index d87bd0d..328eec0 100644
--- a/third_party/blink/public/platform/modules/background_sync/background_sync.mojom
+++ b/third_party/blink/public/platform/modules/background_sync/background_sync.mojom
@@ -12,7 +12,6 @@
 };
 
 struct SyncRegistration {
-  int64 id = -1;
   string tag = "";
   BackgroundSyncNetworkState network_state = ONLINE;
 };
diff --git a/third_party/blink/renderer/core/DEPS b/third_party/blink/renderer/core/DEPS
index d90cec9..21541a9baa 100644
--- a/third_party/blink/renderer/core/DEPS
+++ b/third_party/blink/renderer/core/DEPS
@@ -71,6 +71,7 @@
         "+base/message_loop/message_loop.h",
         # Test harness may use cc directly instead of going through WebViewImpl etc.
         "+cc",
+        "+components/ukm/test_ukm_recorder.h",
 	# TODO(crbug.com/838693): Test harnesses use LayerTreeView
 	# from content instead of a fake WebLayerTreeView implementation, so
 	# that the Web abstraction can go away.
@@ -88,7 +89,4 @@
     "find_task_controller.cc" : [
         "+third_party/blink/renderer/core/frame/web_local_frame_impl.h",
     ],
-    "local_frame_ukm_aggregator_test.cc" : [
-        "+components/ukm/test_ukm_recorder.h"
-    ],
 }
diff --git a/third_party/blink/renderer/core/dom/container_node.cc b/third_party/blink/renderer/core/dom/container_node.cc
index 0abdb27..cce4bc21 100644
--- a/third_party/blink/renderer/core/dom/container_node.cc
+++ b/third_party/blink/renderer/core/dom/container_node.cc
@@ -727,11 +727,8 @@
 
   DCHECK_EQ(old_child.parentNode(), this);
 
-  if (!old_child.NeedsAttach()) {
-    AttachContext context;
-    context.clear_invalidation = true;
-    old_child.DetachLayoutTree(context);
-  }
+  if (!old_child.NeedsAttach())
+    old_child.DetachLayoutTree();
 
   if (next_child)
     next_child->SetPreviousSibling(previous_child);
@@ -954,6 +951,20 @@
   }
 }
 
+void ContainerNode::RemovedFrom(ContainerNode& insertion_point) {
+  if (isConnected()) {
+    if (NeedsStyleInvalidation()) {
+      GetDocument()
+          .GetStyleEngine()
+          .GetPendingNodeInvalidations()
+          .ClearInvalidation(*this);
+      ClearNeedsStyleInvalidation();
+    }
+    ClearChildNeedsStyleInvalidation();
+  }
+  Node::RemovedFrom(insertion_point);
+}
+
 #if DCHECK_IS_ON()
 namespace {
 
@@ -994,11 +1005,8 @@
 }
 
 void ContainerNode::DetachLayoutTree(const AttachContext& context) {
-  AttachContext children_context(context);
-  children_context.clear_invalidation = true;
-
   for (Node* child = firstChild(); child; child = child->nextSibling())
-    child->DetachLayoutTree(children_context);
+    child->DetachLayoutTree(context);
 
   SetChildNeedsStyleRecalc();
   Node::DetachLayoutTree(context);
diff --git a/third_party/blink/renderer/core/dom/container_node.h b/third_party/blink/renderer/core/dom/container_node.h
index ebb81ac..afb1264 100644
--- a/third_party/blink/renderer/core/dom/container_node.h
+++ b/third_party/blink/renderer/core/dom/container_node.h
@@ -158,6 +158,7 @@
   void SetActive(bool = true) override;
   void SetDragged(bool) override;
   void SetHovered(bool = true) override;
+  void RemovedFrom(ContainerNode& insertion_point) override;
 
   bool ChildrenOrSiblingsAffectedByFocus() const {
     return HasRestyleFlag(
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index b65202c..c1a72a61 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -3583,6 +3583,15 @@
     }
 
     AnchorElementMetrics::MaybeReportViewportMetricsOnLoad(*this);
+
+    // If this is a document associated with a resource loading hints based
+    // preview, then record the resource loading hints UKM now that the load is
+    // finished.
+    PreviewsResourceLoadingHints* hints =
+        Loader()->GetPreviewsResourceLoadingHints();
+    if (hints) {
+      hints->RecordUKM(UkmRecorder());
+    }
   }
 
   return true;
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index c5a8c27..0ef43f20 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -1926,13 +1926,6 @@
       CustomElement::EnqueueDisconnectedCallback(this);
     else if (IsUpgradedV0CustomElement())
       V0CustomElement::DidDetach(this, insertion_point.GetDocument());
-
-    if (NeedsStyleInvalidation()) {
-      GetDocument()
-          .GetStyleEngine()
-          .GetPendingNodeInvalidations()
-          .ClearInvalidation(*this);
-    }
   }
 
   GetDocument().GetRootScrollerController().ElementRemoved(*this);
@@ -2086,13 +2079,6 @@
     GetDocument().UserActionElements().DidDetach(*this);
   }
 
-  if (context.clear_invalidation) {
-    GetDocument()
-        .GetStyleEngine()
-        .GetPendingNodeInvalidations()
-        .ClearInvalidation(*this);
-  }
-
   SetNeedsResizeObserverUpdate();
 
   DCHECK(NeedsAttach());
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
index eff5658..8f872e7f 100644
--- a/third_party/blink/renderer/core/dom/node.cc
+++ b/third_party/blink/renderer/core/dom/node.cc
@@ -1393,7 +1393,6 @@
     GetLayoutObject()->DestroyAndCleanupAnonymousWrappers();
   SetLayoutObject(nullptr);
   SetStyleChange(kNeedsReattachStyleChange);
-  ClearChildNeedsStyleInvalidation();
 }
 
 const ComputedStyle* Node::VirtualEnsureComputedStyle(
diff --git a/third_party/blink/renderer/core/dom/node.h b/third_party/blink/renderer/core/dom/node.h
index f0d36461..5b15e790 100644
--- a/third_party/blink/renderer/core/dom/node.h
+++ b/third_party/blink/renderer/core/dom/node.h
@@ -657,7 +657,6 @@
     // objects when we need to do whitespace re-attachment.
     LayoutObject* previous_in_flow = nullptr;
     bool performing_reattach = false;
-    bool clear_invalidation = false;
     // True if the previous_in_flow member is up-to-date, even if it is nullptr.
     bool use_previous_in_flow = false;
 
diff --git a/third_party/blink/renderer/core/dom/shadow_root.cc b/third_party/blink/renderer/core/dom/shadow_root.cc
index 1e416c05..b4623b4 100644
--- a/third_party/blink/renderer/core/dom/shadow_root.cc
+++ b/third_party/blink/renderer/core/dom/shadow_root.cc
@@ -164,16 +164,6 @@
   ClearChildNeedsReattachLayoutTree();
 }
 
-void ShadowRoot::DetachLayoutTree(const AttachContext& context) {
-  Node::AttachContext children_context(context);
-  children_context.clear_invalidation = true;
-  GetDocument()
-      .GetStyleEngine()
-      .GetPendingNodeInvalidations()
-      .ClearInvalidation(*this);
-  DocumentFragment::DetachLayoutTree(children_context);
-}
-
 Node::InsertionNotificationRequest ShadowRoot::InsertedInto(
     ContainerNode& insertion_point) {
   DocumentFragment::InsertedInto(insertion_point);
@@ -212,12 +202,6 @@
         root->RemoveChildShadowRoot();
       registered_with_parent_shadow_root_ = false;
     }
-    if (NeedsStyleInvalidation()) {
-      GetDocument()
-          .GetStyleEngine()
-          .GetPendingNodeInvalidations()
-          .ClearInvalidation(*this);
-    }
   }
 
   DocumentFragment::RemovedFrom(insertion_point);
diff --git a/third_party/blink/renderer/core/dom/shadow_root.h b/third_party/blink/renderer/core/dom/shadow_root.h
index f696d7c5..5d4a9223 100644
--- a/third_party/blink/renderer/core/dom/shadow_root.h
+++ b/third_party/blink/renderer/core/dom/shadow_root.h
@@ -105,8 +105,6 @@
   }
   bool IsUserAgent() const { return GetType() == ShadowRootType::kUserAgent; }
 
-  void DetachLayoutTree(const AttachContext& = AttachContext()) override;
-
   InsertionNotificationRequest InsertedInto(ContainerNode&) override;
   void RemovedFrom(ContainerNode&) override;
 
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
index afe1fe16..62d5252 100644
--- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
+++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
@@ -459,6 +459,9 @@
 
   Vector<TextSuggestionInfo>& suggestion_infos =
       suggestion_infos_with_node_and_highlight_color.suggestion_infos;
+  if (suggestion_infos.IsEmpty())
+    return;
+
   int span_union_start = suggestion_infos[0].span_start;
   int span_union_end = suggestion_infos[0].span_end;
   for (wtf_size_t i = 1; i < suggestion_infos.size(); ++i) {
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller_test.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller_test.cc
index 5b479a1b..1f1d3ac 100644
--- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller_test.cc
+++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller_test.cc
@@ -25,6 +25,25 @@
                     ->GetTextSuggestionController()
                     .text_suggestion_host_);
   }
+
+  void ShowSuggestionMenu(
+      const HeapVector<std::pair<Member<Node>, Member<DocumentMarker>>>&
+          node_suggestion_marker_pairs,
+      size_t max_number_of_suggestions) {
+    GetDocument().GetFrame()->GetTextSuggestionController().ShowSuggestionMenu(
+        node_suggestion_marker_pairs, max_number_of_suggestions);
+  }
+
+  EphemeralRangeInFlatTree ComputeRangeSurroundingCaret(
+      const PositionInFlatTree& caret_position) {
+    const Node* const position_node = caret_position.ComputeContainerNode();
+    const unsigned position_offset_in_node =
+        caret_position.ComputeOffsetInContainerNode();
+    // See ComputeRangeSurroundingCaret() in TextSuggestionController.
+    return EphemeralRangeInFlatTree(
+        PositionInFlatTree(position_node, position_offset_in_node - 1),
+        PositionInFlatTree(position_node, position_offset_in_node + 1));
+  }
 };
 
 TEST_F(TextSuggestionControllerTest, ApplySpellCheckSuggestion) {
@@ -477,6 +496,23 @@
   // We don't trigger menu in this case so there shouldn't be any mojom
   // connection available.
   EXPECT_FALSE(IsTextSuggestionHostAvailable());
+
+  const VisibleSelectionInFlatTree& selection =
+      GetFrame().Selection().ComputeVisibleSelectionInFlatTree();
+  EXPECT_FALSE(selection.IsNone());
+
+  const EphemeralRangeInFlatTree& range_to_check =
+      ComputeRangeSurroundingCaret(selection.Start());
+
+  const HeapVector<std::pair<Member<Node>, Member<DocumentMarker>>>&
+      node_suggestion_marker_pairs =
+          GetFrame().GetDocument()->Markers().MarkersIntersectingRange(
+              range_to_check, DocumentMarker::MarkerTypes::Suggestion());
+  EXPECT_FALSE(node_suggestion_marker_pairs.IsEmpty());
+
+  // Calling ShowSuggestionMenu() shouldn't crash. See crbug.com/901135.
+  // ShowSuggestionMenu() may still get called because of race condition.
+  ShowSuggestionMenu(node_suggestion_marker_pairs, 3);
 }
 
 TEST_F(TextSuggestionControllerTest, SuggestionMarkerWithSuggestion) {
diff --git a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
index 04a32b6..78cd5f0a 100644
--- a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
+++ b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/html/anchor_element_metrics_sender.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/core/dom/document.h"
@@ -12,6 +13,20 @@
 
 namespace blink {
 
+namespace {
+
+// Returns true if |anchor_element| should be discarded, and not used for
+// navigation prediction.
+bool ShouldDiscardAnchorElement(const HTMLAnchorElement& anchor_element) {
+  Frame* frame = anchor_element.GetDocument().GetFrame();
+  if (!frame || !frame->IsLocalFrame())
+    return true;
+  LocalFrame* local_frame = ToLocalFrame(frame);
+  return local_frame->IsAdSubframe();
+}
+
+}  // namespace
+
 // static
 const char AnchorElementMetricsSender::kSupplementName[] =
     "DocumentAnchorElementMetricsSender";
@@ -64,6 +79,15 @@
 void AnchorElementMetricsSender::AddAnchorElement(HTMLAnchorElement& element) {
   if (has_onload_report_sent_)
     return;
+
+  bool is_ad_frame_element = ShouldDiscardAnchorElement(element);
+  UMA_HISTOGRAM_BOOLEAN("AnchorElementMetrics.IsAdFrameElement",
+                        is_ad_frame_element);
+
+  // We ignore anchor elements that are in ad frames.
+  if (is_ad_frame_element)
+    return;
+
   anchor_elements_.insert(&element);
 }
 
diff --git a/third_party/blink/renderer/core/layout/line/breaking_context_inline_headers.h b/third_party/blink/renderer/core/layout/line/breaking_context_inline_headers.h
index 14d9ab16..37a5f1fa 100644
--- a/third_party/blink/renderer/core/layout/line/breaking_context_inline_headers.h
+++ b/third_party/blink/renderer/core/layout/line/breaking_context_inline_headers.h
@@ -208,6 +208,7 @@
   bool ignoring_spaces_;
   bool current_character_is_space_;
   bool single_leading_space_;
+  unsigned current_start_offset_;  // initial offset for the current text
   bool applied_start_width_;
   bool include_end_width_;
   bool auto_wrap_;
@@ -379,6 +380,10 @@
   if (collapse_white_space_ && !ComputedStyle::CollapseWhiteSpace(last_ws_))
     current_character_is_space_ = false;
 
+  // Since current_ iterates all along the text's length, we need to store the
+  // initial offset of the current handle text so that we can then identify
+  // a single leading white-space as potential breaking opportunities.
+  current_start_offset_ = current_.Offset();
   single_leading_space_ = false;
 }
 
@@ -1362,7 +1367,7 @@
     if (auto_wrap_ && current_style_->BreakOnlyAfterWhiteSpace()) {
       line_break_.MoveTo(current_.GetLineLayoutItem(), current_.Offset(),
                          current_.NextBreakablePosition());
-      if (current_.Offset() == 1)
+      if (current_.Offset() == current_start_offset_ + 1)
         single_leading_space_ = true;
     }
   }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
index 282f97b..0bddc84 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
@@ -20,11 +20,11 @@
 struct SameSizeAsNGConstraintSpace {
   NGLogicalSize logical_sizes[3];
   NGPhysicalSize physical_sizes[1];
-  LayoutUnit layout_units[3];
   NGMarginStrut margin_strut;
   NGBfcOffset bfc_offset;
   NGExclusionSpace exclusion_space;
   base::Optional<LayoutUnit> optional_layout_unit;
+  LayoutUnit layout_units[3];
   unsigned flags[1];
 };
 
@@ -41,22 +41,22 @@
       replaced_percentage_resolution_size_(
           builder.replaced_percentage_resolution_size_),
       initial_containing_block_size_(builder.initial_containing_block_size_),
+      margin_strut_(is_new_fc ? NGMarginStrut() : builder.margin_strut_),
+      bfc_offset_(is_new_fc ? NGBfcOffset() : builder.bfc_offset_),
+      floats_bfc_block_offset_(is_new_fc ? base::nullopt
+                                         : builder.floats_bfc_block_offset_),
       fragmentainer_block_size_(builder.fragmentainer_block_size_),
       fragmentainer_space_at_bfc_start_(
           builder.fragmentainer_space_at_bfc_start_),
+      clearance_offset_(is_new_fc ? LayoutUnit::Min()
+                                  : builder.clearance_offset_),
       block_direction_fragmentation_type_(builder.fragmentation_type_),
       table_cell_child_layout_phase_(builder.table_cell_child_layout_phase_),
       adjoining_floats_(builder.adjoining_floats_),
       writing_mode_(static_cast<unsigned>(out_writing_mode)),
       direction_(static_cast<unsigned>(builder.text_direction_)),
       flags_(builder.flags_),
-      baseline_requests_(builder.baseline_requests_.Serialize()),
-      margin_strut_(is_new_fc ? NGMarginStrut() : builder.margin_strut_),
-      bfc_offset_(is_new_fc ? NGBfcOffset() : builder.bfc_offset_),
-      floats_bfc_block_offset_(is_new_fc ? base::nullopt
-                                         : builder.floats_bfc_block_offset_),
-      clearance_offset_(is_new_fc ? LayoutUnit::Min()
-                                  : builder.clearance_offset_) {
+      baseline_requests_(builder.baseline_requests_.Serialize()) {
   bool is_in_parallel_flow =
       IsParallelWritingMode(builder.parent_writing_mode_, out_writing_mode);
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
index 3573eb3..afb0548 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
@@ -308,9 +308,17 @@
   NGLogicalSize replaced_percentage_resolution_size_;
   NGPhysicalSize initial_containing_block_size_;
 
+  NGMarginStrut margin_strut_;
+  NGBfcOffset bfc_offset_;
+  base::Optional<LayoutUnit> floats_bfc_block_offset_;
+
+  NGExclusionSpace exclusion_space_;
+
   LayoutUnit fragmentainer_block_size_;
   LayoutUnit fragmentainer_space_at_bfc_start_;
 
+  LayoutUnit clearance_offset_;
+
   unsigned block_direction_fragmentation_type_ : 2;
   unsigned table_cell_child_layout_phase_ : 2;  // NGTableCellChildLayoutPhase
   unsigned adjoining_floats_ : 2;               // NGFloatTypes
@@ -318,13 +326,6 @@
   unsigned direction_ : 1;
   unsigned flags_ : kNumberOfConstraintSpaceFlags;  // ConstraintSpaceFlags
   unsigned baseline_requests_ : NGBaselineRequestList::kSerializedBits;
-
-  NGMarginStrut margin_strut_;
-  NGBfcOffset bfc_offset_;
-  base::Optional<LayoutUnit> floats_bfc_block_offset_;
-
-  NGExclusionSpace exclusion_space_;
-  LayoutUnit clearance_offset_;
 };
 
 inline std::ostream& operator<<(std::ostream& stream,
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index 9582217..2617c8dd 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -93,14 +93,6 @@
   void TakeFocus(WebFocusType) override {}
 
   void FocusedNodeChanged(Node*, Node*) override {}
-  Page* CreateWindow(LocalFrame*,
-                     const FrameLoadRequest&,
-                     const WebWindowFeatures&,
-                     NavigationPolicy,
-                     SandboxFlags,
-                     const SessionStorageNamespaceId&) override {
-    return nullptr;
-  }
   void Show(NavigationPolicy) override {}
 
   void DidOverscroll(const FloatSize&,
@@ -139,6 +131,15 @@
 
   void CloseWindowSoon() override {}
 
+  Page* CreateWindowDelegate(LocalFrame*,
+                             const FrameLoadRequest&,
+                             const WebWindowFeatures&,
+                             NavigationPolicy,
+                             SandboxFlags,
+                             const SessionStorageNamespaceId&) override {
+    return nullptr;
+  }
+
   bool OpenJavaScriptAlertDelegate(LocalFrame*, const String&) override {
     return false;
   }
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
index 7336bc8..ace9b866 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
@@ -5,6 +5,8 @@
 #include "third_party/blink/renderer/core/loader/previews_resource_loading_hints.h"
 
 #include "base/metrics/histogram_macros.h"
+#include "services/metrics/public/cpp/ukm_builders.h"
+#include "services/metrics/public/cpp/ukm_recorder.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
@@ -28,16 +30,25 @@
 // static
 PreviewsResourceLoadingHints* PreviewsResourceLoadingHints::Create(
     ExecutionContext& execution_context,
+    int64_t ukm_source_id,
     const std::vector<WTF::String>& subresource_patterns_to_block) {
-  return new PreviewsResourceLoadingHints(&execution_context,
+  return new PreviewsResourceLoadingHints(&execution_context, ukm_source_id,
                                           subresource_patterns_to_block);
 }
 
 PreviewsResourceLoadingHints::PreviewsResourceLoadingHints(
     ExecutionContext* execution_context,
+    int64_t ukm_source_id,
     const std::vector<WTF::String>& subresource_patterns_to_block)
     : execution_context_(execution_context),
-      subresource_patterns_to_block_(subresource_patterns_to_block) {}
+      ukm_source_id_(ukm_source_id),
+      subresource_patterns_to_block_(subresource_patterns_to_block) {
+  DCHECK_NE(ukm::kInvalidSourceId, ukm_source_id_);
+
+  subresource_patterns_to_block_usage_.assign(
+      subresource_patterns_to_block.size(), false);
+  blocked_resource_load_priority_counts_.fill(0);
+}
 
 PreviewsResourceLoadingHints::~PreviewsResourceLoadingHints() = default;
 
@@ -51,14 +62,19 @@
   resource_url_string = resource_url_string.Left(resource_url.PathEnd());
   bool allow_load = true;
 
+  int pattern_index = 0;
   for (const WTF::String& subresource_pattern :
        subresource_patterns_to_block_) {
     // TODO(tbansal): https://crbug.com/856247. Add support for wildcard
     // matching.
     if (resource_url_string.Find(subresource_pattern) != kNotFound) {
       allow_load = false;
+      subresource_patterns_to_block_usage_[pattern_index] = true;
+      blocked_resource_load_priority_counts_[static_cast<int>(
+          resource_load_priority)]++;
       break;
     }
+    pattern_index++;
   }
 
   UMA_HISTOGRAM_BOOLEAN("ResourceLoadingHints.ResourceLoadingBlocked",
@@ -91,4 +107,36 @@
   visitor->Trace(execution_context_);
 }
 
+void PreviewsResourceLoadingHints::RecordUKM(
+    ukm::UkmRecorder* ukm_recorder) const {
+  DCHECK(ukm_recorder);
+
+  size_t patterns_to_block_used_count = 0;
+  for (bool pattern_used : subresource_patterns_to_block_usage_) {
+    if (pattern_used) {
+      patterns_to_block_used_count++;
+    }
+  }
+
+  ukm::builders::PreviewsResourceLoadingHints(ukm_source_id_)
+      .Setpatterns_to_block_total(subresource_patterns_to_block_.size())
+      .Setpatterns_to_block_used(patterns_to_block_used_count)
+      .Setblocked_very_low_priority(
+          blocked_resource_load_priority_counts_[static_cast<int>(
+              ResourceLoadPriority::kVeryLow)])
+      .Setblocked_low_priority(
+          blocked_resource_load_priority_counts_[static_cast<int>(
+              ResourceLoadPriority::kLow)])
+      .Setblocked_medium_priority(
+          blocked_resource_load_priority_counts_[static_cast<int>(
+              ResourceLoadPriority::kMedium)])
+      .Setblocked_high_priority(
+          blocked_resource_load_priority_counts_[static_cast<int>(
+              ResourceLoadPriority::kHigh)])
+      .Setblocked_very_high_priority(
+          blocked_resource_load_priority_counts_[static_cast<int>(
+              ResourceLoadPriority::kVeryHigh)])
+      .Record(ukm_recorder);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
index 2e3ad881..20540b1 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
@@ -13,6 +13,10 @@
 #include "third_party/blink/renderer/platform/loader/fetch/resource_load_priority.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
+namespace ukm {
+class UkmRecorder;
+}
+
 namespace blink {
 
 class ExecutionContext;
@@ -25,6 +29,7 @@
  public:
   static PreviewsResourceLoadingHints* Create(
       ExecutionContext& execution_context,
+      int64_t ukm_source_id,
       const std::vector<WTF::String>& subresource_patterns_to_block);
 
   ~PreviewsResourceLoadingHints();
@@ -36,15 +41,22 @@
 
   virtual void Trace(blink::Visitor*);
 
+  // Records UKM on the utilization of patterns to block during the document
+  // load. This is expected to be called once after the document finishes
+  // loading.
+  void RecordUKM(ukm::UkmRecorder* ukm_recorder) const;
+
  private:
   PreviewsResourceLoadingHints(
       ExecutionContext* execution_context,
+      int64_t ukm_source_id,
       const std::vector<WTF::String>& subresource_patterns_to_block);
 
   // Reports to console when loading of |resource_url| is blocked.
   void ReportBlockedLoading(const KURL& resource_url) const;
 
   Member<ExecutionContext> execution_context_;
+  const int64_t ukm_source_id_;
 
   // |subresource_patterns_to_block_| is a collection of subresource patterns
   // for resources whose loading should be blocked. Each pattern is a
@@ -52,6 +64,15 @@
   // |subresource_patterns_to_block_|, then that subresource's loading could
   // be blocked.
   const std::vector<WTF::String> subresource_patterns_to_block_;
+
+  // |subresource_patterns_to_block_usage_| records whether the pattern located
+  // at the same index in |subresource_patterns_to_block_| was ever blocked.
+  mutable std::vector<bool> subresource_patterns_to_block_usage_;
+
+  // |blocked_resource_load_priority_counts_| records the total number of
+  // resources blocked at each ResourceLoadPriority.
+  mutable std::array<int, static_cast<int>(ResourceLoadPriority::kHighest) + 1>
+      blocked_resource_load_priority_counts_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
index 615b19b9..656866d 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
@@ -37,8 +37,9 @@
   }
 
   document_->Loader()->SetPreviewsResourceLoadingHints(
-      PreviewsResourceLoadingHints::Create(*(document_.Get()),
-                                           subresource_patterns_to_block));
+      PreviewsResourceLoadingHints::Create(
+          *(document_.Get()), resource_loading_hints->ukm_source_id,
+          subresource_patterns_to_block));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_test.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_test.cc
index 15295e4..4d5a001a 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_test.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_test.cc
@@ -8,10 +8,12 @@
 #include <vector>
 
 #include "base/test/metrics/histogram_tester.h"
+#include "components/ukm/test_ukm_recorder.h"
+#include "services/metrics/public/cpp/ukm_builders.h"
+#include "services/metrics/public/cpp/ukm_recorder.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/loader/frame_loader.h"
-#include "third_party/blink/renderer/core/loader/previews_resource_loading_hints.h"
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/platform/geometry/int_size.h"
@@ -38,7 +40,8 @@
   std::vector<WTF::String> subresources_to_block;
 
   PreviewsResourceLoadingHints* hints = PreviewsResourceLoadingHints::Create(
-      dummy_page_holder_->GetDocument(), subresources_to_block);
+      dummy_page_holder_->GetDocument(), ukm::UkmRecorder::GetNewSourceID(),
+      subresources_to_block);
   EXPECT_TRUE(hints->AllowLoad(KURL("https://www.example.com/"),
                                ResourceLoadPriority::kHighest));
 }
@@ -48,7 +51,8 @@
   subresources_to_block.push_back("foo.jpg");
 
   PreviewsResourceLoadingHints* hints = PreviewsResourceLoadingHints::Create(
-      dummy_page_holder_->GetDocument(), subresources_to_block);
+      dummy_page_holder_->GetDocument(), ukm::UkmRecorder::GetNewSourceID(),
+      subresources_to_block);
 
   const struct {
     KURL url;
@@ -102,7 +106,8 @@
   subresources_to_block.push_back(".example2.com/baz.jpg");
 
   PreviewsResourceLoadingHints* hints = PreviewsResourceLoadingHints::Create(
-      dummy_page_holder_->GetDocument(), subresources_to_block);
+      dummy_page_holder_->GetDocument(), ukm::UkmRecorder::GetNewSourceID(),
+      subresources_to_block);
 
   const struct {
     KURL url;
@@ -132,7 +137,8 @@
   subresources_to_block.push_back("foo.jpg");
 
   PreviewsResourceLoadingHints* hints = PreviewsResourceLoadingHints::Create(
-      dummy_page_holder_->GetDocument(), subresources_to_block);
+      dummy_page_holder_->GetDocument(), ukm::UkmRecorder::GetNewSourceID(),
+      subresources_to_block);
 
   const struct {
     KURL url;
@@ -178,6 +184,84 @@
   }
 }
 
+TEST_F(PreviewsResourceLoadingHintsTest, MultiplePatternUKMChecker) {
+  std::vector<WTF::String> subresources_to_block;
+  subresources_to_block.push_back(".example1.com/low_1.jpg");
+  subresources_to_block.push_back(".example1.com/very_low_1.jpg");
+  subresources_to_block.push_back(".example1.com/very_high_1.jpg");
+  subresources_to_block.push_back(".example1.com/medium_1_and_medium_4.jpg");
+  subresources_to_block.push_back(".example1.com/unused_1.jpg");
+  subresources_to_block.push_back(".example2.com/medium_2.jpg");
+  subresources_to_block.push_back(".example2.com/unused_2.jpg");
+  subresources_to_block.push_back(".example3.com/unused_3.jpg");
+  subresources_to_block.push_back(".example3.com/very_low_2_and_medium_3.jpg");
+
+  PreviewsResourceLoadingHints* hints = PreviewsResourceLoadingHints::Create(
+      dummy_page_holder_->GetDocument(), ukm::UkmRecorder::GetNewSourceID(),
+      subresources_to_block);
+
+  const struct {
+    KURL url;
+    ResourceLoadPriority resource_load_priority;
+  } resources_to_load[] = {
+      {KURL("https://www.example1.com/"), ResourceLoadPriority::kHigh},
+      {KURL("https://www.example1.com/foo.js"), ResourceLoadPriority::kLow},
+      {KURL("https://www.example1.com/very_low_1.jpg"),
+       ResourceLoadPriority::kVeryLow},
+      {KURL("https://www.example1.com/low_1.jpg"), ResourceLoadPriority::kLow},
+      {KURL("https://www.example1.com/very_high_1.jpg"),
+       ResourceLoadPriority::kVeryHigh},
+      {KURL("https://www.example1.com/pages/foo.jpg"),
+       ResourceLoadPriority::kVeryLow},
+      {KURL("https://www.example1.com/foobar.jpg"),
+       ResourceLoadPriority::kVeryHigh},
+      {KURL("https://www.example1.com/barfoo.jpg"),
+       ResourceLoadPriority::kVeryHigh},
+      {KURL("http://www.example1.com/foo.jpg"), ResourceLoadPriority::kLow},
+      {KURL("http://www.example1.com/medium_1_and_medium_4.jpg"),
+       ResourceLoadPriority::kMedium},
+      {KURL("http://www.example2.com/medium_2.jpg"),
+       ResourceLoadPriority::kMedium},
+      {KURL("http://www.example2.com/pages/baz.jpg"),
+       ResourceLoadPriority::kLow},
+      {KURL("http://www.example2.com/baz.html"),
+       ResourceLoadPriority::kVeryHigh},
+      {KURL("http://www.example3.com/very_low_2_and_medium_3.jpg"),
+       ResourceLoadPriority::kVeryLow},
+      {KURL("http://www.example3.com/very_low_2_and_medium_3.jpg"),
+       ResourceLoadPriority::kMedium},
+      {KURL("http://www.example1.com/medium_1_and_medium_4.jpg"),
+       ResourceLoadPriority::kMedium},
+  };
+
+  for (const auto& resource_to_load : resources_to_load) {
+    hints->AllowLoad(resource_to_load.url,
+                     resource_to_load.resource_load_priority);
+  }
+
+  ukm::TestAutoSetUkmRecorder test_ukm_recorder;
+  hints->RecordUKM(&test_ukm_recorder);
+
+  using UkmEntry = ukm::builders::PreviewsResourceLoadingHints;
+  auto entries = test_ukm_recorder.GetEntriesByName(UkmEntry::kEntryName);
+  ASSERT_EQ(1u, entries.size());
+  const auto* entry = entries[0];
+  test_ukm_recorder.ExpectEntryMetric(
+      entry, UkmEntry::kpatterns_to_block_totalName, 9);
+  test_ukm_recorder.ExpectEntryMetric(entry,
+                                      UkmEntry::kpatterns_to_block_usedName, 6);
+  test_ukm_recorder.ExpectEntryMetric(
+      entry, UkmEntry::kblocked_very_low_priorityName, 2);
+  test_ukm_recorder.ExpectEntryMetric(entry,
+                                      UkmEntry::kblocked_low_priorityName, 1);
+  test_ukm_recorder.ExpectEntryMetric(
+      entry, UkmEntry::kblocked_medium_priorityName, 4);
+  test_ukm_recorder.ExpectEntryMetric(entry,
+                                      UkmEntry::kblocked_high_priorityName, 0);
+  test_ukm_recorder.ExpectEntryMetric(
+      entry, UkmEntry::kblocked_very_high_priorityName, 1);
+}
+
 }  // namespace
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/page/chrome_client.cc b/third_party/blink/renderer/core/page/chrome_client.cc
index 1ea9a293..fa1e5f9 100644
--- a/third_party/blink/renderer/core/page/chrome_client.cc
+++ b/third_party/blink/renderer/core/page/chrome_client.cc
@@ -79,9 +79,9 @@
   SetWindowRect(window, frame);
 }
 
-bool ChromeClient::CanOpenModalIfDuringPageDismissal(
+bool ChromeClient::CanOpenUIElementIfDuringPageDismissal(
     Frame& main_frame,
-    ChromeClient::DialogType dialog,
+    UIElementType ui_element_type,
     const String& message) {
   for (Frame* frame = &main_frame; frame;
        frame = frame->Tree().TraverseNext()) {
@@ -91,17 +91,32 @@
     Document::PageDismissalType dismissal =
         local_frame.GetDocument()->PageDismissalEventBeingDispatched();
     if (dismissal != Document::kNoDismissal) {
-      return ShouldOpenModalDialogDuringPageDismissal(local_frame, dialog,
-                                                      message, dismissal);
+      return ShouldOpenUIElementDuringPageDismissal(
+          local_frame, ui_element_type, message, dismissal);
     }
   }
   return true;
 }
 
+Page* ChromeClient::CreateWindow(
+    LocalFrame* frame,
+    const FrameLoadRequest& r,
+    const WebWindowFeatures& features,
+    NavigationPolicy navigation_policy,
+    SandboxFlags sandbox_flags,
+    const SessionStorageNamespaceId& session_storage_namespace_id) {
+  if (!CanOpenUIElementIfDuringPageDismissal(
+          frame->Tree().Top(), UIElementType::kPopup, g_empty_string)) {
+    return nullptr;
+  }
+
+  return CreateWindowDelegate(frame, r, features, navigation_policy,
+                              sandbox_flags, session_storage_namespace_id);
+}
+
 template <typename Delegate>
 static bool OpenJavaScriptDialog(LocalFrame* frame,
                                  const String& message,
-                                 ChromeClient::DialogType dialog_type,
                                  const Delegate& delegate) {
   // Suspend pages in case the client method runs a new event loop that would
   // otherwise cause the load to continue while we're in the middle of
@@ -117,34 +132,33 @@
                                                 LocalFrame* frame,
                                                 bool is_reload) {
   DCHECK(frame);
-  return OpenJavaScriptDialog(
-      frame, message, ChromeClient::kHTMLDialog, [this, frame, is_reload]() {
-        return OpenBeforeUnloadConfirmPanelDelegate(frame, is_reload);
-      });
+  return OpenJavaScriptDialog(frame, message, [this, frame, is_reload]() {
+    return OpenBeforeUnloadConfirmPanelDelegate(frame, is_reload);
+  });
 }
 
 bool ChromeClient::OpenJavaScriptAlert(LocalFrame* frame,
                                        const String& message) {
   DCHECK(frame);
-  if (!CanOpenModalIfDuringPageDismissal(frame->Tree().Top(),
-                                         ChromeClient::kAlertDialog, message))
+  if (!CanOpenUIElementIfDuringPageDismissal(
+          frame->Tree().Top(), UIElementType::kAlertDialog, message)) {
     return false;
-  return OpenJavaScriptDialog(
-      frame, message, ChromeClient::kAlertDialog, [this, frame, &message]() {
-        return OpenJavaScriptAlertDelegate(frame, message);
-      });
+  }
+  return OpenJavaScriptDialog(frame, message, [this, frame, &message]() {
+    return OpenJavaScriptAlertDelegate(frame, message);
+  });
 }
 
 bool ChromeClient::OpenJavaScriptConfirm(LocalFrame* frame,
                                          const String& message) {
   DCHECK(frame);
-  if (!CanOpenModalIfDuringPageDismissal(frame->Tree().Top(),
-                                         ChromeClient::kConfirmDialog, message))
+  if (!CanOpenUIElementIfDuringPageDismissal(
+          frame->Tree().Top(), UIElementType::kConfirmDialog, message)) {
     return false;
-  return OpenJavaScriptDialog(
-      frame, message, ChromeClient::kConfirmDialog, [this, frame, &message]() {
-        return OpenJavaScriptConfirmDelegate(frame, message);
-      });
+  }
+  return OpenJavaScriptDialog(frame, message, [this, frame, &message]() {
+    return OpenJavaScriptConfirmDelegate(frame, message);
+  });
 }
 
 bool ChromeClient::OpenJavaScriptPrompt(LocalFrame* frame,
@@ -152,12 +166,12 @@
                                         const String& default_value,
                                         String& result) {
   DCHECK(frame);
-  if (!CanOpenModalIfDuringPageDismissal(frame->Tree().Top(),
-                                         ChromeClient::kPromptDialog, prompt))
+  if (!CanOpenUIElementIfDuringPageDismissal(
+          frame->Tree().Top(), UIElementType::kPromptDialog, prompt)) {
     return false;
+  }
   return OpenJavaScriptDialog(
-      frame, prompt, ChromeClient::kPromptDialog,
-      [this, frame, &prompt, &default_value, &result]() {
+      frame, prompt, [this, frame, &prompt, &default_value, &result]() {
         return OpenJavaScriptPromptDelegate(frame, prompt, default_value,
                                             result);
       });
@@ -229,8 +243,9 @@
 }
 
 bool ChromeClient::Print(LocalFrame* frame) {
-  if (!CanOpenModalIfDuringPageDismissal(*frame->GetPage()->MainFrame(),
-                                         ChromeClient::kPrintDialog, "")) {
+  if (!CanOpenUIElementIfDuringPageDismissal(*frame->GetPage()->MainFrame(),
+                                             UIElementType::kPrintDialog,
+                                             g_empty_string)) {
     return false;
   }
 
diff --git a/third_party/blink/renderer/core/page/chrome_client.h b/third_party/blink/renderer/core/page/chrome_client.h
index 6c6e9ea7..b64293c 100644
--- a/third_party/blink/renderer/core/page/chrome_client.h
+++ b/third_party/blink/renderer/core/page/chrome_client.h
@@ -151,12 +151,12 @@
   // created Page has its show method called.
   // The FrameLoadRequest parameter is only for ChromeClient to check if the
   // request could be fulfilled. The ChromeClient should not load the request.
-  virtual Page* CreateWindow(LocalFrame*,
-                             const FrameLoadRequest&,
-                             const WebWindowFeatures&,
-                             NavigationPolicy,
-                             SandboxFlags,
-                             const SessionStorageNamespaceId&) = 0;
+  Page* CreateWindow(LocalFrame*,
+                     const FrameLoadRequest&,
+                     const WebWindowFeatures&,
+                     NavigationPolicy,
+                     SandboxFlags,
+                     const SessionStorageNamespaceId&);
   virtual void Show(NavigationPolicy) = 0;
 
   // All the parameters should be in viewport space. That is, if an event
@@ -310,19 +310,19 @@
 
   virtual String AcceptLanguages() = 0;
 
-  enum DialogType {
+  enum class UIElementType {
     kAlertDialog = 0,
     kConfirmDialog = 1,
     kPromptDialog = 2,
-    kHTMLDialog = 3,
-    kPrintDialog = 4
+    kPrintDialog = 3,
+    kPopup = 4
   };
-  virtual bool ShouldOpenModalDialogDuringPageDismissal(
+  virtual bool ShouldOpenUIElementDuringPageDismissal(
       LocalFrame&,
-      DialogType,
+      UIElementType,
       const String&,
       Document::PageDismissalType) const {
-    return true;
+    return false;
   }
 
   virtual bool IsSVGImageChromeClient() const { return false; }
@@ -387,11 +387,17 @@
                                             const String& default_value,
                                             String& result) = 0;
   virtual void PrintDelegate(LocalFrame*) = 0;
+  virtual Page* CreateWindowDelegate(LocalFrame*,
+                                     const FrameLoadRequest&,
+                                     const WebWindowFeatures&,
+                                     NavigationPolicy,
+                                     SandboxFlags,
+                                     const SessionStorageNamespaceId&) = 0;
 
  private:
-  bool CanOpenModalIfDuringPageDismissal(Frame& main_frame,
-                                         DialogType,
-                                         const String& message);
+  bool CanOpenUIElementIfDuringPageDismissal(Frame& main_frame,
+                                             UIElementType,
+                                             const String& message);
   void SetToolTip(LocalFrame&, const HitTestLocation&, const HitTestResult&);
 
   WeakMember<Node> last_mouse_over_node_;
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 bd8d617..5caaa25e 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -109,18 +109,18 @@
 
 namespace {
 
-const char* DialogTypeToString(ChromeClient::DialogType dialog_type) {
-  switch (dialog_type) {
-    case ChromeClient::kAlertDialog:
+const char* UIElementTypeToString(ChromeClient::UIElementType ui_element_type) {
+  switch (ui_element_type) {
+    case ChromeClient::UIElementType::kAlertDialog:
       return "alert";
-    case ChromeClient::kConfirmDialog:
+    case ChromeClient::UIElementType::kConfirmDialog:
       return "confirm";
-    case ChromeClient::kPromptDialog:
+    case ChromeClient::UIElementType::kPromptDialog:
       return "prompt";
-    case ChromeClient::kPrintDialog:
+    case ChromeClient::UIElementType::kPrintDialog:
       return "print";
-    case ChromeClient::kHTMLDialog:
-      NOTREACHED();
+    case ChromeClient::UIElementType::kPopup:
+      return "popup";
   }
   NOTREACHED();
   return "";
@@ -257,7 +257,7 @@
   return !web_view_->Client() || web_view_->Client()->AcceptsLoadDrops();
 }
 
-Page* ChromeClientImpl::CreateWindow(
+Page* ChromeClientImpl::CreateWindowDelegate(
     LocalFrame* frame,
     const FrameLoadRequest& r,
     const WebWindowFeatures& features,
@@ -843,16 +843,25 @@
   web_view_->GetBrowserControls().SetShownRatio(ratio);
 }
 
-bool ChromeClientImpl::ShouldOpenModalDialogDuringPageDismissal(
+bool ChromeClientImpl::ShouldOpenUIElementDuringPageDismissal(
     LocalFrame& frame,
-    DialogType dialog_type,
+    UIElementType ui_element_type,
     const String& dialog_message,
     Document::PageDismissalType dismissal_type) const {
-  String message = String("Blocked ") + DialogTypeToString(dialog_type) + "('" +
-                   dialog_message + "') during " +
-                   DismissalTypeToString(dismissal_type) + ".";
+  StringBuilder builder;
+  builder.Append("Blocked ");
+  builder.Append(UIElementTypeToString(ui_element_type));
+  if (dialog_message.length()) {
+    builder.Append("('");
+    builder.Append(dialog_message);
+    builder.Append("')");
+  }
+  builder.Append(" during ");
+  builder.Append(DismissalTypeToString(dismissal_type));
+  builder.Append(".");
+
   WebLocalFrameImpl::FromFrame(frame)->AddMessageToConsole(
-      WebConsoleMessage(WebConsoleMessage::kLevelError, message));
+      WebConsoleMessage(WebConsoleMessage::kLevelError, builder.ToString()));
 
   return false;
 }
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.h b/third_party/blink/renderer/core/page/chrome_client_impl.h
index f3489dc..45b7787 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.h
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.h
@@ -73,12 +73,12 @@
                      const SkBitmap& drag_image,
                      const WebPoint& drag_image_offset) override;
   bool AcceptsLoadDrops() const override;
-  Page* CreateWindow(LocalFrame*,
-                     const FrameLoadRequest&,
-                     const WebWindowFeatures&,
-                     NavigationPolicy,
-                     SandboxFlags,
-                     const SessionStorageNamespaceId&) override;
+  Page* CreateWindowDelegate(LocalFrame*,
+                             const FrameLoadRequest&,
+                             const WebWindowFeatures&,
+                             NavigationPolicy,
+                             SandboxFlags,
+                             const SessionStorageNamespaceId&) override;
   void Show(NavigationPolicy) override;
   void DidOverscroll(const FloatSize& overscroll_delta,
                      const FloatSize& accumulated_overscroll,
@@ -195,9 +195,9 @@
                                bool shrinks_layout) override;
   void SetBrowserControlsShownRatio(float) override;
 
-  bool ShouldOpenModalDialogDuringPageDismissal(
+  bool ShouldOpenUIElementDuringPageDismissal(
       LocalFrame&,
-      DialogType,
+      UIElementType,
       const String& dialog_message,
       Document::PageDismissalType) const override;
 
diff --git a/third_party/blink/renderer/devtools/front_end/devtools_compatibility.js b/third_party/blink/renderer/devtools/front_end/devtools_compatibility.js
index f7e69a15..856be32 100644
--- a/third_party/blink/renderer/devtools/front_end/devtools_compatibility.js
+++ b/third_party/blink/renderer/devtools/front_end/devtools_compatibility.js
@@ -1276,7 +1276,7 @@
         return null;
       const majorVersion = parseInt(remoteVersion.split('.')[0], 10);
       return majorVersion;
-    } finally {
+    } catch (e) {
       return null;
     }
   }
diff --git a/third_party/blink/renderer/devtools/front_end/resources/ServiceWorkersView.js b/third_party/blink/renderer/devtools/front_end/resources/ServiceWorkersView.js
index 134d7bf..c0ef89c 100644
--- a/third_party/blink/renderer/devtools/front_end/resources/ServiceWorkersView.js
+++ b/third_party/blink/renderer/devtools/front_end/resources/ServiceWorkersView.js
@@ -34,6 +34,8 @@
     this._otherSWFilter.setAttribute('role', 'switch');
     this._otherSWFilter.setAttribute('aria-checked', false);
     this._otherSWFilter.addEventListener('keydown', event => {
+      if (event.target !== this._otherSWFilter)
+        return;
       if (isEnterKey(event) || event.keyCode === UI.KeyboardShortcut.Keys.Space.code)
         this._toggleFilter();
     });
diff --git a/third_party/blink/renderer/modules/background_sync/sync_manager.cc b/third_party/blink/renderer/modules/background_sync/sync_manager.cc
index 9668f1d..21b8bb98 100644
--- a/third_party/blink/renderer/modules/background_sync/sync_manager.cc
+++ b/third_party/blink/renderer/modules/background_sync/sync_manager.cc
@@ -39,7 +39,6 @@
 
   mojom::blink::SyncRegistrationPtr sync_registration =
       mojom::blink::SyncRegistration::New();
-  sync_registration->id = SyncManager::kUnregisteredSyncID;
   sync_registration->tag = tag;
   sync_registration->network_state =
       blink::mojom::BackgroundSyncNetworkState::ONLINE;
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
index f6ab76e..f728aee 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
@@ -26,6 +26,7 @@
 
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
 
+#include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/public/platform/web_size.h"
 #include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
@@ -1646,11 +1647,13 @@
     // and there's nothing to do), or the user is playing by click (in which
     // case we need to start playing).
     if (is_paused_for_double_tap_) {
-      // TODO(https://crbug.com/896255): Add and record useraction.
+      Platform::Current()->RecordAction(
+          UserMetricsAction("Media.Controls.ClickAnywhereToPause"));
       // TODO(https://crbug.com/896252): Show overlay pause animation.
       is_paused_for_double_tap_ = false;
     } else {
-      // TODO(https://crbug.com/896255): Add and record useraction.
+      Platform::Current()->RecordAction(
+          UserMetricsAction("Media.Controls.ClickAnywhereToPlay"));
       // TODO(https://crbug.com/896252): Show overlay play animation.
       MediaElement().Play();
     }
diff --git a/third_party/blink/renderer/platform/image-decoders/segment_stream.cc b/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
index b2af686..5a98701 100644
--- a/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
+++ b/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
@@ -31,7 +31,8 @@
 }
 
 size_t SegmentStream::read(void* buffer, size_t size) {
-  DCHECK(!IsCleared());
+  if (IsCleared())
+    return 0;
 
   size = std::min(size, reader_->size() - position_);
 
@@ -48,7 +49,8 @@
 }
 
 size_t SegmentStream::peek(void* buffer, size_t size) const {
-  DCHECK(!IsCleared());
+  if (IsCleared())
+    return 0;
 
   size = std::min(size, reader_->size() - position_);
 
diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_utf8.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_utf8.cc
index ffcdb87..aef50a4 100644
--- a/third_party/blink/renderer/platform/wtf/text/text_codec_utf8.cc
+++ b/third_party/blink/renderer/platform/wtf/text/text_codec_utf8.cc
@@ -27,6 +27,7 @@
 
 #include <memory>
 #include "base/memory/ptr_util.h"
+#include "base/numerics/checked_math.h"
 #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
 #include "third_party/blink/renderer/platform/wtf/text/cstring.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h"
@@ -294,7 +295,8 @@
   // Each input byte might turn into a character.
   // That includes all bytes in the partial-sequence buffer because
   // each byte in an invalid sequence will turn into a replacement character.
-  StringBuffer<LChar> buffer(partial_sequence_size_ + length);
+  StringBuffer<LChar> buffer(
+      base::CheckAdd(partial_sequence_size_, length).ValueOrDie());
 
   const uint8_t* source = reinterpret_cast<const uint8_t*>(bytes);
   const uint8_t* end = source + length;
@@ -377,7 +379,8 @@
   return String::Adopt(buffer);
 
 upConvertTo16Bit:
-  StringBuffer<UChar> buffer16(partial_sequence_size_ + length);
+  StringBuffer<UChar> buffer16(
+      base::CheckAdd(partial_sequence_size_, length).ValueOrDie());
 
   UChar* destination16 = buffer16.Characters();
 
diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_utf8_test.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_utf8_test.cc
index f6f1078..fccb85fb 100644
--- a/third_party/blink/renderer/platform/wtf/text/text_codec_utf8_test.cc
+++ b/third_party/blink/renderer/platform/wtf/text/text_codec_utf8_test.cc
@@ -30,6 +30,7 @@
 
 #include "third_party/blink/renderer/platform/wtf/text/text_codec_utf8.h"
 
+#include <limits>
 #include <memory>
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_codec.h"
@@ -89,6 +90,20 @@
   EXPECT_EQ(0xFFFDU, result[0]);
 }
 
+TEST(TextCodecUTF8, DecodeOverflow) {
+  TextEncoding encoding("UTF-8");
+  std::unique_ptr<TextCodec> codec(NewTextCodec(encoding));
+
+  // Prime the partial sequence buffer.
+  bool saw_error = false;
+  codec->Decode("\x80", 1, FlushBehavior::kDoNotFlush, false, saw_error);
+  EXPECT_FALSE(saw_error);
+
+  EXPECT_DEATH(codec->Decode(nullptr, std::numeric_limits<wtf_size_t>::max(),
+                             FlushBehavior::kDataEOF, false, saw_error),
+               "");
+}
+
 }  // namespace
 
 }  // namespace WTF
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/README.chromium b/third_party/blink/tools/blinkpy/third_party/wpt/README.chromium
index ae06882bb..b9745167 100644
--- a/third_party/blink/tools/blinkpy/third_party/wpt/README.chromium
+++ b/third_party/blink/tools/blinkpy/third_party/wpt/README.chromium
@@ -28,7 +28,9 @@
 
 - update `WPT_HOST_AND_PORTS` in
   `//third_party/blink/tools/blinkpy/web_tests/port/driver.py`
-- update LayoutTestContentBrowserClient::GetOriginsRequiringDedicatedProcess()
+- update bot configs (e.g. `Site Isolation Linux` bot forces OOPIFs by using
+  `--isolate-origins=http://www.web-platform.test:8001/` as specified in
+  `//testing/buildbot/chromium.fyi.json`).
 
 checkout.sh
 ===========
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 5b7acc9..190ab13 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
@@ -87,17 +87,10 @@
 
     failures = []
     for suite in virtual_suites:
-        # A virtual test suite needs either
-        # - a top-level README.md (e.g. virtual/foo/README.md)
-        # - a README.txt for each covered dir/file (e.g.
-        #   virtual/foo/http/tests/README.txt, virtual/foo/fast/README.txt, ...)
         comps = [layout_tests_dir] + suite.name.split('/') + ['README.txt']
-        path_to_readme_txt = fs.join(*comps)
-        comps = [layout_tests_dir] + suite.name.split('/')[:2] + ['README.md']
-        path_to_readme_md = fs.join(*comps)
-        if not fs.exists(path_to_readme_txt) and not fs.exists(path_to_readme_md):
-            failure = '{} and {} are both missing (each virtual suite must have one).'.format(
-                path_to_readme_txt, path_to_readme_md)
+        path_to_readme = fs.join(*comps)
+        if not fs.exists(path_to_readme):
+            failure = '{} is missing (each virtual suite must have one).'.format(path_to_readme)
             _log.error(failure)
             failures.append(failure)
     if failures:
diff --git a/third_party/byte_buddy/BUILD.gn b/third_party/byte_buddy/BUILD.gn
index b0c1b5d..6e9c9a1 100644
--- a/third_party/byte_buddy/BUILD.gn
+++ b/third_party/byte_buddy/BUILD.gn
@@ -7,17 +7,20 @@
 java_prebuilt("byte_buddy_java") {
   supports_android = true
   testonly = true
+  enable_bytecode_checks = false
   jar_path = "lib/byte-buddy.jar"
 }
 
 java_prebuilt("byte_buddy_agent_java") {
   supports_android = true
   testonly = true
+  enable_bytecode_checks = false
   jar_path = "lib/byte-buddy-agent.jar"
 }
 
 android_java_prebuilt("byte_buddy_android_java") {
   testonly = true
+  enable_bytecode_checks = false
   deps = [
     "//third_party/android_tools:dx_25_0_2_java",
   ]
diff --git a/third_party/closure_compiler/externs/developer_private.js b/third_party/closure_compiler/externs/developer_private.js
index 88f91de..9d7c79d 100644
--- a/third_party/closure_compiler/externs/developer_private.js
+++ b/third_party/closure_compiler/externs/developer_private.js
@@ -279,16 +279,16 @@
 /**
  * @typedef {{
  *   hasAllHosts: boolean,
+ *   hostAccess: !chrome.developerPrivate.HostAccess,
  *   hosts: !Array<!chrome.developerPrivate.SiteControl>
  * }}
  */
-chrome.developerPrivate.SpecificSiteControls;
+chrome.developerPrivate.RuntimeHostPermissions;
 
 /**
  * @typedef {{
  *   simplePermissions: !Array<!chrome.developerPrivate.Permission>,
- *   hostAccess: (!chrome.developerPrivate.HostAccess|undefined),
- *   specificSiteControls: (!chrome.developerPrivate.SpecificSiteControls|undefined)
+ *   runtimeHostPermissions: (!chrome.developerPrivate.RuntimeHostPermissions|undefined)
  * }}
  */
 chrome.developerPrivate.Permissions;
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 45fae30..19b4c22 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -10135,6 +10135,20 @@
   <description>The user clicked on the cast overlay button.</description>
 </action>
 
+<action name="Media.Controls.ClickAnywhereToPause">
+  <owner>jazzhsu@chromium.org</owner>
+  <description>
+    The user clicked anywhere in the video frame to pause.
+  </description>
+</action>
+
+<action name="Media.Controls.ClickAnywhereToPlay">
+  <owner>jazzhsu@chromium.org</owner>
+  <description>
+    The user clicked anywhere in the video frame to play.
+  </description>
+</action>
+
 <action name="Media.Controls.ClosedCaptionHide">
   <owner>mlamouri@chromium.org</owner>
   <description>The user hid the closed caption from the controls.</description>
@@ -20581,6 +20595,7 @@
   <suffix name="PreviewsOmniboxUI"
       label="For the Previews UI in the Android Omnibox feature."/>
   <suffix name="ReopenTab" label="For ReopenTab feature."/>
+  <suffix name="TranslateMenuButton" label="For translate menu button."/>
   <affected-action name="InProductHelp.NotifyEvent.IPH"/>
   <affected-action name="InProductHelp.NotifyUsedEvent.IPH"/>
   <affected-action name="InProductHelp.ShouldTriggerHelpUI.IPH"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 3cb9e52d..d87aca2c 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -983,6 +983,13 @@
   </summary>
 </histogram>
 
+<histogram name="AnchorElementMetrics.IsAdFrameElement" units="Boolean">
+  <owner>tbansal@chromium.org</owner>
+  <summary>
+    True if the anchor element was inside an iframe tagged as an ad iframe.
+  </summary>
+</histogram>
+
 <histogram base="true" name="AnchorElementMetrics.IsInIFrame" enum="Boolean">
   <owner>chelu@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
@@ -5351,6 +5358,15 @@
   </summary>
 </histogram>
 
+<histogram name="Assistant.EntryPoint" enum="AssistantSource"
+    expires_after="2019-11-01">
+  <owner>xiaohuic@chromium.org</owner>
+  <owner>meilinw@chromium.org</owner>
+  <summary>
+    Record the Assistant entry point where Assistant UI becomes visible.
+  </summary>
+</histogram>
+
 <histogram name="Assistant.HotwordEnableNotification" enum="BooleanHit">
   <owner>updowndota@chromium.org</owner>
   <summary>
@@ -23255,15 +23271,18 @@
   </summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadedFileAction" enum="DownloadedFileAction">
-  <owner>bdibello@chromium.org</owner>
+<histogram name="Download.IOSDownloadedFileAction" enum="DownloadedFileAction"
+    expires_after="2020-01-15">
+  <owner>eugenebut@chromium.org</owner>
   <summary>
     The action that a user takes on a file after it has been successfully
     downloaded on iOS.
   </summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadedFileNetError" enum="NetErrorCodes">
+<histogram name="Download.IOSDownloadedFileNetError" enum="NetErrorCodes"
+    expires_after="2020-01-15">
+  <owner>eugenebut@chromium.org</owner>
   <owner>mrefaat@chromium.org</owner>
   <summary>
     Positive net error codes that happens in the case of download content fetch
@@ -23271,17 +23290,17 @@
   </summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadedFileStatusCode">
-  <owner>stkhapugin@chromium.org</owner>
+<histogram name="Download.IOSDownloadedFileStatusCode"
+    expires_after="2020-01-15">
   <owner>eugenebut@chromium.org</owner>
-  <owner>stuartmorgan@chromium.org</owner>
+  <owner>stkhapugin@chromium.org</owner>
   <summary>
     HTTP status code returned when file download completes on iOS.
   </summary>
 </histogram>
 
 <histogram name="Download.IOSDownloadFileInBackground"
-    enum="DownloadFileInBackground">
+    enum="DownloadFileInBackground" expires_after="2020-01-15">
   <owner>eugenebut@chromium.org</owner>
   <summary>
     Logged when the download is completed (successfully or not) or in-progress
@@ -23291,13 +23310,16 @@
   </summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadFileResult" enum="DownloadFileResult">
-  <owner>bdibello@chromium.org</owner>
+<histogram name="Download.IOSDownloadFileResult" enum="DownloadFileResult"
+    expires_after="2020-01-15">
+  <owner>eugenebut@chromium.org</owner>
   <summary>Result when a user attempts to download a file on iOS.</summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadInstallDrivePromoShown" enum="Boolean">
+<histogram name="Download.IOSDownloadInstallDrivePromoShown" enum="Boolean"
+    expires_after="2020-01-15">
   <owner>eugenebut@chromium.org</owner>
+  <owner>pkl@chromium.org</owner>
   <summary>
     Logged when the download was successfully completed. Bool value indicates
     whether or not Install Google Drive promo was shown to the user.
@@ -23313,8 +23335,8 @@
 </histogram>
 
 <histogram name="Download.IOSDownloadPassKitResult"
-    enum="DownloadPassKitResult">
-  <owner>gchatz@chromium.org</owner>
+    enum="DownloadPassKitResult" expires_after="2020-01-15">
+  <owner>eugenebut@chromium.org</owner>
   <summary>
     Result when a user attempts to download a PassKit file on iOS.
   </summary>
@@ -35766,6 +35788,9 @@
 </histogram>
 
 <histogram name="GPU.AtExitMBytesAllocated" units="MB">
+  <obsolete>
+    Removed sometime around M55.
+  </obsolete>
   <owner>vmiura@chromium.org</owner>
   <summary>
     The amount of GPU memory that was currently allocated as of just before the
@@ -35774,6 +35799,9 @@
 </histogram>
 
 <histogram name="GPU.AtExitMBytesAllocatedMax" units="MB">
+  <obsolete>
+    Removed sometime around M55.
+  </obsolete>
   <owner>vmiura@chromium.org</owner>
   <summary>
     The maximum amount of GPU memory that had ever been allocated during the GPU
@@ -35782,6 +35810,9 @@
 </histogram>
 
 <histogram name="GPU.AtExitMBytesLimit" units="MB">
+  <obsolete>
+    Removed sometime around M55.
+  </obsolete>
   <owner>vmiura@chromium.org</owner>
   <summary>
     The GPU memory manager's limit on the amount of GPU memory that can be
@@ -35799,6 +35830,9 @@
 </histogram>
 
 <histogram name="GPU.AtExitWindowCount">
+  <obsolete>
+    Removed sometime around M55.
+  </obsolete>
   <owner>vmiura@chromium.org</owner>
   <summary>
     The number of windows that the GPU memory manager believed to exist as of
@@ -109285,8 +109319,10 @@
   </summary>
 </histogram>
 
-<histogram name="Tab.PullDownGesture" enum="PullDownGestureAction">
-  <owner>jbbegue@google.com</owner>
+<histogram name="Tab.PullDownGesture" enum="PullDownGestureAction"
+    expires_after="2020-01-15">
+  <owner>gambard@chromium.org</owner>
+  <owner>kkhorimoto@chromium.org</owner>
   <summary>
     Record the action executed when the user performs a pull down gesture. This
     feature is currently iOS only.
@@ -109436,8 +109472,10 @@
   </summary>
 </histogram>
 
-<histogram name="Tab.StateAtRendererTermination" enum="TabForegroundState">
-  <owner>stuartmorgan@chromium.org</owner>
+<histogram name="Tab.StateAtRendererTermination" enum="TabForegroundState"
+    expires_after="2019-08-07">
+  <owner>olivierrobin@chromium.org</owner>
+  <owner>pkl@chromium.org</owner>
   <summary>
     The state (foreground/background) of a tab when its renderer is terminated.
   </summary>
@@ -128002,6 +128040,8 @@
       label="In product help for the Previews UI in the Android Omnibox."/>
   <suffix name="IPH_ReopenTab"
       label="In product help for reopening closed tabs."/>
+  <suffix name="IPH_TranslateMenuButton"
+      label="In product help translate menu button."/>
   <affected-histogram name="InProductHelp.NotifyEventReadyState"/>
   <affected-histogram name="InProductHelp.ShouldTriggerHelpUI"/>
 </histogram_suffixes>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index beaf11d..74755cf 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -866,14 +866,6 @@
     <summary>
       Opt-in UseCounter feature.
     </summary>
-    <aggregation>
-      <history>
-        <index fields="profile.country"/>
-        <statistics>
-          <enumeration/>
-        </statistics>
-      </history>
-    </aggregation>
   </metric>
 </event>
 
@@ -3788,7 +3780,7 @@
   <owner>ryansturm@chromium.org</owner>
   <summary>
     Previews related metrics associated with a page load. See
-    //componenets/previews/.
+    //components/previews/.
   </summary>
   <metric name="client_lofi">
     <summary>
@@ -3840,6 +3832,58 @@
   </metric>
 </event>
 
+<event name="PreviewsResourceLoadingHints" singular="True">
+  <owner>jegray@chromium.org</owner>
+  <summary>
+    Metrics associated with loading a resource loading hints based preview. This
+    is recorded when the URL's document finishes loading. See
+    //components/previews/.
+  </summary>
+  <metric name="blocked_high_priority">
+    <summary>
+      The number of high priority resource requests that were blocked by the
+      resource loading hints based preview while the URL's document was loading.
+    </summary>
+  </metric>
+  <metric name="blocked_low_priority">
+    <summary>
+      The number of low priority resource requests that were blocked by the
+      resource loading hints based preview while the URL's document was loading.
+    </summary>
+  </metric>
+  <metric name="blocked_medium_priority">
+    <summary>
+      The number of medium priority resource requests that were blocked by the
+      resource loading hints based preview while the URL's document was loading.
+    </summary>
+  </metric>
+  <metric name="blocked_very_high_priority">
+    <summary>
+      The number of very high priority resource requests that were blocked by
+      the resource loading hints based preview while the URL's document was
+      loading.
+    </summary>
+  </metric>
+  <metric name="blocked_very_low_priority">
+    <summary>
+      The number of very low priority resource requests that were blocked by the
+      resource loading hints based preview while the URL's document was loading.
+    </summary>
+  </metric>
+  <metric name="patterns_to_block_total">
+    <summary>
+      The total number of patterns to block included in the resource loading
+      hints based preview.
+    </summary>
+  </metric>
+  <metric name="patterns_to_block_used">
+    <summary>
+      The number of patterns that blocked at least one resource request in the
+      resource loading hints based preview while the URL's document was loading.
+    </summary>
+  </metric>
+</event>
+
 <event name="ResponsivenessMeasurement">
   <owner>npm@chromium.org</owner>
   <owner>tdresser@chromium.org</owner>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 32fd89a..d2b7982 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -42,6 +42,9 @@
 crbug.com/574483 [ Android_Svelte ] blink_perf.paint/* [ Skip ]
 crbug.com/799540 [ Nexus_5 ] blink_perf.paint/* [ Skip ]
 crbug.com/859979 [ Android_Webview ] blink_perf.paint/paint-offset-changes.html [ Skip ]
+crbug.com/901493 [ Nexus6_Webview ] blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html [ Skip ]
+crbug.com/901493 [ Nexus6_Webview ] blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html [ Skip ]
+crbug.com/901493 [ Nexus6_Webview ] blink_perf.paint/large-table-collapsed-border-change-with-text.html [ Skip ]
 
 # Benchmark: blink_perf.shadow_dom
 crbug.com/702319 [ Nexus_5X ] blink_perf.shadow_dom/* [ Skip ]
@@ -135,6 +138,10 @@
 
 # Benchmark: memory.long_running_idle_gmail_tbmv2
 crbug.com/611167 [ Android_Svelte ] memory.long_running_idle_gmail_tbmv2/* [ Skip ]
+crbug.com/901510 [ Nexus6_Webview ] memory.long_running_idle_gmail_tbmv2/* [ Skip ]
+crbug.com/901510 [ Nexus_5 ] memory.long_running_idle_gmail_tbmv2/* [ Skip ]
+crbug.com/901510 [ Nexus5X_Webview ] memory.long_running_idle_gmail_tbmv2/* [ Skip ]
+crbug.com/901510 [ Nexus_5X ] memory.long_running_idle_gmail_tbmv2/* [ Skip ]
 
 # Benchmark: memory.long_running_idle_gmail_background_tbmv2
 crbug.com/611167 [ Android_Svelte ] memory.long_running_idle_gmail_background_tbmv2/* [ Skip ]
@@ -198,6 +205,7 @@
 crbug.com/893197 [ Nexus_5X ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
 crbug.com/865400 [ Pixel_2 ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
 crbug.com/874935 [ Nexus_5 ] rendering.mobile/yahoo_news_2018 [ Skip ]
+crbug.com/901526 [ All ] rendering.mobile/microsoft_fireflies [ Skip ]
 
 # Benchmark: rasterize_and_record_micro.top_25
 crbug.com/764543 [ All ] rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
diff --git a/tools/perf/metrics/timeline.py b/tools/perf/metrics/timeline.py
index 6693bbe..675ad65 100644
--- a/tools/perf/metrics/timeline.py
+++ b/tools/perf/metrics/timeline.py
@@ -51,22 +51,6 @@
   return DivideIfPossibleOrZero(numerator, denominator)
 
 
-def ClockOverheadForEvent(event):
-  if (event.category == OverheadTraceCategory and
-      event.name == OverheadTraceName):
-    return event.duration
-  else:
-    return 0
-
-
-def CpuOverheadForEvent(event):
-  if (event.category == OverheadTraceCategory and
-      event.thread_duration):
-    return event.thread_duration
-  else:
-    return 0
-
-
 def ThreadCategoryName(thread_name):
   thread_category = "other"
   for substring, category in TimelineThreadCategories.iteritems():
@@ -77,11 +61,6 @@
   return thread_category
 
 
-def ThreadCpuTimeResultName(thread_category):
-  # This isn't a good name, but I don't want to change it and lose continuity.
-  return "thread_" + thread_category + "_cpu_time_per_frame"
-
-
 def ThreadTasksResultName(thread_category):
   return "tasks_per_frame_" + thread_category
 
@@ -106,29 +85,6 @@
     self.all_action_time = \
         sum([record_range.bounds for record_range in self.record_ranges])
 
-  @property
-  def clock_time(self):
-    clock_duration = sum([x.duration for x in self.toplevel_slices])
-    clock_overhead = sum([ClockOverheadForEvent(x) for x in self.all_slices])
-    return clock_duration - clock_overhead
-
-  @property
-  def cpu_time(self):
-    cpu_duration = 0
-    cpu_overhead = sum([CpuOverheadForEvent(x) for x in self.all_slices])
-    for x in self.toplevel_slices:
-      # Only report thread-duration if we have it for all events.
-      #
-      # A thread_duration of 0 is valid, so this only returns 0 if it is None.
-      if x.thread_duration is None:
-        if not x.duration:
-          continue
-        else:
-          return 0
-      else:
-        cpu_duration += x.thread_duration
-    return cpu_duration - cpu_overhead
-
   def SlicesInActions(self, slices):
     slices_in_actions = []
     for event in slices:
@@ -144,15 +100,9 @@
 
   # Reports cpu-time per interval and tasks per interval.
   def AddResults(self, num_intervals, results):
-    cpu_per_interval = Rate(self.cpu_time, num_intervals)
     tasks_per_interval = Rate(len(self.toplevel_slices), num_intervals)
     results.AddValue(scalar.ScalarValue(
         results.current_page,
-        ThreadCpuTimeResultName(self.name),
-        "ms",
-        cpu_per_interval))
-    results.AddValue(scalar.ScalarValue(
-        results.current_page,
         ThreadTasksResultName(self.name),
         "tasks", tasks_per_interval))
 
diff --git a/tools/perf/metrics/timeline_unittest.py b/tools/perf/metrics/timeline_unittest.py
index d385fc0..383f42d 100644
--- a/tools/perf/metrics/timeline_unittest.py
+++ b/tools/perf/metrics/timeline_unittest.py
@@ -35,8 +35,7 @@
 
     # Test that all result thread categories exist
     for name in timeline.TimelineThreadCategories.values():
-      results.GetPageSpecificValueNamed(
-          timeline.ThreadCpuTimeResultName(name))
+      results.GetPageSpecificValueNamed(timeline.ThreadTasksResultName(name))
 
   def testBasic(self):
     model = model_module.TimelineModel()
@@ -77,46 +76,9 @@
         (timeline.ThreadMeanFrameTimeResultName(cc_thread), 'ms', 10.0),
         (timeline.ThreadTasksResultName(main_thread), 'tasks', 0.5),
         (timeline.ThreadTasksResultName(cc_thread), 'tasks', 1.0),
-        (timeline.ThreadCpuTimeResultName(main_thread), 'ms', 9.75),
-        (timeline.ThreadCpuTimeResultName(cc_thread), 'ms', 1.0),
         (timeline.ThreadDetailResultName(main_thread, 'cat1'), 'ms', 9.5),
         (timeline.ThreadDetailResultName(main_thread, 'cat2'), 'ms', 0.5),
         (timeline.ThreadDetailResultName(main_thread, 'idle'), 'ms', 0),
     ]
     for name, unit, value in assert_results:
       results.AssertHasPageSpecificScalarValue(name, unit, value)
-
-  def testOverheadIsRemoved(self):
-    model = model_module.TimelineModel()
-    renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
-    renderer_main.name = 'CrRendererMain'
-
-    # Create one frame swap.
-    cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3)
-    cc_main.name = 'Compositor'
-    cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10,
-        args={'step': 'GenerateCompositorFrame'})
-    cc_main.EndSlice(11, 11)
-
-    # [      X       ]
-    #    [Overhead]
-    overhead_category = timeline.OverheadTraceCategory
-    overhead_name = timeline.OverheadTraceName
-    renderer_main.BeginSlice('cat1', 'X', 10, 0)
-    renderer_main.BeginSlice(overhead_category, overhead_name, 15, 5)
-    renderer_main.EndSlice(16, 6)
-    renderer_main.EndSlice(30, 10)
-    model.FinalizeImport()
-
-    # Include everything in an action-range.
-    metric = timeline.ThreadTimesTimelineMetric()
-    metric.details_to_report = timeline.ReportMainThreadOnly
-    results = self.GetResults(metric, model, renderer_main.parent,
-                              [_GetInteractionRecord(10, 30)])
-
-    # Test a couple specific results.
-    assert_results = [
-        (timeline.ThreadCpuTimeResultName('renderer_main'), 'ms', 9.0),
-    ]
-    for name, unit, value in assert_results:
-      results.AssertHasPageSpecificScalarValue(name, unit, value)
diff --git a/ui/android/window_android.cc b/ui/android/window_android.cc
index 84f7e17..c557911a 100644
--- a/ui/android/window_android.cc
+++ b/ui/android/window_android.cc
@@ -4,6 +4,8 @@
 
 #include "ui/android/window_android.h"
 
+#include <utility>
+
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
 #include "base/android/jni_string.h"
@@ -178,8 +180,8 @@
     observer_list_.AddObserver(observer);
 }
 
-void WindowAndroid::AddVSyncCompleteCallback(const base::Closure& callback) {
-  vsync_complete_callbacks_.push_back(callback);
+void WindowAndroid::AddVSyncCompleteCallback(base::OnceClosure callback) {
+  vsync_complete_callbacks_.emplace_back(std::move(callback));
 }
 
 void WindowAndroid::RemoveObserver(WindowAndroidObserver* observer) {
@@ -249,8 +251,8 @@
 
   begin_frame_source_->OnVSync(frame_time, vsync_period);
 
-  for (const base::Closure& callback : vsync_complete_callbacks_)
-    callback.Run();
+  for (base::OnceClosure& callback : vsync_complete_callbacks_)
+    std::move(callback).Run();
   vsync_complete_callbacks_.clear();
 
   if (needs_begin_frames_)
diff --git a/ui/android/window_android.h b/ui/android/window_android.h
index 29aff9f..99c2004f 100644
--- a/ui/android/window_android.h
+++ b/ui/android/window_android.h
@@ -6,7 +6,6 @@
 #define UI_ANDROID_WINDOW_ANDROID_H_
 
 #include <jni.h>
-#include <list>
 #include <memory>
 #include <string>
 #include <vector>
@@ -64,7 +63,7 @@
   viz::BeginFrameSource* GetBeginFrameSource();
 
   // Runs the provided callback as soon as the current vsync was handled.
-  void AddVSyncCompleteCallback(const base::Closure& callback);
+  void AddVSyncCompleteCallback(base::OnceClosure callback);
 
   void SetNeedsAnimate();
   void Animate(base::TimeTicks begin_frame_time);
@@ -117,7 +116,7 @@
 
   std::unique_ptr<WindowBeginFrameSource> begin_frame_source_;
   bool needs_begin_frames_;
-  std::list<base::Closure> vsync_complete_callbacks_;
+  std::vector<base::OnceClosure> vsync_complete_callbacks_;
   float mouse_wheel_scroll_factor_;
   bool vsync_paused_ = false;
 
diff --git a/ui/aura/window_tree_host.h b/ui/aura/window_tree_host.h
index 50b18ca..23730bc9 100644
--- a/ui/aura/window_tree_host.h
+++ b/ui/aura/window_tree_host.h
@@ -352,6 +352,11 @@
   std::unique_ptr<ui::Compositor> compositor_;
 
   // The device scale factor is snapshotted in OnHostResizedInPixels.
+  // NOTE: this value is cached rather than looked up from the Display as it is
+  // entirely possible for the Display to be updated *after* |this|. For
+  // example, display changes on Windows first result in the HWND bounds
+  // changing and are then followed by changes to the set of displays
+  //
   // TODO(ccameron): The size and location from OnHostResizedInPixels and
   // OnHostMovedInPixels should be snapshotted here as well.
   float device_scale_factor_ = 1.f;
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc
index 5619d69..d1f6b91 100644
--- a/ui/events/blink/input_handler_proxy.cc
+++ b/ui/events/blink/input_handler_proxy.cc
@@ -156,7 +156,9 @@
       has_ongoing_compositor_scroll_or_pinch_(false),
       is_first_gesture_scroll_update_(false),
       tick_clock_(base::DefaultTickClock::GetInstance()),
-      snap_fling_controller_(std::make_unique<cc::SnapFlingController>(this)) {
+      snap_fling_controller_(std::make_unique<cc::SnapFlingController>(this)),
+      compositor_touch_action_enabled_(
+          base::FeatureList::IsEnabled(features::kCompositorTouchAction)) {
   DCHECK(client);
   input_handler_->BindToClient(this);
   cc::ScrollElasticityHelper* scroll_elasticity_helper =
@@ -786,7 +788,14 @@
           event_listener_type ==
           cc::InputHandler::TouchStartOrMoveEventListenerType::
               HANDLER_ON_SCROLLING_LAYER;
-      result = DID_NOT_HANDLE;
+      // 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
+      // from the compositor.
+      if (compositor_touch_action_enabled_ && white_listed_touch_action &&
+          *white_listed_touch_action != cc::kTouchActionNone)
+        result = DID_HANDLE_NON_BLOCKING;
+      else
+        result = DID_NOT_HANDLE;
       break;
     }
   }
diff --git a/ui/events/blink/input_handler_proxy.h b/ui/events/blink/input_handler_proxy.h
index c3dc86b..b624ab7 100644
--- a/ui/events/blink/input_handler_proxy.h
+++ b/ui/events/blink/input_handler_proxy.h
@@ -224,6 +224,8 @@
 
   std::unique_ptr<ScrollPredictor> scroll_predictor_;
 
+  bool compositor_touch_action_enabled_;
+
   DISALLOW_COPY_AND_ASSIGN(InputHandlerProxy);
 };
 
diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc
index 3697efe..395b678 100644
--- a/ui/events/blink/input_handler_proxy_unittest.cc
+++ b/ui/events/blink/input_handler_proxy_unittest.cc
@@ -306,11 +306,13 @@
             GetParam() == CHILD_SCROLL_SYNCHRONOUS_HANDLER ||
             GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_ROOT_SYNCHRONOUS ||
             GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_CHILD_SYNCHRONOUS),
+        compositor_touch_action_enabled_(
+            GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_ROOT_NORMAL ||
+            GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_ROOT_SYNCHRONOUS ||
+            GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_CHILD_NORMAL ||
+            GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_CHILD_SYNCHRONOUS),
         expected_disposition_(InputHandlerProxy::DID_HANDLE) {
-    if (GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_ROOT_NORMAL ||
-        GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_ROOT_SYNCHRONOUS ||
-        GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_CHILD_NORMAL ||
-        GetParam() == COMPOSITOR_TOUCH_ACTION_ENABLED_CHILD_SYNCHRONOUS)
+    if (compositor_touch_action_enabled_)
       feature_list_.InitAndEnableFeature(features::kCompositorTouchAction);
     else
       feature_list_.InitAndDisableFeature(features::kCompositorTouchAction);
@@ -386,6 +388,7 @@
 
   const bool synchronous_root_scroll_;
   const bool install_synchronous_handler_;
+  const bool compositor_touch_action_enabled_;
   testing::StrictMock<MockInputHandler> mock_input_handler_;
   testing::StrictMock<MockSynchronousInputHandler>
       mock_synchronous_input_handler_;
@@ -1029,7 +1032,9 @@
 TEST_P(InputHandlerProxyTest, HitTestTouchEventNonNullTouchAction) {
   // One of the touch points is on a touch-region. So the event should be sent
   // to the main thread.
-  expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
+  expected_disposition_ = compositor_touch_action_enabled_
+                              ? InputHandlerProxy::DID_HANDLE_NON_BLOCKING
+                              : InputHandlerProxy::DID_NOT_HANDLE;
   VERIFY_AND_RESET_MOCKS();
 
   EXPECT_CALL(
@@ -1159,7 +1164,9 @@
 TEST_P(InputHandlerProxyTest, MultiTouchPointHitTestPositive) {
   // One of the touch points is on a touch-region. So the event should be sent
   // to the main thread.
-  expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
+  expected_disposition_ = compositor_touch_action_enabled_
+                              ? InputHandlerProxy::DID_HANDLE_NON_BLOCKING
+                              : InputHandlerProxy::DID_NOT_HANDLE;
   VERIFY_AND_RESET_MOCKS();
 
   EXPECT_CALL(
@@ -1181,9 +1188,8 @@
             return cc::InputHandler::TouchStartOrMoveEventListenerType::
                 HANDLER_ON_SCROLLING_LAYER;
           }));
-  EXPECT_CALL(mock_client_,
-              SetWhiteListedTouchAction(cc::kTouchActionPanY, 1,
-                                        InputHandlerProxy::DID_NOT_HANDLE))
+  EXPECT_CALL(mock_client_, SetWhiteListedTouchAction(cc::kTouchActionPanY, 1,
+                                                      expected_disposition_))
       .WillOnce(testing::Return());
   // Since the second touch point hits a touch-region, there should be no
   // hit-testing for the third touch point.
@@ -1326,7 +1332,9 @@
   touch.touches_length = 1;
   touch.touch_start_or_first_touch_move = true;
   touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::kStateMoved, 10, 10);
-  EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE,
+  EXPECT_EQ(compositor_touch_action_enabled_
+                ? InputHandlerProxy::DID_HANDLE_NON_BLOCKING
+                : InputHandlerProxy::DID_NOT_HANDLE,
             input_handler_->HandleInputEvent(touch));
   VERIFY_AND_RESET_MOCKS();
 }
@@ -2002,9 +2010,8 @@
 
 TEST_P(InputHandlerProxyMainThreadScrollingReasonTest,
        GestureScrollTouchEventHandlerRegion) {
-  // The touch event hits a touch event handler and should block on main thread.
-  // Since ScrollBegin allows the gesture to scroll on impl. We collect
-  // TouchEventHandler reason but not HandlingScrollFromMainThread.
+  // The touch event hits a touch event handler that is acked from the
+  // compositor thread when kCompositorTouchAction is enabld.
   SetupEvents(TestEventType::Touch);
 
   EXPECT_CALL(
@@ -2018,7 +2025,9 @@
               SetWhiteListedTouchAction(testing::_, testing::_, testing::_))
       .WillOnce(testing::Return());
 
-  expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
+  expected_disposition_ = compositor_touch_action_enabled_
+                              ? InputHandlerProxy::DID_HANDLE_NON_BLOCKING
+                              : InputHandlerProxy::DID_NOT_HANDLE;
   EXPECT_EQ(expected_disposition_,
             input_handler_->HandleInputEvent(touch_start_));
 
@@ -2027,12 +2036,15 @@
   expected_disposition_ = InputHandlerProxy::DID_HANDLE;
   EXPECT_EQ(expected_disposition_,
             input_handler_->HandleInputEvent(gesture_scroll_begin_));
-  EXPECT_THAT(histogram_tester().GetAllSamples(
-                  "Renderer4.MainThreadGestureScrollReason"),
-              testing::ElementsAre(base::Bucket(
-                  GetBucketSample(
-                      cc::MainThreadScrollingReason::kTouchEventHandlerRegion),
-                  1)));
+  EXPECT_THAT(
+      histogram_tester().GetAllSamples(
+          "Renderer4.MainThreadGestureScrollReason"),
+      testing::ElementsAre(base::Bucket(
+          GetBucketSample(
+              compositor_touch_action_enabled_
+                  ? cc::MainThreadScrollingReason::kNotScrollingOnMain
+                  : cc::MainThreadScrollingReason::kTouchEventHandlerRegion),
+          1)));
 
   EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_, true));
   expected_disposition_ = InputHandlerProxy::DID_HANDLE;
@@ -2061,7 +2073,9 @@
               SetWhiteListedTouchAction(testing::_, testing::_, testing::_))
       .WillOnce(testing::Return());
 
-  expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
+  expected_disposition_ = compositor_touch_action_enabled_
+                              ? InputHandlerProxy::DID_HANDLE_NON_BLOCKING
+                              : InputHandlerProxy::DID_NOT_HANDLE;
   EXPECT_EQ(expected_disposition_,
             input_handler_->HandleInputEvent(touch_start_));
 
@@ -2071,12 +2085,15 @@
   EXPECT_EQ(expected_disposition_,
             input_handler_->HandleInputEvent(gesture_scroll_begin_));
 
-  EXPECT_THAT(histogram_tester().GetAllSamples(
-                  "Renderer4.MainThreadGestureScrollReason"),
-              testing::ElementsAre(base::Bucket(
-                  GetBucketSample(
-                      cc::MainThreadScrollingReason::kTouchEventHandlerRegion),
-                  1)));
+  EXPECT_THAT(
+      histogram_tester().GetAllSamples(
+          "Renderer4.MainThreadGestureScrollReason"),
+      testing::ElementsAre(base::Bucket(
+          GetBucketSample(
+              compositor_touch_action_enabled_
+                  ? cc::MainThreadScrollingReason::kHandlingScrollFromMainThread
+                  : cc::MainThreadScrollingReason::kTouchEventHandlerRegion),
+          1)));
 
   // Handle touch end event so that input handler proxy is out of the state of
   // DID_NOT_HANDLE.
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb
index 3ab15bf..a4095200 100644
--- a/ui/strings/translations/ui_strings_am.xtb
+++ b/ui/strings/translations/ui_strings_am.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;ሁሉንም ምረጥ</translation>
+<translation id="1938451708255335766">የመስኮቱን የማሳያ ትፍገት ለማስተካከል መተግበሪያውን ዳግም ያስጀምሩት።</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1ቀ}one{#ቀ}other{#ቀ}}</translation>
 <translation id="2148716181193084225">ዛሬ</translation>
 <translation id="2168039046890040389">ወደላይ አንቀሳቅስ</translation>
 <translation id="2190355936436201913">(ባዶ)</translation>
+<translation id="2192232475740621500">ዝቅተኛ ትፍገትን ተጠቀም</translation>
 <translation id="219905428774326614">ማስጀመሪያ፣ ሁሉም መተግበሪያዎች</translation>
 <translation id="2267918077332197517">ከዚህ ጣቢያ የሚመጡ ሁሉንም ማሳወቂያዎች አግድ</translation>
 <translation id="2289052229480071835">በማያ ገጽዎ ላይ ያሉት የንክኪ ዒላማዎችን መታ ያድርጉ።</translation>
 <translation id="2295140143284145483">የዳሰሳ ጥናት</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> ቴባ/ሰ</translation>
 <translation id="24452542372838207">ማሳወቂያን ዘርጋ</translation>
+<translation id="2445449901874883781">ከፍተኛ ትፍገትን ተጠቀም</translation>
 <translation id="2482878487686419369">ማስታወቂያዎች</translation>
 <translation id="2497284189126895209">ሁሉም ፋይሎች</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ar.xtb b/ui/strings/translations/ui_strings_ar.xtb
index 9489a62..80c5211 100644
--- a/ui/strings/translations/ui_strings_ar.xtb
+++ b/ui/strings/translations/ui_strings_ar.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">‏مفتاح Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">تح&amp;ديد الكلّ</translation>
+<translation id="1938451708255335766">لتعديل كثافة عرض النافذة، يمكنك إعادة تشغيل التطبيق.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{يوم واحد}zero{# يوم}two{يومان (#)}few{# أيام}many{# يومًا}other{# يوم}}</translation>
 <translation id="2148716181193084225">اليوم</translation>
 <translation id="2168039046890040389">صفحة  إلى أعلى</translation>
 <translation id="2190355936436201913">(فارغ)</translation>
+<translation id="2192232475740621500">استخدام كثافة منخفضة</translation>
 <translation id="219905428774326614">‏Launcher، جميع التطبيقات</translation>
 <translation id="2267918077332197517">حظر جميع الإشعارات الواردة من هذا الموقع</translation>
 <translation id="2289052229480071835">انقر على أهداف اللمس على شاشتك.</translation>
 <translation id="2295140143284145483">الاستطلاع</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> تيرابايت/ثانية</translation>
 <translation id="24452542372838207">توسيع الإشعار</translation>
+<translation id="2445449901874883781">استخدام كثافة عالية</translation>
 <translation id="2482878487686419369">الاشعارات</translation>
 <translation id="2497284189126895209">الملفّات كلّها</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_bg.xtb b/ui/strings/translations/ui_strings_bg.xtb
index b631985..3e83157 100644
--- a/ui/strings/translations/ui_strings_bg.xtb
+++ b/ui/strings/translations/ui_strings_bg.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">&amp;Избиране на всички</translation>
+<translation id="1938451708255335766">За да коригирате плътността за показване на прозорците, рестартирайте приложението.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 д.}other{# д.}}</translation>
 <translation id="2148716181193084225">Днес</translation>
 <translation id="2168039046890040389">Страница нагоре</translation>
 <translation id="2190355936436201913">(празно)</translation>
+<translation id="2192232475740621500">Използване на ниска плътност</translation>
 <translation id="219905428774326614">Стартов панел, всички приложения</translation>
 <translation id="2267918077332197517">Блокиране на всички известия от този сайт</translation>
 <translation id="2289052229480071835">Докоснете съответните цели на екрана.</translation>
 <translation id="2295140143284145483">Анкета</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> ТБ/сек</translation>
 <translation id="24452542372838207">Разгъване на известието</translation>
+<translation id="2445449901874883781">Използване на висока плътност</translation>
 <translation id="2482878487686419369">Известия</translation>
 <translation id="2497284189126895209">Всички файлове</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_bn.xtb b/ui/strings/translations/ui_strings_bn.xtb
index 7584250..7912167 100644
--- a/ui/strings/translations/ui_strings_bn.xtb
+++ b/ui/strings/translations/ui_strings_bn.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;সকল বেছে নিন</translation>
+<translation id="1938451708255335766">উইন্ডো ডিসপ্লে এর ঘনত্ব অ্যাডজাস্ট করতে অ্যাপটি রিস্টার্ট করুন।</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{১ দিন}one{# দিন}other{# দিন}}</translation>
 <translation id="2148716181193084225">আজ</translation>
 <translation id="2168039046890040389">পৃষ্ঠা নিচে</translation>
 <translation id="2190355936436201913">(খালি)</translation>
+<translation id="2192232475740621500">কম ঘনত্ব ব্যবহার করুন</translation>
 <translation id="219905428774326614">লঞ্চার, সমস্ত অ্যাপ</translation>
 <translation id="2267918077332197517">এই সাইটের সমস্ত বিজ্ঞপ্তি ব্লক করুন</translation>
 <translation id="2289052229480071835">আপনার স্ক্রীনে স্পর্শ লক্ষ্যগুলি আলতা চাপুন।</translation>
 <translation id="2295140143284145483">সমীক্ষা</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">বিজ্ঞপ্তি প্রসারিত করুন</translation>
+<translation id="2445449901874883781">বেশি ঘনত্ব ব্যবহার করুন</translation>
 <translation id="2482878487686419369">বিজ্ঞপ্তিগুলি</translation>
 <translation id="2497284189126895209">সকল ফাইল</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_cs.xtb b/ui/strings/translations/ui_strings_cs.xtb
index 7d5329a..883e5ab 100644
--- a/ui/strings/translations/ui_strings_cs.xtb
+++ b/ui/strings/translations/ui_strings_cs.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Klávesa Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;Vybrat vše</translation>
+<translation id="1938451708255335766">Chcete-li upravit kompaktnost zobrazení okna, restartujte aplikaci.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 d}few{# d}many{# d}other{# d}}</translation>
 <translation id="2148716181193084225">Dnes</translation>
 <translation id="2168039046890040389">Klávesa PageUp</translation>
 <translation id="2190355936436201913">(prázdné)</translation>
+<translation id="2192232475740621500">Použít nízkou hustotu</translation>
 <translation id="219905428774326614">Spouštěč, všechny aplikace</translation>
 <translation id="2267918077332197517">Blokovat všechna oznámení z tohoto webu</translation>
 <translation id="2289052229480071835">Klepněte na cíle klepnutí na obrazovce.</translation>
 <translation id="2295140143284145483">Průzkum</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Rozbalit oznámení</translation>
+<translation id="2445449901874883781">Použít vysokou hustotu</translation>
 <translation id="2482878487686419369">Oznámení</translation>
 <translation id="2497284189126895209">Všechny soubory</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb
index d449779..a336a13 100644
--- a/ui/strings/translations/ui_strings_es-419.xtb
+++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Insert</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">Seleccionar &amp;todo</translation>
+<translation id="1938451708255335766">Para ajustar la densidad de la visualización de la ventana, reinicia la app.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 d}other{# d}}</translation>
 <translation id="2148716181193084225">Hoy</translation>
 <translation id="2168039046890040389">Retroceder página</translation>
 <translation id="2190355936436201913">(vacío)</translation>
+<translation id="2192232475740621500">Usar la densidad baja</translation>
 <translation id="219905428774326614">Launcher, todas las apps</translation>
 <translation id="2267918077332197517">No permitir las notificaciones de este sitio</translation>
 <translation id="2289052229480071835">Presiona los objetivos táctiles en tu pantalla.</translation>
 <translation id="2295140143284145483">Encuesta</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Expandir notificación</translation>
+<translation id="2445449901874883781">Usar la densidad alta</translation>
 <translation id="2482878487686419369">Notificaciones</translation>
 <translation id="2497284189126895209">Todos los archivos</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_es.xtb b/ui/strings/translations/ui_strings_es.xtb
index 8b24180..bd70d4e3 100644
--- a/ui/strings/translations/ui_strings_es.xtb
+++ b/ui/strings/translations/ui_strings_es.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Insert</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">Seleccionar &amp;todo</translation>
+<translation id="1938451708255335766">Para modificar la densidad de pantalla de la ventana, reinicia la aplicación.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 día}other{# días}}</translation>
 <translation id="2148716181193084225">Hoy</translation>
 <translation id="2168039046890040389">Retroceder página</translation>
 <translation id="2190355936436201913">(vacío)</translation>
+<translation id="2192232475740621500">Usar baja densidad</translation>
 <translation id="219905428774326614">Menú de aplicaciones, todas las aplicaciones</translation>
 <translation id="2267918077332197517">Bloquear todas las notificaciones de este sitio web</translation>
 <translation id="2289052229480071835">Toca los elementos táctiles en la pantalla.</translation>
 <translation id="2295140143284145483">Encuesta</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Mostrar notificación</translation>
+<translation id="2445449901874883781">Usar alta densidad</translation>
 <translation id="2482878487686419369">Notificaciones</translation>
 <translation id="2497284189126895209">Todos los archivos</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index ede4fff5..6e46aa96 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />٪</translation>
 <translation id="1901303067676059328">انتخاب &amp;همه</translation>
+<translation id="1938451708255335766">برای تنظیم تراکم نمایشگر پنجره، برنامه را بازراه‌اندازی کنید.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{۱ روز}one{# روز}other{# روز}}</translation>
 <translation id="2148716181193084225">امروز</translation>
 <translation id="2168039046890040389">صفحه بالا</translation>
 <translation id="2190355936436201913">(خالی)</translation>
+<translation id="2192232475740621500">استفاده از تراکم پایین</translation>
 <translation id="219905428774326614">راه‌انداز، همه برنامه‌ها</translation>
 <translation id="2267918077332197517">مسدود کردن همه اعلان‌های این سایت</translation>
 <translation id="2289052229480071835">روی اهداف لمسی در صفحه‌تان ضربه بزنید.</translation>
 <translation id="2295140143284145483">نظرسنجی</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> ترابایت/ثانیه</translation>
 <translation id="24452542372838207">بزرگ کردن اعلان</translation>
+<translation id="2445449901874883781">استفاده از تراکم بالا</translation>
 <translation id="2482878487686419369">اعلان‌ها</translation>
 <translation id="2497284189126895209">همه فایل‌ها</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_fil.xtb b/ui/strings/translations/ui_strings_fil.xtb
index 12bdf70..21aa7040 100644
--- a/ui/strings/translations/ui_strings_fil.xtb
+++ b/ui/strings/translations/ui_strings_fil.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Piliin ang &amp;lahat</translation>
+<translation id="1938451708255335766">Para i-adjust ang density ng display ng window, i-restart ang app.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 araw}one{# araw}other{# na araw}}</translation>
 <translation id="2148716181193084225">Ngayon</translation>
 <translation id="2168039046890040389">Pataas</translation>
 <translation id="2190355936436201913">(walang laman)</translation>
+<translation id="2192232475740621500">Gumamit ng mababang density</translation>
 <translation id="219905428774326614">Launcher, lahat ng app</translation>
 <translation id="2267918077332197517">I-block ang lahat ng notification mula sa site na ito</translation>
 <translation id="2289052229480071835">I-tap ang mga target sa pagpindot sa iyong screen.</translation>
 <translation id="2295140143284145483">Survey</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> (na) TB/s</translation>
 <translation id="24452542372838207">Palawakin ang notification</translation>
+<translation id="2445449901874883781">Gumamit ng mataas na density</translation>
 <translation id="2482878487686419369">Mga Abiso</translation>
 <translation id="2497284189126895209">Lahat ng Mga File</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb
index be5f01d..402c20f2 100644
--- a/ui/strings/translations/ui_strings_gu.xtb
+++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;બધા પસંદ કરો</translation>
+<translation id="1938451708255335766">વિંડો ડિસ્પ્લે ઘનતાને ગોઠવવા માટે, ઍપને ફરીથી શરૂ કરો.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 દિ}one{# દિ}other{# દિ}}</translation>
 <translation id="2148716181193084225">આજે</translation>
 <translation id="2168039046890040389">પૃષ્ઠ ઉપર</translation>
 <translation id="2190355936436201913">(ખાલી)</translation>
+<translation id="2192232475740621500">ઓછી ઘનતાનો ઉપયોગ કરો</translation>
 <translation id="219905428774326614">લૉન્ચર, બધી ઍપ</translation>
 <translation id="2267918077332197517">આ સાઇટના બધા નોટિફિકેશનો અવરોધિત કરો</translation>
 <translation id="2289052229480071835">તમારી સ્ક્રીન પર ટચ કરવાના લક્ષ્યોને ટૅપ કરો.</translation>
 <translation id="2295140143284145483">સર્વેક્ષણ</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">નોટિફિકેશન વિસ્તૃત કરો</translation>
+<translation id="2445449901874883781">વધારે ઘનતાનો ઉપયોગ કરો</translation>
 <translation id="2482878487686419369">સૂચનાઓ</translation>
 <translation id="2497284189126895209">બધી ફાઇલો</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_hi.xtb b/ui/strings/translations/ui_strings_hi.xtb
index fb15bbc..b809c44 100644
--- a/ui/strings/translations/ui_strings_hi.xtb
+++ b/ui/strings/translations/ui_strings_hi.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;सभी को चुनें</translation>
+<translation id="1938451708255335766">विंडो डिसप्ले की सघनता में बदलाव करने के लिए, ऐप्लिकेशन को रीस्टार्ट करें.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1d}one{#d}other{#d}}</translation>
 <translation id="2148716181193084225">आज</translation>
 <translation id="2168039046890040389">पेज ऊपर</translation>
 <translation id="2190355936436201913">(खाली)</translation>
+<translation id="2192232475740621500">कम सघनता का इस्तेमाल करें</translation>
 <translation id="219905428774326614">लॉन्चर, सभी ऐप्लिकेशन</translation>
 <translation id="2267918077332197517">इस साइट से सभी सूचनाएं रोकें</translation>
 <translation id="2289052229480071835">अपनी स्क्रीन पर स्पर्श लक्ष्य पर टैप करें.</translation>
 <translation id="2295140143284145483">सर्वे</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">सूचना को विस्तृत करें</translation>
+<translation id="2445449901874883781">ज़्यादा सघनता का इस्तेमाल करें</translation>
 <translation id="2482878487686419369">अधिसूचनाएं</translation>
 <translation id="2497284189126895209">सभी फ़ाइलें</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_id.xtb b/ui/strings/translations/ui_strings_id.xtb
index 229353b..8a350103 100644
--- a/ui/strings/translations/ui_strings_id.xtb
+++ b/ui/strings/translations/ui_strings_id.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Pilih semu&amp;a</translation>
+<translation id="1938451708255335766">Untuk menyesuaikan kepadatan tampilan jendela, mulai ulang aplikasi.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1h}other{#h}}</translation>
 <translation id="2148716181193084225">Hari ini</translation>
 <translation id="2168039046890040389">Page Up</translation>
 <translation id="2190355936436201913">(kosong)</translation>
+<translation id="2192232475740621500">Gunakan kepadatan rendah</translation>
 <translation id="219905428774326614">Peluncur, semua aplikasi</translation>
 <translation id="2267918077332197517">Blokir semua notifikasi dari situs ini</translation>
 <translation id="2289052229480071835">Tap target sentuh di layar.</translation>
 <translation id="2295140143284145483">Survei</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/dtk</translation>
 <translation id="24452542372838207">Luaskan notifikasi</translation>
+<translation id="2445449901874883781">Gunakan kepadatan tinggi</translation>
 <translation id="2482878487686419369">Notifikasi</translation>
 <translation id="2497284189126895209">Semua Jenis File</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ja.xtb b/ui/strings/translations/ui_strings_ja.xtb
index 56155f89..97e661cfe 100644
--- a/ui/strings/translations/ui_strings_ja.xtb
+++ b/ui/strings/translations/ui_strings_ja.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Insert</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">すべて選択(&amp;A)</translation>
+<translation id="1938451708255335766">ウィンドウの表示間隔を調整するには、アプリを再起動してください。</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1日}other{#日}}</translation>
 <translation id="2148716181193084225">今日</translation>
 <translation id="2168039046890040389">前のページへ</translation>
 <translation id="2190355936436201913">(なし)</translation>
+<translation id="2192232475740621500">表示間隔を広くする</translation>
 <translation id="219905428774326614">ランチャー、すべてのアプリ</translation>
 <translation id="2267918077332197517">このサイトからのすべての通知をブロックする</translation>
 <translation id="2289052229480071835">画面に表示されるタップ ターゲットをタップします。</translation>
 <translation id="2295140143284145483">アンケート</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/秒</translation>
 <translation id="24452542372838207">通知を展開</translation>
+<translation id="2445449901874883781">Use high density</translation>
 <translation id="2482878487686419369">通知</translation>
 <translation id="2497284189126895209">すべてのファイル</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb
index eb921f3..da61a173 100644
--- a/ui/strings/translations/ui_strings_kn.xtb
+++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;ಎಲ್ಲ ಆಯ್ಕೆ ಮಾಡಿ</translation>
+<translation id="1938451708255335766">ವಿಂಡೋ ಡಿಸ್‌ಪ್ಲೇ ಸಾಂದ್ರತೆಯನ್ನು ಸರಿಹೊಂದಿಸಲು, ಆ್ಯಪ್ ಮರುಪ್ರಾರಂಭಿಸಿ.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1ದಿ}one{#ದಿ}other{#ದಿ}}</translation>
 <translation id="2148716181193084225">ಇಂದು</translation>
 <translation id="2168039046890040389">ಪುಟ ಮೇಲೆ</translation>
 <translation id="2190355936436201913">(ಖಾಲಿ)</translation>
+<translation id="2192232475740621500">ಕಡಿಮೆ ಸಾಂದ್ರತೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="219905428774326614">ಲಾಂಚರ್‌, ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು</translation>
 <translation id="2267918077332197517">ಈ ಸೈಟ್‌ನಿಂದ ಎಲ್ಲಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="2289052229480071835">ನಿಮ್ಮ ಪರದೆಯಲ್ಲಿ ಸ್ಪರ್ಶ ಟಾರ್ಗೆಟ್‌ಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="2295140143284145483">ಸಮೀಕ್ಷೆ</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">ವಿಸ್ತರಿಸುವ ಅಧಿಸೂಚನೆ</translation>
+<translation id="2445449901874883781">ಅಧಿಕ ಸಾಂದ್ರತೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="2482878487686419369">ಸೂಚನೆಗಳು</translation>
 <translation id="2497284189126895209">ಎಲ್ಲ ಫೈಲ್‌ಗಳು</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ko.xtb b/ui/strings/translations/ui_strings_ko.xtb
index 702d1adf..f2ac213 100644
--- a/ui/strings/translations/ui_strings_ko.xtb
+++ b/ui/strings/translations/ui_strings_ko.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Insert</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">전체 선택(&amp;A)</translation>
+<translation id="1938451708255335766">창 표시 밀도를 조정하려면 앱을 다시 시작하세요.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1일}other{#일}}</translation>
 <translation id="2148716181193084225">오늘</translation>
 <translation id="2168039046890040389">페이지 위로</translation>
 <translation id="2190355936436201913">(비어있음)</translation>
+<translation id="2192232475740621500">저밀도 사용</translation>
 <translation id="219905428774326614">런처, 모든 앱</translation>
 <translation id="2267918077332197517">이 사이트의 모든 알림 차단</translation>
 <translation id="2289052229480071835">화면에서 터치 대상을 탭하세요.</translation>
 <translation id="2295140143284145483">설문조사</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" />TB/s</translation>
 <translation id="24452542372838207">알림 펼치기</translation>
+<translation id="2445449901874883781">고밀도 사용</translation>
 <translation id="2482878487686419369">알림</translation>
 <translation id="2497284189126895209">모든 파일</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ml.xtb b/ui/strings/translations/ui_strings_ml.xtb
index b41c6fe..4ac3c554 100644
--- a/ui/strings/translations/ui_strings_ml.xtb
+++ b/ui/strings/translations/ui_strings_ml.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">എല്ലാം &amp;തിരഞ്ഞെടുക്കൂ</translation>
+<translation id="1938451708255335766">വിൻഡോ ഡിസ്പ്ലേ സാന്ദ്രത ക്രമീകരിക്കാൻ, ആപ്പ് റീസ്റ്റാര്‍ട്ട് ചെയ്യുക.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1ദിവസം}other{# ദിവസം}}</translation>
 <translation id="2148716181193084225">ഇന്ന്</translation>
 <translation id="2168039046890040389">പേജ് മുകളിലേയ്ക്ക്</translation>
 <translation id="2190355936436201913">(ശൂന്യം)</translation>
+<translation id="2192232475740621500">കുറഞ്ഞ സാന്ദ്രത ഉപയോഗിക്കുക</translation>
 <translation id="219905428774326614">ലോഞ്ചർ, എല്ലാ ആപ്പുകളും</translation>
 <translation id="2267918077332197517">ഈ സൈറ്റിൽ നിന്നുള്ള എല്ലാ അറിയിപ്പുകളും ബ്ലോക്ക് ചെയ്യുക</translation>
 <translation id="2289052229480071835">സ്‌ക്രീനിലുള്ള 'ടാർഗെറ്റുകൾ സ്‌പർശിക്കുക' ടാപ്പുചെയ്യുക.</translation>
 <translation id="2295140143284145483">സർവ്വേ</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">അറിയിപ്പ് വികസിപ്പിക്കുക</translation>
+<translation id="2445449901874883781">കൂടിയ സാന്ദ്രത ഉപയോഗിക്കുക</translation>
 <translation id="2482878487686419369">വിജ്ഞാപനങ്ങള്‍‌</translation>
 <translation id="2497284189126895209">എല്ലാ ഫയലുകളും</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_mr.xtb b/ui/strings/translations/ui_strings_mr.xtb
index 18d8c5a..e84bee4f 100644
--- a/ui/strings/translations/ui_strings_mr.xtb
+++ b/ui/strings/translations/ui_strings_mr.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;सर्व निवडा</translation>
+<translation id="1938451708255335766">विंडो डिस्प्ले घनता अ‍ॅडजस्ट करण्यासाठी, अ‍ॅप रीस्टार्ट करा.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1दि}one{#दि}other{#दि}}</translation>
 <translation id="2148716181193084225">आज</translation>
 <translation id="2168039046890040389">पृष्ठ वर</translation>
 <translation id="2190355936436201913">(रिक्त)</translation>
+<translation id="2192232475740621500">कमी घनता वापरा</translation>
 <translation id="219905428774326614">लाँचर, सर्व अ‍ॅप्स</translation>
 <translation id="2267918077332197517">या साइटच्या सर्व सूचना ब्‍लॉक करा</translation>
 <translation id="2289052229480071835">आपल्या स्क्रीनवरील लक्ष्यांना स्पर्श करा टॅप करा.</translation>
 <translation id="2295140143284145483">सर्वेक्षण</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">सूचना विस्तृत करा</translation>
+<translation id="2445449901874883781">उच्च घनता वापरा</translation>
 <translation id="2482878487686419369">सूचना</translation>
 <translation id="2497284189126895209">सर्व फाइल</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ms.xtb b/ui/strings/translations/ui_strings_ms.xtb
index 8e834cad..989667bf 100644
--- a/ui/strings/translations/ui_strings_ms.xtb
+++ b/ui/strings/translations/ui_strings_ms.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Pilih &amp;semua</translation>
+<translation id="1938451708255335766">Untuk melaraskan ketumpatan paparan tetingkap, mulakan semula apl.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1h}other{#h}}</translation>
 <translation id="2148716181193084225">Hari ini</translation>
 <translation id="2168039046890040389">Halaman Ke Atas</translation>
 <translation id="2190355936436201913">(kosong)</translation>
+<translation id="2192232475740621500">Gunakan ketumpatan rendah</translation>
 <translation id="219905428774326614">Pelancar, semua apl</translation>
 <translation id="2267918077332197517">Sekat semua pemberitahuan daripada tapak ini</translation>
 <translation id="2289052229480071835">Ketik sasaran sentuhan pada skrin anda.</translation>
 <translation id="2295140143284145483">Tinjauan</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Kembangkan pemberitahuan</translation>
+<translation id="2445449901874883781">Gunakan ketumpatan tinggi</translation>
 <translation id="2482878487686419369">Pemberitahuan</translation>
 <translation id="2497284189126895209">Semua Fail</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_no.xtb b/ui/strings/translations/ui_strings_no.xtb
index 4f007e3f..77ad0c5e 100644
--- a/ui/strings/translations/ui_strings_no.xtb
+++ b/ui/strings/translations/ui_strings_no.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Marker &amp;alt</translation>
+<translation id="1938451708255335766">For å justere visningstettheten for vinduer, start appen på nytt.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 d}other{# d}}</translation>
 <translation id="2148716181193084225">I dag</translation>
 <translation id="2168039046890040389">Opp 1 s.</translation>
 <translation id="2190355936436201913">(tom)</translation>
+<translation id="2192232475740621500">Bruk lav tetthet</translation>
 <translation id="219905428774326614">Appoversikt, alle apper</translation>
 <translation id="2267918077332197517">Blokkér alle varsler fra dette nettstedet</translation>
 <translation id="2289052229480071835">Trykk på berøringsmålene på skjermen.</translation>
 <translation id="2295140143284145483">Undersøkelse</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB per sek</translation>
 <translation id="24452542372838207">Vis varselet</translation>
+<translation id="2445449901874883781">Bruk høy tetthet</translation>
 <translation id="2482878487686419369">Varsler</translation>
 <translation id="2497284189126895209">Alle filer</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_pl.xtb b/ui/strings/translations/ui_strings_pl.xtb
index 90c9e89..636702c 100644
--- a/ui/strings/translations/ui_strings_pl.xtb
+++ b/ui/strings/translations/ui_strings_pl.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">Zaznacz &amp;wszystko</translation>
+<translation id="1938451708255335766">Aby dostosować gęstość wyświetlania okien, ponownie uruchom aplikację.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 dzień}few{# dni}many{# dni}other{# dnia}}</translation>
 <translation id="2148716181193084225">Dzisiaj</translation>
 <translation id="2168039046890040389">Strona do góry</translation>
 <translation id="2190355936436201913">(puste)</translation>
+<translation id="2192232475740621500">Użyj małej gęstości</translation>
 <translation id="219905428774326614">Menu ze wszystkimi aplikacjami</translation>
 <translation id="2267918077332197517">Blokuj wszystkie powiadomienia z tej strony internetowej</translation>
 <translation id="2289052229480071835">Kliknij docelowe obszary kliknięcia na ekranie.</translation>
 <translation id="2295140143284145483">Ankieta</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Rozwiń powiadomienie</translation>
+<translation id="2445449901874883781">Użyj dużej gęstości</translation>
 <translation id="2482878487686419369">Powiadomienia</translation>
 <translation id="2497284189126895209">Wszystkie pliki</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ro.xtb b/ui/strings/translations/ui_strings_ro.xtb
index f7b3153..a800ec1fb 100644
--- a/ui/strings/translations/ui_strings_ro.xtb
+++ b/ui/strings/translations/ui_strings_ro.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" />%</translation>
 <translation id="1901303067676059328">Select&amp;ează tot</translation>
+<translation id="1938451708255335766">Pentru a regla densitatea afișajului ferestrei, repornește aplicația.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 zi}few{# zile}other{# zile}}</translation>
 <translation id="2148716181193084225">Astăzi</translation>
 <translation id="2168039046890040389">O pagină mai sus</translation>
 <translation id="2190355936436201913">(gol)</translation>
+<translation id="2192232475740621500">Folosește densitatea joasă</translation>
 <translation id="219905428774326614">Lansator, toate aplicațiile</translation>
 <translation id="2267918077332197517">Blochează toate notificările de la acest site</translation>
 <translation id="2289052229480071835">Atinge țintele de atingere de pe ecran.</translation>
 <translation id="2295140143284145483">Sondaj</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Extinde notificarea</translation>
+<translation id="2445449901874883781">Folosește densitatea ridicată</translation>
 <translation id="2482878487686419369">Notificări</translation>
 <translation id="2497284189126895209">Toate fișierele</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_sk.xtb b/ui/strings/translations/ui_strings_sk.xtb
index 7f660cd..55aae54 100644
--- a/ui/strings/translations/ui_strings_sk.xtb
+++ b/ui/strings/translations/ui_strings_sk.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Vybrať &amp;všetko</translation>
+<translation id="1938451708255335766">Ak chcete upraviť hustotu zobrazenia okien, reštartujte aplikáciu.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 d.}few{# d.}many{# d.}other{# d.}}</translation>
 <translation id="2148716181193084225">Dnes</translation>
 <translation id="2168039046890040389">Page Up</translation>
 <translation id="2190355936436201913">(prázdne)</translation>
+<translation id="2192232475740621500">Použiť nízku hustotu</translation>
 <translation id="219905428774326614">Spúšťač, všetky aplikácie</translation>
 <translation id="2267918077332197517">Blokovať všetky upozornenia z tohto webu</translation>
 <translation id="2289052229480071835">Klepnite na dotykové ciele na obrazovke.</translation>
 <translation id="2295140143284145483">Prieskum</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">Rozbaliť upozornenie</translation>
+<translation id="2445449901874883781">Použiť vysokú hustotu</translation>
 <translation id="2482878487686419369">Upozornenia</translation>
 <translation id="2497284189126895209">Všetky súbory</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_ta.xtb b/ui/strings/translations/ui_strings_ta.xtb
index db9da206..8b052d2 100644
--- a/ui/strings/translations/ui_strings_ta.xtb
+++ b/ui/strings/translations/ui_strings_ta.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">அ&amp;னைத்தையும் தேர்ந்தெடு</translation>
+<translation id="1938451708255335766">சாளரக் காட்சியின் அடர்த்தியைச் சரிசெய்ய, ஆப்ஸை மீண்டும் தொடங்கவும்.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1நா}other{#நா}}</translation>
 <translation id="2148716181193084225">இன்று</translation>
 <translation id="2168039046890040389">பக்கத்தின் மேலே</translation>
 <translation id="2190355936436201913">(காலி)</translation>
+<translation id="2192232475740621500">குறைந்த அடர்த்தியைப் பயன்படுத்து</translation>
 <translation id="219905428774326614">துவக்கி, எல்லாப் பயன்பாடுகளும்</translation>
 <translation id="2267918077332197517">இந்தத் தளத்திலிருந்து எல்லா அறிவிப்புகளையும் தடு</translation>
 <translation id="2289052229480071835">உங்கள் திரையில் இருக்கும் தொடுவதற்கான இலக்கிடங்களைத் தட்டவும்.</translation>
 <translation id="2295140143284145483">கருத்துக்கணிப்பு</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> டெ.பை/வி</translation>
 <translation id="24452542372838207">அறிவிப்பை விரிவாக்கு</translation>
+<translation id="2445449901874883781">அதிக அடர்த்தியைப் பயன்படுத்து</translation>
 <translation id="2482878487686419369">அறிவிப்புகள்</translation>
 <translation id="2497284189126895209">அனைத்து கோப்புகளும்</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb
index eabfd5c9..96f106e 100644
--- a/ui/strings/translations/ui_strings_te.xtb
+++ b/ui/strings/translations/ui_strings_te.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">&amp;అన్నీ ఎంచుకోండి</translation>
+<translation id="1938451708255335766">విండో డిస్‌ప్లే సాంద్రతను సర్దుబాటు చేయడం కోసం, యాప్‌ని పునఃప్రారంభించండి.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1రో}other{#రో}}</translation>
 <translation id="2148716181193084225">ఈ రోజు</translation>
 <translation id="2168039046890040389">పేజీ పైకి</translation>
 <translation id="2190355936436201913">(ఖాళీ)</translation>
+<translation id="2192232475740621500">తక్కువ సాంద్రతను ఉపయోగించు</translation>
 <translation id="219905428774326614">లాంచర్, అన్ని యాప్‌లు</translation>
 <translation id="2267918077332197517">ఈ సైట్ నుండి నోటిఫికేషన్‌లు అన్ని బ్లాక్ చేయండి</translation>
 <translation id="2289052229480071835">మీ స్క్రీన్‌పై ఉన్న స్పర్శ లక్ష్యాలను నొక్కండి.</translation>
 <translation id="2295140143284145483">సర్వే</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">నోటిఫికేషన్‌ని విస్తరించు</translation>
+<translation id="2445449901874883781">ఎక్కువ సాంద్రతను ఉపయోగించు</translation>
 <translation id="2482878487686419369">ప్రకటనలు</translation>
 <translation id="2497284189126895209">మొత్తం ఫైళ్లు</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_th.xtb b/ui/strings/translations/ui_strings_th.xtb
index ba6f255..e9e24a3 100644
--- a/ui/strings/translations/ui_strings_th.xtb
+++ b/ui/strings/translations/ui_strings_th.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">เลือก&amp;ทั้งหมด</translation>
+<translation id="1938451708255335766">หากต้องการปรับความหนาแน่นของการแสดงผลในหน้าต่าง ให้ปิดแอปแล้วเปิดใหม่</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 วัน}other{# วัน}}</translation>
 <translation id="2148716181193084225">วันนี้</translation>
 <translation id="2168039046890040389">เลื่อนหน้าขึ้น</translation>
 <translation id="2190355936436201913">(ว่างเปล่า)</translation>
+<translation id="2192232475740621500">ใช้ความหนาแน่นต่ำ</translation>
 <translation id="219905428774326614">Launcher, แอปทั้งหมด</translation>
 <translation id="2267918077332197517">บล็อกการแจ้งเตือนทั้งหมดจากเว็บไซต์นี้</translation>
 <translation id="2289052229480071835">แตะเป้าหมายการสัมผัสในหน้าจอ</translation>
 <translation id="2295140143284145483">แบบสำรวจ</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/วินาที</translation>
 <translation id="24452542372838207">ขยายการแจ้งเตือน</translation>
+<translation id="2445449901874883781">ใช้ความหนาแน่นสูง</translation>
 <translation id="2482878487686419369">การแจ้งเตือน</translation>
 <translation id="2497284189126895209">ไฟล์ทั้งหมด</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_tr.xtb b/ui/strings/translations/ui_strings_tr.xtb
index eb89f02..4fbb78c 100644
--- a/ui/strings/translations/ui_strings_tr.xtb
+++ b/ui/strings/translations/ui_strings_tr.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652">%<ph name="NUMBER" /></translation>
 <translation id="1901303067676059328">Tümünü &amp;seç</translation>
+<translation id="1938451708255335766">Pencerenin görüntü yoğunluğunu ayarlamak için uygulamayı yeniden başlatın.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 gün}other{# gün}}</translation>
 <translation id="2148716181193084225">Bugün</translation>
 <translation id="2168039046890040389">Page Up</translation>
 <translation id="2190355936436201913">(boş)</translation>
+<translation id="2192232475740621500">Düşük yoğunluk kullan</translation>
 <translation id="219905428774326614">Launcher, tüm uygulamalar</translation>
 <translation id="2267918077332197517">Bu siteden gelen tüm bildirimleri engelle</translation>
 <translation id="2289052229480071835">Ekranınızda dokunma hedeflerine dokunun.</translation>
 <translation id="2295140143284145483">Anket</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/sn</translation>
 <translation id="24452542372838207">Bildirimi genişlet</translation>
+<translation id="2445449901874883781">Yüksek yoğunluk kullan</translation>
 <translation id="2482878487686419369">Bildirimler</translation>
 <translation id="2497284189126895209">Tüm Dosyalar</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_vi.xtb b/ui/strings/translations/ui_strings_vi.xtb
index 671126da..9ce6b42 100644
--- a/ui/strings/translations/ui_strings_vi.xtb
+++ b/ui/strings/translations/ui_strings_vi.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">Chọn &amp;tất cả</translation>
+<translation id="1938451708255335766">Để điều chỉnh mật độ hiển thị cửa sổ, hãy khởi động lại ứng dụng.</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 ngày}other{# ngày}}</translation>
 <translation id="2148716181193084225">Hôm nay</translation>
 <translation id="2168039046890040389">Page Up</translation>
 <translation id="2190355936436201913">(trống)</translation>
+<translation id="2192232475740621500">Sử dụng mật độ thấp</translation>
 <translation id="219905428774326614">Trình khởi chạy, tất cả ứng dụng</translation>
 <translation id="2267918077332197517">Chặn tất cả thông báo từ trang web này</translation>
 <translation id="2289052229480071835">Nhấn vào các mục tiêu cảm ứng trên màn hình của bạn.</translation>
 <translation id="2295140143284145483">Khảo sát</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/giây</translation>
 <translation id="24452542372838207">Mở rộng thông báo</translation>
+<translation id="2445449901874883781">Sử dụng mật độ cao</translation>
 <translation id="2482878487686419369">Thông báo</translation>
 <translation id="2497284189126895209">Tất cả Tệp tin</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb
index 2c7db8a..c1d9d8271 100644
--- a/ui/strings/translations/ui_strings_zh-CN.xtb
+++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">全选(&amp;A)</translation>
+<translation id="1938451708255335766">要调整窗口显示密度,请重启该应用。</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 天}other{# 天}}</translation>
 <translation id="2148716181193084225">今天</translation>
 <translation id="2168039046890040389">向上翻页</translation>
 <translation id="2190355936436201913">(空)</translation>
+<translation id="2192232475740621500">使用低密度</translation>
 <translation id="219905428774326614">启动器,所有应用</translation>
 <translation id="2267918077332197517">屏蔽来自此网站的所有通知</translation>
 <translation id="2289052229480071835">点按您屏幕上的触摸目标。</translation>
 <translation id="2295140143284145483">调查问卷</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/s</translation>
 <translation id="24452542372838207">展开通知</translation>
+<translation id="2445449901874883781">使用高密度</translation>
 <translation id="2482878487686419369">通知</translation>
 <translation id="2497284189126895209">所有文件</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/strings/translations/ui_strings_zh-TW.xtb b/ui/strings/translations/ui_strings_zh-TW.xtb
index 7041e1c..b2ef2c1 100644
--- a/ui/strings/translations/ui_strings_zh-TW.xtb
+++ b/ui/strings/translations/ui_strings_zh-TW.xtb
@@ -30,16 +30,19 @@
 <translation id="1871244248791675517">Ins</translation>
 <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation>
 <translation id="1901303067676059328">選取全部(&amp;A)</translation>
+<translation id="1938451708255335766">如要調整視窗顯示密度,請重新啟動應用程式。</translation>
 <translation id="2141853158323869627">{DAYS,plural, =1{1 天}other{# 天}}</translation>
 <translation id="2148716181193084225">今天</translation>
 <translation id="2168039046890040389">向上翻頁</translation>
 <translation id="2190355936436201913">(空白)</translation>
+<translation id="2192232475740621500">使用低密度模式</translation>
 <translation id="219905428774326614">啟動器,所有應用程式</translation>
 <translation id="2267918077332197517">一律封鎖來自這個網站的通知</translation>
 <translation id="2289052229480071835">輕觸畫面上的觸控目標。</translation>
 <translation id="2295140143284145483">問卷調查</translation>
 <translation id="2297836609126180313"><ph name="QUANTITY" /> TB/秒</translation>
 <translation id="24452542372838207">展開通知</translation>
+<translation id="2445449901874883781">使用高密度模式</translation>
 <translation id="2482878487686419369">通知</translation>
 <translation id="2497284189126895209">所有檔案</translation>
 <translation id="2515586267016047495">Alt</translation>
diff --git a/ui/views/animation/flood_fill_ink_drop_ripple.cc b/ui/views/animation/flood_fill_ink_drop_ripple.cc
index 1ce501ed..4fcb3ff 100644
--- a/ui/views/animation/flood_fill_ink_drop_ripple.cc
+++ b/ui/views/animation/flood_fill_ink_drop_ripple.cc
@@ -163,19 +163,6 @@
   AbortAllAnimations();
 }
 
-void FloodFillInkDropRipple::HostSizeChanged(const gfx::Size& new_size) {
-  root_layer_.SetBounds(CalculateClipBounds(new_size, clip_insets_));
-  switch (target_ink_drop_state()) {
-    case InkDropState::ACTION_PENDING:
-    case InkDropState::ALTERNATE_ACTION_PENDING:
-    case InkDropState::ACTIVATED:
-      painted_layer_.SetTransform(GetMaxSizeTargetTransform());
-      break;
-    default:
-      break;
-  }
-}
-
 void FloodFillInkDropRipple::SnapToActivated() {
   InkDropRipple::SnapToActivated();
   SetOpacity(visible_opacity_);
diff --git a/ui/views/animation/flood_fill_ink_drop_ripple.h b/ui/views/animation/flood_fill_ink_drop_ripple.h
index 6642f44..3a63a8a 100644
--- a/ui/views/animation/flood_fill_ink_drop_ripple.h
+++ b/ui/views/animation/flood_fill_ink_drop_ripple.h
@@ -66,7 +66,6 @@
   ~FloodFillInkDropRipple() override;
 
   // InkDropRipple:
-  void HostSizeChanged(const gfx::Size& new_size) override;
   void SnapToActivated() override;
   ui::Layer* GetRootLayer() override;
 
diff --git a/ui/views/animation/ink_drop_host_view.cc b/ui/views/animation/ink_drop_host_view.cc
index a924b54..aa1f1e1 100644
--- a/ui/views/animation/ink_drop_host_view.cc
+++ b/ui/views/animation/ink_drop_host_view.cc
@@ -209,7 +209,6 @@
 void InkDropHostView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
   if (ink_drop_)
     ink_drop_->HostSizeChanged(size());
-  UpdateInkDropMaskLayerSize(size());
 }
 
 void InkDropHostView::VisibilityChanged(View* starting_from, bool is_visible) {
@@ -312,11 +311,6 @@
   ink_drop_mask_.reset();
 }
 
-void InkDropHostView::UpdateInkDropMaskLayerSize(const gfx::Size& new_size) {
-  if (ink_drop_mask_)
-    ink_drop_mask_->UpdateLayerSize(new_size);
-}
-
 // static
 gfx::Size InkDropHostView::CalculateLargeInkDropSize(
     const gfx::Size& small_size) {
diff --git a/ui/views/animation/ink_drop_host_view.h b/ui/views/animation/ink_drop_host_view.h
index d3a3aa6c..572573c 100644
--- a/ui/views/animation/ink_drop_host_view.h
+++ b/ui/views/animation/ink_drop_host_view.h
@@ -169,10 +169,6 @@
 
   void ResetInkDropMask();
 
-  // Updates the ink drop mask layer size to |new_size|. It does nothing if
-  // |ink_drop_mask_| is null.
-  void UpdateInkDropMaskLayerSize(const gfx::Size& new_size);
-
   // Returns a large ink drop size based on the |small_size| that works well
   // with the SquareInkDropRipple animation durations.
   static gfx::Size CalculateLargeInkDropSize(const gfx::Size& small_size);
diff --git a/ui/views/animation/ink_drop_impl.cc b/ui/views/animation/ink_drop_impl.cc
index 6c8fbe7..7c0449f 100644
--- a/ui/views/animation/ink_drop_impl.cc
+++ b/ui/views/animation/ink_drop_impl.cc
@@ -630,8 +630,25 @@
   // when a mask layer is applied to it. This will not affect clipping if no
   // mask layer is set.
   root_layer_->SetBounds(gfx::Rect(new_size));
-  if (ink_drop_ripple_)
-    ink_drop_ripple_->HostSizeChanged(new_size);
+
+  const bool create_ink_drop_ripple = !!ink_drop_ripple_;
+  const bool activated =
+      ink_drop_ripple_ &&
+      ink_drop_ripple_->target_ink_drop_state() == InkDropState::ACTIVATED;
+  DestroyInkDropRipple();
+
+  const bool create_ink_drop_highlight = !!highlight_;
+  DestroyInkDropHighlight();
+
+  // Both the ripple and the highlight must have been destroyed before
+  // recreating either of them otherwise the mask will not get recreated.
+  if (create_ink_drop_ripple)
+    CreateInkDropRipple();
+  if (activated)
+    ink_drop_ripple_->SnapToActivated();
+
+  if (create_ink_drop_highlight)
+    CreateInkDropHighlight();
 }
 
 InkDropState InkDropImpl::GetTargetInkDropState() const {
diff --git a/ui/views/animation/ink_drop_impl_unittest.cc b/ui/views/animation/ink_drop_impl_unittest.cc
index e485be3..d5d6ecf 100644
--- a/ui/views/animation/ink_drop_impl_unittest.cc
+++ b/ui/views/animation/ink_drop_impl_unittest.cc
@@ -14,6 +14,7 @@
 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
 #include "ui/gfx/animation/animation.h"
 #include "ui/gfx/animation/animation_test_api.h"
+#include "ui/views/animation/ink_drop_ripple.h"
 #include "ui/views/animation/test/ink_drop_impl_test_api.h"
 #include "ui/views/animation/test/test_ink_drop_host.h"
 #include "ui/views/test/platform_test_helper.h"
@@ -32,6 +33,10 @@
 
   InkDropImpl* ink_drop() { return ink_drop_.get(); }
 
+  InkDropRipple* ink_drop_ripple() { return ink_drop_->ink_drop_ripple_.get(); }
+
+  InkDropHighlight* ink_drop_highlight() { return ink_drop_->highlight_.get(); }
+
   test::InkDropImplTestApi* test_api() { return test_api_.get(); }
 
   // Runs all the pending tasks in |task_runner_|. This can be used to progress
@@ -293,6 +298,30 @@
   DestroyInkDrop();
 }
 
+// Make sure the InkDropRipple and InkDropHighlight get recreated when the host
+// size changes (https:://crbug.com/899104).
+TEST_F(InkDropImplTest, RippleAndHighlightRecreatedOnSizeChange) {
+  test_api()->SetShouldHighlight(true);
+  ink_drop()->AnimateToState(InkDropState::ACTIVATED);
+  EXPECT_EQ(1, ink_drop_host()->num_ink_drop_ripples_created());
+  EXPECT_EQ(1, ink_drop_host()->num_ink_drop_highlights_created());
+  EXPECT_EQ(ink_drop_host()->last_ink_drop_ripple(), ink_drop_ripple());
+  EXPECT_EQ(ink_drop_host()->last_ink_drop_highlight(), ink_drop_highlight());
+
+  const gfx::Rect bounds(5, 6, 7, 8);
+  ink_drop_host()->SetBoundsRect(bounds);
+  // SetBoundsRect() calls HostSizeChanged(), but only when
+  // InkDropHostView::ink_drop_ is set, but it's not in testing.  So call this
+  // function manually.
+  ink_drop()->HostSizeChanged(ink_drop_host()->size());
+  EXPECT_EQ(2, ink_drop_host()->num_ink_drop_ripples_created());
+  EXPECT_EQ(2, ink_drop_host()->num_ink_drop_highlights_created());
+  EXPECT_EQ(ink_drop_host()->last_ink_drop_ripple(), ink_drop_ripple());
+  EXPECT_EQ(ink_drop_host()->last_ink_drop_highlight(), ink_drop_highlight());
+  EXPECT_EQ(bounds.size(), ink_drop_ripple()->GetRootLayer()->size());
+  EXPECT_EQ(bounds.size(), ink_drop_highlight()->layer()->size());
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 // Common AutoHighlightMode tests
diff --git a/ui/views/animation/ink_drop_mask.cc b/ui/views/animation/ink_drop_mask.cc
index 282fbd3..eea9824bc 100644
--- a/ui/views/animation/ink_drop_mask.cc
+++ b/ui/views/animation/ink_drop_mask.cc
@@ -24,10 +24,6 @@
   layer_.set_delegate(nullptr);
 }
 
-void InkDropMask::UpdateLayerSize(const gfx::Size& new_layer_size) {
-  layer_.SetBounds(gfx::Rect(new_layer_size));
-}
-
 void InkDropMask::OnDeviceScaleFactorChanged(float old_device_scale_factor,
                                              float new_device_scale_factor) {}
 
diff --git a/ui/views/animation/ink_drop_mask.h b/ui/views/animation/ink_drop_mask.h
index 6aaf53f..8631269 100644
--- a/ui/views/animation/ink_drop_mask.h
+++ b/ui/views/animation/ink_drop_mask.h
@@ -24,10 +24,6 @@
  public:
   ~InkDropMask() override;
 
-  // Should be called whenever the masked layer is resized so that the mask
-  // layer size always matches that of the layer it is masking.
-  void UpdateLayerSize(const gfx::Size& new_layer_size);
-
   ui::Layer* layer() { return &layer_; }
 
  protected:
diff --git a/ui/views/animation/ink_drop_ripple.cc b/ui/views/animation/ink_drop_ripple.cc
index ea16770..eb44b5d 100644
--- a/ui/views/animation/ink_drop_ripple.cc
+++ b/ui/views/animation/ink_drop_ripple.cc
@@ -30,8 +30,6 @@
 
 InkDropRipple::~InkDropRipple() {}
 
-void InkDropRipple::HostSizeChanged(const gfx::Size& new_size) {}
-
 void InkDropRipple::AnimateToState(InkDropState ink_drop_state) {
   // Does not return early if |target_ink_drop_state_| == |ink_drop_state| for
   // two reasons.
diff --git a/ui/views/animation/ink_drop_ripple.h b/ui/views/animation/ink_drop_ripple.h
index 645abff..077da6324 100644
--- a/ui/views/animation/ink_drop_ripple.h
+++ b/ui/views/animation/ink_drop_ripple.h
@@ -54,10 +54,6 @@
   // AnimationStarted(s2).
   void set_observer(InkDropRippleObserver* observer) { observer_ = observer; }
 
-  // Called by ink drop whenever its host's size is changed in order to give the
-  // ripple an opportunity to handle dynamic host resizes.
-  virtual void HostSizeChanged(const gfx::Size& new_size);
-
   // Animates from the current InkDropState to the new |ink_drop_state|.
   //
   // NOTE: GetTargetInkDropState() should return the new |ink_drop_state| value
diff --git a/ui/views/animation/test/test_ink_drop_host.cc b/ui/views/animation/test/test_ink_drop_host.cc
index 9ad13312..87289f7 100644
--- a/ui/views/animation/test/test_ink_drop_host.cc
+++ b/ui/views/animation/test/test_ink_drop_host.cc
@@ -77,6 +77,10 @@
 TestInkDropHost::TestInkDropHost()
     : num_ink_drop_layers_added_(0),
       num_ink_drop_layers_removed_(0),
+      num_ink_drop_ripples_created_(0),
+      num_ink_drop_highlights_created_(0),
+      last_ink_drop_ripple_(nullptr),
+      last_ink_drop_highlight_(nullptr),
       disable_timers_for_test_(false) {}
 
 TestInkDropHost::~TestInkDropHost() {}
@@ -90,21 +94,24 @@
 }
 
 std::unique_ptr<InkDropRipple> TestInkDropHost::CreateInkDropRipple() const {
-  gfx::Size size(10, 10);
   std::unique_ptr<InkDropRipple> ripple(new TestInkDropRipple(
-      size, 5, size, 5, gfx::Point(), SK_ColorBLACK, 0.175f));
+      size(), 0, size(), 0, gfx::Point(), SK_ColorBLACK, 0.175f));
   if (disable_timers_for_test_)
     ripple->GetTestApi()->SetDisableAnimationTimers(true);
+  num_ink_drop_ripples_created_++;
+  last_ink_drop_ripple_ = ripple.get();
   return ripple;
 }
 
 std::unique_ptr<InkDropHighlight> TestInkDropHost::CreateInkDropHighlight()
     const {
   std::unique_ptr<InkDropHighlight> highlight;
-  highlight.reset(new TestInkDropHighlight(gfx::Size(10, 10), 4, gfx::PointF(),
-                                           SK_ColorBLACK));
+  highlight.reset(
+      new TestInkDropHighlight(size(), 0, gfx::PointF(), SK_ColorBLACK));
   if (disable_timers_for_test_)
     highlight->GetTestApi()->SetDisableAnimationTimers(true);
+  num_ink_drop_highlights_created_++;
+  last_ink_drop_highlight_ = highlight.get();
   return highlight;
 }
 
diff --git a/ui/views/animation/test/test_ink_drop_host.h b/ui/views/animation/test/test_ink_drop_host.h
index aaa2a3c..9f42bcb2 100644
--- a/ui/views/animation/test/test_ink_drop_host.h
+++ b/ui/views/animation/test/test_ink_drop_host.h
@@ -24,6 +24,20 @@
     return num_ink_drop_layers_added_ - num_ink_drop_layers_removed_;
   }
 
+  int num_ink_drop_ripples_created() const {
+    return num_ink_drop_ripples_created_;
+  }
+  int num_ink_drop_highlights_created() const {
+    return num_ink_drop_highlights_created_;
+  }
+
+  const InkDropRipple* last_ink_drop_ripple() const {
+    return last_ink_drop_ripple_;
+  }
+  const InkDropHighlight* last_ink_drop_highlight() const {
+    return last_ink_drop_highlight_;
+  }
+
   void set_disable_timers_for_test(bool disable_timers_for_test) {
     disable_timers_for_test_ = disable_timers_for_test;
   }
@@ -38,6 +52,14 @@
   int num_ink_drop_layers_added_;
   int num_ink_drop_layers_removed_;
 
+  // CreateInkDrop{Ripple,Highlight} are const, so these members must be
+  // mutable.
+  mutable int num_ink_drop_ripples_created_;
+  mutable int num_ink_drop_highlights_created_;
+
+  mutable const InkDropRipple* last_ink_drop_ripple_;
+  mutable const InkDropHighlight* last_ink_drop_highlight_;
+
   // When true, the InkDropRipple/InkDropHighlight instances will have their
   // timers disabled after creation.
   bool disable_timers_for_test_;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
index 0cbcfa0..d98819a1 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -2357,7 +2357,7 @@
   return gfx::ToEnclosingRect(rect_in_pixels);
 }
 
-std::unique_ptr<base::OnceClosure>
+std::unique_ptr<base::Closure>
 DesktopWindowTreeHostX11::DisableEventListening() {
   // Allows to open multiple file-pickers. See https://crbug.com/678982
   modal_dialog_counter_++;
@@ -2368,9 +2368,9 @@
         window(), std::make_unique<aura::NullWindowTargeter>());
   }
 
-  return std::make_unique<base::OnceClosure>(
-      base::BindOnce(&DesktopWindowTreeHostX11::EnableEventListening,
-                     weak_factory_.GetWeakPtr()));
+  return std::make_unique<base::Closure>(
+      base::Bind(&DesktopWindowTreeHostX11::EnableEventListening,
+                 weak_factory_.GetWeakPtr()));
 }
 
 void DesktopWindowTreeHostX11::EnableEventListening() {
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
index d147f47..00edf45 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
@@ -86,7 +86,7 @@
   static void CleanUpWindowList(void (*func)(aura::Window* window));
 
   // Disables event listening to make |dialog| modal.
-  std::unique_ptr<base::OnceClosure> DisableEventListening();
+  std::unique_ptr<base::Closure> DisableEventListening();
 
   // Returns a map of KeyboardEvent code to KeyboardEvent key values.
   base::flat_map<std::string, std::string> GetKeyboardLayoutMap() override;
diff --git a/ui/views/widget/native_widget_mac.mm b/ui/views/widget/native_widget_mac.mm
index 4e4b1d5..9f76453 100644
--- a/ui/views/widget/native_widget_mac.mm
+++ b/ui/views/widget/native_widget_mac.mm
@@ -568,6 +568,7 @@
   if (!bridge_impl())
     return Widget::MOVE_LOOP_CANCELED;
 
+  ReleaseCapture();
   return bridge_impl()->RunMoveLoop(drag_offset) ? Widget::MOVE_LOOP_SUCCESSFUL
                                                  : Widget::MOVE_LOOP_CANCELED;
 }
diff --git a/ui/views_bridge_mac/bridge_factory_impl.mm b/ui/views_bridge_mac/bridge_factory_impl.mm
index 47e1e56..de9a656 100644
--- a/ui/views_bridge_mac/bridge_factory_impl.mm
+++ b/ui/views_bridge_mac/bridge_factory_impl.mm
@@ -37,9 +37,22 @@
 
   // BridgedNativeWidgetHostHelper:
   NSView* GetNativeViewAccessible() override { return nil; }
-  void DispatchKeyEvent(ui::KeyEvent* event) override {}
+  void DispatchKeyEvent(ui::KeyEvent* event) override {
+    bool event_handled = false;
+    host_ptr_->DispatchKeyEventRemote(std::make_unique<ui::KeyEvent>(*event),
+                                      &event_handled);
+    if (event_handled)
+      event->SetHandled();
+  }
   bool DispatchKeyEventToMenuController(ui::KeyEvent* event) override {
-    return false;
+    bool event_swallowed = false;
+    bool event_handled = false;
+    host_ptr_->DispatchKeyEventToMenuControllerRemote(
+        std::make_unique<ui::KeyEvent>(*event), &event_swallowed,
+        &event_handled);
+    if (event_handled)
+      event->SetHandled();
+    return event_swallowed;
   }
   void GetWordAt(const gfx::Point& location_in_content,
                  bool* found_word,