diff --git a/BUILD.gn b/BUILD.gn
index 61b8940..6e48a19 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -653,8 +653,6 @@
       "//mash:all",
       "//media/mojo/services:media_service_unittests",
       "//mojo",
-      "//ui/views/mus:views_mus_interactive_ui_tests",
-      "//ui/views/mus:views_mus_unittests",
     ]
 
     # crbug.com/676055: media_service_unittests fails to link under Windows
diff --git a/DEPS b/DEPS
index 16effd74..8d30236 100644
--- a/DEPS
+++ b/DEPS
@@ -121,7 +121,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '02cb969e13c7e6a8af2bc2eeea319907fe96d892',
+  'skia_revision': '2a0967383087e8753246e0cfc95f90bc8eed0059',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -133,7 +133,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': '92b16ea2629009139ee581acbc9c7e38a033f3e7',
+  'angle_revision': '52f5da43184e62123d9327e2b4ebf4cc67a6a96f',
   # 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.
@@ -145,7 +145,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': '817c328432678871ed09d4d17dcbc2a2bd666cae',
+  'pdfium_revision': '25bc9a92b33868ebc8ca333935da8af837e1266d',
   # 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.
@@ -181,7 +181,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': '4ee958e1f5215809e5d2df1ad308331c3ac67ff5',
+  'catapult_revision': '442e7b2731071e114fd7382afdcd6d5dc1248795',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -229,7 +229,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': 'bdc2ab93563f9821c7776509286e3be2e320af57',
+  'spv_tools_revision': '167f1270a9ee641b17c016a545741e4aadfabe86',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -679,7 +679,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'ccf97ef6bafc057b4a680e0e2842a820e8e8af1d',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '89e50af847ea000405fae5955f4f8399af20d784',
       'condition': 'checkout_linux',
   },
 
@@ -892,7 +892,7 @@
     Var('chromium_git') + '/external/libaddressinput.git' + '@' + 'd7ed8e2f3f35ce9a3aafdfdc48745ceab66e7229',
 
   'src/third_party/libaom/source/libaom':
-    Var('aomedia_git') + '/aom.git' + '@' +  '98dae942edd3032c89b0e8bae9b4d50398931405',
+    Var('aomedia_git') + '/aom.git' + '@' +  'f90004a14ea8c2990e6cdb0961517760a6a2ffa9',
 
   # Userspace interface to kernel DRM services.
   'src/third_party/libdrm/src': {
@@ -1199,7 +1199,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'a2b35635aaef3e9301d69f77f9a0a3fd99291b08',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '91085072faa16fcba72aa004ffc3e331879087ea',
+    Var('webrtc_git') + '/src.git' + '@' + 'd375f1c8d19f64cdeb64dd38d94316586efa4cac',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1230,7 +1230,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@1a7931e5178388984e22528a047fb6405a62b77c',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@896defe03d0b160467ff8392ee2ab4fef27abd6d',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index 72eb79f..ae5cc33 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -647,8 +647,8 @@
   return new AwDevToolsManagerDelegate();
 }
 
-std::unique_ptr<base::Value> AwContentBrowserClient::GetServiceManifestOverlay(
-    base::StringPiece name) {
+base::Optional<service_manager::Manifest>
+AwContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
   int id = -1;
   if (name == content::mojom::kBrowserServiceName)
     id = IDR_AW_BROWSER_MANIFEST_OVERLAY;
@@ -657,12 +657,13 @@
   else if (name == content::mojom::kUtilityServiceName)
     id = IDR_AW_UTILITY_MANIFEST_OVERLAY;
   if (id == -1)
-    return nullptr;
+    return base::nullopt;
 
   base::StringPiece manifest_contents =
       ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
           id, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 void AwContentBrowserClient::BindInterfaceRequestFromFrame(
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h
index 53df1acd..ac570e2 100644
--- a/android_webview/browser/aw_content_browser_client.h
+++ b/android_webview/browser/aw_content_browser_client.h
@@ -156,7 +156,7 @@
   CreateThrottlesForNavigation(
       content::NavigationHandle* navigation_handle) override;
   content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   void BindInterfaceRequestFromFrame(
       content::RenderFrameHost* render_frame_host,
diff --git a/android_webview/renderer/aw_render_frame_ext.cc b/android_webview/renderer/aw_render_frame_ext.cc
index aa53af3..71550a2 100644
--- a/android_webview/renderer/aw_render_frame_ext.cc
+++ b/android_webview/renderer/aw_render_frame_ext.cc
@@ -293,11 +293,11 @@
 }
 
 void AwRenderFrameExt::OnSetBackgroundColor(SkColor c) {
-  blink::WebFrameWidget* web_frame_widget = GetWebFrameWidget();
-  if (!web_frame_widget)
+  blink::WebView* webview = GetWebView();
+  if (!webview)
     return;
 
-  web_frame_widget->SetBaseBackgroundColor(c);
+  webview->SetBaseBackgroundColor(c);
 }
 
 void AwRenderFrameExt::OnSmoothScroll(int target_x,
diff --git a/ash/components/strings/ash_components_strings_iw.xtb b/ash/components/strings/ash_components_strings_iw.xtb
index 7a85ed4..fff3da04 100644
--- a/ash/components/strings/ash_components_strings_iw.xtb
+++ b/ash/components/strings/ash_components_strings_iw.xtb
@@ -20,7 +20,7 @@
 <translation id="168356808214100546">הקשה ארוכה על <ph name="ALT" />, הקשה על <ph name="TAB" /> עד ההגעה לחלון שרוצים לפתוח, ושחרור.</translation>
 <translation id="169515659049020177">Shift</translation>
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
-<translation id="1733525068429116555">‏הוספת www. ו-‎.comלקלט בשורת הכתובת, ולאחר מכן פתיחת הדף</translation>
+<translation id="1733525068429116555">‏הוספת www. ו-‎ .comלקלט בשורת כתובת האתר, ולאחר מכן פתיחת הדף</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> ואז <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> או <ph name="LEFT" /></translation>
 <translation id="1996162290124031907">מעבר לכרטיסייה הבאה</translation>
 <translation id="2010818616644390445">מעבר לכרטיסייה האחרונה בחלון</translation>
@@ -86,7 +86,7 @@
 <translation id="4092538597492297615">העתקת התוכן שנבחר אל לוח העריכה</translation>
 <translation id="4101772068965291327">פתח את דף הבית</translation>
 <translation id="4123108089450197101">שמירת הקישור כסימניה</translation>
-<translation id="4141203561740478845">הדגשת השורה של סרגל הכתובות</translation>
+<translation id="4141203561740478845">הדגשת הסרגל של שורת כתובת האתר</translation>
 <translation id="4148761611071495477"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="G" /> או <ph name="ENTER" /></translation>
 <translation id="4240486403425279990">מצב סקירה כללית</translation>
 <translation id="4382340674111381977">חזרה לדף הקודם</translation>
@@ -153,7 +153,7 @@
 <translation id="7025325401470358758">החלונית הבאה</translation>
 <translation id="7076878155205969899">השתקת צלילים</translation>
 <translation id="7077383985738259936">התמקדות בסרגל הסימניות או הדגשה שלו (אם מוצג)</translation>
-<translation id="7237562915163138771">יש להקליד כתובת אתר בסרגל הכתובות ולהקיש על <ph name="ALT" /><ph name="SEPARATOR" /><ph name="ENTER" /></translation>
+<translation id="7237562915163138771">יש להקליד כתובת אינטרנט בשורת כתובת האתר ולהקיש על <ph name="ALT" /><ph name="SEPARATOR" /><ph name="ENTER" /></translation>
 <translation id="7254764037241667478">העברת המכשיר למצב שינה (השעיה)</translation>
 <translation id="7379254767514753910"><ph name="ALT" /> או <ph name="SEARCH" /><ph name="SEPARATOR" /><ph name="UP" /></translation>
 <translation id="7422707470576323858">מעבר אל שיטת הקלט הזמינה הבאה</translation>
@@ -169,7 +169,7 @@
 <translation id="8026334261755873520">נקה נתוני גלישה</translation>
 <translation id="8130528849632411619">מעבר אל תחילת המסמך</translation>
 <translation id="8147954207400281792"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="K" /> או <ph name="E" /></translation>
-<translation id="8232835244134740473">העברת המיקוד בין: אזור הסטטוס (האזור שבו מופיעה תמונת החשבון שלך), מרכז האפליקציות, סרגל הכתובות, סרגל הסימניות (אם מוצג), דף האינטרנט הפתוח וסרגל ההורדות (אם מוצג).</translation>
+<translation id="8232835244134740473">העברת המיקוד בין: אזור הסטטוס (האזור שבו מופיעה תמונת החשבון שלך), מרכז האפליקציות, שורת כתובת האתר, סרגל הסימניות (אם מוצג), דף האינטרנט הפתוח וסרגל ההורדות (אם מוצג).</translation>
 <translation id="8234414138295101081">סיבוב המסך ב-90 מעלות</translation>
 <translation id="8264941229485248811">הצגה או הסתרה של בודק 'כלים למפתחים'</translation>
 <translation id="836869401750819675">פתיחת הדף 'הורדות'</translation>
diff --git a/ash/components/strings/ash_components_strings_te.xtb b/ash/components/strings/ash_components_strings_te.xtb
index e9ac663..2544a27 100644
--- a/ash/components/strings/ash_components_strings_te.xtb
+++ b/ash/components/strings/ash_components_strings_te.xtb
@@ -31,7 +31,7 @@
 <translation id="215292019801409139"><ph name="SEARCH" /><ph name="SEPARATOR" /> 1 నుండి =</translation>
 <translation id="2181097965834437145">బుక్‌మార్క్‌ల బార్‌ని చూపండి లేదా దాచండి</translation>
 <translation id="2185166372312820725">మునుపటి ట్యాబ్‌కి వెళ్లండి</translation>
-<translation id="2194790690264064655"><ph name="CTRL" />ని నొక్కి, లింక్‌ని క్లిక్ చేయండి</translation>
+<translation id="2194790690264064655"><ph name="CTRL" />ను నొక్కి, లింక్‌ను క్లిక్ చేయండి</translation>
 <translation id="2382644247745281995">ప్రస్తుత కీబోర్డ్ లేఅవుట్‌తో మద్దతు లేదు</translation>
 <translation id="2397416548179033562">Chrome మెనును చూపు</translation>
 <translation id="2424073332829844142">Caps Lock ఆన్ మరియు ఆఫ్ చేయండి</translation>
@@ -47,7 +47,7 @@
 <translation id="2750942583782703988">మీ ప్రస్తుత పేజీని మళ్లీ లోడ్ చేయండి</translation>
 <translation id="2764005613199379871">శోధన చిరునామా బార్‌పై దృష్టి ఉంచండి</translation>
 <translation id="2789868185375229787">పేజీలో దూరంగా జూమ్ చేయండి</translation>
-<translation id="2804480015716812239"><ph name="ALT" />ని నొక్కి, లింక్‌ని క్లిక్ చేయండి</translation>
+<translation id="2804480015716812239"><ph name="ALT" />ను నొక్కి, లింక్‌ను క్లిక్ చేయండి</translation>
 <translation id="2830827904629746450">కుడి వైపున విండోని డాక్ చేయండి</translation>
 <translation id="2840766858109427815">తర్వాతి పేజీ కోసం ముందుకు వెళ్లండి</translation>
 <translation id="2872353916818027657">ప్రాథమిక మానిటర్‌ను మార్చు</translation>
@@ -109,7 +109,7 @@
 <translation id="539072479502328326">డాక్ చేసిన మాగ్నిఫైయర్‌ను ఆన్ లేదా ఆఫ్ చేస్తుంది</translation>
 <translation id="5541719484267030947">ట్యాబ్‌ని లాగే సమయంలో, <ph name="ESC" />ని నొక్కండి</translation>
 <translation id="5554139136362089836">ప్రస్తుత పేజీని శోధించండి</translation>
-<translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />ని నొక్కి, లింక్‌ని క్లిక్ చేయండి</translation>
+<translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />ను నొక్కి, లింక్‌ను క్లిక్ చేయండి</translation>
 <translation id="561814908794220892">వెబ్‌పేజీని కొత్త ట్యాబ్‌లో తెరవండి</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> లేదా <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">ట్యాబ్‌లో లింక్‌ను తెరవండి</translation>
@@ -119,7 +119,7 @@
 <translation id="5921745308587794300">విండోని తిప్పు</translation>
 <translation id="6022924867608035986">శోధన పెట్టె వచనాన్ని క్లియర్ చేయండి</translation>
 <translation id="6045998054441862242">అధిక కాంట్రాస్ట్ మోడ్‌ని ఆన్ చేయండి</translation>
-<translation id="6052614013050385269">లింక్‌ని కుడి-క్లిక్ చేయండి</translation>
+<translation id="6052614013050385269">లింక్‌ను కుడి-క్లిక్ చేయండి</translation>
 <translation id="6129953537138746214">ఖాళీ</translation>
 <translation id="613146727819833328">విండోని మధ్యలోకి తరలించండి</translation>
 <translation id="6143669479988153888">పేజీలో దగ్గరకు జూమ్ చేయండి</translation>
@@ -137,7 +137,7 @@
 <translation id="6474744297082284761">దూరంగా జూమ్ చేస్తుంది (డాక్ చేయబడినప్పుడు లేదా పూర్తి స్క్రీన్ మాగ్నిఫైయర్‌లు ప్రారంభించబడినప్పుడు)</translation>
 <translation id="649811797655257835">ఫైల్‌ని ఎంచుకుని, ఆపై <ph name="SPACE" />ని నొక్కండి</translation>
 <translation id="6556040137485212400">అత్యంత ఎక్కువ సమయం నుండి ఉపయోగించని విండోని తెరవండి</translation>
-<translation id="666343722268997814">హైలైట్ చేసిన అంశం కోసం కుడి-క్లిక్ మెనూని తెరవండి</translation>
+<translation id="666343722268997814">హైలైట్ చేసిన అంశం కోసం కుడి-క్లిక్ మెనూను తెరవండి</translation>
 <translation id="6671538777808758331">మీ శోధన కోసం తదుపరి సరిపోలికకు వెళ్లండి</translation>
 <translation id="6681606577947445973"><ph name="REFRESH" /> లేదా <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="R" /></translation>
 <translation id="6690765639083431875">ఎడమ వైపున విండోని డాక్ చేయండి</translation>
@@ -196,7 +196,7 @@
 <translation id="9106898733795143799">పేజీ &amp; వెబ్ బ్రౌజర్</translation>
 <translation id="9162942292291287644"><ph name="QUERY" /> కోసం శోధన ఫలితం లేదు</translation>
 <translation id="9179672198516322668">జనాదరణ పొందిన షార్ట్‌కట్‌లు</translation>
-<translation id="93603345341560814"><ph name="SHIFT" />ని నొక్కి, లింక్‌ని క్లిక్ చేయండి</translation>
+<translation id="93603345341560814"><ph name="SHIFT" />ను నొక్కి, లింక్‌ను క్లిక్ చేయండి</translation>
 <translation id="945383118875625837">‌లింక్‌ని బుక్‌మార్క్‌ల బార్ వద్దకు లాగండి</translation>
 <translation id="969054500339500113">మెనూ బార్‌పై దృష్టి కేంద్రీకరించండి</translation>
 <translation id="98120814841227350">పత్రం చివరకు వెళ్లు</translation>
diff --git a/ash/components/strings/ash_components_strings_zh-TW.xtb b/ash/components/strings/ash_components_strings_zh-TW.xtb
index 3fa13308..cf5d4421 100644
--- a/ash/components/strings/ash_components_strings_zh-TW.xtb
+++ b/ash/components/strings/ash_components_strings_zh-TW.xtb
@@ -145,6 +145,7 @@
 <translation id="671928215901716392">鎖定螢幕</translation>
 <translation id="6727005317916125192">上一個窗格</translation>
 <translation id="6740781404993465795">選取下一個字詞或字母</translation>
+<translation id="6755851152783057058">切換至最近一次使用的輸入法</translation>
 <translation id="6760706756348334449">調低音量</translation>
 <translation id="6941333068993625698">提供意見</translation>
 <translation id="6981982820502123353">協助工具</translation>
@@ -155,6 +156,7 @@
 <translation id="7237562915163138771">在網址列輸入網址,然後按下 <ph name="ALT" /><ph name="SEPARATOR" /><ph name="ENTER" /> 鍵</translation>
 <translation id="7254764037241667478">讓裝置進入休眠模式 (暫停使用)</translation>
 <translation id="7379254767514753910"><ph name="ALT" /> 鍵或 <ph name="SEARCH" /><ph name="SEPARATOR" /><ph name="UP" /> 鍵</translation>
+<translation id="7422707470576323858">切換至下一個可用的輸入法</translation>
 <translation id="743754632698445141">取消固定應用程式</translation>
 <translation id="7439718573248533901">刪除下一個字母 (向前刪除)</translation>
 <translation id="7611271430932669992">將焦點移至彈出式視窗和對話方塊</translation>
diff --git a/ash/host/ash_window_tree_host_platform.cc b/ash/host/ash_window_tree_host_platform.cc
index de050d2..4c2611c4 100644
--- a/ash/host/ash_window_tree_host_platform.cc
+++ b/ash/host/ash_window_tree_host_platform.cc
@@ -61,7 +61,7 @@
   CreateCompositor(
       viz::FrameSinkId(),
       /* force_software_compositor */ false,
-      /* external_begin_frames_enabled */ false,
+      /* external_begin_frame_client */ nullptr,
       /* are_events_in_pixels */ true,
       ::features::IsUsingWindowService() ? kTraceEnvironmentName : nullptr);
   CommonInit();
diff --git a/ash/public/cpp/assistant/assistant_state_proxy.h b/ash/public/cpp/assistant/assistant_state_proxy.h
index b2a7e6b1..bbe753f 100644
--- a/ash/public/cpp/assistant/assistant_state_proxy.h
+++ b/ash/public/cpp/assistant/assistant_state_proxy.h
@@ -23,7 +23,7 @@
 namespace ash {
 
 // Provides a convenient client to access various Assistant states. The state
-// infomration can be accessed through direct accessors which returns
+// information can be accessed through direct accessors which returns
 // |base::Optional<>| or observers. When adding an observer, all change events
 // will fire if this client already have data.
 class ASH_PUBLIC_EXPORT AssistantStateProxy
diff --git a/ash/shell/content/client/shell_content_browser_client.cc b/ash/shell/content/client/shell_content_browser_client.cc
index 1ade4cd..1e393c3a 100644
--- a/ash/shell/content/client/shell_content_browser_client.cc
+++ b/ash/shell/content/client/shell_content_browser_client.cc
@@ -55,7 +55,7 @@
       partition->GetPath(), context->IsOffTheRecord(), std::move(callback));
 }
 
-std::unique_ptr<base::Value>
+base::Optional<service_manager::Manifest>
 ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
   if (name == content::mojom::kBrowserServiceName) {
     // This is necessary for outgoing interface requests (such as the keyboard
@@ -64,16 +64,18 @@
     base::StringPiece manifest_contents = rb.GetRawDataResourceForScale(
         IDR_ASH_SHELL_CONTENT_BROWSER_MANIFEST_OVERLAY,
         ui::ScaleFactor::SCALE_FACTOR_NONE);
-    return base::JSONReader::Read(manifest_contents);
+    return service_manager::Manifest::FromValueDeprecated(
+        base::JSONReader::Read(manifest_contents));
   }
   if (name == content::mojom::kPackagedServicesServiceName) {
     ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
     base::StringPiece manifest_contents = rb.GetRawDataResourceForScale(
         IDR_ASH_SHELL_CONTENT_PACKAGED_SERVICES_MANIFEST_OVERLAY,
         ui::ScaleFactor::SCALE_FACTOR_NONE);
-    return base::JSONReader::Read(manifest_contents);
+    return service_manager::Manifest::FromValueDeprecated(
+        base::JSONReader::Read(manifest_contents));
   }
-  return nullptr;
+  return base::nullopt;
 }
 
 std::vector<content::ContentBrowserClient::ServiceManifestInfo>
diff --git a/ash/shell/content/client/shell_content_browser_client.h b/ash/shell/content/client/shell_content_browser_client.h
index a26ab241..8162e1f 100644
--- a/ash/shell/content/client/shell_content_browser_client.h
+++ b/ash/shell/content/client/shell_content_browser_client.h
@@ -32,7 +32,7 @@
       content::BrowserContext* context,
       content::StoragePartition* partition,
       storage::OptionalQuotaSettingsCallback callback) override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   std::vector<ServiceManifestInfo> GetExtraServiceManifests() override;
   void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 4d25119..179cd89 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -147,6 +147,7 @@
 <translation id="3236488194889173876">No mobile network available</translation>
 <translation id="3255483164551725916">What can you do?</translation>
 <translation id="3294437725009624529">Guest</translation>
+<translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> can still sign in later.</translation>
 <translation id="332587331255250389">Please replace the battery</translation>
 <translation id="3351879221545518001">You are currently casting the screen.</translation>
 <translation id="3364721542077212959">Stylus tools</translation>
@@ -420,6 +421,7 @@
 <translation id="8132793192354020517">Connected to <ph name="NAME" /></translation>
 <translation id="813913629614996137">Initialising...</translation>
 <translation id="8142699993796781067">Private networks</translation>
+<translation id="8167567890448493835">Using <ph name="LOCALE_NAME" /></translation>
 <translation id="8190698733819146287">Customise languages and input...</translation>
 <translation id="8192202700944119416">Notifications are hidden.</translation>
 <translation id="8236042855478648955">Time for a break</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 719497d0..162fa5f4 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -127,7 +127,7 @@
 <translation id="2961963223658824723">משהו השתבש. אפשר לנסות שוב בעוד כמה שניות.</translation>
 <translation id="2963773877003373896">mod3</translation>
 <translation id="2970920913501714344">התקנת אפליקציות, תוספים ועיצובים</translation>
-<translation id="2995447421581609334">‏צפייה במכשירי Cast.</translation>
+<translation id="2995447421581609334">צפייה במכשירי העברה.</translation>
 <translation id="2996462380875591307">‏הזכוכית המגדלת במצב עגינה הופעלה. כדי לכבות אותה, יש להקיש שוב על Ctrl+Search+D.</translation>
 <translation id="3000461861112256445">אודיו במונו</translation>
 <translation id="3009178788565917040">פלט</translation>
@@ -258,7 +258,7 @@
 <translation id="544691375626129091">כל המשתמשים הזמינים כבר נוספו לפעילות זו באתר.</translation>
 <translation id="5496819745535887422">מנהל המערכת מחזיר את המכשיר למצב קודם. כל הנתונים יימחקו אחרי שהמכשיר יופעל מחדש.</translation>
 <translation id="553675580533261935">יציאה מההפעלה</translation>
-<translation id="5537725057119320332">העבר</translation>
+<translation id="5537725057119320332">העברה</translation>
 <translation id="5548285847212963613">התוסף "<ph name="EXTENSION_NAME" />" יכול לעזור בהתחברות אל הרשת הזו.</translation>
 <translation id="554893713779400387">הפעלת הכתבה או הפסקתה</translation>
 <translation id="5571066253365925590">‏Bluetooth מופעל</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 8f7e949..712f5bdc 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -389,7 +389,7 @@
 <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="776344839111254542">అప్‌డేట్ వివరాలను వీక్షించడం కోసం క్లిక్ చేయండి</translation>
 <translation id="7780159184141939021">స్క్రీన్‌ను తిప్పండి</translation>
 <translation id="7796353162336583443">గమనికను రాయడానికి, స్క్రీన్‌షాట్‌ను తీయడానికి, సహాయకం, లేజర్ పాయింటర్ లేదా భూతద్దాన్ని ఉపయోగించడానికి అరలో స్టైలస్ బటన్‌ను నొక్కండి.</translation>
 <translation id="7798302898096527229">రద్దు చేయడానికి Search లేదా Shiftని నొక్కండి.</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 4cdbade7..55e823f 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -197,6 +197,7 @@
 <translation id="4261870227682513959">顯示通知設定。已關閉所有通知</translation>
 <translation id="4269883910223712419">這部裝置的管理員擁有下列權限:</translation>
 <translation id="4279490309300973883">鏡像</translation>
+<translation id="4281007048406351813">將計時器時間增加 1 分鐘</translation>
 <translation id="4292681942966152062">正在啟動<ph name="NETWORK_NAME" /></translation>
 <translation id="4321179778687042513">Ctrl</translation>
 <translation id="4321776623976362024">你按下了高對比的鍵盤快速鍵。確定要啟用這項功能嗎?</translation>
@@ -246,6 +247,7 @@
 <translation id="5207949376430453814">醒目顯示文字插入點</translation>
 <translation id="5222676887888702881">登出</translation>
 <translation id="523505283826916779">協助工具設定</translation>
+<translation id="5283198616748585639">增加 1 分鐘</translation>
 <translation id="5302048478445481009">語言</translation>
 <translation id="5313326810920013265">藍牙設定</translation>
 <translation id="5331975486040154427">USB-C 裝置 (左後方連接埠)</translation>
diff --git a/ash/ws/ash_window_manager_unittest.cc b/ash/ws/ash_window_manager_unittest.cc
index 3a6ef8cc..8c42919 100644
--- a/ash/ws/ash_window_manager_unittest.cc
+++ b/ash/ws/ash_window_manager_unittest.cc
@@ -10,6 +10,7 @@
 #include "ash/wm/tablet_mode/tablet_mode_window_manager.h"
 #include "ui/aura/mus/window_mus.h"
 #include "ui/aura/mus/window_tree_client.h"
+#include "ui/aura/test/env_test_helper.h"
 #include "ui/aura/test/mus/change_completion_waiter.h"
 #include "ui/aura/window.h"
 #include "ui/views/mus/mus_client.h"
diff --git a/ash/ws/ax_ash_window_utils_unittest.cc b/ash/ws/ax_ash_window_utils_unittest.cc
index 1239a31..0661a3f 100644
--- a/ash/ws/ax_ash_window_utils_unittest.cc
+++ b/ash/ws/ax_ash_window_utils_unittest.cc
@@ -20,7 +20,7 @@
 #include "ui/aura/env.h"
 #include "ui/aura/mus/window_mus.h"
 #include "ui/aura/mus/window_tree_client.h"
-#include "ui/aura/test/mus/window_tree_client_test_api.h"
+#include "ui/aura/test/mus/change_completion_waiter.h"
 #include "ui/aura/window.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/views/accessibility/ax_aura_obj_cache.h"
@@ -95,8 +95,7 @@
 
     // Flush all messages from the WindowTreeClient to ensure the window service
     // has finished Widget creation.
-    aura::WindowTreeClientTestApi(MusClient::Get()->window_tree_client())
-        .FlushForTesting();
+    aura::test::WaitForAllChangesToComplete();
   }
 
   void TearDown() override {
diff --git a/base/BUILD.gn b/base/BUILD.gn
index 8a2239f..59c70d0c 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -399,7 +399,6 @@
     "memory/discardable_shared_memory.cc",
     "memory/discardable_shared_memory.h",
     "memory/free_deleter.h",
-    "memory/linked_ptr.h",
     "memory/memory_pressure_listener.cc",
     "memory/memory_pressure_listener.h",
     "memory/memory_pressure_monitor.cc",
@@ -2353,7 +2352,6 @@
     "md5_unittest.cc",
     "memory/aligned_memory_unittest.cc",
     "memory/discardable_shared_memory_unittest.cc",
-    "memory/linked_ptr_unittest.cc",
     "memory/memory_pressure_listener_unittest.cc",
     "memory/memory_pressure_monitor_chromeos_unittest.cc",
     "memory/memory_pressure_monitor_mac_unittest.cc",
diff --git a/base/macros.h b/base/macros.h
index 0f875c7..95b76915 100644
--- a/base/macros.h
+++ b/base/macros.h
@@ -12,16 +12,6 @@
 
 #include <stddef.h>  // For size_t.
 
-// Distinguish mips32.
-#if defined(__mips__) && (_MIPS_SIM == _ABIO32) && !defined(__mips32__)
-#define __mips32__
-#endif
-
-// Distinguish mips64.
-#if defined(__mips__) && (_MIPS_SIM == _ABI64) && !defined(__mips64__)
-#define __mips64__
-#endif
-
 // Put this in the declarations for a class to be uncopyable.
 #define DISALLOW_COPY(TypeName) \
   TypeName(const TypeName&) = delete
diff --git a/base/memory/linked_ptr.h b/base/memory/linked_ptr.h
deleted file mode 100644
index 6851286..0000000
--- a/base/memory/linked_ptr.h
+++ /dev/null
@@ -1,179 +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.
-//
-// A "smart" pointer type with reference tracking.  Every pointer to a
-// particular object is kept on a circular linked list.  When the last pointer
-// to an object is destroyed or reassigned, the object is deleted.
-//
-// Used properly, this deletes the object when the last reference goes away.
-// There are several caveats:
-// - Like all reference counting schemes, cycles lead to leaks.
-// - Each smart pointer is actually two pointers (8 bytes instead of 4).
-// - Every time a pointer is released, the entire list of pointers to that
-//   object is traversed.  This class is therefore NOT SUITABLE when there
-//   will often be more than two or three pointers to a particular object.
-// - References are only tracked as long as linked_ptr<> objects are copied.
-//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
-//   will happen (double deletion).
-//
-// Note: If you use an incomplete type with linked_ptr<>, the class
-// *containing* linked_ptr<> must have a constructor and destructor (even
-// if they do nothing!).
-//
-// Thread Safety:
-//   A linked_ptr is NOT thread safe. Copying a linked_ptr object is
-//   effectively a read-write operation.
-//
-// Alternative: to linked_ptr is shared_ptr, which
-//  - is also two pointers in size (8 bytes for 32 bit addresses)
-//  - is thread safe for copying and deletion
-//  - supports weak_ptrs
-
-#ifndef BASE_MEMORY_LINKED_PTR_H_
-#define BASE_MEMORY_LINKED_PTR_H_
-
-#include "base/logging.h"  // for CHECK macros
-
-// This is used internally by all instances of linked_ptr<>.  It needs to be
-// a non-template class because different types of linked_ptr<> can refer to
-// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
-// So, it needs to be possible for different types of linked_ptr to participate
-// in the same circular linked list, so we need a single class type here.
-//
-// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.
-class linked_ptr_internal {
- public:
-  // Create a new circle that includes only this instance.
-  void join_new() {
-    next_ = this;
-  }
-
-  // Join an existing circle.
-  void join(linked_ptr_internal const* ptr) {
-    next_ = ptr->next_;
-    ptr->next_ = this;
-  }
-
-  // Leave whatever circle we're part of.  Returns true iff we were the
-  // last member of the circle.  Once this is done, you can join() another.
-  bool depart() {
-    if (next_ == this) return true;
-    linked_ptr_internal const* p = next_;
-    while (p->next_ != this) p = p->next_;
-    p->next_ = next_;
-    return false;
-  }
-
- private:
-  mutable linked_ptr_internal const* next_;
-};
-
-// TODO(http://crbug.com/556939): DEPRECATED: Use unique_ptr instead (now that
-// we have support for moveable types inside STL containers).
-template <typename T>
-class linked_ptr {
- public:
-  typedef T element_type;
-
-  // Take over ownership of a raw pointer.  This should happen as soon as
-  // possible after the object is created.
-  explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
-  ~linked_ptr() { depart(); }
-
-  // Copy an existing linked_ptr<>, adding ourselves to the list of references.
-  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
-
-  linked_ptr(linked_ptr const& ptr) {
-    DCHECK_NE(&ptr, this);
-    copy(&ptr);
-  }
-
-  // Assignment releases the old value and acquires the new.
-  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
-    depart();
-    copy(&ptr);
-    return *this;
-  }
-
-  linked_ptr& operator=(linked_ptr const& ptr) {
-    if (&ptr != this) {
-      depart();
-      copy(&ptr);
-    }
-    return *this;
-  }
-
-  // Smart pointer members.
-  void reset(T* ptr = NULL) {
-    depart();
-    capture(ptr);
-  }
-  T* get() const { return value_; }
-  T* operator->() const { return value_; }
-  T& operator*() const { return *value_; }
-  // Release ownership of the pointed object and returns it.
-  // Sole ownership by this linked_ptr object is required.
-  T* release() {
-    bool last = link_.depart();
-    CHECK(last);
-    T* v = value_;
-    value_ = NULL;
-    return v;
-  }
-
-  bool operator==(const T* p) const { return value_ == p; }
-  bool operator!=(const T* p) const { return value_ != p; }
-  template <typename U>
-  bool operator==(linked_ptr<U> const& ptr) const {
-    return value_ == ptr.get();
-  }
-  template <typename U>
-  bool operator!=(linked_ptr<U> const& ptr) const {
-    return value_ != ptr.get();
-  }
-
- private:
-  template <typename U>
-  friend class linked_ptr;
-
-  T* value_;
-  linked_ptr_internal link_;
-
-  void depart() {
-    if (link_.depart()) delete value_;
-  }
-
-  void capture(T* ptr) {
-    value_ = ptr;
-    link_.join_new();
-  }
-
-  template <typename U> void copy(linked_ptr<U> const* ptr) {
-    value_ = ptr->get();
-    if (value_)
-      link_.join(&ptr->link_);
-    else
-      link_.join_new();
-  }
-};
-
-template<typename T> inline
-bool operator==(T* ptr, const linked_ptr<T>& x) {
-  return ptr == x.get();
-}
-
-template<typename T> inline
-bool operator!=(T* ptr, const linked_ptr<T>& x) {
-  return ptr != x.get();
-}
-
-// A function to convert T* into linked_ptr<T>
-// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
-// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
-template <typename T>
-linked_ptr<T> make_linked_ptr(T* ptr) {
-  return linked_ptr<T>(ptr);
-}
-
-#endif  // BASE_MEMORY_LINKED_PTR_H_
diff --git a/base/memory/linked_ptr_unittest.cc b/base/memory/linked_ptr_unittest.cc
deleted file mode 100644
index 344ffa4..0000000
--- a/base/memory/linked_ptr_unittest.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <string>
-
-#include "base/memory/linked_ptr.h"
-#include "base/strings/stringprintf.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace {
-
-int num = 0;
-
-std::string history;
-
-// Class which tracks allocation/deallocation
-struct A {
-  A(): mynum(num++) { history += base::StringPrintf("A%d ctor\n", mynum); }
-  virtual ~A() { history += base::StringPrintf("A%d dtor\n", mynum); }
-  virtual void Use() { history += base::StringPrintf("A%d use\n", mynum); }
-  int mynum;
-};
-
-// Subclass
-struct B: public A {
-  B() { history += base::StringPrintf("B%d ctor\n", mynum); }
-  ~B() override { history += base::StringPrintf("B%d dtor\n", mynum); }
-  void Use() override { history += base::StringPrintf("B%d use\n", mynum); }
-};
-
-}  // namespace
-
-TEST(LinkedPtrTest, Test) {
-  {
-    linked_ptr<A> a0, a1, a2;
-    a0 = *&a0;  // The *& defeats Clang's -Wself-assign warning.
-    a1 = a2;
-    ASSERT_EQ(a0.get(), static_cast<A*>(nullptr));
-    ASSERT_EQ(a1.get(), static_cast<A*>(nullptr));
-    ASSERT_EQ(a2.get(), static_cast<A*>(nullptr));
-    ASSERT_TRUE(a0 == nullptr);
-    ASSERT_TRUE(a1 == nullptr);
-    ASSERT_TRUE(a2 == nullptr);
-
-    {
-      linked_ptr<A> a3(new A);
-      a0 = a3;
-      ASSERT_TRUE(a0 == a3);
-      ASSERT_TRUE(a0 != nullptr);
-      ASSERT_TRUE(a0.get() == a3);
-      ASSERT_TRUE(a0 == a3.get());
-      linked_ptr<A> a4(a0);
-      a1 = a4;
-      linked_ptr<A> a5(new A);
-      ASSERT_TRUE(a5.get() != a3);
-      ASSERT_TRUE(a5 != a3.get());
-      a2 = a5;
-      linked_ptr<B> b0(new B);
-      linked_ptr<A> a6(b0);
-      ASSERT_TRUE(b0 == a6);
-      ASSERT_TRUE(a6 == b0);
-      ASSERT_TRUE(b0 != nullptr);
-      a5 = b0;
-      a5 = b0;
-      a3->Use();
-      a4->Use();
-      a5->Use();
-      a6->Use();
-      b0->Use();
-      (*b0).Use();
-      b0.get()->Use();
-    }
-
-    a0->Use();
-    a1->Use();
-    a2->Use();
-
-    a1 = a2;
-    a2.reset(new A);
-    a0.reset();
-
-    linked_ptr<A> a7;
-  }
-
-  ASSERT_EQ(history,
-    "A0 ctor\n"
-    "A1 ctor\n"
-    "A2 ctor\n"
-    "B2 ctor\n"
-    "A0 use\n"
-    "A0 use\n"
-    "B2 use\n"
-    "B2 use\n"
-    "B2 use\n"
-    "B2 use\n"
-    "B2 use\n"
-    "B2 dtor\n"
-    "A2 dtor\n"
-    "A0 use\n"
-    "A0 use\n"
-    "A1 use\n"
-    "A3 ctor\n"
-    "A0 dtor\n"
-    "A3 dtor\n"
-    "A1 dtor\n"
-  );
-}
diff --git a/base/numerics/safe_conversions.h b/base/numerics/safe_conversions.h
index 9284f8f..9cadacd8 100644
--- a/base/numerics/safe_conversions.h
+++ b/base/numerics/safe_conversions.h
@@ -164,12 +164,21 @@
     Dst,
     Src,
     typename std::enable_if<std::is_integral<Src>::value &&
-                            std::is_integral<Dst>::value>::type> {
+                            std::is_integral<Dst>::value &&
+                            SaturateFastAsmOp<Dst, Src>::is_supported>::type> {
+  static const bool is_supported = true;
+  static Dst Do(Src value) { return SaturateFastAsmOp<Dst, Src>::Do(value); }
+};
+
+template <typename Dst, typename Src>
+struct SaturateFastOp<
+    Dst,
+    Src,
+    typename std::enable_if<std::is_integral<Src>::value &&
+                            std::is_integral<Dst>::value &&
+                            !SaturateFastAsmOp<Dst, Src>::is_supported>::type> {
   static const bool is_supported = true;
   static Dst Do(Src value) {
-    if (SaturateFastAsmOp<Dst, Src>::is_supported)
-      return SaturateFastAsmOp<Dst, Src>::Do(value);
-
     // The exact order of the following is structured to hit the correct
     // optimization heuristics across compilers. Do not change without
     // checking the emitted code.
diff --git a/base/numerics/safe_conversions_arm_impl.h b/base/numerics/safe_conversions_arm_impl.h
index da5813f6..cf31072b9 100644
--- a/base/numerics/safe_conversions_arm_impl.h
+++ b/base/numerics/safe_conversions_arm_impl.h
@@ -17,7 +17,7 @@
 // Fast saturation to a destination type.
 template <typename Dst, typename Src>
 struct SaturateFastAsmOp {
-  static const bool is_supported =
+  static constexpr bool is_supported =
       std::is_signed<Src>::value && std::is_integral<Dst>::value &&
       std::is_integral<Src>::value &&
       IntegerBitsPlusSign<Src>::value <= IntegerBitsPlusSign<int32_t>::value &&
diff --git a/build/config/fuchsia/package.gni b/build/config/fuchsia/package.gni
index fc109349..83a5dae0 100644
--- a/build/config/fuchsia/package.gni
+++ b/build/config/fuchsia/package.gni
@@ -43,6 +43,7 @@
   _meta_far_file = "$_pkg_out_dir/meta.far"
   _combined_far_file = "$_pkg_out_dir/${pkg.package_name}-0.far"
   _final_far_file = "$_pkg_out_dir/${pkg.package_name}.far"
+  _package_info_path = "$_pkg_out_dir/package"
 
   _write_manifest_target = "${pkg.package_name}__write_manifest"
   _generate_key_target = "${pkg.package_name}__genkey"
@@ -197,6 +198,7 @@
 
     data = [
       _final_far_file,
+      _package_info_path,
     ]
 
     sources = [
diff --git a/build/config/fuchsia/rules.gni b/build/config/fuchsia/rules.gni
index 7c3a9d57..59921c9 100644
--- a/build/config/fuchsia/rules.gni
+++ b/build/config/fuchsia/rules.gni
@@ -38,7 +38,6 @@
              "/" + _pkg_shortname
   _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
   _package_path = "$_pkg_dir/${_pkg_shortname}.far"
-  _package_info_path = "$_pkg_dir/package"
 
   if (!defined(runner_script)) {
     runner_script = "//build/fuchsia/exe_runner.py"
@@ -85,7 +84,6 @@
       data = [
         script_path,
         _manifest_path,
-        _package_info_path,
         "//build/fuchsia/",
         "//build/util/lib/",
         "${qemu_root}/",
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 337ae53..3889926 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-63595dfb3fbbe55bf4c5fbe0c1150209f10e9582
\ No newline at end of file
+0f03501be50bb12f79f2dfe16fda9fed57901dfe
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 89c2c64..436742d 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-c628eac8e5a99f16bfd9582618675579e73d3f19
\ No newline at end of file
+62991f299d80100ea7a239448aa52a7f53ef2178
\ No newline at end of file
diff --git a/cc/paint/paint_image.h b/cc/paint/paint_image.h
index 4ba78f9..d5969aa 100644
--- a/cc/paint/paint_image.h
+++ b/cc/paint/paint_image.h
@@ -78,7 +78,7 @@
     bool operator==(const FrameKey& other) const;
     bool operator!=(const FrameKey& other) const;
 
-    uint64_t hash() const { return hash_; }
+    size_t hash() const { return hash_; }
     std::string ToString() const;
     size_t frame_index() const { return frame_index_; }
     ContentId content_id() const { return content_id_; }
diff --git a/cc/tiles/image_controller.cc b/cc/tiles/image_controller.cc
index 01c287b..ea5989f 100644
--- a/cc/tiles/image_controller.cc
+++ b/cc/tiles/image_controller.cc
@@ -147,7 +147,7 @@
   }
 }
 
-void ImageController::GetTasksForPaintWorkletImages(
+void ImageController::ConvertPaintWorkletImagesToTask(
     std::vector<DrawImage>* sync_decoded_images,
     std::vector<scoped_refptr<TileTask>>* tasks) {
   for (auto it = sync_decoded_images->begin();
@@ -167,7 +167,7 @@
   }
 }
 
-void ImageController::GetTasksForImagesAndRef(
+void ImageController::ConvertDataImagesToTasks(
     std::vector<DrawImage>* sync_decoded_images,
     std::vector<scoped_refptr<TileTask>>* tasks,
     bool* has_at_raster_images,
@@ -207,8 +207,8 @@
     const ImageDecodeCache::TracingInfo& tracing_info) {
   std::vector<scoped_refptr<TileTask>> new_tasks;
   bool has_at_raster_images = false;
-  GetTasksForImagesAndRef(&images, &new_tasks, &has_at_raster_images,
-                          tracing_info);
+  ConvertDataImagesToTasks(&images, &new_tasks, &has_at_raster_images,
+                           tracing_info);
   UnrefImages(predecode_locked_images_);
   predecode_locked_images_ = std::move(images);
   return new_tasks;
diff --git a/cc/tiles/image_controller.h b/cc/tiles/image_controller.h
index 565547c..3f4d0b63 100644
--- a/cc/tiles/image_controller.h
+++ b/cc/tiles/image_controller.h
@@ -37,9 +37,8 @@
   virtual ~ImageController();
 
   void SetImageDecodeCache(ImageDecodeCache* cache);
-  // TODO(xidachen): rename the following two functions to be more meaningful,
-  // for example, Convert*ImagesToTasks.
-  //
+  // The name "Data images" are the images that are not generated by
+  // PaintWorklet.
   // Build tile tasks for synchronously decoded images that are not generated by
   // PaintWorklet.
   // |sync_decoded_images| is the input. These are the images from a particular
@@ -48,7 +47,7 @@
   // |tasks| is an output, which are the built tile tasks.
   // |has_at_raster_images| is an output parameter.
   // |tracing_info| is used in tracing or UMA only.
-  void GetTasksForImagesAndRef(
+  void ConvertDataImagesToTasks(
       std::vector<DrawImage>* sync_decoded_images,
       std::vector<scoped_refptr<TileTask>>* tasks,
       bool* has_at_raster_images,
@@ -59,7 +58,7 @@
   // tile, retrieved by DiscardableImageMap. Images are removed from the vector
   // once the tile task is built.
   // |tasks| is an output, which are the built tile tasks.
-  void GetTasksForPaintWorkletImages(
+  void ConvertPaintWorkletImagesToTask(
       std::vector<DrawImage>* sync_decoded_images,
       std::vector<scoped_refptr<TileTask>>* tasks);
   void UnrefImages(const std::vector<DrawImage>& images);
diff --git a/cc/tiles/image_controller_unittest.cc b/cc/tiles/image_controller_unittest.cc
index 096fe75b..c8a6462 100644
--- a/cc/tiles/image_controller_unittest.cc
+++ b/cc/tiles/image_controller_unittest.cc
@@ -331,8 +331,8 @@
 
   std::vector<scoped_refptr<TileTask>> tasks;
   bool has_at_raster_images = false;
-  controller()->GetTasksForImagesAndRef(&images, &tasks, &has_at_raster_images,
-                                        tracing_info);
+  controller()->ConvertDataImagesToTasks(&images, &tasks, &has_at_raster_images,
+                                         tracing_info);
   EXPECT_EQ(tasks.size(), 0u);
 }
 
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
index 5939934e..8abddd4 100644
--- a/cc/tiles/tile_manager.cc
+++ b/cc/tiles/tile_manager.cc
@@ -1178,10 +1178,10 @@
       prepare_tiles_count_, prioritized_tile.priority().priority_bin,
       ImageDecodeCache::TaskType::kInRaster);
   bool has_at_raster_images = false;
-  image_controller_.GetTasksForImagesAndRef(
+  image_controller_.ConvertDataImagesToTasks(
       &sync_decoded_images, &decode_tasks, &has_at_raster_images, tracing_info);
-  image_controller_.GetTasksForPaintWorkletImages(&sync_decoded_images,
-                                                  &decode_tasks);
+  image_controller_.ConvertPaintWorkletImagesToTask(&sync_decoded_images,
+                                                    &decode_tasks);
   // Notify |decoded_image_tracker_| after |image_controller_| to ensure we've
   // taken new refs on the images before releasing the predecode API refs.
   decoded_image_tracker_.OnImagesUsedInDraw(sync_decoded_images);
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index bb1004b..3116354 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -1542,6 +1542,9 @@
         std::move(pending_page_scale_animation_));
   }
 
+  if (TakeForceSendMetadataRequest())
+    tree_impl->RequestForceSendMetadata();
+
   tree_impl->set_has_ever_been_drawn(false);
 }
 
@@ -1788,4 +1791,10 @@
   proxy_->SetRenderFrameObserver(std::move(observer));
 }
 
+bool LayerTreeHost::TakeForceSendMetadataRequest() {
+  bool force_send_metadata_request = force_send_metadata_request_;
+  force_send_metadata_request_ = false;
+  return force_send_metadata_request;
+}
+
 }  // namespace cc
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index 97ab043..2f9d0f00 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -454,6 +454,13 @@
   // calculations.
   void SetExternalPageScaleFactor(float page_scale_factor);
 
+  // Requests that we force send RenderFrameMetadata with the next frame.
+  void RequestForceSendMetadata() { force_send_metadata_request_ = true; }
+
+  // Returns the state of |force_send_metadata_request_| and resets the
+  // variable to false.
+  bool TakeForceSendMetadataRequest();
+
   // Used externally by blink for setting the PropertyTrees when
   // UseLayerLists() is true, which also implies that Slimming Paint
   // v2 is enabled.
@@ -789,6 +796,10 @@
 
   std::unique_ptr<PendingPageScaleAnimation> pending_page_scale_animation_;
 
+  // Whether we have a pending request to force send RenderFrameMetadata with
+  // the next frame.
+  bool force_send_metadata_request_ = false;
+
   PropertyTrees property_trees_;
 
   bool needs_full_tree_sync_ = true;
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 4211eedc..93b6eb9 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -2183,7 +2183,8 @@
   if (render_frame_metadata_observer_) {
     last_draw_render_frame_metadata_ = MakeRenderFrameMetadata(frame);
     render_frame_metadata_observer_->OnRenderFrameSubmission(
-        *last_draw_render_frame_metadata_, &metadata);
+        *last_draw_render_frame_metadata_, &metadata,
+        active_tree()->TakeForceSendMetadataRequest());
   }
 
   metadata.latency_info.emplace_back(ui::SourceEventType::FRAME);
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 1b66644..c686e42 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -13785,7 +13785,8 @@
   void BindToCurrentThread() override {}
   void OnRenderFrameSubmission(
       const RenderFrameMetadata& render_frame_metadata,
-      viz::CompositorFrameMetadata* compositor_frame_metadata) override {
+      viz::CompositorFrameMetadata* compositor_frame_metadata,
+      bool force_send) override {
     if (increment_counter_)
       compositor_frame_metadata->send_frame_token_to_embedder = true;
     last_metadata_ = render_frame_metadata;
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index cf11b6b..cf20f63 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -8978,5 +8978,92 @@
 SINGLE_AND_MULTI_THREAD_TEST_F(
     DidReceiveCompositorFrameAckNotSentWhenNotNeeded);
 
+// Confirms that requests to force send RFM are forwarded once (and exactly
+// once) to the RFM observer. Does this by drawing 3 frames and requesting
+// force send from only the second then validating the request.
+class LayerTreeHostTestRequestForceSendMetadata
+    : public LayerTreeHostTest,
+      public RenderFrameMetadataObserver {
+ public:
+  // Provides a wrapper which can be passed to LayerTreeHost, but just forwards
+  // to the test class.
+  class ForwardingRenderFrameMetadataObserver
+      : public RenderFrameMetadataObserver {
+   public:
+    explicit ForwardingRenderFrameMetadataObserver(
+        RenderFrameMetadataObserver* target)
+        : target_(target) {}
+
+    // RenderFrameMetadataObserver implementation.
+    void BindToCurrentThread() override { target_->BindToCurrentThread(); }
+    void OnRenderFrameSubmission(
+        const RenderFrameMetadata& render_frame_metadata,
+        viz::CompositorFrameMetadata* compositor_frame_metadata,
+        bool force_send) override {
+      target_->OnRenderFrameSubmission(render_frame_metadata,
+                                       compositor_frame_metadata, force_send);
+    }
+
+   private:
+    RenderFrameMetadataObserver* target_ = nullptr;
+  };
+
+  LayerTreeHostTestRequestForceSendMetadata() = default;
+
+  void BeginTest() override {
+    // Just set up a basic frame which can be repeatedly re-drawn.
+    layer_tree_host()->SetRenderFrameObserver(
+        std::make_unique<ForwardingRenderFrameMetadataObserver>(this));
+    layer_tree_host()->SetViewportSizeAndScale(gfx::Size(10, 10), 1.f,
+                                               viz::LocalSurfaceIdAllocation());
+    layer_tree_host()->root_layer()->SetBounds(gfx::Size(10, 10));
+
+    layer_ = FakePictureLayer::Create(&client_);
+    layer_->SetBounds(gfx::Size(10, 10));
+    layer_->SetPosition(gfx::PointF(0.f, 0.f));
+    layer_->SetIsDrawable(true);
+    layer_tree_host()->root_layer()->AddChild(layer_);
+
+    PostSetNeedsCommitToMainThread();
+    client_.set_bounds(layer_->bounds());
+  }
+
+  void DidCommitAndDrawFrame() override {
+    // Draw three frames, sending a request to force send metadata on the
+    // middle (second) frame.
+    if (num_draw_layers_ == 3)
+      return;
+    if (num_draw_layers_ == 2)
+      layer_tree_host()->RequestForceSendMetadata();
+    layer_->SetNeedsDisplay();
+  }
+
+  void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
+    num_draw_layers_++;
+    if (num_draw_layers_ == 3)
+      EndTest();
+  }
+
+  void AfterTest() override { EXPECT_EQ(1, num_force_sends_); }
+
+  // RenderFrameMetadataObserver implementation. Called on thread.
+  void BindToCurrentThread() override {}
+  void OnRenderFrameSubmission(
+      const RenderFrameMetadata& render_frame_metadata,
+      viz::CompositorFrameMetadata* compositor_frame_metadata,
+      bool force_send) override {
+    if (force_send)
+      num_force_sends_++;
+  }
+
+ private:
+  FakeContentLayerClient client_;
+  scoped_refptr<Layer> layer_;
+  int num_draw_layers_ = 0;
+  int num_force_sends_ = 0;
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestRequestForceSendMetadata);
+
 }  // namespace
 }  // namespace cc
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index e969dfa..6e8627d 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -499,6 +499,9 @@
   target_tree->pending_page_scale_animation_ =
       std::move(pending_page_scale_animation_);
 
+  if (TakeForceSendMetadataRequest())
+    target_tree->RequestForceSendMetadata();
+
   target_tree->RegisterSelection(selection_);
 
   // This should match the property synchronization in
@@ -2325,6 +2328,12 @@
   return std::move(pending_page_scale_animation_);
 }
 
+bool LayerTreeImpl::TakeForceSendMetadataRequest() {
+  bool force_send_metadata_request = force_send_metadata_request_;
+  force_send_metadata_request_ = false;
+  return force_send_metadata_request;
+}
+
 void LayerTreeImpl::ResetAllChangeTracking() {
   layers_that_should_push_properties_.clear();
   // Iterate over all layers, including masks.
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index 5893c43..1cb1ca01 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -559,6 +559,10 @@
       std::unique_ptr<PendingPageScaleAnimation> pending_animation);
   std::unique_ptr<PendingPageScaleAnimation> TakePendingPageScaleAnimation();
 
+  // Requests that we force send RenderFrameMetadata with the next frame.
+  void RequestForceSendMetadata() { force_send_metadata_request_ = true; }
+  bool TakeForceSendMetadataRequest();
+
   void DidUpdateScrollOffset(ElementId id);
 
   // Mark the scrollbar geometries (e.g., thumb size and position) as needing an
@@ -763,6 +767,10 @@
 
   std::unique_ptr<PendingPageScaleAnimation> pending_page_scale_animation_;
 
+  // Whether we have a request to force-send RenderFrameMetadata with the next
+  // frame.
+  bool force_send_metadata_request_ = false;
+
   // Tracks the lifecycle which is used for enforcing dependencies between
   // lifecycle states. See: |LayerTreeLifecycle|.
   LayerTreeLifecycle lifecycle_;
diff --git a/cc/trees/render_frame_metadata_observer.h b/cc/trees/render_frame_metadata_observer.h
index 69037c5e..13b0263 100644
--- a/cc/trees/render_frame_metadata_observer.h
+++ b/cc/trees/render_frame_metadata_observer.h
@@ -32,7 +32,8 @@
   // the display compositor.
   virtual void OnRenderFrameSubmission(
       const RenderFrameMetadata& render_frame_metadata,
-      viz::CompositorFrameMetadata* compositor_frame_metadata) = 0;
+      viz::CompositorFrameMetadata* compositor_frame_metadata,
+      bool force_send) = 0;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RenderFrameMetadataObserver);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestFactory.java
index 80712cb..9581d7e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestFactory.java
@@ -8,6 +8,7 @@
 import org.chromium.content_public.browser.RenderFrameHost;
 import org.chromium.mojo.system.MojoException;
 import org.chromium.payments.mojom.CanMakePaymentQueryResult;
+import org.chromium.payments.mojom.HasEnrolledInstrumentQueryResult;
 import org.chromium.payments.mojom.PaymentDetails;
 import org.chromium.payments.mojom.PaymentErrorReason;
 import org.chromium.payments.mojom.PaymentMethodData;
@@ -67,6 +68,14 @@
         }
 
         @Override
+        public void hasEnrolledInstrument() {
+            if (mClient != null) {
+                mClient.onHasEnrolledInstrument(
+                        HasEnrolledInstrumentQueryResult.HAS_NO_ENROLLED_INSTRUMENT);
+            }
+        }
+
+        @Override
         public void close() {}
 
         @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
index 6fb6456..29ecef8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
@@ -55,7 +55,7 @@
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.content_public.browser.WebContentsStatics;
 import org.chromium.mojo.system.MojoException;
-import org.chromium.payments.mojom.CanMakePaymentQueryResult;
+import org.chromium.payments.mojom.HasEnrolledInstrumentQueryResult;
 import org.chromium.payments.mojom.PaymentComplete;
 import org.chromium.payments.mojom.PaymentCurrencyAmount;
 import org.chromium.payments.mojom.PaymentDetails;
@@ -124,9 +124,14 @@
         void onPaymentRequestServiceShowFailed();
 
         /**
-         * Called when the canMakePayment() request has been responded.
+         * Called when the canMakePayment() request has been responded to.
          */
         void onPaymentRequestServiceCanMakePaymentQueryResponded();
+
+        /**
+         * Called when the hasEnrolledInstrument() request has been responded to.
+         */
+        void onPaymentRequestServiceHasEnrolledInstrumentQueryResponded();
     }
 
     /** Limit in the number of suggested items in a section. */
@@ -214,7 +219,7 @@
     private final boolean mIsIncognito;
 
     private PaymentRequestClient mClient;
-    private boolean mIsCanMakePaymentResponsePending;
+    private boolean mIsHasEnrolledInstrumentResponsePending;
     private boolean mIsCurrentPaymentRequestShowing;
 
     /**
@@ -290,7 +295,7 @@
      * True after at least one usable payment instrument has been found. Should be read only after
      * all payment apps have been queried.
      */
-    private boolean mCanMakePayment;
+    private boolean mHasEnrolledInstrument;
 
     /**
      * True if we should skip showing PaymentRequest UI.
@@ -679,8 +684,8 @@
             }
         }
 
-        if (mIsCanMakePaymentResponsePending && queryApps.isEmpty()) {
-            respondCanMakePaymentQuery(mCanMakePayment);
+        if (mIsHasEnrolledInstrumentResponsePending && queryApps.isEmpty()) {
+            respondHasEnrolledInstrumentQuery(mHasEnrolledInstrument);
         }
 
         if (disconnectIfNoPaymentMethodsSupported()) return;
@@ -1514,36 +1519,46 @@
      */
     @Override
     public void canMakePayment() {
+        // TODO(https://crbug.com/915907): Implement new canMakePayment.
+        assert false;
+    }
+
+    /**
+     * Called by the merchant website to check if the user has complete payment instruments.
+     */
+    @Override
+    public void hasEnrolledInstrument() {
         if (mClient == null) return;
 
         if (isFinishedQueryingPaymentApps()) {
-            respondCanMakePaymentQuery(mCanMakePayment);
+            respondHasEnrolledInstrumentQuery(mHasEnrolledInstrument);
         } else {
-            mIsCanMakePaymentResponsePending = true;
+            mIsHasEnrolledInstrumentResponsePending = true;
         }
     }
 
-    private void respondCanMakePaymentQuery(boolean response) {
+    private void respondHasEnrolledInstrumentQuery(boolean response) {
         if (mClient == null) return;
 
-        mIsCanMakePaymentResponsePending = false;
+        mIsHasEnrolledInstrumentResponsePending = false;
 
         if (CanMakePaymentQuery.canQuery(
                     mWebContents, mTopLevelOrigin, mPaymentRequestOrigin, mMethodData)) {
-            mClient.onCanMakePayment(response ? CanMakePaymentQueryResult.CAN_MAKE_PAYMENT
-                                              : CanMakePaymentQueryResult.CANNOT_MAKE_PAYMENT);
+            mClient.onHasEnrolledInstrument(response
+                            ? HasEnrolledInstrumentQueryResult.HAS_ENROLLED_INSTRUMENT
+                            : HasEnrolledInstrumentQueryResult.HAS_NO_ENROLLED_INSTRUMENT);
         } else if (shouldEnforceCanMakePaymentQueryQuota()) {
-            mClient.onCanMakePayment(CanMakePaymentQueryResult.QUERY_QUOTA_EXCEEDED);
+            mClient.onHasEnrolledInstrument(HasEnrolledInstrumentQueryResult.QUERY_QUOTA_EXCEEDED);
         } else {
-            mClient.onCanMakePayment(response
-                            ? CanMakePaymentQueryResult.WARNING_CAN_MAKE_PAYMENT
-                            : CanMakePaymentQueryResult.WARNING_CANNOT_MAKE_PAYMENT);
+            mClient.onHasEnrolledInstrument(response
+                            ? HasEnrolledInstrumentQueryResult.WARNING_HAS_ENROLLED_INSTRUMENT
+                            : HasEnrolledInstrumentQueryResult.WARNING_HAS_NO_ENROLLED_INSTRUMENT);
         }
 
         mJourneyLogger.setCanMakePaymentValue(response || mIsIncognito);
 
         if (sObserverForTest != null) {
-            sObserverForTest.onPaymentRequestServiceCanMakePaymentQueryResponded();
+            sObserverForTest.onPaymentRequestServiceHasEnrolledInstrumentQueryResponded();
         }
     }
 
@@ -1596,7 +1611,7 @@
                 if (!instrumentMethodNames.isEmpty()) {
                     mHideServerAutofillInstruments |=
                             instrument.isServerAutofillInstrumentReplacement();
-                    mCanMakePayment |= instrument.canMakePayment();
+                    mHasEnrolledInstrument |= instrument.canMakePayment();
                     mPendingInstruments.add(instrument);
                 } else {
                     instrument.dismissInstrument();
@@ -1605,7 +1620,7 @@
         }
 
         // Always return false when can make payment is disabled.
-        mCanMakePayment &=
+        mHasEnrolledInstrument &=
                 PrefServiceBridge.getInstance().getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED);
 
         int additionalTextResourceId = app.getAdditionalAppTextResourceId();
@@ -1649,7 +1664,9 @@
                 ? 0
                 : SectionInformation.NO_SELECTION;
 
-        if (mIsCanMakePaymentResponsePending) respondCanMakePaymentQuery(mCanMakePayment);
+        if (mIsHasEnrolledInstrumentResponsePending) {
+            respondHasEnrolledInstrumentQuery(mHasEnrolledInstrument);
+        }
 
         // The list of payment instruments is ready to display.
         mPaymentMethodsSection = new SectionInformation(PaymentRequestUI.DataType.PAYMENT_METHODS,
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 34743bb..d73e1c7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">በግል ትሮች ላይ የሚያዩዋቸው ገጾች ሁሉንም የግል ትሮችዎን ከዘጉ በኋላ በእርስዎ የአሳሽ ታሪክ፣ የኩኪ ማከማቻ ወይም የፍለጋ ታሪክ ውስጥ አይቆዩም። የሚያወርዷቸው ማንኛቸውም ፋይሎች ወይም ዕልባቶች ይቀመጣሉ።
 
 ይሁንና እርስዎ ስውር አይደሉም። የግል መሆን የእርስዎን አሰሳ ከአሰሪዎ፣ ከበይነመረብ አገልጋይዎ ወይም ከሚጎበኟቸው ድር ጣቢያዎች አይደብቁዎውም።</translation>
+<translation id="1260236875608242557">ይፈልጉ እና ያስሱ</translation>
 <translation id="1264974993859112054">ሰፖርቶች</translation>
 <translation id="127138278192656016">ማመሳሰልን እና ሁሉንም አገልግሎቶች ይጠቀሙ</translation>
 <translation id="1272079795634619415">አቁም</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">ታሪክን በመለያ ከገቡ ሁሉም መሣሪያዎች ላይ ያጸዳል። የእርስዎ Google መለያ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል</translation>
 <translation id="3600792891314830896">ድምጽን በሚያጫውቱ ጣቢያዎች ላይ ድምጸ-ከል አድርግ</translation>
 <translation id="360207483134687714">የVR ተሞክሮን በChrome ለማሻሻል ያግዙ</translation>
+<translation id="3604604794717279723">ተቀብያለሁ</translation>
 <translation id="3616113530831147358">ድምጽ</translation>
 <translation id="3630011985153972676">በWi-Fi ላይ ሲኮን በቅንብሮች ስር Chrome ጽሑፎችን እንዲያወርድ ይፍቀዱ።</translation>
 <translation id="3632295766818638029">የይለፍ ቃልን ግለጥ</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">ምንም ውርዶች አልተገኙም</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 እና <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ተጨማሪ}one{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 እና <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ተጨማሪ}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 እና <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ተጨማሪ}}</translation>
 <translation id="6364438453358674297">ጥቆማው ከታሪክ ይወገድ?</translation>
+<translation id="6369229450655021117">ከዚህ ላይ ሆነው፣ ድሩን መፈለግ፣ ከጓደኞች ጋር መጋራት፣ እና ክፍት ገጾችን መመልከት ይችላሉ</translation>
 <translation id="6378173571450987352">ዝርዝሮች፦ ጥቅም ላይ በዋለው የውሂብ መጠን ተደርድረዋል</translation>
 <translation id="6383961787135158834">የጣቢያ ማከማቻን አጽዳ…</translation>
 <translation id="6388207532828177975">አጽዳ እና ዳግም አስጀምር</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">እገዛ</translation>
 <translation id="7658239707568436148">ይቅር</translation>
 <translation id="7665369617277396874">መለያ ያክሉ</translation>
+<translation id="7670842975141217779">የGoogle ረዳት\nin Chrome</translation>
 <translation id="7682724950699840886">የሚከተሉትን ጠቃሚ ምክሮች ይሞክሩ፦ በእርስዎ መሣሪያ ላይ በቂ ባዶ ቦታ መኖሩን ያረጋግጡ፣ ወይም እንደገና ወደ ውጭ ለመላክ ይሞክሩ።</translation>
 <translation id="7698359219371678927">በ<ph name="APP_NAME" /> ውስጥ ኢሜይል ይፍጠሩ</translation>
 <translation id="7704317875155739195">ፍለጋዎችን እና ዩአርኤልዎችን በራስ-አጠናቅቅ</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 a3a72fe8..feefd16 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">لن تظهر الصفحات التي تشاهدها في علامات التبويب الخاصة في سِجل متصفّحك أو في وحدة تخزين ملفات تعريف الارتباط أو في سِجل البحث بعد إغلاق جميع علامات التبويب الخاصة. وسيتم حفظ أي ملفات تنزّلها أو إشارات مرجعية تنشئها.
 
 لكنك ستبقى مرئيًا، فاستخدام الوضع الخاص لا يخفي تصفُّحك عن صاحب العمل أو مزود خدمة الإنترنت أو مواقع الويب التي تزورها.</translation>
+<translation id="1260236875608242557">البحث والاستكشاف</translation>
 <translation id="1264974993859112054">رياضة</translation>
 <translation id="127138278192656016">استخدام المزامنة وجميع الخدمات</translation>
 <translation id="1272079795634619415">إيقاف</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">‏يمسح السجل من كل الأجهزة التي تم تسجيل الدخول عليها. وقد يتضمن حسابك في Google نماذج أخرى من سجل التصفح في <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">كتم صوت المواقع التي تُشغّل الصوت</translation>
 <translation id="360207483134687714">‏المساعدة في تحسين تجربة الواقع الافتراضي (VR) في Chrome</translation>
+<translation id="3604604794717279723">أوافق</translation>
 <translation id="3616113530831147358">الصوت</translation>
 <translation id="3630011985153972676">‏يمكنك السماح لمتصفِّح Chrome بتنزيل مقالات لك عند الاتصال بشبكة Wi-Fi ضمن الإعدادات.</translation>
 <translation id="3632295766818638029">كشف كلمة المرور</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">لم يتم العثور على أي تنزيلات</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 وعنوان إضافي واحد (<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />)}zero{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> عنوان إضافي}two{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 وعنوانان إضافيان (<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />)}few{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> عناوين إضافية}many{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> عنوانًا إضافيًا}other{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> عنوان إضافي}}</translation>
 <translation id="6364438453358674297">هل تريد إزالة اقتراح من السجل؟</translation>
+<translation id="6369229450655021117">يمكنك "من هنا" البحث في الويب والمشاركة مع أصدقائك وعرض الصفحات المفتوحة</translation>
 <translation id="6378173571450987352">التفاصيل: تم الترتيب بحسب مقدار البيانات المُستخدَمة</translation>
 <translation id="6383961787135158834">محو مساحة تخزين الموقع...</translation>
 <translation id="6388207532828177975">مسح وإعادة التعيين</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">مساعدة</translation>
 <translation id="7658239707568436148">إلغاء</translation>
 <translation id="7665369617277396874">إضافة حساب</translation>
+<translation id="7670842975141217779">‏"مساعد Google"\nعلى Chrome</translation>
 <translation id="7682724950699840886">يمكنك تجربة النصائح التالية: تأكد من توفر مساحة كافية على جهازك وحاول التصدير مرة أخرى.</translation>
 <translation id="7698359219371678927">إنشاء بريد إلكتروني في <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">‏الإكمال التلقائي لعناوين URL وعمليات البحث</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 981bf3cd..a1ac71f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -200,6 +200,7 @@
 <translation id="2450083983707403292">Искате ли да започнете да изтегляте „<ph name="FILE_NAME" />“ още веднъж?</translation>
 <translation id="2476578072172137802">Настройки за сайта</translation>
 <translation id="2482878487686419369">Известия</translation>
+<translation id="2494974097748878569">Google Асистент в Chrome</translation>
 <translation id="2496180316473517155">История на сърфирането</translation>
 <translation id="2498359688066513246">Помощ и отзиви</translation>
 <translation id="2501278716633472235">Назад</translation>
@@ -682,6 +683,7 @@
 <translation id="6277522088822131679">При отпечатването на страницата възникна проблем. Моля, опитайте отново.</translation>
 <translation id="6295158916970320988">Всички сайтове</translation>
 <translation id="629730747756840877">Профил</translation>
+<translation id="6302269476990306341">Google Асистент в Chrome се спира</translation>
 <translation id="6303969859164067831">Изход от профила и изключване на синхронизирането</translation>
 <translation id="6316139424528454185">Неподдържана версия на Android</translation>
 <translation id="6320088164292336938">Вибриране</translation>
@@ -815,6 +817,7 @@
 <translation id="7250468141469952378">Избрани: <ph name="ITEM_COUNT" /></translation>
 <translation id="7253272406652746122">Добавете профил в Google от страницата „Профили“ в приложението Настройки на устройството ви.</translation>
 <translation id="7274013316676448362">Блокиран сайт</translation>
+<translation id="7291387454912369099">Плащане с помощта на Асистент</translation>
 <translation id="729975465115245577">На устройството ви няма приложение за съхраняване на файла с паролите.</translation>
 <translation id="7302081693174882195">Подробности: сортирани по количество спестени данни</translation>
 <translation id="7333031090786104871">Още се добавя предишният сайт</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 3fa9e3f..6edb0be 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">ব্যক্তিগত ট্যাবগুলিতে আপনি যে পৃষ্ঠাগুলি দেখেন, সেই সব ব্যক্তিগত ট্যাবগুলি বন্ধ করার পরে আপনার ব্রাউজারের ইতিহাস, কুকি সঞ্চয় বা সার্চ ইতিহাসে দেখা যাবে না। আপনার ডাউনলোড করা যেকোনও ফাইল বা আপনার তৈরি যে কোনও বুকমার্ক সেভ করা হবে।
 
 আপনি অবশ্য অদৃশ্য থাকবেন না। ব্যক্তিগত মোডে গেলেও তা আপনার নিয়োগকর্তা, আপনার ইন্টারনেট পরিষেবা প্রদানকারী অথবা আপনার পরিদর্শন করা ওয়েবসাইট থেকে আপনার ব্রাউজিংকে আড়াল করবে না।</translation>
+<translation id="1260236875608242557">সার্চ করুন, ঘুরে দেখুন</translation>
 <translation id="1264974993859112054">খেলাধূলা</translation>
 <translation id="127138278192656016">সিঙ্ক এবং সমস্ত পরিষেবা ব্যবহার করুন</translation>
 <translation id="1272079795634619415">বন্ধ</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">সমস্ত সাইন-ইন করা ডিভাইসগুলি থেকে ইতিহাস মুছে ফেলে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation>
 <translation id="3600792891314830896">সাউন্ড প্লে করা হয় যে সাইটগুলিতে সেগুলি মিউট করুন</translation>
 <translation id="360207483134687714">Chrome এ VR এর অভিজ্ঞতাকে আরও উন্নত করে তুলতে সাহায্য করুন</translation>
+<translation id="3604604794717279723">আমি সম্মতি দিচ্ছি</translation>
 <translation id="3616113530831147358">অডিও</translation>
 <translation id="3630011985153972676">সেটিংসের অধীনে ওয়াই-ফাই চালু থাকাকালীন Chrome-কে আপনার জন্য নিবন্ধগুলি ডাউনলোড করার অনুমতি দিন।</translation>
 <translation id="3632295766818638029">পাসওয়ার্ড উম্মোচন করুন</translation>
@@ -696,6 +698,7 @@
 <translation id="6343192674172527289">কোনো ডাউনলোড পাওয়া যায়নি</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> আরও অনেক}one{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> আরও অনেক}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> আরও অনেক}}</translation>
 <translation id="6364438453358674297">ইতিহাস থেকে প্রস্তাবনা সরাবেন?</translation>
+<translation id="6369229450655021117">এখান থেকে আপনি ওয়েবে সার্চ করতে, বন্ধুদের সাথে শেয়ার করতে এবং খোলা পৃষ্ঠাগুলি দেখতে পারেন</translation>
 <translation id="6378173571450987352">বিবরণ: ব্যবহার করা ডেটার পরিমাণ অনুযায়ী সাজানো হয়েছে</translation>
 <translation id="6383961787135158834">সাইট সঞ্চয়স্থান মুছুন...</translation>
 <translation id="6388207532828177975">পরিষ্কার এবং আবার সেট করুন</translation>
@@ -874,6 +877,7 @@
 <translation id="7649070708921625228">সহায়তা</translation>
 <translation id="7658239707568436148">বাতিল</translation>
 <translation id="7665369617277396874">অ্যাকাউন্ট যোগ করুন</translation>
+<translation id="7670842975141217779">Chrome-এ\nGoogle অ্যাসিস্ট্যান্ট</translation>
 <translation id="7682724950699840886">নিম্নলিখিত টিপ্স ব্যবহার করার চেষ্টা করুন: আপনার ডিভাইসে পর্যাপ্ত জায়গা আছে কিনা দেখে নিয়ে আবার এক্সপোর্ট করার চেষ্টা করুন।</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" />-এ ইমেল আইডি তৈরি করুন</translation>
 <translation id="7704317875155739195">সার্চ এবং ইউআরএলগুলি নিজে থেকে সম্পূর্ণ হতে দিন</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 cfd9f29..8772710 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Les pàgines que visualitzes a les pestanyes privades no quedaran registrades a l'historial del navegador, al magatzem de galetes ni a l'historial de cerques un cop tanquis totes les pestanyes privades. Tots els fitxers que baixis o les adreces d'interès que creïs es conservaran.
 
 Tanmateix, no ets invisible. El teu cap, el teu proveïdor de serveis d'Internet i els llocs web que visitis poden veure la teva navegació privada.</translation>
+<translation id="1260236875608242557">Fes cerques i explora contingut</translation>
 <translation id="1264974993859112054">Esports</translation>
 <translation id="127138278192656016">Fes servir la sincronització i tots els serveis</translation>
 <translation id="1272079795634619415">Atura</translation>
@@ -200,6 +201,7 @@
 <translation id="2450083983707403292">Vols tornar a baixar el fitxer <ph name="FILE_NAME" />?</translation>
 <translation id="2476578072172137802">Configuració del lloc web</translation>
 <translation id="2482878487686419369">Notificacions</translation>
+<translation id="2494974097748878569">L'Assistent de Google a Chrome</translation>
 <translation id="2496180316473517155">Historial de navegació</translation>
 <translation id="2498359688066513246">Ajuda i suggeriments </translation>
 <translation id="2501278716633472235">Torna</translation>
@@ -329,6 +331,7 @@
 <translation id="3599863153486145794">Esborra l'historial de tots els dispositius en què tinguis iniciada la sessió. A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />, trobaràs altres maneres d'explorar l'historial del teu compte de Google.</translation>
 <translation id="3600792891314830896">Silencia els llocs web que reprodueixen so</translation>
 <translation id="360207483134687714">Ajuda a millorar l'experiència de RV a Chrome</translation>
+<translation id="3604604794717279723">Accepto</translation>
 <translation id="3616113530831147358">Àudio</translation>
 <translation id="3630011985153972676">A la configuració, permet que Chrome et baixi articles quan estiguis connectat a la Wi-Fi.</translation>
 <translation id="3632295766818638029">Mostra la contrasenya</translation>
@@ -681,6 +684,7 @@
 <translation id="6277522088822131679">S'ha produït un problema en imprimir la pàgina. Torneu-ho a provar.</translation>
 <translation id="6295158916970320988">Tots els llocs</translation>
 <translation id="629730747756840877">Compte</translation>
+<translation id="6302269476990306341">S'està aturant l'Assistent de Google a Chrome</translation>
 <translation id="6303969859164067831">Tanca la sessió i desactiva la sincronització</translation>
 <translation id="6316139424528454185">Versió d'Android no admesa</translation>
 <translation id="6320088164292336938">Vibració</translation>
@@ -692,6 +696,7 @@
 <translation id="6343192674172527289">No s'ha trobat cap baixada</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> més}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> més}}</translation>
 <translation id="6364438453358674297">Voleu suprimir el suggeriment de l'historial?</translation>
+<translation id="6369229450655021117">Des d'aquí, pots fer cerques al web, compartir contingut amb els amics i veure les pàgines obertes</translation>
 <translation id="6378173571450987352">Detalls: files ordenades per quantitat de dades utilitzades</translation>
 <translation id="6383961787135158834">Esborra emmagatz. lloc…</translation>
 <translation id="6388207532828177975">Esborra i restableix</translation>
@@ -814,6 +819,7 @@
 <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> elements seleccionats</translation>
 <translation id="7253272406652746122">Afegeix un compte de Google des de la pàgina Comptes de l'aplicació Configuració del dispositiu.</translation>
 <translation id="7274013316676448362">Lloc bloquejat</translation>
+<translation id="7291387454912369099">Pagament activat per l'Assistent</translation>
 <translation id="729975465115245577">El dispositiu no té cap aplicació per emmagatzemar el fitxer de contrasenyes.</translation>
 <translation id="7302081693174882195">Detalls: files ordenades per quantitat de dades estalviades</translation>
 <translation id="7333031090786104871">Encara s'hi està afegint el lloc anterior</translation>
@@ -869,6 +875,7 @@
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancel·la</translation>
 <translation id="7665369617277396874">Afegeix un compte</translation>
+<translation id="7670842975141217779">L'Assistent de Google\na Chrome</translation>
 <translation id="7682724950699840886">Segueix aquests consells: comprova que hi hagi prou espai al dispositiu i prova d'exportar les contrasenyes de nou.</translation>
 <translation id="7698359219371678927">Crea una adreça electrònica a <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completa automàticament les cerques i els URL</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 f70f317..11e77b77 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Οι σελίδες που προβάλλετε στις καρτέλες ιδιωτικής περιήγησης δεν διατηρούνται στο ιστορικό του προγράμματος περιήγησής σας, στα cookie ή στο ιστορικό αναζήτησης, αφού κλείσετε όλες τις καρτέλες ιδιωτικής περιήγησης. Τα αρχεία που κατεβάζετε ή οι σελιδοδείκτες που δημιουργείτε θα διατηρηθούν.
 
 Ωστόσο, δεν είστε αόρατοι. Με την ιδιωτική περιήγηση, η περιήγησή σας δεν αποκρύπτεται από τον εργοδότη σας, τον πάροχο υπηρεσιών διαδικτύου ή τους ιστοτόπους που επισκέπτεστε.</translation>
+<translation id="1260236875608242557">Αναζήτηση και εξερεύνηση</translation>
 <translation id="1264974993859112054">Αθλητικά</translation>
 <translation id="127138278192656016">Χρήση συγχρονισμού και όλων των υπηρεσιών</translation>
 <translation id="1272079795634619415">Διακοπή</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Διαγράφει το ιστορικό από όλες τις συνδεδεμένες συσκευές. Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Σίγαση ιστοτόπων που αναπαράγουν ήχο</translation>
 <translation id="360207483134687714">Συμβάλλετε στη βελτίωση της εμπειρίας VR στο Chrome</translation>
+<translation id="3604604794717279723">Συμφωνώ</translation>
 <translation id="3616113530831147358">Ήχος</translation>
 <translation id="3630011985153972676">Θα επιτρέπεται στο Chrome να κατεβάζει άρθρα για εσάς, όταν στις ρυθμίσεις είναι ενεργοποιημένο το Wi-Fi.</translation>
 <translation id="3632295766818638029">Αποκάλυψη κωδικού πρόσβασης</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Δεν βρέθηκαν λήψεις</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 και <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ακόμη}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 και <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ακόμη}}</translation>
 <translation id="6364438453358674297">Κατάργηση πρότασης από το ιστορικό;</translation>
+<translation id="6369229450655021117">Από εδώ, μπορείτε να αναζητήσετε στον ιστό, να μοιραστείτε με φίλους και να δείτε ανοικτές σελίδες</translation>
 <translation id="6378173571450987352">Λεπτομέρειες: Ταξινομήθηκαν βάσει του όγκου των δεδομένων που χρησιμοποιήθηκαν</translation>
 <translation id="6383961787135158834">Διαγρ. αποθ. χώρ. ιστότ…</translation>
 <translation id="6388207532828177975">Διαγραφή και επαναφορά</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Βοήθεια</translation>
 <translation id="7658239707568436148">Ακύρωση</translation>
 <translation id="7665369617277396874">Προσθήκη λογαριασμού</translation>
+<translation id="7670842975141217779">Βοηθός Google\nστο Chrome</translation>
 <translation id="7682724950699840886">Δοκιμάστε τις παρακάτω συμβουλές: Βεβαιωθείτε ότι υπάρχει αρκετός χώρος στη συσκευή σας. Δοκιμάστε να επαναλάβετε την εξαγωγή.</translation>
 <translation id="7698359219371678927">Δημιουργία μηνύματος ηλεκτρονικού ταχυδρομείου στην εφαρμογή <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Αυτόματη συμπλήρωση αναζητήσεων και URL</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 d26de913b..32f6b6b2 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
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Pages that you view in private tabs won’t stick around in your browser’s history, cookie store or search history after you’ve closed all of your private tabs. Any files that you download or bookmarks that you create will be kept.
 
 However, you aren’t invisible. Going private doesn’t hide your browsing from your employer, your Internet service provider or the websites that you visit.</translation>
+<translation id="1260236875608242557">Search and explore</translation>
 <translation id="1264974993859112054">Sports</translation>
 <translation id="127138278192656016">Use sync and all services</translation>
 <translation id="1272079795634619415">Stop</translation>
@@ -152,6 +153,7 @@
 <translation id="2091887806945687916">Sound</translation>
 <translation id="2096012225669085171">Sync and personalise across devices</translation>
 <translation id="2100273922101894616">Auto Sign-in</translation>
+<translation id="2107397443965016585">Ask before allowing sites to play protected content (recommended)</translation>
 <translation id="2111511281910874386">Go to page</translation>
 <translation id="2120297377148151361">Activity and interactions</translation>
 <translation id="2122601567107267586">Could not open app</translation>
@@ -324,12 +326,14 @@
 <translation id="3552151358455404883">Manage Chrome Sync and personalisation in <ph name="BEGIN_LINK1" />Settings<ph name="END_LINK1" /></translation>
 <translation id="3557336313807607643">Add to contacts</translation>
 <translation id="3568688522516854065">To get your tabs from your other devices, sign in and turn on sync</translation>
+<translation id="3569641550016028782">In Lite mode, Chrome loads pages faster and uses up to 60% less data.</translation>
 <translation id="3587482841069643663">All</translation>
 <translation id="358794129225322306">Allow a site to download multiple files automatically.</translation>
 <translation id="3590487821116122040">Site storage Chrome doesn't think is important (e.g. sites with no saved settings or that you don't visit often)</translation>
 <translation id="3599863153486145794">Clears history from all signed-in devices. Your Google account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Mute sites that play sound</translation>
 <translation id="360207483134687714">Help improve the VR experience in Chrome</translation>
+<translation id="3604604794717279723">I accept</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Allow Chrome to download articles for you when on Wi-Fi under settings.</translation>
 <translation id="3632295766818638029">Unmask password</translation>
@@ -432,6 +436,7 @@
 <translation id="4452411734226507615">Close <ph name="TAB_TITLE" /> tab</translation>
 <translation id="4452548195519783679">Bookmarked to <ph name="FOLDER_NAME" /></translation>
 <translation id="4453340223357552416"><ph name="FILE_NAME" /> downloaded in <ph name="PRODUCT_NAME" /></translation>
+<translation id="445467742685312942">Allow sites to play protected content</translation>
 <translation id="4468959413250150279">Mute sound for a specific site.</translation>
 <translation id="4472118726404937099">To sync and personalise across devices, sign in and turn on sync</translation>
 <translation id="447252321002412580">Help improve Chrome's features and performance</translation>
@@ -694,6 +699,7 @@
 <translation id="6343192674172527289">No downloads found</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 and <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> more}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 and <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> more}}</translation>
 <translation id="6364438453358674297">Remove suggestion from history?</translation>
+<translation id="6369229450655021117">From here, you can search the web, share with friends and see open pages</translation>
 <translation id="6378173571450987352">Details: Sorted by amount of data used</translation>
 <translation id="6383961787135158834">Clear Site Storage…</translation>
 <translation id="6388207532828177975">Clear &amp; reset</translation>
@@ -763,6 +769,8 @@
 <translation id="6864459304226931083">Download image</translation>
 <translation id="6865313869410766144">Autofill form data</translation>
 <translation id="6868088497967843822">Sign in to get your bookmarks, history, passwords and other settings on all your devices</translation>
+<translation id="6873650893489565150">In Lite mode, Chrome loads pages faster and uses up to 60% less data. Google's cloud technology optimises the pages that 
+you visit.</translation>
 <translation id="688738109438487280">Add existing data to <ph name="TO_ACCOUNT" />.</translation>
 <translation id="6891726759199484455">Unlock to copy your password</translation>
 <translation id="6896758677409633944">Copy</translation>
@@ -872,6 +880,7 @@
 <translation id="7649070708921625228">Help</translation>
 <translation id="7658239707568436148">Cancel</translation>
 <translation id="7665369617277396874">Add account</translation>
+<translation id="7670842975141217779">Google Assistant\nin Chrome</translation>
 <translation id="7682724950699840886">Try the following tips: make sure that there is enough space on your device; try to export again.</translation>
 <translation id="7698359219371678927">Create email in <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Auto-complete searches and URLs</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 0543f057..f7f7eec69 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -200,6 +200,7 @@
 <translation id="2450083983707403292">¿Quieres empezar a descargar <ph name="FILE_NAME" /> de nuevo?</translation>
 <translation id="2476578072172137802">Configuración del sitio web</translation>
 <translation id="2482878487686419369">Notificaciones</translation>
+<translation id="2494974097748878569">Asistente de Google en Chrome</translation>
 <translation id="2496180316473517155">Historial de navegación</translation>
 <translation id="2498359688066513246">Ayuda y sugerencias</translation>
 <translation id="2501278716633472235">Volver</translation>
@@ -681,6 +682,7 @@
 <translation id="6277522088822131679">Se ha producido un problema al imprimir la página. Vuelve a intentarlo.</translation>
 <translation id="6295158916970320988">Todos los sitios</translation>
 <translation id="629730747756840877">Cuenta</translation>
+<translation id="6302269476990306341">Se está parando el Asistente de Google en Chrome</translation>
 <translation id="6303969859164067831">Cerrar sesión y desactivar la sincronización</translation>
 <translation id="6316139424528454185">Esta versión de Android no es compatible</translation>
 <translation id="6320088164292336938">Vibrar</translation>
@@ -814,6 +816,7 @@
 <translation id="7250468141469952378">Elementos seleccionados: <ph name="ITEM_COUNT" /></translation>
 <translation id="7253272406652746122">Añade una cuenta de Google desde la sección Cuentas de la aplicación de ajustes de tu dispositivo.</translation>
 <translation id="7274013316676448362">Sitio web bloqueado</translation>
+<translation id="7291387454912369099">Pago con el Asistente activado</translation>
 <translation id="729975465115245577">Tu dispositivo no tiene ninguna aplicación para almacenar el archivo de contraseñas.</translation>
 <translation id="7302081693174882195">Detalles: ordenados por cantidad de datos ahorrados</translation>
 <translation id="7333031090786104871">Aún se está añadiendo el sitio web anterior</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 4acc842..df25ac0 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">صفحاتی که در برگه‌های خصوصی می‌بینید بعد از بسته شدن، در سابقه مرور، فضای ذخیره کوکی یا سابقه جستجویتان به‌جا نمی‌مانند. هر فایلی که بارگیری می‌کنید یا نشانک‌هایی که ایجاد می‌کنید، حفظ می‌شود.
 
 با این حال، نامرئی نیستید. رفتن به حالت خصوصی، مرورتان را از کارفرما، ارائه‌کننده خدمات اینترنتی یا وب‌سایت‌هایی که بازید می‌کنید، پنهان نمی‌کند.</translation>
+<translation id="1260236875608242557">جستجو و کاوش</translation>
 <translation id="1264974993859112054">ورزش</translation>
 <translation id="127138278192656016">استفاده از همگام‌سازی و همه سرویس‌ها</translation>
 <translation id="1272079795634619415">توقف</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">‏سابقه را از همه دستگاه‌های به سیستم واردشده پاک می‌کند. ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation>
 <translation id="3600792891314830896">سایت‌هایی که صدا پخش می‌کنند بی‌صدا شوند</translation>
 <translation id="360207483134687714">‏به بهبود تجربه «واقعیت مجازی» در Chrome کمک کنید</translation>
+<translation id="3604604794717279723">موافقم</translation>
 <translation id="3616113530831147358">صوتی</translation>
 <translation id="3630011985153972676">‏در بخش تنظیمات، به Chrome اجازه دهید هنگام اتصال به Wi-Fi برایتان مقاله بارگیری کند.</translation>
 <translation id="3632295766818638029">نمایش گذرواژه</translation>
@@ -691,6 +693,7 @@
 <translation id="6343192674172527289">هیچ بارگیری‌ای پیدا نشد</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> نشانی دیگر}one{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> نشانی دیگر}other{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 و <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> نشانی دیگر}}</translation>
 <translation id="6364438453358674297">پیشنهاد از سابقه حذف شود؟</translation>
+<translation id="6369229450655021117">از اینجا می‌توانید وب را جستجو کنید، با دوستان هم‌رسانی کنید و صفحات باز را ببینید</translation>
 <translation id="6378173571450987352">جزئیات: مرتب‌شده براساس مقدار داده استفاده‌شده</translation>
 <translation id="6383961787135158834">پاک کردن فضای ذخیره‌سازی سایت…</translation>
 <translation id="6388207532828177975">پاک کردن و بازنشانی</translation>
@@ -868,6 +871,7 @@
 <translation id="7649070708921625228">راهنما</translation>
 <translation id="7658239707568436148">لغو</translation>
 <translation id="7665369617277396874">افزودن حساب</translation>
+<translation id="7670842975141217779">‏دستیار Google‏‎\nدر Chrome</translation>
 <translation id="7682724950699840886">نکات زیر را امتحان کنید: مطمئن شوید که در دستگاهتان فضای کافی وجود داشته باشد، سعی کنید دوباره صادر کنید.</translation>
 <translation id="7698359219371678927">ایجاد ایمیل در <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">تکمیل خودکار جستجوها و نشانی‌های وب</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 e1309b5..5b9007f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Yksityisillä välilehdillä avaamasi sivut eivät jää selaimen historiaan, evästeisiin tai hakuhistoriaan, kun olet sulkenut kaikki yksityiset välilehdet. Kaikki lataamasi tiedostot ja luomasi kirjanmerkit säilytetään.
 
 Et ole kuitenkaan näkymätön. Yksityinen tila ei piilota selaustietojasi työnantajaltasi, internetpalveluntarjoajaltasi tai avaamiltasi verkkosivustoilta.</translation>
+<translation id="1260236875608242557">Hae ja tutki</translation>
 <translation id="1264974993859112054">Urheilu</translation>
 <translation id="127138278192656016">Käytä synkronointia ja kaikkia palveluja</translation>
 <translation id="1272079795634619415">Pysäytä</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">Tyhjentää kaikkien sisäänkirjautuneiden laitteiden historian. Google-tililläsi voi olla muuta toimintaa osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Mykistä ääniä toistavat sivustot</translation>
 <translation id="360207483134687714">Auta parantamaan Chromen virtuaalikokemusta.</translation>
+<translation id="3604604794717279723">Hyväksyn</translation>
 <translation id="3616113530831147358">Ääni</translation>
 <translation id="3630011985153972676">Salli asetuksista, että Chrome voi ladata puolestasi artikkeleita Wi-Fi-yhteydellä.</translation>
 <translation id="3632295766818638029">Paljasta salasana</translation>
@@ -692,6 +694,7 @@
 <translation id="6343192674172527289">Latauksia ei löytynyt.</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 ja <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> muu}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 ja <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> muuta}}</translation>
 <translation id="6364438453358674297">Poistetaanko ehdotus historiasta?</translation>
+<translation id="6369229450655021117">Tässä voit tehdä verkkohakuja, jakaa sisältöä kavereiden kanssa ja nähdä avoimet sivut</translation>
 <translation id="6378173571450987352">Lisätiedot: Lajiteltu käytetyn datan mukaan</translation>
 <translation id="6383961787135158834">Poista sivustotiedot…</translation>
 <translation id="6388207532828177975">Tyhjennä ja nollaa</translation>
@@ -869,6 +872,7 @@
 <translation id="7649070708921625228">Ohje</translation>
 <translation id="7658239707568436148">Peruuta</translation>
 <translation id="7665369617277396874">Lisää tili</translation>
+<translation id="7670842975141217779">Google Assistant\nChromessa</translation>
 <translation id="7682724950699840886">Kokeile seuraavia keinoja: varmista, että laitteellasi on tarpeeksi tilaa, yritä viedä uudelleen.</translation>
 <translation id="7698359219371678927">Luo sähköposti sovelluksessa <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Täydennä automaattisesti hakuja ja URL-osoitteita</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 2ea8333..43fadfc 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Ang mga page na tinitingnan mo sa mga pribadong tab ay hindi mananatili sa iyong history ng browser, cookie store, o history ng paghahanap pagkatapos mong isara ang lahat ng iyong pribadong tab. Itatago ang anumang file na ida-download mo o anumang bookmark na gagawin mo.
 
 Gayunpaman, hindi ka invisible. Kahit na nakapribado ka, makikita pa rin ng iyong employer, internet service provider, o mga binibisita mong website ang aktibidad mo sa pag-browse.</translation>
+<translation id="1260236875608242557">Maghanap at mag-explore</translation>
 <translation id="1264974993859112054">Pampalakasan</translation>
 <translation id="127138278192656016">Gamitin ang pag-sync at ang lahat ng serbisyo</translation>
 <translation id="1272079795634619415">Stop</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">Kini-clear ang history sa lahat ng naka-sign in na device. Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">I-mute ang mga site na nagpe-play ng tunog</translation>
 <translation id="360207483134687714">Tumulong na mapaganda ang karanasan sa VR sa Chrome</translation>
+<translation id="3604604794717279723">Tinatanggap ko</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Payagan ang Chrome na mag-download ng mga artikulo para sa iyo kapag gumagamit ng Wi-Fi sa ilalim ng mga setting.</translation>
 <translation id="3632295766818638029">I-unmask ang password</translation>
@@ -692,6 +694,7 @@
 <translation id="6343192674172527289">Walang nakitang download</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 at <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> iba pa}one{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 at <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> iba pa}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 at <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> na iba pa}}</translation>
 <translation id="6364438453358674297">Alisin ang suhestyon mula sa history?</translation>
+<translation id="6369229450655021117">Mula rito, maaari kang maghanap sa web, magbahagi sa mga kaibigan, at tumingin ng mga bukas na page</translation>
 <translation id="6378173571450987352">Mga detalye: Pinagbukud-bukod ayon sa laki ng nagamit na data</translation>
 <translation id="6383961787135158834">I-clear ang Storage ng Site…</translation>
 <translation id="6388207532828177975">I-clear at i-reset</translation>
@@ -869,6 +872,7 @@
 <translation id="7649070708921625228">Tulong</translation>
 <translation id="7658239707568436148">Ikansela</translation>
 <translation id="7665369617277396874">Magdagdag ng account</translation>
+<translation id="7670842975141217779">Google Assistant\nsa Chrome</translation>
 <translation id="7682724950699840886">Subukan ang mga sumusunod na tip: tiyaking may sapat na espasyo sa iyong device, at subukang mag-export muli.</translation>
 <translation id="7698359219371678927">Gumawa ng email sa <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Awtomatikong kumpletuhin ang mga paghahanap at URL</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 9a9eea7..1b354157 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -200,6 +200,7 @@
 <translation id="2450083983707403292">Želite li ponovo pokrenuti preuzimanje datoteke <ph name="FILE_NAME" />?</translation>
 <translation id="2476578072172137802">Postavke web-lokacije</translation>
 <translation id="2482878487686419369">Obavijesti</translation>
+<translation id="2494974097748878569">Google asistent u Chromeu</translation>
 <translation id="2496180316473517155">Povijest pregledavanja</translation>
 <translation id="2498359688066513246">Pomoć i povratne informacije</translation>
 <translation id="2501278716633472235">Natrag</translation>
@@ -681,6 +682,7 @@
 <translation id="6277522088822131679">Pojavio se problem prilikom ispisivanja stranice. Pokušajte ponovo.</translation>
 <translation id="6295158916970320988">Sve web-lokacije</translation>
 <translation id="629730747756840877">Račun</translation>
+<translation id="6302269476990306341">Zaustavljanje Google asistenta u Chromeu</translation>
 <translation id="6303969859164067831">Odjava i isključivanje sinkronizacije</translation>
 <translation id="6316139424528454185">Verzija Androida nije podržana</translation>
 <translation id="6320088164292336938">Omogući vibraciju</translation>
@@ -814,6 +816,7 @@
 <translation id="7250468141469952378">Odabrano: <ph name="ITEM_COUNT" /></translation>
 <translation id="7253272406652746122">Dodajte Google račun putem stranice Računi u aplikaciji Postavke na uređaju.</translation>
 <translation id="7274013316676448362">Blokirana web-lokacija</translation>
+<translation id="7291387454912369099">Naplata pomoću Asistenta</translation>
 <translation id="729975465115245577">Vaš uređaj nema aplikaciju za spremanje datoteke zaporki.</translation>
 <translation id="7302081693174882195">Pojedinosti: poredano prema količini ušteđenih podataka</translation>
 <translation id="7333031090786104871">I dalje se dodaje prethodna web-lokacija</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 c34d7e2..3533b6b 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Halaman yang Anda lihat dalam tab rahasia tidak akan disimpan di histori, penyimpanan cookie, atau histori penelusuran browser setelah semua tab rahasia ditutup. File apa pun yang didownload atau bookmark yang dibuat akan tetap tersimpan.
 
 Namun demikian, bukan berarti Anda sama sekali tidak terlihat. Menggunakan mode rahasia tidak akan menyembunyikan aktivitas browsing yang Anda lakukan dari atasan di kantor, dari internet service provider, maupun situs yang Anda buka.</translation>
+<translation id="1260236875608242557">Telusuri &amp; jelajahi</translation>
 <translation id="1264974993859112054">Olahraga</translation>
 <translation id="127138278192656016">Gunakan sinkronisasi dan semua layanan</translation>
 <translation id="1272079795634619415">Berhenti</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Menghapus histori dari semua perangkat yang dibuat login. Akun Google Anda mungkin memiliki bentuk histori browsing lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Mematikan suara situs yang memutar suara</translation>
 <translation id="360207483134687714">Bantu membuat VR di Chrome menjadi lebih baik</translation>
+<translation id="3604604794717279723">Saya setuju</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Izinkan Chrome mendownload artikel untuk Anda melalui Wi-Fi di bagian setelan.</translation>
 <translation id="3632295766818638029">Tampilkan sandi</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Tidak ada file download</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> lainnya}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> lainnya}}</translation>
 <translation id="6364438453358674297">Hapus saran dari histori?</translation>
+<translation id="6369229450655021117">Dari sini, Anda dapat menelusuri web, berbagi dengan teman, dan melihat halaman yang terbuka</translation>
 <translation id="6378173571450987352">Detail: Diurutkan menurut jumlah kuota yang digunakan</translation>
 <translation id="6383961787135158834">Hapus Penyimpanan Situs…</translation>
 <translation id="6388207532828177975">Hapus &amp; setel ulang</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7665369617277396874">Tambahkan akun</translation>
+<translation id="7670842975141217779">Asisten Google\ndi Chrome</translation>
 <translation id="7682724950699840886">Coba tips berikut ini: pastikan ruang di perangkat Anda mencukupi, lalu coba ekspor lagi.</translation>
 <translation id="7698359219371678927">Buat email di <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Lengkapi otomatis penelusuran dan URL</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 a8d4f229..49b1c371 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Le pagine visualizzate nelle schede di navigazione privata non vengono memorizzate nella cronologia del browser, nell'archivio di cookie o nella cronologia delle ricerche dopo aver chiuso tutte le schede. I file da te scaricati o i Preferiti da te creati vengono mantenuti.
 
 Tuttavia, le tue attività non sono invisibili. L'attivazione della modalità di navigazione privata non consente di nascondere la navigazione al datore di lavoro, al provider di servizi Internet o ai siti web che visiti.</translation>
+<translation id="1260236875608242557">Cerca ed esplora</translation>
 <translation id="1264974993859112054">Sport</translation>
 <translation id="127138278192656016">Usa la sincronizzazione e tutti i servizi</translation>
 <translation id="1272079795634619415">Interrompi</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Consente di cancellare la cronologia da tutti i dispositivi su cui hai eseguito l'accesso. Il tuo account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Disattiva l'audio nei siti che riproducono suoni</translation>
 <translation id="360207483134687714">Contribuisci a migliorare l'esperienza di realtà virtuale in Chrome</translation>
+<translation id="3604604794717279723">Accetto</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Consenti a Chrome di scaricare gli articoli quando è attiva la connessione Wi-Fi.</translation>
 <translation id="3632295766818638029">Visualizza password</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Nessun download trovato</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e altri <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e altri <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation>
 <translation id="6364438453358674297">Rimuovere il suggerimento dalla cronologia?</translation>
+<translation id="6369229450655021117">Da qui puoi eseguire ricerche sul Web, condividere contenuti con amici e vedere le pagine aperte.</translation>
 <translation id="6378173571450987352">Dettagli: ordinati per quantità di dati utilizzati</translation>
 <translation id="6383961787135158834">Elimina memoria siti…</translation>
 <translation id="6388207532828177975">Cancella e reimposta</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Guida</translation>
 <translation id="7658239707568436148">Annulla</translation>
 <translation id="7665369617277396874">Aggiungi account</translation>
+<translation id="7670842975141217779">Assistente Google\nin Chrome</translation>
 <translation id="7682724950699840886">Prova i seguenti suggerimenti: assicurati di avere spazio sufficiente sul dispositivo e prova a esportare di nuovo.</translation>
 <translation id="7698359219371678927">Crea email in <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completamento automatico di ricerche e URL</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 545e81e..ce986f32 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -137,7 +137,7 @@
 <translation id="1989112275319619282">דפדף</translation>
 <translation id="1993768208584545658"><ph name="SITE" /> רוצה לבצע התאמה עם</translation>
 <translation id="1994173015038366702">כתובת אתר</translation>
-<translation id="2000419248597011803">‏שליחה של חלק מקובצי ה-Cookie והחיפושים מסרגל הכתובות ומתיבת החיפוש אל מנוע החיפוש שהוגדר כברירת מחדל</translation>
+<translation id="2000419248597011803">‏שליחה של חלק מקובצי ה-Cookie והחיפושים משורת כתובת האתר ומתיבת החיפוש אל מנוע החיפוש שהוגדר כברירת מחדל</translation>
 <translation id="2002537628803770967">‏כרטיסי אשראי וכתובות דרך Google Pay</translation>
 <translation id="200815880754187296">‏‎<ph name="KILOBYTES" /> KB ליישומים אחרים</translation>
 <translation id="2017836877785168846">ניקוי של ההיסטוריה וההשלמות האוטומטיות בשורת כתובת האתר</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 afee336..efd094d0 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Halaman yang anda lihat dalam tab peribadi tidak akan kekal dalam sejarah, simpanan kuki atau sejarah carian penyemak imbas anda selepas anda menutup semua tab peribadi anda. Sebarang fail yang dimuat turun atau penanda halaman yang anda buat akan disimpan.
 
 Namun begitu, anda tidak halimunan. Menggunakan mod peribadi tidak menyembunyikan penyemakan imbas anda daripada majikan anda, penyedia perkhidmatan Internet anda atau tapak web yang anda lawati.</translation>
+<translation id="1260236875608242557">Cari &amp; teroka</translation>
 <translation id="1264974993859112054">Sukan</translation>
 <translation id="127138278192656016">Gunakan penyegerakan dan semua perkhidmatan</translation>
 <translation id="1272079795634619415">Berhenti</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">Mengosongkan sejarah daripada semua peranti yang dilog masuk. Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Redam tapak yang memainkan bunyi</translation>
 <translation id="360207483134687714">Bantu memperbaik pengalaman VR dalam Chrome</translation>
+<translation id="3604604794717279723">Saya terima</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Benarkan Chrome memuat turun artikel untuk anda apabila menggunakan Wi-Fi di bawah tetapan.</translation>
 <translation id="3632295766818638029">Buka topeng kata laluan</translation>
@@ -692,6 +694,7 @@
 <translation id="6343192674172527289">Tiada muat turun ditemui</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> lagi}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> lagi}}</translation>
 <translation id="6364438453358674297">Alih keluar cadangan daripada sejarah?</translation>
+<translation id="6369229450655021117">Dari sini, anda boleh membuat carian di web, berkongsi dengan rakan dan melihat halaman yang terbuka</translation>
 <translation id="6378173571450987352">Butiran: Diisih mengikut jumlah data yang digunakan</translation>
 <translation id="6383961787135158834">Kosongkan Storan Tapak...</translation>
 <translation id="6388207532828177975">Kosongkan &amp; tetapkan semula</translation>
@@ -869,6 +872,7 @@
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7665369617277396874">Tambah akaun</translation>
+<translation id="7670842975141217779">Google Assistant\ndalam Chrome</translation>
 <translation id="7682724950699840886">Cuba petua berikut: pastikan ruang pada peranti anda mencukupi, cuba eksport sekali lagi.</translation>
 <translation id="7698359219371678927">Buat e-mel dalam <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autolengkap carian dan URL</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 a00e0af..edbde64 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Po zamknięciu wszystkich kart prywatnych wyświetlane na nich strony nie pozostawią żadnych śladów w historii przeglądarki, magazynie plików cookie ani historii wyszukiwania. Pobrane pliki i utworzone zakładki zostaną zachowane.
 
 To jednak nie oznacza, że Cię nie widać. Nawet gdy przejdziesz w tryb prywatny, Twój pracodawca, dostawca internetu czy administratorzy odwiedzanych stron mogą dowiedzieć się, co przeglądasz.</translation>
+<translation id="1260236875608242557">Szukaj i przeglądaj</translation>
 <translation id="1264974993859112054">Sport</translation>
 <translation id="127138278192656016">Używaj synchronizacji i wszystkich usług</translation>
 <translation id="1272079795634619415">Zatrzymaj</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Usuwa historię ze wszystkich urządzeń, na których jesteś zalogowany. Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Wycisz strony, które odtwarzają dźwięk</translation>
 <translation id="360207483134687714">Pomóż ulepszyć korzystanie z Chrome w rzeczywistości wirtualnej</translation>
+<translation id="3604604794717279723">Zgadzam się</translation>
 <translation id="3616113530831147358">Dźwięk</translation>
 <translation id="3630011985153972676">W ustawieniach możesz zezwolić Chrome na pobieranie artykułów dla Ciebie, gdy używasz Wi-Fi.</translation>
 <translation id="3632295766818638029">Pokaż hasło</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Brak pobranych plików</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i jeszcze <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}few{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i jeszcze <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}many{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i jeszcze <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 i jeszcze <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation>
 <translation id="6364438453358674297">Usunąć sugestię z historii?</translation>
+<translation id="6369229450655021117">Tutaj możesz wyszukiwać informacje w internecie, udostępniać treści znajomym i przeglądać otwarte strony</translation>
 <translation id="6378173571450987352">Szczegóły: posortowane według wykorzystanych danych</translation>
 <translation id="6383961787135158834">Wyczyść dane witryn…</translation>
 <translation id="6388207532828177975">Wyczyść i zresetuj</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Pomoc</translation>
 <translation id="7658239707568436148">Anuluj</translation>
 <translation id="7665369617277396874">Dodaj konto</translation>
+<translation id="7670842975141217779">Asystent Google\nw Chrome</translation>
 <translation id="7682724950699840886">Skorzystaj z tych wskazówek: upewnij się, że masz wystarczająco dużo miejsca na urządzeniu, i ponownie spróbuj wyeksportować hasła.</translation>
 <translation id="7698359219371678927">Utwórz e-maila w aplikacji <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autouzupełniaj wyszukiwania i adresy URL</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 a6a8bed..cbe0299 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
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">As páginas visitadas em guias privadas não são armazenadas no histórico do navegador, nos cookies nem no histórico de pesquisa depois que todas as guias privadas são fechadas. Todos os arquivos transferidos por download ou favoritos criados serão mantidos.
 
 Porém, você não está invisível, O modo privado não oculta sua navegação do seu empregador, seu provedor de Internet ou dos sites visitados.</translation>
+<translation id="1260236875608242557">Pesquisar e explorar</translation>
 <translation id="1264974993859112054">Esportes</translation>
 <translation id="127138278192656016">Usar a sincronização e todos os serviços</translation>
 <translation id="1272079795634619415">Parar</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Limpa o histórico de todos os dispositivos conectados. Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Silenciar sites que reproduzem sons</translation>
 <translation id="360207483134687714">Ajude a melhorar a experiência de realidade virtual no Chrome</translation>
+<translation id="3604604794717279723">Aceito</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3630011985153972676">Permitir que o Chrome faça o download de artigos para você quando conectado ao Wi-Fi nas configurações.</translation>
 <translation id="3632295766818638029">Reautenticar para ver senha</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Nenhum download encontrado</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e mais <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}one{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e mais <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e mais <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation>
 <translation id="6364438453358674297">Remover sugestão do histórico?</translation>
+<translation id="6369229450655021117">Aqui, é possível pesquisar na Web, compartilhar itens com os amigos e ver as páginas abertas</translation>
 <translation id="6378173571450987352">Detalhes: classificados pela quantidade de dados usados</translation>
 <translation id="6383961787135158834">Limpar armaz. de sites…</translation>
 <translation id="6388207532828177975">Limpar e redefinir</translation>
@@ -816,7 +819,7 @@
 <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> itens selecionados</translation>
 <translation id="7253272406652746122">Adicione uma Conta do Google na página de "Contas" do app "Config." do seu dispositivo.</translation>
 <translation id="7274013316676448362">Site bloqueado</translation>
-<translation id="7291387454912369099">Caixa acionado pelo Assistente</translation>
+<translation id="7291387454912369099">Finalizar compras no Assistente</translation>
 <translation id="729975465115245577">Seu dispositivo não tem um app para armazenar o arquivo de senhas.</translation>
 <translation id="7302081693174882195">Detalhes: classificados pela quantidade de dados economizados</translation>
 <translation id="7333031090786104871">Ainda adicionando o site anterior</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7665369617277396874">Adicionar conta</translation>
+<translation id="7670842975141217779">Google Assistente\nno Chrome</translation>
 <translation id="7682724950699840886">Experimente as seguintes dicas: verifique se há espaço suficiente no dispositivo e tente exportar novamente.</translation>
 <translation id="7698359219371678927">Criar e-mail no <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Preencher automaticamente pesquisas e URLs</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 e6782cf8..e07b4e3 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
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">As páginas que visualizar em separadores privados não serão guardadas no histórico do navegador, no armazenamento de cookies ou no histórico de pesquisas depois de fechar todos os separadores privados. Os ficheiros que transferir ou os marcadores que criar manter-se-ão.
 
 No entanto, a navegação não é invisível. Passar para o modo privado não oculta a navegação do empregador, do fornecedor de serviços de Internet nem dos Websites que visitar.</translation>
+<translation id="1260236875608242557">Pesquisar e explorar</translation>
 <translation id="1264974993859112054">Desporto</translation>
 <translation id="127138278192656016">Utilizar a sincronização e todos os serviços</translation>
 <translation id="1272079795634619415">Parar</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Limpa o histórico de todos os dispositivos com sessão iniciada. A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Desativar o som dos sites que reproduzem som</translation>
 <translation id="360207483134687714">Ajude a melhorar a experiência de RV no Chrome</translation>
+<translation id="3604604794717279723">Aceito</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3630011985153972676">Permita que o Chrome lhe transfira artigos quando ligado ao Wi-Fi nas definições.</translation>
 <translation id="3632295766818638029">Desmascarar palavra-passe</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Nenhuma transferência encontrada</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e mais <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e mais <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation>
 <translation id="6364438453358674297">Pretende remover a sugestão do histórico?</translation>
+<translation id="6369229450655021117">A partir daqui, pode pesquisar na Web, partilhar com amigos e ver as páginas abertas.</translation>
 <translation id="6378173571450987352">Detalhes: ordenado por quantidade de dados utilizados</translation>
 <translation id="6383961787135158834">Limpar armazen. do site…</translation>
 <translation id="6388207532828177975">Limpar e repor</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7665369617277396874">Adicionar conta</translation>
+<translation id="7670842975141217779">Assistente Google\nno Chrome</translation>
 <translation id="7682724950699840886">Experimente as seguintes sugestões: certifique-se de que existe espaço suficiente no dispositivo e tente exportar novamente.</translation>
 <translation id="7698359219371678927">Criar email no <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Pesquisas de preenchimento automático e URLs</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 7307380..4609c7f9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Paginile pe care le vezi în filele private nu vor fi înregistrate în istoricul browserului, nu vor stoca cookie-uri și nu vor rămâne în istoricul de căutare după ce închizi toate filele private. Fișierele descărcate și marcajele create vor fi păstrate.
 
 Totuși, nu ești invizibil(ă). Trecerea în modul privat nu ascunde activitatea de navigare față de angajator, față de furnizorul de servicii de internet sau față de site-urile pe care le accesezi.</translation>
+<translation id="1260236875608242557">Caută și explorează</translation>
 <translation id="1264974993859112054">Sport</translation>
 <translation id="127138278192656016">Folosește sincronizarea și toate serviciile</translation>
 <translation id="1272079795634619415">Oprește</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Șterge istoricul de pe toate dispozitivele conectate. Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Dezactivează sunetul pentru site-urile care îl redau</translation>
 <translation id="360207483134687714">Ajută la îmbunătățirea experienței RV în Chrome</translation>
+<translation id="3604604794717279723">Accept</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3630011985153972676">Permite serviciului Chrome să descarce articole pentru tine după conectarea la Wi-Fi în setări.</translation>
 <translation id="3632295766818638029">Afișează parola</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Nu s-a găsit nicio descărcare</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 și încă <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}few{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 și încă <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 și încă <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation>
 <translation id="6364438453358674297">Elimini sugestia din istoric?</translation>
+<translation id="6369229450655021117">De aici, poți să cauți pe web, să trimiți fișiere prietenilor și să vezi paginile deschise</translation>
 <translation id="6378173571450987352">Detalii: sortate după volumul de date folosite</translation>
 <translation id="6383961787135158834">Șterge stocare site-uri…</translation>
 <translation id="6388207532828177975">Șterge și resetează</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Ajutor</translation>
 <translation id="7658239707568436148">Anulează</translation>
 <translation id="7665369617277396874">Adăugați un cont</translation>
+<translation id="7670842975141217779">Asistentul Google\nîn Chrome</translation>
 <translation id="7682724950699840886">Încearcă următoarele sfaturi: asigură-te că există spațiu suficient pe dispozitiv, încearcă să exporți din nou.</translation>
 <translation id="7698359219371678927">Creează un e-mail în <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completează automat căutările și adresele URL</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 b116f84d..20b7240 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Информация о страницах, открытых в режиме инкогнито, не сохраняется. Это касается файлов cookie, а также истории браузера или поиска. После того как вы закроете эти вкладки, останутся только скачанные файлы и добавленные закладки.
 
 Однако в режиме инкогнито ваши действия видны системному администратору и интернет-провайдеру, а также доступны сайтам, которые вы посещаете.</translation>
+<translation id="1260236875608242557">Поиск и рекомендации</translation>
 <translation id="1264974993859112054">Спорт</translation>
 <translation id="127138278192656016">Включить синхронизацию и все сервисы Chrome</translation>
 <translation id="1272079795634619415">Остановить</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">Удаление истории со всех устройств, на которых выполнен вход в аккаунт. Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Отключить звуки на сайтах</translation>
 <translation id="360207483134687714">Помогите улучшить VR-режим в Chrome</translation>
+<translation id="3604604794717279723">Принимаю</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3630011985153972676">Перейдите в настройки и предоставьте Chrome разрешение скачивать статьи только по сети Wi-Fi.</translation>
 <translation id="3632295766818638029">Показать пароль</translation>
@@ -692,6 +694,7 @@
 <translation id="6343192674172527289">Ничего не найдено</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> адрес доставки}one{<ph name="SHIPPING_ADDRESS_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> адрес доставки}few{<ph name="SHIPPING_ADDRESS_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> адреса доставки}many{<ph name="SHIPPING_ADDRESS_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> адресов доставки}other{<ph name="SHIPPING_ADDRESS_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> адреса доставки}}</translation>
 <translation id="6364438453358674297">Удалить подсказку из истории?</translation>
+<translation id="6369229450655021117">Здесь вы можете искать информацию онлайн, отправлять ее друзьям и просматривать открытые страницы</translation>
 <translation id="6378173571450987352">Сортировка по объему использованного трафика</translation>
 <translation id="6383961787135158834">Удалить данные сайтов</translation>
 <translation id="6388207532828177975">Очистить и сбросить</translation>
@@ -869,6 +872,7 @@
 <translation id="7649070708921625228">Справка</translation>
 <translation id="7658239707568436148">Отмена</translation>
 <translation id="7665369617277396874">Добавить аккаунт</translation>
+<translation id="7670842975141217779">Google Ассистент\nв Chrome</translation>
 <translation id="7682724950699840886">Убедитесь, что на вашем устройстве достаточно свободного места. Затем снова попробуйте экспортировать пароли.</translation>
 <translation id="7698359219371678927">Написать письмо в приложении "<ph name="APP_NAME" />"</translation>
 <translation id="7704317875155739195">Заполнять поисковые запросы и URL автоматически</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 9ea9e35f..6bccbda2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Stránky, ktoré si zobrazíte na súkromných kartách, budú odstránené z histórie prehliadača, z histórie vyhľadávania aj zo súborov cookie okamžite po zatvorení všetkých súkromných kariet. Stiahnuté súbory a záložky, ktoré vytvoríte, ostanú uložené.
 
 Nie ste však neviditeľný/-á. Používanie súkromného režimu neukryje vaše prehliadanie pred zamestnávateľom, poskytovateľom internetových služieb či webmi, ktoré navštívite.</translation>
+<translation id="1260236875608242557">Prehľadať a preskúmať</translation>
 <translation id="1264974993859112054">Šport</translation>
 <translation id="127138278192656016">Používať synchronizáciu a všetky služby</translation>
 <translation id="1272079795634619415">Zastaviť</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Vymaže históriu zo všetkých prihlásených zariadení. Váš účet Google môže mať ďalšie formy histórie prehliadania na adrese <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Vypnutie zvuku webov, ktoré prehrávajú zvuk</translation>
 <translation id="360207483134687714">Pomôžte zlepšiť prostredie VR v Chrome</translation>
+<translation id="3604604794717279723">Súhlasím</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3630011985153972676">V nastaveniach povoľte Chromu sťahovať články počas pripojenia k sieti Wi‑Fi.</translation>
 <translation id="3632295766818638029">Odhaliť heslo</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Nenašli sa žiadne stiahnuté súbory</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšia}few{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšie}many{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšej}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalších}}</translation>
 <translation id="6364438453358674297">Odstrániť návrh z histórie?</translation>
+<translation id="6369229450655021117">Môžete v ňom vyhľadávať na internete, zdieľať obsah s priateľmi a prezerať otvorené stránky</translation>
 <translation id="6378173571450987352">Podrobnosti: zoradené podľa množstva využitých dát</translation>
 <translation id="6383961787135158834">Vymazať úložisko webu…</translation>
 <translation id="6388207532828177975">Vymazať a resetovať</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Pomocník</translation>
 <translation id="7658239707568436148">Zrušiť</translation>
 <translation id="7665369617277396874">Pridať účet</translation>
+<translation id="7670842975141217779">Asistent Google\nv Chrome</translation>
 <translation id="7682724950699840886">Skúste tieto tipy: Uistite sa, že máte v zariadení dosť miesta, a potom skúste znova spustiť exportovanie.</translation>
 <translation id="7698359219371678927">Vytvorte správu v aplikácii <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Automaticky dopĺňať vyhľadávania a webové adresy</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 e65ad5c..af99a0cb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Sidor du öppnar på en privat flik sparas inte i webbläsarhistoriken och lagras inte bland cookies eller i sökhistoriken när du har stängt alla privata flikar. Däremot sparas alla filer du laddar ned och bokmärken du skapar.
 
 Du är dock inte osynlig. Även om du surfar privat kan din arbetsgivare, din internetleverantör eller de webbplatser du besöker se din aktivitet.</translation>
+<translation id="1260236875608242557">Sök och utforska</translation>
 <translation id="1264974993859112054">Sport</translation>
 <translation id="127138278192656016">Använd synkronisering och alla tjänster</translation>
 <translation id="1272079795634619415">Stopp</translation>
@@ -200,6 +201,7 @@
 <translation id="2450083983707403292">Vill du börja ladda ned <ph name="FILE_NAME" /> igen?</translation>
 <translation id="2476578072172137802">Inställningar för webbplatsen</translation>
 <translation id="2482878487686419369">Aviseringar</translation>
+<translation id="2494974097748878569">Google-assistenten i Chrome</translation>
 <translation id="2496180316473517155">Webbhistorik</translation>
 <translation id="2498359688066513246">Hjälp och feedback</translation>
 <translation id="2501278716633472235">Föregående</translation>
@@ -329,6 +331,7 @@
 <translation id="3599863153486145794">Historik rensas från alla inloggade enheter. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Stäng av ljudet på webbplatser</translation>
 <translation id="360207483134687714">Hjälp oss att förbättra VR-upplevelsen i Chrome</translation>
+<translation id="3604604794717279723">Godkänn</translation>
 <translation id="3616113530831147358">Ljud</translation>
 <translation id="3630011985153972676">Tillåt att artiklar laddas ned åt dig i Chrome när Wi-Fi används i inställningarna.</translation>
 <translation id="3632295766818638029">Visa lösenord</translation>
@@ -681,6 +684,7 @@
 <translation id="6277522088822131679">Det gick inte att skriva ut sidan. Försök igen.</translation>
 <translation id="6295158916970320988">Alla webbplatser</translation>
 <translation id="629730747756840877">Konto</translation>
+<translation id="6302269476990306341">Google-assistenten i Chrome stoppas</translation>
 <translation id="6303969859164067831">Logga ut och inaktivera synkronisering</translation>
 <translation id="6316139424528454185">Android-versionen stöds inte</translation>
 <translation id="6320088164292336938">Vibration</translation>
@@ -692,6 +696,7 @@
 <translation id="6343192674172527289">Inga nedladdningar hittades</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 och <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> till}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 och <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> till}}</translation>
 <translation id="6364438453358674297">Vill du ta bort förslaget från historiken?</translation>
+<translation id="6369229450655021117">Härifrån kan du söka på webben, dela med vänner och visa öppna sidor</translation>
 <translation id="6378173571450987352">Mer information: Sorterad efter dataförbrukning</translation>
 <translation id="6383961787135158834">Rensa webbplatslagring …</translation>
 <translation id="6388207532828177975">Ta bort och återställ</translation>
@@ -814,6 +819,7 @@
 <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> har valts</translation>
 <translation id="7253272406652746122">Lägg till ett Google-konto från kontosidan i appen Inställningar på enheten.</translation>
 <translation id="7274013316676448362">Blockerad webbplats</translation>
+<translation id="7291387454912369099">Betalning med assistenten</translation>
 <translation id="729975465115245577">Det finns ingen app som kan spara lösenordsfilen på enheten.</translation>
 <translation id="7302081693174882195">Mer information: Sorterad efter databesparing</translation>
 <translation id="7333031090786104871">Processen pågår fortfarande för den förra webbplatsen</translation>
@@ -869,6 +875,7 @@
 <translation id="7649070708921625228">Hjälp</translation>
 <translation id="7658239707568436148">Avbryt</translation>
 <translation id="7665369617277396874">Lägg till konto</translation>
+<translation id="7670842975141217779">Google Assistent\ni Chrome</translation>
 <translation id="7682724950699840886">Testa följande: kontrollera att det finns tillräckligt mycket utrymme på enheten, gör om exporten.</translation>
 <translation id="7698359219371678927">Skapa ett e-postmeddelande i <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autoslutför sökningar och webbadresser</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 1140d51..455d787 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">Kurasa unazoziangalia katika vichupo vya faragha hazitahifadhiwa katika historia ya kivinjari, hifadhi ya vidakuzi au historia ya mambo uliyotafuta, ukishafunga vichupo vyako vyote vya faragha. Faili zozote unazopakua au alamisho unazounda hazitafutwa.
 
 Hata hivyo, hautaficha kila kitu. Hatua ya kutumia hali ya faragha haifichi kuvinjari kwako kusionekane kwa mwajiri, mtoa huduma za intaneti au tovuti unazotembelea.</translation>
+<translation id="1260236875608242557">Tafuta na ugundue</translation>
 <translation id="1264974993859112054">Michezo</translation>
 <translation id="127138278192656016">Tumia kipengele cha usawazishaji na huduma zote</translation>
 <translation id="1272079795634619415">Simamisha</translation>
@@ -330,6 +331,7 @@
 <translation id="3599863153486145794">Hufuta historia kwenye vifaa vyote ulivyotumia kuingia katika akaunti. Huenda Akaunti yako ya Google ikawa na aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600792891314830896">Zima sauti katika tovuti</translation>
 <translation id="360207483134687714">Tusaidie kuboresha hali ya utumiaji wa VR katika Chrome kwa kutoa maoni yako</translation>
+<translation id="3604604794717279723">Ninakubali</translation>
 <translation id="3616113530831147358">Sauti</translation>
 <translation id="3630011985153972676">Ruhusu Chrome ikupakulie makala unapotumia muunganisho wa Wi-Fi kwenye mipangilio.</translation>
 <translation id="3632295766818638029">Onyesha nenosiri</translation>
@@ -694,6 +696,7 @@
 <translation id="6343192674172527289">Hakuna vipakuliwa vilivyopatikana</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 na <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> zaidi}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 na <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> zaidi}}</translation>
 <translation id="6364438453358674297">Je, ungependa kuondoa pendekezo kwenye historia?</translation>
+<translation id="6369229450655021117">Ukiwa hapa, unaweza kutafuta kwenye wavuti, kushiriki na marafiki na kuona kurasa ambazo zimefunguliwa</translation>
 <translation id="6378173571450987352">Maelezo: Imepangwa kulingana na kiasi cha data inayotumiwa</translation>
 <translation id="6383961787135158834">Futa Hifadhi ya Tovuti...</translation>
 <translation id="6388207532828177975">Futa na uweke upya</translation>
@@ -872,6 +875,7 @@
 <translation id="7649070708921625228">Usaidizi</translation>
 <translation id="7658239707568436148">Ghairi</translation>
 <translation id="7665369617277396874">Ongeza akaunti</translation>
+<translation id="7670842975141217779">Mratibu wa Google\nkatika Chrome</translation>
 <translation id="7682724950699840886">Jaribu vidokezo vifuatavyo: Hakikisha kuwa una nafasi ya kutosha kwenye kifaa chako kisha ujaribu kuihamisha tena.</translation>
 <translation id="7698359219371678927">Tunga barua pepe katika <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Jaza kiotomatiki URL na hoja za utafutaji</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 65e65c8..5e85a0d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
@@ -39,6 +39,7 @@
 <translation id="1259100630977430756">அனைத்து மறைநிலைத் தாவல்களையும் மூடிய பின்னர், நீங்கள் பார்த்த பக்கங்களை உலாவியின் வரலாறு, குக்கீ சேமிப்பகம் அல்லது தேடல் வரலாற்றில் பார்க்க முடியாது. நீங்கள் பதிவிறக்கிய கோப்புகள் அல்லது உருவாக்கிய புத்தகக்குறிகள் அப்படியே இருக்கும்.
 
 எனினும், நீங்கள் முற்றிலும் மறைந்திருக்க மாட்டீர்கள். மறைநிலைக்குச் சென்றாலும், உங்களைப் பணியமர்த்தியுள்ளவர், இணையச் சேவை வழங்குநர் அல்லது நீங்கள் செல்லும் இணையதளங்களால் உங்கள் உலாவல் தகவலைப் பார்க்க முடியும்.</translation>
+<translation id="1260236875608242557">இணையத்தில் தேடுக &amp; உள்ளடக்கங்களை உலாவுக</translation>
 <translation id="1264974993859112054">விளையாட்டு</translation>
 <translation id="127138278192656016">ஒத்திசைவையும் அனைத்துச் சேவைகளையும் பயன்படுத்து</translation>
 <translation id="1272079795634619415">நிறுத்து</translation>
@@ -329,6 +330,7 @@
 <translation id="3599863153486145794">உள்நுழைந்த எல்லாச் சாதனங்களிலிருந்தும் வரலாற்றை அழிக்கும். உங்கள் Google கணக்கு, <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> என்ற இணைப்பில் உலாவல் வரலாறு தொடர்பான பிற தகவல்களைக் கொண்டிருக்கக்கூடும்.</translation>
 <translation id="3600792891314830896">ஒலியை இயக்கும் தளங்களில் ஒலியடக்கு</translation>
 <translation id="360207483134687714">Chrome இல் VR அனுபவத்தை மேம்படுத்த உதவவும்</translation>
+<translation id="3604604794717279723">ஏற்கிறேன்</translation>
 <translation id="3616113530831147358">ஆடியோ</translation>
 <translation id="3630011985153972676">வைஃபை இணைப்பில் இருக்கும்போது கட்டுரைகளைப் பதிவிறக்க, அமைப்புகளில் Chromeமுக்கு அனுமதியளிக்கலாம்.</translation>
 <translation id="3632295766818638029">கடவுச்சொல்லைக் காட்டும்</translation>
@@ -692,6 +694,7 @@
 <translation id="6343192674172527289">பதிவிறக்கங்கள் எதுவுமில்லை</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 மற்றும் <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> முகவரி}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 மற்றும் <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> முகவரிகள்}}</translation>
 <translation id="6364438453358674297">வரலாற்றிலிருந்து பரிந்துரையை அகற்றவா?</translation>
+<translation id="6369229450655021117">இங்கிருந்தபடியே இணையத்தில் தேடலாம், நண்பர்களுடன் உள்ளடக்கங்களைப் பகிரலாம், திறந்துள்ள பக்கங்களைப் பார்க்கலாம்</translation>
 <translation id="6378173571450987352">விவரங்கள்: பயன்படுத்திய டேட்டா அளவின்படி வரிசைப்படுத்தப்பட்டுள்ளன</translation>
 <translation id="6383961787135158834">தளச் சேமிப்பகத்தை அழி…</translation>
 <translation id="6388207532828177975">அழித்து, மீட்டமைக்கவும்</translation>
@@ -869,6 +872,7 @@
 <translation id="7649070708921625228">உதவி</translation>
 <translation id="7658239707568436148">ரத்து செய்</translation>
 <translation id="7665369617277396874">கணக்கைச் சேர்</translation>
+<translation id="7670842975141217779">Chromeமில்\nGoogle அசிஸ்டண்ட்</translation>
 <translation id="7682724950699840886">பின்வரும் உதவிக்குறிப்புகளை முயன்று பார்க்கவும்: சாதனத்தில் போதுமான சேமிப்பிடம் இருப்பதை உறுதிப்படுத்தி, மீண்டும் ஏற்ற முயலவும்.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> இல் மின்னஞ்சலை உருவாக்கவும்</translation>
 <translation id="7704317875155739195">தேடல்களையும் URLகளையும் தானே நிரப்பு</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 2defe1d..9c85b00 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
@@ -9,11 +9,11 @@
 <translation id="10614374240317010">ఎప్పటికి సేవ్ చెయ్యబడవు</translation>
 <translation id="1067922213147265141">ఇతర Google సేవలు</translation>
 <translation id="1068672505746868501"><ph name="SOURCE_LANGUAGE" />లో ఉన్న పేజీలను ఎప్పుడూ అనువదించవద్దు</translation>
-<translation id="1080790410959514870">మీరు <ph name="DOMAIN_NAME" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ అవుతున్నారు. దీని వలన ఈ పరికరంలో నిల్వ చేయబడిన Chrome డేటా తొలగించబడుతుంది, కానీ మీ Google ఖాతాలో డేటా అలాగే ఉంటుంది.</translation>
+<translation id="1080790410959514870">మీరు <ph name="DOMAIN_NAME" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ అవుతున్నారు. దీని వ‌ల్ల ఈ పరికరంలో నిల్వ చేయబడిన Chrome డేటా తొలగించబడుతుంది. కానీ మీ Google ఖాతాలో డేటా అలాగే ఉంటుంది.</translation>
 <translation id="1105960400813249514">స్క్రీన్ క్యాప్చర్</translation>
 <translation id="1111673857033749125">మీ ఇతర పరికరాల్లో సేవ్ చేసిన బుక్‌మార్క్‌లు ఇక్కడ చూపబడతాయి.</translation>
 <translation id="1113597929977215864">సరళీకృత వీక్షణను చూపు</translation>
-<translation id="1121094540300013208">వినియోగ మరియు క్రాష్ నివేదికలు</translation>
+<translation id="1121094540300013208">వినియోగ, క్రాష్ నివేదికలు</translation>
 <translation id="1129510026454351943">వివరాలు: <ph name="ERROR_DESCRIPTION" /></translation>
 <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 డౌన్‌లోడ్ పెండింగ్‌లో ఉంది.}other{# డౌన్‌లోడ్‌లు పెండింగ్‌లో ఉన్నాయి.}}</translation>
 <translation id="1145536944570833626">ఇప్పటికే ఉన్న డేటాను తొలగించండి.</translation>
@@ -210,7 +210,7 @@
 <translation id="2546283357679194313">కుక్కీలు మరియు సైట్ డేటా</translation>
 <translation id="2567385386134582609">చిత్రం</translation>
 <translation id="2570922361219980984">ఈ పరికరానికి స్థానం యాక్సెస్ కూడా ఆఫ్ చేయబడింది. దీనిని <ph name="BEGIN_LINK" />Android సెట్టింగ్‌లు<ph name="END_LINK" />లో తిరిగి ఆన్ చేయండి.</translation>
-<translation id="257931822824936280">విస్తరింపజేయబడింది - కుదించడానికి క్లిక్ చేయండి.</translation>
+<translation id="257931822824936280">విస్తరింపబడింది - కుదించడానికి క్లిక్ చేయండి.</translation>
 <translation id="2581165646603367611">ఇది Chrome ముఖ్యమైనదిగా భావించని కుక్కీలు, కాష్ మరియు సైట్‌ల యొక్క ఇతర డేటాను తీసివేస్తుంది.</translation>
 <translation id="2586657967955657006">క్లిప్‌బోర్డ్</translation>
 <translation id="2587052924345400782">సరికొత్త సంస్కరణ ఉంది</translation>
@@ -290,7 +290,7 @@
 <translation id="3254409185687681395">ఈ పేజీని బుక్‌మార్క్ చెయ్యి</translation>
 <translation id="3259831549858767975">పేజీలోని అన్నింటినీ చిన్నవిగా చేయండి</translation>
 <translation id="3269093882174072735">చిత్రాన్ని లోడ్ చేయి</translation>
-<translation id="3269956123044984603">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Android ఖాతా సెట్టింగ్‌ల్లో "డేటా స్వీయ-సమకాలీకరణ" ఆన్ చేయండి.</translation>
+<translation id="3269956123044984603">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Android ఖాతా సెట్టింగ్‌ల‌లో "ఆటో-సింక్‌ డేటా" ఆన్ చేయండి.</translation>
 <translation id="3282568296779691940">Chromeకు సైన్ ఇన్ చేయండి</translation>
 <translation id="32895400574683172">నోటిఫికేషన్‌లు అనుమతించబడతాయి</translation>
 <translation id="3295530008794733555">మరింత వేగంగా బ్రౌజ్ చేయండి. తక్కువ డేటాని ఉపయోగించండి.</translation>
@@ -389,7 +389,7 @@
 <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> నుండి – <ph name="BEGIN_DEEMPHASIZED" />Google బట్వాడా చేస్తోంది<ph name="END_DEEMPHASIZED" /></translation>
 <translation id="4084836577264234537"><ph name="MEGABYTES" /> MB డౌన్‌లోడ్ చేయబడింది</translation>
 <translation id="4095146165863963773">అనువర్తన డేటాను తొలగించాలా?</translation>
-<translation id="4099578267706723511">Googleకి వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపడం ద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి.</translation>
+<translation id="4099578267706723511">Googleకు వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపడం ద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి.</translation>
 <translation id="410351446219883937">స్వీయ ప్లే</translation>
 <translation id="4113030288477039509">మీ నిర్వాహకుడు ద్వారా నిర్వహించబడుతోంది</translation>
 <translation id="4116038641877404294">పేజీలను ఆఫ్‌లైన్‌లో ఉపయోగించడం కోసం వాటిని డౌన్‌లోడ్ చేసుకోండి</translation>
@@ -439,9 +439,9 @@
 <translation id="4493497663118223949">లైట్ మోడ్ ఆన్ చేయబడింది</translation>
 <translation id="4513387527876475750">{DAYS,plural, =1{# రోజు క్రితం}other{# రోజుల క్రితం}}</translation>
 <translation id="451872707440238414">మీ బుక్‌మార్క్‌లను శోధించండి</translation>
-<translation id="4521489764227272523">ఎంచుకోబడిన డేటా Chrome నుండి, మీ సమకాలీకరించిన పరికరాల నుండి తీసివేయబడింది.
+<translation id="4521489764227272523">ఎంచుకోబడిన డేటా Chrome నుండి, సింక్ చేసిన‌ మీ పరికరాల నుండి తీసివేయబడింది.
 
-మీ Google ఖాతా, శోధనల‌ వంటి బ్రౌజింగ్ చరిత్రను, ఇతర Google సేవలకు సంబంధించిన కార్యకలాపాలను <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో కలిగి ఉండవచ్చు.</translation>
+మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర Google సేవలకు సంబంధించిన శోధనలు, కార్యకలాపం వంటి ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="4532845899244822526">ఫోల్డర్‌ను ఎంచుకోండి</translation>
 <translation id="4538018662093857852">లైట్ మోడ్‌ని ఆన్ చేయండి</translation>
 <translation id="4550003330909367850">ఇక్కడ మీ పాస్‌వర్డ్‌ని వీక్షించడానికి లేదా కాపీ చేయడానికి, ఈ డివైజ్‌లో స్క్రీన్ లాక్‌ను సెట్ చేయండి.</translation>
@@ -449,7 +449,7 @@
 <translation id="4561979708150884304">కనెక్షన్ లేదు</translation>
 <translation id="4565377596337484307">పాస్‌వర్డ్‌ను దాచిపెట్టు</translation>
 <translation id="4570913071927164677">వివరాలు</translation>
-<translation id="4572422548854449519">నిర్వహిత ఖాతాకు సైన్ ఇన్ చేయండి</translation>
+<translation id="4572422548854449519">నిర్వాహిత ఖాతాకు సైన్ ఇన్ చేయండి</translation>
 <translation id="4581964774250883625">మీరు ఇప్పుడు అజ్ఞాత మోడ్‌లో ఉన్నారు.</translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# నిమిషం క్రితం}other{# నిమిషాల క్రితం}}</translation>
 <translation id="4587589328781138893">సైట్‌లు</translation>
@@ -503,7 +503,7 @@
 <translation id="4958708863221495346"><ph name="URL_OF_THE_CURRENT_TAB" /> మీ స్క్రీన్‌ని భాగస్వామ్యం చేస్తోంది</translation>
 <translation id="4961107849584082341">ఈ పేజీని ఏ భాషలోకైనా అనువదించుకోవచ్చు</translation>
 <translation id="4961334780091921942">అన్ని పరికరాల్లో మీ పాస్‌వర్డ్‌లు, చరిత్ర &amp; మరిన్ని</translation>
-<translation id="4961700429721424617">మీరు <ph name="MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ చేస్తున్నారు. దీని వలన మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది, కానీ మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
+<translation id="4961700429721424617">మీరు <ph name="MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ చేస్తున్నారు. దీని వ‌ల్ల మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది. కానీ మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
 <translation id="497421865427891073">ముందుకు వెళ్ళు</translation>
 <translation id="4988210275050210843">ఫైల్‌ను డౌన్‌లోడ్ చేస్తోంది (<ph name="MEGABYTES" />).</translation>
 <translation id="4988526792673242964">పేజీలు</translation>
@@ -539,7 +539,7 @@
 <translation id="526421993248218238">ఈ పేజీని లోడ్ చేయడం సాధ్యం కాదు</translation>
 <translation id="5271967389191913893">డౌన్‌లోడ్ చేయాల్సిన కంటెంట్‌ను పరికరం తెరవలేదు.</translation>
 <translation id="528192093759286357">పూర్తి స్క్రీన్ నుండి నిష్క్రమించడానికి పైనుండి లాగి, వెనుకకు బటన్‌ను తాకండి.</translation>
-<translation id="5284584623296338184">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లకు చేసే మార్పులు ఇకపై మీ Google ఖాతాకు సమకాలీకరించబడవు. అయితే, ఇప్పటికే ఉన్న మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
+<translation id="5284584623296338184">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లకు చేసే మార్పులు ఇకపై మీ Google ఖాతాకు సింక్ చేయ‌బడవు. అయితే, ఇప్పటికే ఉన్న మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
 <translation id="5301954838959518834">సరే, అర్థమైంది</translation>
 <translation id="5304593522240415983">ఈ ఫీల్డ్ ఖాళీగా ఉండరాదు</translation>
 <translation id="5308380583665731573">కనెక్ట్ చేయండి</translation>
@@ -630,7 +630,7 @@
 <translation id="5862731021271217234">మీ ఇతర పరికరాలలో ఉన్న మీ అన్ని ట్యాబ్‌లను పొందాలనుకుంటే, సమకాలీకరణ ఎంపికను ఆన్ చేయాలి</translation>
 <translation id="5864174910718532887">వివరాలు: సైట్ పేరుతో క్రమీకరించబడ్డాయి</translation>
 <translation id="5864419784173784555">మరొక డౌన్‌లోడ్ కోసం వేచి ఉంది…</translation>
-<translation id="5865733239029070421">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపుతుంది</translation>
+<translation id="5865733239029070421">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలను, క్రాష్ నివేదికలను పంపుతుంది</translation>
 <translation id="5869522115854928033">సేవ్  చేసిన పాస్‌వర్డ్‌లు</translation>
 <translation id="5902828464777634901">కుక్కీలతో సహా ఈ వెబ్‌సైట్ ద్వారా నిల్వ చేయబడిన మొత్తం స్థానిక డేటా తొలగించబడుతుంది.</translation>
 <translation id="5911030830365207728">Google అనువాదం</translation>
@@ -795,7 +795,7 @@
 <translation id="7066151586745993502">{NUM_SELECTED,plural, =1{1 ఎంచుకోబడింది}other{# ఎంచుకోబడ్డాయి}}</translation>
 <translation id="7077143737582773186">SD కార్డ్</translation>
 <translation id="7087918508125750058"><ph name="ITEM_COUNT" /> ఎంచుకోబడ్డాయి.  ఎంపికలు స్క్రీన్ పైభాగానికి సమీపంలో అందుబాటులో ఉన్నాయి</translation>
-<translation id="7121362699166175603">చిరునామా బార్‌లో చరిత్ర మరియు స్వీయ పూరణలను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
+<translation id="7121362699166175603">చిరునామా బార్‌లో చరిత్ర, స్వీయపూరింపులను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="7128222689758636196">ప్రస్తుత శోధన ఇంజిన్‌కి అనుమతించండి</translation>
 <translation id="7138678301420049075">ఇతర</translation>
 <translation id="7139148793369023665">ఇలాంటివి మరిన్ని ఎంపిక మూసివేయబడింది</translation>
@@ -868,7 +868,7 @@
 <translation id="7648422057306047504">పాస్‌వర్డ్‌లను Google ఆధారాలతో ఎన్‌క్రిప్ట్ చేయి</translation>
 <translation id="7649070708921625228">సహాయం</translation>
 <translation id="7658239707568436148">రద్దు చెయ్యి</translation>
-<translation id="7665369617277396874">ఖాతాను జోడించు</translation>
+<translation id="7665369617277396874">ఖాతాను జోడించండి</translation>
 <translation id="7682724950699840886">కింది చిట్కాలను ప్రయత్నించండి: మీ పరికరంలో తగినంత స్థలం ఉన్నట్లు నిర్ధారించుకోండి, మళ్లీ ఎగుమతి చేయడానికి ప్రయత్నించండి.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" />లో ఇమెయిల్‌ను సృష్టించండి</translation>
 <translation id="7704317875155739195">స్వయంపూర్తి శోధనలు మరియు URLలు</translation>
@@ -1034,9 +1034,9 @@
 <translation id="8979405271719829084">తర్వాత చూడటం కోసం వీడియోలను డౌన్‌లోడ్ చేసుకోండి</translation>
 <translation id="8981454092730389528">Google కార్యాచరణ నియంత్రణలు</translation>
 <translation id="8983677657449185470">సురక్షిత బ్రౌజింగ్‌ను మెరుగుపరచడంలో సహాయపడండి</translation>
-<translation id="8986494364107987395">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపు</translation>
+<translation id="8986494364107987395">Googleకు ఆటోమేటిక్‌గా వినియోగ‌ గణాంకాలను, క్రాష్ నివేదికలను పంపు</translation>
 <translation id="8993760627012879038">కొత్త ట్యాబ్‌ను అజ్ఞాత మోడ్‌లో తెరవండి</translation>
-<translation id="8998729206196772491">మీరు <ph name="MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకులకు మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వలన ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది, కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
+<translation id="8998729206196772491">మీరు <ph name="MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు. దీని నిర్వాహకులకు మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వ‌ల్ల ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది. కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
 <translation id="9019902583201351841">మీ తల్లిదండ్రుల ద్వారా నిర్వహించబడుతోంది</translation>
 <translation id="9040142327097499898">నోటిఫికేషన్‌లు అనుమతించబడ్డాయి. ఈ పరికరానికి స్థానం ఆఫ్ చేయబడింది.</translation>
 <translation id="9050666287014529139">పాస్‌ఫ్రేజ్</translation>
diff --git a/chrome/android/java/trichrome.flags b/chrome/android/java/trichrome.flags
new file mode 100644
index 0000000..f1c5b18
--- /dev/null
+++ b/chrome/android/java/trichrome.flags
@@ -0,0 +1,6 @@
+# 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.
+
+# Currently the Trichrome library just contains NativeLibraries, which we keep.
+-keep class org.chromium.base.library_loader.NativeLibraries { *; }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestRule.java
index a9f888a6..a6b0b60 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestRule.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestRule.java
@@ -214,6 +214,12 @@
     public CallbackHelper getCanMakePaymentQueryResponded() {
         return mCanMakePaymentQueryResponded;
     }
+    public CallbackHelper getHasEnrolledInstrumentQueryResponded() {
+        // TODO(https://crbug.com/915907): return mHasEnrolledInstrumentQueryResponded once
+        // hasEnrolledInstrument is exposed in the PaymentRequest JavaScript API and browser tests
+        // are switched over to use the new API.
+        return mCanMakePaymentQueryResponded;
+    }
     public CallbackHelper getExpirationMonthChange() {
         return mExpirationMonthChange;
     }
@@ -897,6 +903,15 @@
     }
 
     @Override
+    public void onPaymentRequestServiceHasEnrolledInstrumentQueryResponded() {
+        ThreadUtils.assertOnUiThread();
+        // TODO(https://crbug.com/915907): return mHasEnrolledInstrumentQueryResponded once
+        // hasEnrolledInstrument is exposed in the PaymentRequest JavaScript API and browser tests
+        // are switched over to use the new API.
+        mCanMakePaymentQueryResponded.notifyCalled();
+    }
+
+    @Override
     public void onCardUnmaskPromptReadyForInput(CardUnmaskPrompt prompt) {
         ThreadUtils.assertOnUiThread();
         mReadyForUnmaskInput.notifyCalled(prompt);
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index 137f4e6..8c90db5 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-73.0.3646.0_rc-r1.afdo.bz2
\ No newline at end of file
+chromeos-chrome-amd64-73.0.3647.0_rc-r1.afdo.bz2
\ No newline at end of file
diff --git a/chrome/android/trichrome.gni b/chrome/android/trichrome.gni
index 099d5377..3b76a89 100644
--- a/chrome/android/trichrome.gni
+++ b/chrome/android/trichrome.gni
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//base/android/proguard/proguard.gni")
 import("//build/config/android/chrome_version.gni")
 import("//build/config/android/config.gni")
 import("//build/config/android/rules.gni")
@@ -73,5 +74,21 @@
     } else {
       shared_libraries = [ "//chrome/android:monochrome" ]
     }
+
+    if (!is_java_debug) {
+      proguard_enabled = true
+      proguard_configs = [
+        "//base/android/proguard/chromium_apk.flags",
+        "//base/android/proguard/chromium_code.flags",
+        "//chrome/android/java/trichrome.flags",
+      ]
+      if (enable_proguard_obfuscation) {
+        proguard_configs +=
+            [ "//base/android/proguard/enable_obfuscation.flags" ]
+      } else {
+        proguard_configs +=
+            [ "//base/android/proguard/disable_all_obfuscation.flags" ]
+      }
+    }
   }
 }
diff --git a/chrome/app/md_extensions_strings.grdp b/chrome/app/md_extensions_strings.grdp
index ef3fc6a2..d0ca9a5c 100644
--- a/chrome/app/md_extensions_strings.grdp
+++ b/chrome/app/md_extensions_strings.grdp
@@ -199,6 +199,9 @@
   <message name="IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS" desc="The label above the list of the websites that the extension can access.">
     Site access
   </message>
+  <message name="IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS_ADD_HOST" desc="The label of the option to add a new site that the extension should be allowed to access.">
+    Add a new page
+  </message>
   <message name="IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS_EMPTY" desc="The text to indicate that an extension does not have any site access.">
     This extension has no additional site access.
   </message>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index b9366fe..e2fcbbbc 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -80,6 +80,7 @@
 <translation id="352783484088404971">Remove From Chromium...</translation>
 <translation id="3582788516608077514">Updating Chromium ...</translation>
 <translation id="358997566136285270">Chromium logo</translation>
+<translation id="3639635944603682591">This person's browsing data will be deleted from this device. To recover the data, sign in to Chromium as <ph name="USER_EMAIL" />.</translation>
 <translation id="3713809861844741608">Open link in new Chromium &amp;tab</translation>
 <translation id="3728336900324680424">Chromium will access your Drive to make suggestions in the address bar</translation>
 <translation id="3762167353400286894">Chromium OS is displayed in this language</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb
index dac6b343..ab16477 100644
--- a/chrome/app/resources/chromium_strings_iw.xtb
+++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -77,7 +77,7 @@
 <translation id="3582788516608077514">‏מעדכן את Chromium‏...</translation>
 <translation id="358997566136285270">‏לוגו של Chromium</translation>
 <translation id="3713809861844741608">‏פתח את הקישור ב&amp;כרטיסיית Chromium חדשה</translation>
-<translation id="3728336900324680424">‏Chromium ייגש ל-Drive שלך כדי להציג הצעות בסרגל הכתובות</translation>
+<translation id="3728336900324680424">‏Chromium ייגש ל-Drive שלך כדי להציג הצעות בשורת כתובת האתר</translation>
 <translation id="3762167353400286894">‏Chromium OS מוצג בשפה זו</translation>
 <translation id="378917192836375108">‏Chromium מאפשר לך ללחוץ על מספר טלפון באינטרנט ולהתקשר אליו באמצעות Skype!</translation>
 <translation id="3848258323044014972"><ph name="PAGE_TITLE" /> - Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb
index 1182b710..0b4d12f 100644
--- a/chrome/app/resources/chromium_strings_te.xtb
+++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -24,7 +24,7 @@
 <translation id="1779356040007214683">Chromiumను సురక్షితం చేయడానికి, మేము <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో జాబితా చేయబడని మరియు మీకు తెలియకుండానే జోడించబడిన కొన్ని పొడిగింపులను నిలిపివేసాము.</translation>
 <translation id="1808667845054772817">Chromiumను మళ్లీ ఇన్‌స్టాల్ చేయి</translation>
 <translation id="1869480248812203386">సంభావ్య భద్రతాపరమైన దాడులకు సంబంధించిన వివరాలను Googleకి స్వయంచాలకంగా నివేదించడం ద్వారా Chromiumని సురక్షితంగా మరియు సులభంగా ఉపయోగించదగినదిగా చేయడంలో మీ సహాయం అందించవచ్చు.</translation>
-<translation id="1881322772814446296">మీరు నిర్వహించబడే ఖాతాతో సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకునికి మీ Chromium ప్రొఫైల్‌పై నియంత్రణను అందిస్తున్నారు. మీ అనువర్తనాలు, బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌ల వంటి మీ Chromium డేటా శాశ్వతంగా <ph name="USER_NAME" />కు అనుబంధించబడుతుంది. మీరు Google ఖాతాల డాష్‌బోర్డ్ ద్వారా ఈ డేటాను తొలగించవచ్చు, కానీ ఈ డేటాను మరో ఖాతాతో అనుబంధించలేరు. మీరు ప్రస్తుతం ఉన్న మీ Chromium డేటాను వేరుగా ఉంచడానికి ఐచ్ఛికంగా క్రొత్త ప్రొఫైల్‌ను సృష్టించవచ్చు. <ph name="LEARN_MORE" /></translation>
+<translation id="1881322772814446296">మీరు నిర్వహించబడే ఖాతాతో సైన్ ఇన్ చేస్తున్నారు. దీని నిర్వాహకునికి మీ Chromium ప్రొఫైల్‌పై నియంత్రణను అందిస్తున్నారు. మీ యాప్‌లు, బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌ల వంటి మీ Chromium డేటా శాశ్వతంగా <ph name="USER_NAME" />కు అనుబంధించబడుతుంది. మీరు Google ఖాతాల డాష్‌బోర్డ్ ద్వారా ఈ డేటాను తొలగించవచ్చు. కానీ ఈ డేటాను మరో ఖాతాతో అనుబంధించలేరు. మీరు ప్రస్తుతం ఉన్న మీ Chromium డేటాను వేరుగా ఉంచడానికి ఐచ్ఛికంగా కొత్త ప్రొఫైల్‌ను సృష్టించవచ్చు. <ph name="LEARN_MORE" /></translation>
 <translation id="1895626441344023878">{0,plural, =0{Chromium అప్‌డేట్ అందుబాటులో ఉంది}=1{Chromium అప్‌డేట్ అందుబాటులో ఉంది}other{# రోజులుగా Chromium అప్‌డేట్ అందుబాటులో ఉంది}}</translation>
 <translation id="1911763535808217981">దీనిని ఆఫ్ చేయడం ద్వారా, మీరు Chromiumకి సైన్ ఇన్ చేయకుండానే Gmail లాంటి Google సైట్‌లలో సైన్ ఇన్ చేయగలరు</translation>
 <translation id="1929939181775079593">Chromium ప్రతిస్పందించడం లేదు. ఇప్పుడు మళ్లీ ప్రారంభించాలా?</translation>
@@ -51,14 +51,14 @@
 <translation id="2770231113462710648">డిఫాల్ట్ బ్రౌజర్‌ను దీనికి మార్చు:</translation>
 <translation id="2799223571221894425">మళ్లీ ప్రారంభించు</translation>
 <translation id="2847479871509788944">Chromium నుండి తీసివేయి...</translation>
-<translation id="2886012850691518054">ఐచ్ఛికం: వినియోగ గణాంకాలు, క్రాష్ నివేదికలను ఆటోమేటిక్‌గా Googleకు పంపడం ద్వారా Chromiumను మరింత మెరుగుపరచడానికి సహాయం చేయండి.</translation>
+<translation id="2886012850691518054">ఐచ్ఛికం: Googleకు వినియోగ‌ గణాంకాలను, క్రాష్ నివేదికలను ఆటోమేటిక్‌గా పంపడం ద్వారా Chromiumను మరింత మెరుగుపరచడానికి సహాయం చేస్తుంది.</translation>
 <translation id="2898082584336937987">మీ ఫోన్‌లో Chromium ఇన్‌స్టాల్ చేయండి. మీ నెంబ‌ర్‌కు SMS పంపుతాము: <ph name="PHONE_NUMBER" /></translation>
 <translation id="2910007522516064972">&amp;Chromium గురించి</translation>
 <translation id="2977470724722393594">Chromium తాజాగా ఉంది</translation>
 <translation id="3032787606318309379">Chromiumకి జోడిస్తోంది...</translation>
 <translation id="3046695367536568084">మీరు అనువర్తనాలను ఉపయోగించడానికి Chromiumకు సైన్ ఇన్ చేయాలి. ఇది పరికరాల్లో మీ అనువర్తనాలు, బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లను సమకాలీకరించడానికి Chromiumను అనుమతిస్తుంది.</translation>
 <translation id="3052899382720782935">{0,plural, =1{1 నిమిషంలో Chromium తిరిగి ప్రారంభించబడుతుంది}other{# నిమిషాల్లో Chromium తిరిగి ప్రారంభించబడుతుంది}}</translation>
-<translation id="3068515742935458733">Googleకు వినియోగ గణాంకాలు మరియు <ph name="UMA_LINK" />ను పంపడం ద్వారా Chromiumను మెరుగుపరచడంలో సహాయపడండి</translation>
+<translation id="3068515742935458733">Googleకు వినియోగ గణాంకాలు, <ph name="UMA_LINK" />ను పంపడం ద్వారా Chromiumను మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="3103660991484857065">ఇన్‌స్టాలర్ ఆర్కైవ్‌ను వాస్తవ పరిమాణానికి తీసుకు రావడంలో విఫలమైంది. దయచేసి Chromiumను మళ్లీ డౌన్‌లోడ్ చేయండి.</translation>
 <translation id="3130323860337406239">Chromium మీ మైక్రోఫోన్‌ని ఉపయోగిస్తోంది.</translation>
 <translation id="3155163173539279776">Chromiumను పునఃప్రారంభించండి</translation>
@@ -79,10 +79,10 @@
 <translation id="3713809861844741608">కొత్త Chromium &amp;ట్యాబ్‌లో లింక్‌ని తెరువు</translation>
 <translation id="3728336900324680424">చిరునామా బార్‌లో సూచనలు చేయడానికి Chromium మీ డిస్క్‌ను యాక్సెస్ చేస్తుంది</translation>
 <translation id="3762167353400286894">Chromium OS ఈ భాషలో ప్రదర్శించబడుతోంది</translation>
-<translation id="378917192836375108">Chromium వెబ్‌లో ఫోన్ నంబర్ క్లిక్ చేయడానికి మరియు Skypeతో కాల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది!</translation>
+<translation id="378917192836375108">Chromium వెబ్‌లో ఫోన్ నంబర్ క్లిక్ చేయడానికి, Skypeతో కాల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది!</translation>
 <translation id="3848258323044014972"><ph name="PAGE_TITLE" /> - Chromium</translation>
 <translation id="3852700440713538496">Chromiumని మీ విధి పట్టీకి పిన్ చేయండి</translation>
-<translation id="3889543394854987837">Chromiumని తెరిచి, బ్రౌజింగ్‌ను ప్రారంభించడానికి మీ పేరుని క్లిక్ చేయండి.</translation>
+<translation id="3889543394854987837">Chromiumను తెరిచి, బ్రౌజింగ్‌ను ప్రారంభించడానికి మీ పేరును క్లిక్ చేయండి.</translation>
 <translation id="3898493977366060150">Google స్మార్ట్‌లతో వెబ్ బ్రౌజింగ్</translation>
 <translation id="3965668104013180445">{0,plural, =1{Chromium OS ఒక గంటలో మళ్లీ ప్రారంభించబడుతుంది}other{Chromium OS # గంటల్లో మళ్లీ ప్రారంభించబడుతుంది}}</translation>
 <translation id="4036079820698952681"><ph name="BEGIN_LINK" />ప్రస్తుత సెట్టింగ్‌లను<ph name="END_LINK" /> నివేదించడం ద్వారా Chromiumని మెరుగుపరచడంలో సహాయపడండి</translation>
@@ -117,7 +117,7 @@
 <translation id="5116586539350239523">Chromium మీ వ్యక్తిగత వివరాలను సురక్షితంగా నిల్వ చేస్తుంది కాబట్టి మీరు వాటిని మళ్లీ టైప్ చేయాల్సిన అవసరం లేదు.</translation>
 <translation id="5181952534059945058">ఈ పేజీ చాలా ఎక్కువ మెమరీని ఉపయోగిస్తోంది, కాబట్టి Chromium కొంత కంటెంట్‌ను తీసివేసింది.</translation>
 <translation id="5277894862589591112">మీ మార్పులను వర్తింపజేయడానికి, Chromiumని పునఃప్రారంభించండి</translation>
-<translation id="5358375970380395591">మీరు నిర్వహించబడే ఖాతాతో సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకునికి మీ Chromium ప్రొఫైల్‌పై నియంత్రణను అందిస్తున్నారు. మీ అనువర్తనాలు, బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌ల వంటి మీ Chromium డేటా శాశ్వతంగా <ph name="USER_NAME" />కు అనుబంధించబడుతుంది. మీరు Google ఖాతాల డాష్‌బోర్డ్ ద్వారా ఈ డేటాను తొలగించవచ్చు, కానీ ఈ డేటాను మరో ఖాతాతో అనుబంధించలేరు. <ph name="LEARN_MORE" /></translation>
+<translation id="5358375970380395591">మీరు నిర్వహించబడే ఖాతాతో సైన్ ఇన్ చేస్తున్నారు. దీని నిర్వాహకునికి మీ Chromium ప్రొఫైల్‌పై నియంత్రణను అందిస్తున్నారు. మీ యాప్‌లు, బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌ల వంటి మీ Chromium డేటా శాశ్వతంగా <ph name="USER_NAME" />కు అనుబంధించబడుతుంది. మీరు Google ఖాతాల డాష్‌బోర్డ్ ద్వారా ఈ డేటాను తొలగించవచ్చు. కానీ ఈ డేటాను మరో ఖాతాతో అనుబంధించలేరు. <ph name="LEARN_MORE" /></translation>
 <translation id="5386450000063123300">Chromium నవీకరించబడుతోంది (<ph name="PROGRESS_PERCENT" />)</translation>
 <translation id="538767207339317086">Chromium సైన్-ఇన్‌ని అనుమతించండి</translation>
 <translation id="5398878173008909840">క్రొత్త Chromium సంస్కరణ అందుబాటులో ఉంది.</translation>
@@ -159,13 +159,13 @@
 <translation id="6295779123002464101"><ph name="FILE_NAME" /> హానికరం కావచ్చు, కావున Chromium దాన్ని బ్లాక్ చేసింది.</translation>
 <translation id="6309712487085796862">Chromium మీ కెమెరాను ఉపయోగిస్తోంది.</translation>
 <translation id="6333502561965082103">Chromiumలో మరొక వ్యవస్థాపన జరుగుతోంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
-<translation id="6334986366598267305">ఇప్పుడు మీ Google ఖాతాతో మరియు షేర్ చేసిన కంప్యూటర్‌లలో Chromiumని సులభంగా ఉపయోగించవచ్చు.</translation>
+<translation id="6334986366598267305">ఇప్పుడు మీ Google ఖాతాతో, షేర్ చేయ‌బ‌డిన కంప్యూట‌ర్‌ల‌లో Chromiumను సులభంగా ఉపయోగించవచ్చు.</translation>
 <translation id="6373523479360886564">మీరు Chromiumని అన్ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?</translation>
 <translation id="6400072781405947421">Chromiumకి ఇప్పుడు Mac OS X 10.9లో మద్దతు లేనందున ఇది సరిగ్గా పని చేయకపోవచ్చు.</translation>
 <translation id="6403826409255603130">Chromium అనేది మెరుపు వేగంతో వెబ్‌పేజీలను మరియు అనువర్తనాలను అమలు చేసే వెబ్ బ్రౌజర్. ఇది వేగవంతమైనది, స్థిరమైనది మరియు ఉపయోగించడానికి సులభమైనది. Chromiumలో రూపొందించిన మాల్వేర్ మరియు ఫిషింగ్ రక్షణతో మరింత సురక్షితంగా వెబ్‌లో బ్రౌజ్ చేయండి.</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 సెకనులో పునఃప్రారంభమవుతుంది}other{Chromium # సెకన్లలో పునఃప్రారంభమవుతుంది}}</translation>
 <translation id="6475912303565314141">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
-<translation id="6485906693002546646">మీరు మీ Chromium అంశాలను సింక్ చేయడానికి <ph name="PROFILE_EMAIL" />ని ఉపయోగిస్తున్నారు. మీ సింక్ ప్రాధాన్యతను అప్‌డేట్ చేయడానికి లేదా Google ఖాతా లేకుండా Chromiumని ఉపయోగించడానికి, <ph name="SETTINGS_LINK" />ను సందర్శించండి.</translation>
+<translation id="6485906693002546646">మీరు మీ Chromium అంశాలను సింక్ చేయ‌డానికి <ph name="PROFILE_EMAIL" />ను ఉపయోగిస్తున్నారు. మీ సింక్‌ ప్రాధాన్యతను అప్‌డేట్ చేయ‌డానికి లేదా Google ఖాతా లేకుండా Chromiumను ఉపయోగించడానికి, <ph name="SETTINGS_LINK" />ను సందర్శించండి.</translation>
 <translation id="6510925080656968729">Chromiumని అన్ఇన్‌స్టాల్ చేయి</translation>
 <translation id="6570579332384693436">అక్షరక్రమ లోపాలను పరిష్కరించడానికి, మీరు వచన ఫీల్డ్‌లలో టైప్ చేసే వచనాన్ని, Chromium Googleకి పంపుతుంది</translation>
 <translation id="6598877126913850652">Chromium నోటిఫికేషన్ సెట్టింగ్‌లకు వెళ్లు</translation>
@@ -195,11 +195,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="BEGIN_LINK_2" />మరింత తెలుసుకోండి<ph name="END_LINK_2" />
+<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>
@@ -217,7 +218,7 @@
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
 <translation id="7867198900892795913">Chromiumని తాజా వెర్షన్‌కు అప్‌డేట్ చేయడం సాధ్యం కాలేదు, కనుక మీరు కొత్త ఫీచర్‌లు మరియు భద్రతా పరిష్కారాలను పొందలేరు.</translation>
 <translation id="7901117350626490574">Chromiumకు కొత్త అప్‌డేట్ అందుబాటులో ఉంది మరియు మీరు పునఃప్రారంభించిన వెంటనే వర్తింపజేయబడుతుంది.</translation>
-<translation id="7937630085815544518">మీరు <ph name="USER_EMAIL_ADDRESS" />గా Chromiumకు సైన్ ఇన్ చేసారు. దయచేసి మళ్లీ సైన్ ఇన్ చేయడానికి ఇదే ఖాతాను ఉపయోగించండి.</translation>
+<translation id="7937630085815544518">మీరు <ph name="USER_EMAIL_ADDRESS" />గా Chromiumకు సైన్ ఇన్ చేశారు. దయచేసి మళ్లీ సైన్ ఇన్ చేయడానికి ఇదే ఖాతాను ఉపయోగించండి.</translation>
 <translation id="7962572577636132072">Chromium స్వయంచాలకంగా నవీకరించబడుతుంది కనుక మీరు ఎల్లప్పుడూ తాజా సంస్కరణను కలిగి ఉంటారు.</translation>
 <translation id="7975919845073681630">ఇది Chromium యొక్క రెండవ ఇన్‌స్టాలేషన్, దీన్ని మీ డిఫాల్ట్ బ్రౌజర్‌గా చేయడం సాధ్యపడదు.</translation>
 <translation id="7979877361127045932">Chromium మెనులో దాచండి</translation>
@@ -225,7 +226,7 @@
 <translation id="8030318113982266900">మీ పరికరాన్ని <ph name="CHANNEL_NAME" /> ఛానెల్‌కి నవీకరిస్తోంది...</translation>
 <translation id="8157153840442649507">Chromium ఈ భాషలో ప్రదర్శించబడుతోంది</translation>
 <translation id="81770708095080097">ఈ ఫైల్ అపాయకరమైనది, కాబట్టి Chromium దీన్ని బ్లాక్ చేసింది.</translation>
-<translation id="8222496066431494154">మీ ఫోన్‌లో Chromium ఇన్‌స్టాల్ చేయండి. మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMS పంపుతాము: <ph name="PHONE_NUMBER" /></translation>
+<translation id="8222496066431494154">మీ ఫోన్‌లో Chromiumను ఇన్‌స్టాల్ చేయండి. మేము మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMSను పంపుతాము: <ph name="PHONE_NUMBER" /></translation>
 <translation id="8269379391216269538">Chromiumని మెరుగుపరచడంలో సహాయం అందించండి</translation>
 <translation id="8290862415967981663">ఈ ఫైల్ అపాయకరం కావచ్చు, కాబట్టి Chromium దీన్ని బ్లాక్ చేసింది.</translation>
 <translation id="8330519371938183845">మీ పరికరాల అంతటా Chromiumని సమకాలీకరించడం మరియు వ్యక్తిగతీకరించడం కోసం సైన్ ఇన్ చేయండి</translation>
@@ -244,9 +245,9 @@
 <translation id="8704119203788522458">ఇది మీ Chromium</translation>
 <translation id="8796602469536043152">ఈ సైట్ కోసం మీ కెమెరా మరియు మైక్రోఫోన్‌ను యాక్సెస్ చేయడానికి Chromiumకు అనుమతి అవసరం</translation>
 <translation id="8803635938069941624">Chromium OS నిబంధనలు</translation>
-<translation id="8821041990367117597">Chromium మీ డేటాను సమకాలీకరించలేకపోయింది ఎందుకంటే మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసింది.</translation>
+<translation id="8821041990367117597">Chromium మీ డేటాను సింక్ చేయ‌లేకపోయింది ఎందుకంటే మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసింది.</translation>
 <translation id="8862326446509486874">సిస్టమ్-స్థాయిలో ఇన్‌స్టాల్‌ చెయ్యడానికి మీకు సరైన హక్కులు లేవు. నిర్వాహకుడి లాగా ఇన్‌స్టాలర్‌ను మళ్లీ రన్ చెయ్యడానికి ప్రయత్నించండి.</translation>
-<translation id="8897323336392112261">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు లేదా హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
+<translation id="8897323336392112261">ఇది మీరు Chromiumను ప్రారంభించేటప్పుడు లేదా హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
 <translation id="8907580949721785412">Chromium పాస్‌వర్డ్‌లను చూపడానికి ప్రయత్నిస్తోంది. దీన్ని అనుమతించడానికి మీ Windows పాస్‌వర్డ్‌ను టైప్ చేయండి.</translation>
 <translation id="8941642502866065432">Chromiumని అప్‌డేట్ చేయడం సాధ్యం కాలేదు</translation>
 <translation id="8974095189086268230">అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్<ph name="END_LINK_CROS_OSS" />పై Chromium OS ఎంతగానో ఆధారపడుతుంది.</translation>
@@ -260,7 +261,7 @@
 <translation id="9089354809943900324">Chromium కాలం చెల్లినది</translation>
 <translation id="91086099826398415">కొత్త Chromium &amp;ట్యాబ్‌లో లింక్‌ని తెరువు</translation>
 <translation id="911206726377975832">మీ బ్రౌజింగ్ డేటాని కూడా తొలగించాలా?</translation>
-<translation id="918373042641772655"><ph name="USERNAME" />ని డిస్‌కనెక్ట్ చేయడం వలన ఈ పరికరంలో నిల్వ చేయబడిన మీ చరిత్ర, బుక్‌మార్క్‌లు, సెట్టింగ్‌లు మరియు ఇతర Chromium డేటా క్లియర్ చేయబడతాయి. మీ Google ఖాతాలో నిల్వ చేయబడిన డేటా క్లియర్ చేయబడదు మరియు దాన్ని <ph name="GOOGLE_DASHBOARD_LINK" />Google డాష్‌బోర్డ్<ph name="END_GOOGLE_DASHBOARD_LINK" />లో నిర్వహించవచ్చు.</translation>
+<translation id="918373042641772655"><ph name="USERNAME" />ను డిస్‌కనెక్ట్ చేయడం వ‌ల్ల ఈ పరికరంలో నిల్వ చేయబడిన మీ చరిత్ర, బుక్‌మార్క్‌లు, సెట్టింగ్‌లు, ఇతర Chromium డేటా క్లియర్ చేయబడతాయి. మీ Google ఖాతాలో నిల్వ చేయబడిన డేటా క్లియర్ చేయబడదు. దాన్ని <ph name="GOOGLE_DASHBOARD_LINK" />Google డాష్‌బోర్డ్<ph name="END_GOOGLE_DASHBOARD_LINK" />లో నిర్వహించవచ్చు.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
 <translation id="9197815481970649201">మీరు ఇప్పుడు Chromiumకు సైన్ ఇన్ చేసారు</translation>
 <translation id="93478295209880648">Chromiumకి ఇప్పుడు Windows XP లేదా Windows Vistaలో మద్దతు లేనందున ఇది సరిగ్గా పని చేయకపోవచ్చు</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 533ee769..b9af2778 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1601,7 +1601,6 @@
 <translation id="3470502288861289375">በመቅዳት ላይ...</translation>
 <translation id="3473479545200714844">የማያ ገጽ ማጉያ</translation>
 <translation id="3475447146579922140">Google ተመን ሉህ</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 መስመር አይታይም&gt;}one{&lt;$1 መስመሮች አይታዩም&gt;}other{&lt;$1 መስመሮች አይታዩም&gt;}}</translation>
 <translation id="3475843873335999118">ይቅርታ፣ የጣት አሻራዎ አሁንም አልታወቀም። እባክዎ የይለፍ ቃልዎን ያስገቡት።</translation>
 <translation id="347670947055184738">ውይ!  ሥርዓቱ ለመሣሪያዎ መመሪያን ማግኘት አልተሳካለትም።</translation>
 <translation id="347785443197175480"><ph name="HOST" /> ካሜራዎን እና ማይክሮፎንዎን እንዲደርስ መፍቀዱን ይቀጥሉ</translation>
@@ -2729,7 +2728,6 @@
 <translation id="5266113311903163739">የእውቅና ማረጋገጫ ስልጣን የማስመጣት ስህተት</translation>
 <translation id="5269977353971873915">ማተም አልተሳካም</translation>
 <translation id="5270167208902136840"><ph name="NUMBER_OF_MORE_APPS" /> ተጨማሪ መተግበሪያዎችን አሳይ</translation>
-<translation id="5272654297705279635">ብጁ ቅንብሮች</translation>
 <translation id="5275352920323889391">ውሻ</translation>
 <translation id="5275973617553375938">ከGoogle Drive መልሰው የተገኙ ፋይሎች</translation>
 <translation id="527605982717517565">ሁልጊዜ በ<ph name="HOST" /> ላይ ጃቫስክሪፕት ፍቀድ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index d8bac3f..9a821e2a 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1600,7 +1600,6 @@
 <translation id="3470502288861289375">جارٍ النسخ...</translation>
 <translation id="3473479545200714844">مكبّر الشاشة</translation>
 <translation id="3475447146579922140">‏جدول بيانات Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;لم يظهر خط واحد (1)&gt;}zero{&lt;لم يظهر $1 خط&gt;}two{&lt;لم يظهر خطان ($1)&gt;}few{&lt;لم يظهر $1 خطوط&gt;}many{&lt;لم يظهر $1 خطًّا&gt;}other{&lt;لم يظهر $1 خط&gt;}}</translation>
 <translation id="3475843873335999118">عذرًا، لا يزال التعرُّف على بصمة الإصبع متعذّرًا. يُرجى إدخال كلمة المرور.</translation>
 <translation id="347670947055184738">عفوًا! تعذّر النظام في جلب السياسة لجهازك.</translation>
 <translation id="347785443197175480">مواصلة إتاحة دخول <ph name="HOST" /> إلى الكاميرا والميكروفون التابعين لك</translation>
@@ -2671,7 +2670,7 @@
 <translation id="5185386675596372454">تم إيقاف أحدث إصدار من "<ph name="EXTENSION_NAME" />" لأنه يتطلب المزيد من الأذونات.</translation>
 <translation id="5187295959347858724">‏تم الآن تسجيل دخولك إلى <ph name="SHORT_PRODUCT_NAME" />. تتم الآن مزامنة الإشارات المرجعية والسجل وغير ذلك من الإعدادات مع حسابك في Google.</translation>
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
-<translation id="5187892128515678283">‏مشاركة جهاز USB مع جهاز يعمل بنظام التشغيل Linux من خلال تفعيل التبديل. ستستمر المشاركة فقط حتى يتم فصل الجهاز.</translation>
+<translation id="5187892128515678283">‏مشاركة جهاز USB مع جهاز يعمل بنظام التشغيل Linux من خلال تفعيل مفتاح التبديل. ستستمر المشاركة فقط حتى يتم فصل الجهاز.</translation>
 <translation id="51918995459521422">يريد <ph name="ORIGIN" /> تنزيل ملفات متعددة.</translation>
 <translation id="5204673965307125349">‏يُرجى إجراء powerwash للجهاز وإعادة المحاولة.</translation>
 <translation id="5204967432542742771">إدخال كلمة المرور</translation>
@@ -2726,8 +2725,7 @@
 <translation id="5265797726250773323">حدث خطأ أثناء التثبيت</translation>
 <translation id="5266113311903163739">خطأ استيراد مرجع مصدق</translation>
 <translation id="5269977353971873915">تعذّرت الطباعة</translation>
-<translation id="5270167208902136840">عرض <ph name="NUMBER_OF_MORE_APPS" /> من التطبيقات الإضافية</translation>
-<translation id="5272654297705279635">الإعدادات المُخصَّصة</translation>
+<translation id="5270167208902136840">عرض <ph name="NUMBER_OF_MORE_APPS" /> من التطبيقات الأخرى</translation>
 <translation id="5275352920323889391">كلب</translation>
 <translation id="5275973617553375938">‏الملفات المستردة من Google Drive</translation>
 <translation id="527605982717517565">السماح بتشغيل جافا سكريبت على الموقع <ph name="HOST" /> دومًا</translation>
@@ -3462,7 +3460,7 @@
 <translation id="6351063337294363751">يمكنك مسح بيانات التصفح من هذه القائمة</translation>
 <translation id="6352773953037195952">الأعلى</translation>
 <translation id="6354918092619878358">‏منحنى SECG ناقص المقطع secp256r1‏ (aka ANSI X9.62 prime256v1‏، NIST P-256)</translation>
-<translation id="635609604405270300">إبقاء الجهاز مفعلاً</translation>
+<translation id="635609604405270300">يُرجى إبقاء الجهاز مشغَّلاً</translation>
 <translation id="6356138805250111037">‏تدقيق إملائي أكثر دقة من خلال إرسال ما تكتبه في المتصفح إلى Google</translation>
 <translation id="63566973648609420">‏لا يمكن لأحد قراءة بياناتك المشفرة سوى من لديه عبارة المرور التي تستخدمها. ولا يتم إرسال عبارة المرور إلى شركة Google أو تخزينها لديها. إذا نسيت عبارة المرور أو رغبت في تغيير هذا الإعداد، فسيلزمك <ph name="BEGIN_LINK" />إعادة تعيين المزامنة<ph name="END_LINK" />.</translation>
 <translation id="6357619544108132570">مرحبًا بانضمامك إلى عائلة <ph name="SHORT_PRODUCT_NAME" />. معنا ستستمتع بجهاز كمبيوتر غير عادي.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index b984ee4..e7b6884 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">Копира се...</translation>
 <translation id="3473479545200714844">Екранна лупа</translation>
 <translation id="3475447146579922140">Електронна таблица в Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 ред не е показан&gt;}other{&lt;$1 реда не са показани&gt;}}</translation>
 <translation id="3475843873335999118">За съжаление, отпечатъкът ви е все още неразпознат. Моля, въведете паролата си.</translation>
 <translation id="347670947055184738">Ами сега! Системата не успя да извлече правилата за устройството ви.</translation>
 <translation id="347785443197175480">Достъпът на <ph name="HOST" /> до камерата и микрофона ви да продължава да е разрешен</translation>
@@ -2731,7 +2730,6 @@
 <translation id="5266113311903163739">Грешка при импортирането на сертифициращ орган</translation>
 <translation id="5269977353971873915">Отпечатването не бе успешно</translation>
 <translation id="5270167208902136840">Показване на още <ph name="NUMBER_OF_MORE_APPS" /> приложения</translation>
-<translation id="5272654297705279635">Персонализирани настройки</translation>
 <translation id="5275352920323889391">Куче</translation>
 <translation id="5275973617553375938">Възстановени от Google Диск файлове</translation>
 <translation id="527605982717517565">Да се разреши на <ph name="HOST" /> винаги да изпълнява JavaScript</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index da47698..ba5ea2f 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -786,7 +786,7 @@
 <translation id="2192505247865591433">এর থেকে:</translation>
 <translation id="2193365732679659387">বিশ্বস্ততার সেটিংস</translation>
 <translation id="2195729137168608510">ইমেল আইডির সুরক্ষা</translation>
-<translation id="2198757192731523470">সার্চ, বিজ্ঞাপন এবং অন্যান্য Google পরিষেবা ব্যক্তিগতকৃত করতে Google আপনার ইতিহাস ব্যবহার করতে পারে।</translation>
+<translation id="2198757192731523470">সার্চ, বিজ্ঞাপন এবং অন্যান্য Google পরিষেবাকে আপনার মতো করে সাজিয়ে নিতে Google আপনার ইতিহাস ব্যবহার করতে পারে।</translation>
 <translation id="2199298570273670671">সমস্যা</translation>
 <translation id="2199719347983604670">Chrome সিঙ্ক থেকে ডেটা</translation>
 <translation id="2200094388063410062">ইমেল</translation>
@@ -1246,7 +1246,7 @@
 <translation id="2889064240420137087">এর সাথে লিঙ্ক খুলুন...</translation>
 <translation id="2889925978073739256">আনস্যান্ডবক্সড প্লাগ ইনগুলি অবরুদ্ধ করা অবিরত রাখুন</translation>
 <translation id="2893168226686371498">ডিফল্ট ব্রাউজার</translation>
-<translation id="2895734772884435517">আপনি যেকোনও সময়ে এই সেটিংসগুলি কাস্টমাইজ করতে পারেন।</translation>
+<translation id="2895734772884435517">আপনি যেকোনও সময়ে এই সেটিংস কাস্টমাইজ করতে পারেন।</translation>
 <translation id="289644616180464099">সিম কার্ড লক করা আছে</translation>
 <translation id="289695669188700754">কী ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">আপনি কি <ph name="TAB_COUNT" />টি ট্যাব খোলার ব্যাপারে নিশ্চিত?</translation>
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">অনুলিপি করা হচ্ছে...</translation>
 <translation id="3473479545200714844">স্ক্রিন ম্যাগনিফায়ার</translation>
 <translation id="3475447146579922140">Google স্প্রেডশীট</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;১টি লাইন দেখানো হয়নি&gt;}one{&lt;$1টি লাইন দেখানো হয়নি&gt;}other{&lt;$1টি লাইন দেখানো হয়নি&gt;}}</translation>
 <translation id="3475843873335999118">দুঃখিত, আপনার আঙ্গুলের ছাপ এখনো শনাক্ত করা যায়নি। অনুগ্রহ করে আপনার পাসওয়ার্ড লিখুন।</translation>
 <translation id="347670947055184738">ওহো!  সিস্টেম আপনার ডিভাইসের জন্য নীতি আনতে পারেনি।</translation>
 <translation id="347785443197175480">আপনার ক্যামেরা এবং মাইক্রোফোন অ্যাক্সেস করতে <ph name="HOST" /> এর মঞ্জুরি অবিরত রাখুন</translation>
@@ -1712,7 +1711,7 @@
 <translation id="3636096452488277381"><ph name="USER_GIVEN_NAME" />, কেমন আছেন?</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> বাকি আছে</translation>
 <translation id="3637682276779847508">আপনি পিন আনলক করার সঠিক কী না লিখলে আপনার সিম কার্ড স্থায়ীভাবে অক্ষম হয়ে যাবে।</translation>
-<translation id="363863692969456324">আরও উন্নত বানান পরীক্ষার মাধ্যমে বানান ভুল ঠিক করুন</translation>
+<translation id="363863692969456324">আরও উন্নত বানান পরীক্ষার মাধ্যমে ভুল বানানগুলি ঠিক করুন</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> এর জন্য "<ph name="EXTENSION_NAME" />" জুড়বেন?</translation>
 <translation id="3644896802912593514">প্রস্থ</translation>
 <translation id="3645372836428131288">আঙ্গুলের ছাপের বিভিন্ন অংশ ক্যাপচার করতে একটু এদিক-ওদিক সরান৷</translation>
@@ -2224,7 +2223,7 @@
 <translation id="4450974146388585462">নির্ণয় করুন</translation>
 <translation id="4451757071857432900">সাইটে থাকা ব্যাঘাত সৃষ্টিকারী বা বিভ্রান্তিকর বিজ্ঞাপন ব্লক করা হয়েছে (প্রস্তাবিত)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" />-এ সার্চ করুন অথবা ইউআরএল টাইপ করুন</translation>
-<translation id="4461835665417498653">সিস্টেমের কিছু তথ্য এবং পৃষ্ঠার কন্টেন্ট Google-কে নামহীনভাবে পাঠায়।</translation>
+<translation id="4461835665417498653">সিস্টেমের কিছু তথ্য এবং পৃষ্ঠার কন্টেন্ট Google-কে পরিচয় গোপন রেখে পাঠায়।</translation>
 <translation id="4462159676511157176">কাস্টম নাম সার্ভার</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> ফোল্ডারটি বড় করুন</translation>
 <translation id="4469477701382819144">সাইটে থাকা ব্যাঘাত সৃষ্টিকারী বা বিভ্রান্তিকর বিজ্ঞাপন ব্লক করা হয়েছে</translation>
@@ -2727,7 +2726,6 @@
 <translation id="5266113311903163739">শংসাকরণ কর্তৃপক্ষ আমদানি ত্রুটি</translation>
 <translation id="5269977353971873915">প্রিন্ট ব্যর্থ হয়েছে</translation>
 <translation id="5270167208902136840">আরও <ph name="NUMBER_OF_MORE_APPS" />টি অ্যাপ দেখুন</translation>
-<translation id="5272654297705279635">কাস্টম সেটিংস</translation>
 <translation id="5275352920323889391">কুকুর</translation>
 <translation id="5275973617553375938">Google ড্রাইভ থেকে উদ্ধার করা ফাইলগুলি</translation>
 <translation id="527605982717517565">সর্বদা <ph name="HOST" />-এ JavaScript মঞ্জুর করুন</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 64259d3..1b9532e5 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">S'està copiant...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Full de càlcul de Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;Hi ha 1 línia que no es mostra&gt;}other{&lt;Hi ha $1 línies que no es mostren&gt;}}</translation>
 <translation id="3475843873335999118">No es reconeix la teva empremta digital. Escriu la contrasenya.</translation>
 <translation id="347670947055184738">El sistema no ha pogut obtenir la política per al dispositiu.</translation>
 <translation id="347785443197175480">Continua permetent que <ph name="HOST" /> accedeixi a la càmera i al micròfon</translation>
@@ -2729,7 +2728,6 @@
 <translation id="5266113311903163739">Error d'importació de l'entitat emissora de certificats</translation>
 <translation id="5269977353971873915">Error d'impressió</translation>
 <translation id="5270167208902136840">Mostra <ph name="NUMBER_OF_MORE_APPS" /> aplicacions més</translation>
-<translation id="5272654297705279635">Configuració personalitzada</translation>
 <translation id="5275352920323889391">Gos</translation>
 <translation id="5275973617553375938">Fitxers recuperats de Google Drive</translation>
 <translation id="527605982717517565">Permet sempre JavaScript a <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index cc3e99a..38c55b01 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">Kopírování...</translation>
 <translation id="3473479545200714844">Lupa obrazovky</translation>
 <translation id="3475447146579922140">Tabulka Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 řádek není zobrazen&gt;}few{&lt;$1 řádky nejsou zobrazeny&gt;}many{&lt;$1 řádku není zobrazeno&gt;}other{&lt;$1 řádků není zobrazeno&gt;}}</translation>
 <translation id="3475843873335999118">Otisk prstu stále nebyl rozpoznán. Zadejte prosím heslo.</translation>
 <translation id="347670947055184738">Jejda! Systému se nepodařilo načíst zásady pro vaše zařízení.</translation>
 <translation id="347785443197175480">Povolit webu <ph name="HOST" /> přístup k webové kameře a mikrofonu i nadále</translation>
@@ -2727,7 +2726,6 @@
 <translation id="5266113311903163739">Chyba při importu certifikační autority</translation>
 <translation id="5269977353971873915">Tisk se nezdařil</translation>
 <translation id="5270167208902136840">Zobrazit další aplikace (<ph name="NUMBER_OF_MORE_APPS" />)</translation>
-<translation id="5272654297705279635">Vlastní nastavení</translation>
 <translation id="5275352920323889391">Pes</translation>
 <translation id="5275973617553375938">Obnovené soubory z Disku Google</translation>
 <translation id="527605982717517565">Vždy povolovat JavaScript z webu <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 0ce2d7f..382e69f1 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -761,6 +761,7 @@
 <translation id="215753907730220065">Afslut fuld skærm</translation>
 <translation id="2157875535253991059">Denne side er nu i fuld skærm.</translation>
 <translation id="216169395504480358">Tilføj Wi-Fi...</translation>
+<translation id="2162155940152307086">Synkroniseringen starter, når du forlader indstillingerne for synkronisering</translation>
 <translation id="2163470535490402084">Du skal oprette forbindelse til internettet for at kunne logge ind på din <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon</translation>
 <translation id="2169062631698640254">Log ind alligevel</translation>
@@ -771,6 +772,7 @@
 <translation id="2178098616815594724">Pluginnet <ph name="PEPPER_PLUGIN_NAME" /> på <ph name="PEPPER_PLUGIN_DOMAIN" /> anmoder om adgang til din computer</translation>
 <translation id="2178614541317717477">Sammensat nøglecenter</translation>
 <translation id="218070003709087997">Brug et tal til at angive, hvor mange kopier der skal udskrives (1 til 999).</translation>
+<translation id="2182253583899676504">Den tekst, du angiver i tekstfelter, sendes til Google.</translation>
 <translation id="2184515124301515068">Lad Chrome bestemme, hvornår websites må afspille lyd (anbefalet)</translation>
 <translation id="2187895286714876935">Fejl ved import af servercertifikat</translation>
 <translation id="2187906491731510095">Udvidelserne er opdateret</translation>
@@ -782,7 +784,9 @@
 <translation id="2192505247865591433">Fra:</translation>
 <translation id="2193365732679659387">Tillidsindstillinger</translation>
 <translation id="2195729137168608510">Mail-beskyttelse</translation>
+<translation id="2198757192731523470">Google kan bruge din historik til at tilpasse Søgning, annoncer og andre Google-tjenester.</translation>
 <translation id="2199298570273670671">Fejl</translation>
+<translation id="2199719347983604670">Data fra Chrome-synkronisering</translation>
 <translation id="2200094388063410062">Mail</translation>
 <translation id="2200356397587687044">Chrome skal have tilladelse til at fortsætte</translation>
 <translation id="2200603218210188859">Præferencer for USB-enhed</translation>
@@ -1240,6 +1244,7 @@
 <translation id="2889064240420137087">Åbn link med...</translation>
 <translation id="2889925978073739256">Fortsæt blokering af plugins, der ikke er gemt i sandbox</translation>
 <translation id="2893168226686371498">Standardbrowser</translation>
+<translation id="2895734772884435517">Du kan til enhver tid tilpasse disse indstillinger.</translation>
 <translation id="289644616180464099">SIM-kortet er låst.</translation>
 <translation id="289695669188700754">Nøgle-id: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Er du sikker på, at du vil åbne <ph name="TAB_COUNT" /> faner?</translation>
@@ -1595,7 +1600,6 @@
 <translation id="3470502288861289375">Kopierer...</translation>
 <translation id="3473479545200714844">Skærmforstørrer</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linje vises ikke&gt;}one{&lt;$1 linje vises ikke&gt;}other{&lt;$1 linjer vises ikke&gt;}}</translation>
 <translation id="3475843873335999118">Dit fingeraftryk genkendes stadig ikke. Angiv din adgangskode.</translation>
 <translation id="347670947055184738">Ups! Systemet kunne ikke hente politikken til din enhed.</translation>
 <translation id="347785443197175480">Tillad fortsat, at <ph name="HOST" /> har adgang til dit kamera og din mikrofon</translation>
@@ -1708,6 +1712,7 @@
 <translation id="3636096452488277381">Goddag <ph name="USER_GIVEN_NAME" /></translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % - <ph name="TIME" /> tilbage</translation>
 <translation id="3637682276779847508">Dit SIM-kort deaktiveres permanent, hvis du ikke kan angive den korrekte nøgle til oplåsning af pinkode.</translation>
+<translation id="363863692969456324">Ret stavefejl med forbedret stavekontrol</translation>
 <translation id="3640214691812501263">Vil du tilføje "<ph name="EXTENSION_NAME" />" for <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Bredde</translation>
 <translation id="3645372836428131288">Flyt fingeren en smule for at registrere en anden del af fingeraftrykket.</translation>
@@ -2140,6 +2145,7 @@
 <translation id="4310139701823742692">Filen har et forkert format. Tjek PPD-filen, og prøv igen.</translation>
 <translation id="431076611119798497">&amp;Detaljer</translation>
 <translation id="4312866146174492540">Bloker (standardindstilling)</translation>
+<translation id="4314815835985389558">Administrer synkronisering</translation>
 <translation id="4316850752623536204">Udviklers website</translation>
 <translation id="4320177379694898372">Ingen internetforbindelse</translation>
 <translation id="4320948194796820126">Føj et bogmærke til din mail</translation>
@@ -2219,6 +2225,7 @@
 <translation id="4450974146388585462">Diagnosticer</translation>
 <translation id="4451757071857432900">Blokeret på websites, der viser påtrængende eller vildledende annoncer (anbefales)</translation>
 <translation id="4453946976636652378">Søg på <ph name="SEARCH_ENGINE_NAME" />, eller angiv en webadresse</translation>
+<translation id="4461835665417498653">Sender systemoplysninger og sideindhold anonymt til Google.</translation>
 <translation id="4462159676511157176">Tilpassede navneservere</translation>
 <translation id="4467101674048705704">Udvid <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Blokeret på websites, der viser påtrængende eller vildledende annoncer</translation>
@@ -2383,6 +2390,7 @@
 <translation id="4735265153267957659">Angiv din adgangskode for at aktivere Smart Lock. Næste gang låser din telefon din <ph name="DEVICE_TYPE" /> op. Aktivér Smart Lock i Indstillinger.</translation>
 <translation id="473546211690256853">Denne konto administreres af <ph name="DOMAIN" /></translation>
 <translation id="4735803855089279419">Systemet kunne ikke fastslå enheds-id'erne for denne enhed.</translation>
+<translation id="4736292055110123391">Synkroniser dine bogmærker, dine adgangskoder, din historik og meget mere på alle dine enheder</translation>
 <translation id="4737715515457435632">Opret forbindelse til et netværk</translation>
 <translation id="473775607612524610">Opdater</translation>
 <translation id="4742746985488890273">Fastgør til hylde</translation>
@@ -4892,6 +4900,7 @@
 <translation id="8598453409908276158">Plugin, der ikke er gemt i sandbox, blev blokeret</translation>
 <translation id="8601206103050338563">TLS WWW-klientgodkendelse</translation>
 <translation id="8602851771975208551">Et andet program på din computer tilføjede en app, der kan ændre den måde, hvorpå Chrome fungerer.</translation>
+<translation id="8604763363205185560">Hjælp med at forbedre Chrome og dets sikkerhed</translation>
 <translation id="8605428685123651449">SQLite-hukommelse</translation>
 <translation id="8606726445206553943">Brug dine MIDI-enheder</translation>
 <translation id="8609465669617005112">Flyt op</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 1f47ff1..bf95928 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -761,6 +761,7 @@
 <translation id="215753907730220065">Vollbildmodus aus</translation>
 <translation id="2157875535253991059">Diese Seite wird nun im Vollbildmodus angezeigt.</translation>
 <translation id="216169395504480358">WLAN hinzufügen...</translation>
+<translation id="2162155940152307086">Die Synchronisierung wird gestartet, sobald Sie die Synchronisierungseinstellungen verlassen</translation>
 <translation id="2163470535490402084">Stellen Sie eine Internetverbindung her, um sich auf Ihrem Gerät (<ph name="DEVICE_TYPE" />) anzumelden.</translation>
 <translation id="2166369534954157698">Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich</translation>
 <translation id="2169062631698640254">Trotzdem anmelden</translation>
@@ -771,6 +772,7 @@
 <translation id="2178098616815594724">Das Plug-in <ph name="PEPPER_PLUGIN_NAME" /> auf <ph name="PEPPER_PLUGIN_DOMAIN" /> möchte auf Ihren Computer zugreifen</translation>
 <translation id="2178614541317717477">Kompromittierung der Zertifizierungsstelle</translation>
 <translation id="218070003709087997">Geben Sie eine Zahl ein, um die Anzahl der zu druckenden Exemplare festzulegen (1 bis 999).</translation>
+<translation id="2182253583899676504">Wenn Sie etwas in ein Textfeld eingeben, wird dieser Text an Google gesendet.</translation>
 <translation id="2184515124301515068">Chrome die Entscheidung überlassen, wann Audioinhalte auf Websites abgespielt werden (empfohlen)</translation>
 <translation id="2187895286714876935">Fehler beim Importieren des Serverzertifikats</translation>
 <translation id="2187906491731510095">Erweiterungen wurden aktualisiert</translation>
@@ -782,7 +784,9 @@
 <translation id="2192505247865591433">von</translation>
 <translation id="2193365732679659387">Vertrauenseinstellungen</translation>
 <translation id="2195729137168608510">E-Mail-Schutz</translation>
+<translation id="2198757192731523470">Mithilfe Ihres Verlaufs kann Google die Google-Suche, Werbung und andere Google-Dienste personalisieren.</translation>
 <translation id="2199298570273670671">Fehler</translation>
+<translation id="2199719347983604670">Daten aus der Chrome-Synchronisierung</translation>
 <translation id="2200094388063410062">E-Mail</translation>
 <translation id="2200356397587687044">Chrome benötigt eine Berechtigung, um fortzufahren</translation>
 <translation id="2200603218210188859">Einstellungen für USB-Geräte</translation>
@@ -1237,6 +1241,7 @@
 <translation id="2889064240420137087">Link öffnen mit...</translation>
 <translation id="2889925978073739256">Plug-ins ohne Sandbox weiterhin blockieren</translation>
 <translation id="2893168226686371498">Standardbrowser</translation>
+<translation id="2895734772884435517">Sie können diese Einstellungen jederzeit anpassen.</translation>
 <translation id="289644616180464099">SIM-Karte ist gesperrt</translation>
 <translation id="289695669188700754">Schlüssel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Möchten Sie wirklich <ph name="TAB_COUNT" /> Tabs öffnen?</translation>
@@ -1592,7 +1597,6 @@
 <translation id="3470502288861289375">Wird kopiert...</translation>
 <translation id="3473479545200714844">Lupe</translation>
 <translation id="3475447146579922140">Google-Tabellendokument</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 Zeile wird nicht angezeigt&gt;}other{&lt;$1 Zeilen werden nicht angezeigt&gt;}}</translation>
 <translation id="3475843873335999118">Ihr Fingerabdruck wurde immer noch nicht erkannt. Bitte geben Sie Ihr Passwort ein.</translation>
 <translation id="347670947055184738">Hoppla! Das System konnte die Richtlinie für Ihr Gerät nicht abrufen.</translation>
 <translation id="347785443197175480"><ph name="HOST" /> weiterhin Zugriff auf Kamera und Mikrofon gestatten</translation>
@@ -1705,6 +1709,7 @@
 <translation id="3636096452488277381">Hallo <ph name="USER_GIVEN_NAME" /></translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % – Restzeit: <ph name="TIME" /></translation>
 <translation id="3637682276779847508">Ihre SIM-Karte wird dauerhaft deaktiviert, wenn Sie nicht den korrekten PUK eingeben.</translation>
+<translation id="363863692969456324">Rechtschreibfehler mit der erweiterten Rechtschreibprüfung korrigieren</translation>
 <translation id="3640214691812501263">"<ph name="EXTENSION_NAME" />" für <ph name="USER_NAME" /> hinzufügen?</translation>
 <translation id="3644896802912593514">Breite</translation>
 <translation id="3645372836428131288">Bewegen Sie Ihren Finger etwas, um einen anderen Teil des Fingerabdrucks zu erfassen.</translation>
@@ -2137,6 +2142,7 @@
 <translation id="4310139701823742692">Die Datei hat das falsche Format. Prüfen Sie die PPD-Datei und versuchen Sie es noch einmal.</translation>
 <translation id="431076611119798497">&amp;Details</translation>
 <translation id="4312866146174492540">Blockieren (Standardeinstellung)</translation>
+<translation id="4314815835985389558">Synchronisierung verwalten</translation>
 <translation id="4316850752623536204">Website des Entwicklers</translation>
 <translation id="4320177379694898372">Keine Internetverbindung</translation>
 <translation id="4320948194796820126">Wählen Sie einen E-Mail-Dienst aus, um ihn als Lesezeichen hinzuzufügen</translation>
@@ -2216,6 +2222,7 @@
 <translation id="4450974146388585462">Diagnose</translation>
 <translation id="4451757071857432900">Auf Websites blockiert, die aufdringliche oder irreführende Werbung anzeigen (empfohlen)</translation>
 <translation id="4453946976636652378">Mit <ph name="SEARCH_ENGINE_NAME" /> suchen oder eine URL eingeben</translation>
+<translation id="4461835665417498653">Einige Systeminformationen und Seiteninhalte werden anonym an Google gesendet.</translation>
 <translation id="4462159676511157176">Benutzerdefinierte Nameserver</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> maximieren</translation>
 <translation id="4469477701382819144">Auf Websites blockiert, die aufdringliche oder irreführende Werbung anzeigen</translation>
@@ -2380,6 +2387,7 @@
 <translation id="4735265153267957659">Geben Sie Ihr Passwort ein, um Smart Lock zu aktivieren. Beim nächsten Mal wird Ihr <ph name="DEVICE_TYPE" /> durch Ihr Smartphone entsperrt. Sie können Smart Lock bei Bedarf jederzeit in den Einstellungen deaktivieren.</translation>
 <translation id="473546211690256853">Dieses Konto wird von <ph name="DOMAIN" /> verwaltet.</translation>
 <translation id="4735803855089279419">Das System konnte die Gerätekennungen für dieses Gerät nicht ermitteln.</translation>
+<translation id="4736292055110123391">Lesezeichen, Passwörter, Verlauf und mehr auf allen Geräten synchronisieren</translation>
 <translation id="4737715515457435632">Bitte stellen Sie eine Verbindung zu einem Netzwerk her.</translation>
 <translation id="473775607612524610">Aktualisieren</translation>
 <translation id="4742746985488890273">An Ablage anpinnen</translation>
@@ -2662,7 +2670,7 @@
 <translation id="5185386675596372454">Die aktuelle Version von "<ph name="EXTENSION_NAME" />" wurde deaktiviert, weil sie weitere Berechtigungen erfordert.</translation>
 <translation id="5187295959347858724">Sie sind jetzt in <ph name="SHORT_PRODUCT_NAME" /> angemeldet. Ihre Lesezeichen, der Verlauf sowie andere Einstellungen werden mit Ihrem Google-Konto synchronisiert.</translation>
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
-<translation id="5187892128515678283">Schieben Sie den Schalter auf "An", wenn Sie ein USB-Gerät für Linux freigeben möchten. Die Freigabe bleibt solange aktiviert, wie das Gerät angeschlossen ist.</translation>
+<translation id="5187892128515678283">Schieben Sie den Schalter auf "An", wenn Sie ein USB-Gerät für Linux freigeben möchten. Die Freigabe bleibt so lange aktiviert, wie das Gerät angeschlossen ist.</translation>
 <translation id="51918995459521422"><ph name="ORIGIN" /> möchte mehrere Dateien herunterladen</translation>
 <translation id="5204673965307125349">Bitte führen einen Powerwash auf dem Gerät durch und versuchen Sie es noch einmal.</translation>
 <translation id="5204967432542742771">Passwort eingeben</translation>
@@ -4889,6 +4897,7 @@
 <translation id="8598453409908276158">Plug-in ohne Sandbox blockiert</translation>
 <translation id="8601206103050338563">TLS-WWW-Client-Authentifizierung</translation>
 <translation id="8602851771975208551">Ein anderes Programm auf Ihrem Computer hat eine App hinzugefügt, die sich möglicherweise auf die Funktionsweise von Chrome auswirkt.</translation>
+<translation id="8604763363205185560">Helfen Sie, die Sicherheit und Funktionen von Chrome zu verbessern</translation>
 <translation id="8605428685123651449">SQLite-Speicher</translation>
 <translation id="8606726445206553943">Ihre MIDI-Geräte verwenden</translation>
 <translation id="8609465669617005112">Nach oben</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 29b66204..ccf668a 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Αντιγραφή…</translation>
 <translation id="3473479545200714844">Μεγεθυντής οθόνης</translation>
 <translation id="3475447146579922140">Υπολογιστικό φύλλο Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 γραμμή δεν εμφανίζεται&gt;}other{&lt;$1 γραμμές δεν εμφανίζονται&gt;}}</translation>
 <translation id="3475843873335999118">Δυστυχώς, το δακτυλικό σας αποτύπωμα εξακολουθεί να μην αναγνωρίζεται. Πληκτρολογήστε τον κωδικό πρόσβασής σας.</translation>
 <translation id="347670947055184738">Ωχ! Το σύστημα δεν κατάφερε να ανακτήσει την πολιτική για τη συσκευή σας.</translation>
 <translation id="347785443197175480">Να συνεχίσει να επιτρέπεται στο <ph name="HOST" /> η πρόσβαση στην κάμερα και στο μικρόφωνό σας</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Σφάλμα εισαγωγής της Αρχής Πιστοποίησης</translation>
 <translation id="5269977353971873915">Η εκτύπωση απέτυχε</translation>
 <translation id="5270167208902136840">Εμφάνιση <ph name="NUMBER_OF_MORE_APPS" /> επιπλέον εφαρμογών</translation>
-<translation id="5272654297705279635">Προσαρμοσμένες ρυθμίσεις</translation>
 <translation id="5275352920323889391">Σκύλος</translation>
 <translation id="5275973617553375938">Ανακτημένα αρχεία από το Google Drive</translation>
 <translation id="527605982717517565">Να επιτρέπεται πάντα το JavaScript στο <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 474cc07..8bfb7ae 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="en-GB">
 <translation id="1000498691615767391">Select a folder to open</translation>
 <translation id="1003088604756913841">Open Link in New <ph name="APP" /> Window</translation>
+<translation id="1004218526896219317">Site access</translation>
 <translation id="1005274289863221750">Use your microphone and camera</translation>
 <translation id="1007408791287232274">Could not load devices.</translation>
 <translation id="1008186147501209563">Export bookmarks</translation>
@@ -250,6 +251,7 @@
 <translation id="1361655923249334273">Unused</translation>
 <translation id="1361872463926621533">Play sound on startup</translation>
 <translation id="1363028406613469049">Track</translation>
+<translation id="1364702626840264065">{NUM_TABS,plural, =1{Close tab}other{Close tabs}}</translation>
 <translation id="1367951781824006909">Choose a file</translation>
 <translation id="1370553626198299309">Make sure that your Chromebook is connected to the Internet and that your phone’s Bluetooth is on</translation>
 <translation id="1371301976177520732">Your bookmarks, passwords, history and more on all your devices</translation>
@@ -335,6 +337,7 @@
 <translation id="1489664337021920575">Choose another option</translation>
 <translation id="1493892686965953381">Waiting for <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> other available devices.</translation>
+<translation id="1495677929897281669">Back to tab</translation>
 <translation id="1497522201463361063">Unable to rename "<ph name="FILE_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
 <translation id="1500297251995790841">Unknown device [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">This owner account has to be the first signed-in account in a multiple sign-in session.</translation>
@@ -401,6 +404,7 @@
 <translation id="158849752021629804">Need home network</translation>
 <translation id="1588870296199743671">Open Link With...</translation>
 <translation id="1589055389569595240">Show Spelling and Grammar</translation>
+<translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> PB</translation>
 <translation id="1593594475886691512">Formatting...</translation>
 <translation id="159359590073980872">Image Cache</translation>
 <translation id="1593926297800505364">Save payment method</translation>
@@ -487,6 +491,7 @@
 <translation id="1719312230114180055">Note: Your fingerprint may be less secure than a strong password or PIN.</translation>
 <translation id="1720318856472900922">TLS WWW Server Authentication</translation>
 <translation id="1721937473331968728">You can add classic printers connected to your computer to <ph name="CLOUD_PRINT_NAME" />.</translation>
+<translation id="1722487484194605434">Zipping <ph name="NUMBER_OF_ITEMS" /> items…</translation>
 <translation id="1723824996674794290">&amp;New window</translation>
 <translation id="1725149567830788547">Show &amp;Controls</translation>
 <translation id="1726100011689679555">Name servers</translation>
@@ -509,6 +514,7 @@
 <translation id="175196451752279553">R&amp;eopen closed tab</translation>
 <translation id="1753905327828125965">Most Visited</translation>
 <translation id="1756681705074952506">Input method</translation>
+<translation id="1757301747492736405">Uninstall pending</translation>
 <translation id="175772926354468439">Enable theme</translation>
 <translation id="1758018619400202187">EAP-TLS</translation>
 <translation id="17584710573359123">View in Chrome Web Store</translation>
@@ -577,6 +583,7 @@
 <translation id="1848219224579402567">Sign out when lid is closed</translation>
 <translation id="1849186935225320012">This page has full control of MIDI devices.</translation>
 <translation id="1850508293116537636">Rotate &amp;clockwise</translation>
+<translation id="1852141627593563189">Find harmful software</translation>
 <translation id="1852799913675865625">There was an error while trying to read the file: <ph name="ERROR_TEXT" />.</translation>
 <translation id="1853692000353488670">New incognito tab</translation>
 <translation id="1854180393107901205">Stop casting</translation>
@@ -611,6 +618,7 @@
 <translation id="1895934970388272448">You must confirm registration on your printer to finish this process - check it now.</translation>
 <translation id="1901303067676059328">Select &amp;all</translation>
 <translation id="1902576642799138955">Validity Period</translation>
+<translation id="1904394285866191268">{NUM_TABS,plural, =1{Mute tab}other{Mute tabs}}</translation>
 <translation id="1905375423839394163">Chromebook device name</translation>
 <translation id="1905710495812624430">Maximum allowed attempts exceeded.</translation>
 <translation id="1909880997794698664">Are you sure you want to permanently keep this device in kiosk mode?</translation>
@@ -632,6 +640,7 @@
 <translation id="1931152874660185993">No components installed.</translation>
 <translation id="1932026958134051332">Switch access options</translation>
 <translation id="1932098463447129402">Not Before</translation>
+<translation id="1933345018156373194">Move failed, unexpected error: <ph name="ERROR_MESSAGE" /></translation>
 <translation id="1933809209549026293">Please connect a mouse or a keyboard. If you are using a Bluetooth device, make sure that it is ready to pair.</translation>
 <translation id="1936157145127842922">Show in Folder</translation>
 <translation id="1938351510777341717">External Command</translation>
@@ -733,6 +742,7 @@
 <translation id="2115103655317273167">Send to phone</translation>
 <translation id="2119349053129246860">Open in <ph name="APP" /></translation>
 <translation id="2120297377148151361">Activity and interactions</translation>
+<translation id="2120478168904746065">{NUM_TABS,plural, =1{Unmute Tab}other{Unmute Tabs}}</translation>
 <translation id="2121825465123208577">Re-size</translation>
 <translation id="2124930039827422115">{1,plural, =1{Rated <ph name="AVERAGE_RATING" /> by one user.}other{Rated <ph name="AVERAGE_RATING" /> by # users.}}</translation>
 <translation id="2126167708562367080">Sync is disabled by your administrator.</translation>
@@ -746,6 +756,7 @@
 <translation id="2136476978468204130">The passphrase you entered is incorrect</translation>
 <translation id="2137068468602026500">Click <ph name="BEGIN_BOLD" />Microsoft Edge<ph name="END_BOLD" /> under Web Browser</translation>
 <translation id="2138398485845393913">Connection to '<ph name="DEVICE_NAME" />' still in progress</translation>
+<translation id="2138867954865495510">Unable to open '<ph name="PATH" />': <ph name="ERROR_MESSAGE" /></translation>
 <translation id="214169863967063661">Open appearance settings</translation>
 <translation id="2142328300403846845">Open Link as</translation>
 <translation id="2143765403545170146">Always Show Toolbar in Full Screen</translation>
@@ -765,6 +776,7 @@
 <translation id="2157875535253991059">This page is now full screen.</translation>
 <translation id="216169395504480358">Add Wi-Fi ...</translation>
 <translation id="2162155940152307086">Sync will start once you leave sync settings</translation>
+<translation id="2163152940313951844">Invalid character: <ph name="CHARACTER_NAME" /></translation>
 <translation id="2163470535490402084">Please connect to the Internet to sign in to your <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">The quick brown fox jumps over the lazy dog</translation>
 <translation id="2169062631698640254">Sign in anyway</translation>
@@ -810,6 +822,7 @@
 <translation id="2220572644011485463">PIN or password</translation>
 <translation id="2224444042887712269">This setting belongs to <ph name="OWNER_EMAIL" />.</translation>
 <translation id="2224551243087462610">Edit folder name</translation>
+<translation id="2225536596944493418">Are you sure that you want to delete <ph name="NUMBER_OF_ITEMS" /> items?</translation>
 <translation id="2226449515541314767">This site has been blocked from having full control of MIDI devices.</translation>
 <translation id="2226720438730111184">Tell us what's happening</translation>
 <translation id="2229161054156947610">More than 1 hour left</translation>
@@ -856,12 +869,15 @@
 <translation id="2282155092769082568">Auto-configuration URL:</translation>
 <translation id="2288181517385084064">Switch to video recorder</translation>
 <translation id="2288735659267887385">Accessibility settings</translation>
+<translation id="2291538123825441971">Opening <ph name="NUMBER_OF_FILES" /> files.</translation>
 <translation id="2292848386125228270">Please start <ph name="PRODUCT_NAME" /> as a normal user. If you need to run as root for development, re-run with the – no-sandbox flag.</translation>
 <translation id="2294358108254308676">Do you want to install <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2297705863329999812">Search printers</translation>
 <translation id="2300383962156589922">Customise and control <ph name="APP_NAME" /></translation>
 <translation id="2301382460326681002">Extension root directory is invalid.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" has requested additional permissions.</translation>
+<translation id="2303301624314357662">Opening file <ph name="FILE_NAME" />.</translation>
+<translation id="2305020378527873881"><ph name="VOLUME_NAME" /> has been ejected.</translation>
 <translation id="2307462900900812319">Configure network</translation>
 <translation id="230927227160767054">This page wants to install a service handler.</translation>
 <translation id="2309620859903500144">This site has been blocked from accessing your motion or light sensors.</translation>
@@ -908,6 +924,7 @@
 <translation id="2371076942591664043">Open when &amp;done</translation>
 <translation id="2375406435414127095">Connect to your phone</translation>
 <translation id="2377319039870049694">Switch to list view</translation>
+<translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> folders shared with Linux</translation>
 <translation id="2377667304966270281">Hard Faults</translation>
 <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> files selected</translation>
 <translation id="237828693408258535">Translate this page?</translation>
@@ -1056,6 +1073,7 @@
 <translation id="2610260699262139870">A&amp;ctual Size</translation>
 <translation id="2610780100389066815">Microsoft Trust List Signing</translation>
 <translation id="2612676031748830579">Card number</translation>
+<translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> video</translation>
 <translation id="2616366145935564096">Read and change your data on <ph name="WEBSITE_1" /></translation>
 <translation id="2617342710774726426">SIM card is locked</translation>
 <translation id="2619761439309613843">Daily Refresh</translation>
@@ -1436,6 +1454,7 @@
 <translation id="321356136776075234">Device OU (e.g. OU=Chromebooks,DC=example,DC=com)</translation>
 <translation id="3217843140356091325">Create shortcut?</translation>
 <translation id="321799795901478485">Zip Archiver</translation>
+<translation id="321834671654278338">Linux uninstaller</translation>
 <translation id="3220586366024592812">The <ph name="CLOUD_PRINT_NAME" /> connector process has crashed. Restart?</translation>
 <translation id="3221634914176615296">Explore the device's content in the Files app.</translation>
 <translation id="3222066309010235055">Prerender: <ph name="PRERENDER_CONTENTS_NAME" /></translation>
@@ -1550,6 +1569,7 @@
 <translation id="3406605057700382950">&amp;Show bookmarks bar</translation>
 <translation id="3407837288045706722">For more settings that relate to privacy, security and data collection, see <ph name="BEGIN_LINK" />Sync and personalisation<ph name="END_LINK" /></translation>
 <translation id="3409785640040772790">Maps</translation>
+<translation id="3410832398355316179">All files and local data associated with this user will be permanently deleted once this user is removed. <ph name="USER_EMAIL" /> can still sign in later.</translation>
 <translation id="3412265149091626468">Jump to Selection</translation>
 <translation id="3413122095806433232">CA Issuers: <ph name="LOCATION" /></translation>
 <translation id="3414856743105198592">Formatting the removable media is going to erase all data. Do you wish to continue?</translation>
@@ -1601,7 +1621,6 @@
 <translation id="3470502288861289375">Copying...</translation>
 <translation id="3473479545200714844">Screen magnifier</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 line not shown&gt;}other{&lt;$1 lines not shown&gt;}}</translation>
 <translation id="3475843873335999118">Sorry, your fingerprint is still not recognised. Please enter your password.</translation>
 <translation id="347670947055184738">Oops!  The system failed to fetch policy for your device.</translation>
 <translation id="347785443197175480">Continue allowing <ph name="HOST" /> to access your camera and microphone</translation>
@@ -1774,6 +1793,7 @@
 <translation id="3722108462506185496">Error starting the virtual machine service. Please try again.</translation>
 <translation id="3723158278575423087">Welcome to the Cast experience in Chromium!</translation>
 <translation id="3725367690636977613">pages</translation>
+<translation id="3726137731714254362">Removing folders from here will stop sharing but will not delete files.</translation>
 <translation id="3726463242007121105">This device cannot be opened because its file system is not supported.</translation>
 <translation id="3727148787322499904">Changing this setting will affect all shared networks</translation>
 <translation id="3727187387656390258">Inspect pop-up</translation>
@@ -1816,6 +1836,7 @@
 <translation id="3778868487658107119">Ask it questions. Tell it to do things. It's your personal Google, always ready to help.</translation>
 <translation id="3780536599611287598">You don't have permission to move files into '<ph name="FOLDER_NAME" />'.</translation>
 <translation id="378312418865624974">Read a unique identifier for this computer</translation>
+<translation id="3785071023202624850">{NUM_TABS,plural, =1{Mute Tab}other{Mute Tabs}}</translation>
 <translation id="3785308913036335955">Show Apps Shortcut</translation>
 <translation id="3785727820640310185">Saved passwords for this site</translation>
 <translation id="3786301125658655746">You are offline</translation>
@@ -1904,6 +1925,7 @@
 <translation id="3905761538810670789">Repair app</translation>
 <translation id="3908393983276948098"><ph name="PLUGIN_NAME" /> is out of date</translation>
 <translation id="3908501907586732282">Enable extension</translation>
+<translation id="3909477809443608991"><ph name="URL" /> wants to play protected content. Your device's identity will be verified by Google and may be accessed by this site.</translation>
 <translation id="3909690856344416952"><ph name="LANGUAGE_1" />, <ph name="LANGUAGE_2" />, and 1 other</translation>
 <translation id="3909791450649380159">Cu&amp;t</translation>
 <translation id="3911073280391218446"><ph name="USER_DISPLAY_NAME" /> (name used on this device)</translation>
@@ -1969,6 +1991,7 @@
 <translation id="3994374631886003300">Unlock your phone and bring it closer to unlock your <ph name="DEVICE_TYPE" />.</translation>
 <translation id="3994878504415702912">&amp;Zoom</translation>
 <translation id="3995138139523574647">USB-C device (right-hand-side back port)</translation>
+<translation id="3996366967769547206">{NUM_TABS,plural, =1{Unpin Tab}other{Unpin Tabs}}</translation>
 <translation id="4002066346123236978">Title</translation>
 <translation id="4002440992267487163">Pin setup</translation>
 <translation id="4005817994523282006">Time zone detection method</translation>
@@ -2007,6 +2030,7 @@
 <translation id="4068506536726151626">This page contains elements from the following sites that are tracking your location:</translation>
 <translation id="4068776064906523561">Saved fingerprints</translation>
 <translation id="407173827865827707">On click</translation>
+<translation id="4072793381000095">{NUM_TABS,plural, =1{Unpin tab}other{Unpin tabs}}</translation>
 <translation id="4074900173531346617">Email Signer Certificate</translation>
 <translation id="407520071244661467">Scale</translation>
 <translation id="4075639477629295004">Unable to cast <ph name="FILE_NAME" />.</translation>
@@ -2094,6 +2118,7 @@
 <translation id="421017592316736757">You must be online to access this file.</translation>
 <translation id="421182450098841253">&amp;Show Bookmarks Bar</translation>
 <translation id="42126664696688958">Export</translation>
+<translation id="4212740939091998969">The folder named '<ph name="FOLDER_NAME" />' already exists. Please choose a different name.</translation>
 <translation id="42137655013211669">Access to this resource was forbidden by the server.</translation>
 <translation id="4215350869199060536">Oops, illegal symbols in name!</translation>
 <translation id="4215448920900139318">Backing up <ph name="FILE_COUNT" /></translation>
@@ -2151,8 +2176,11 @@
 <translation id="4316850752623536204">Developer Website</translation>
 <translation id="4320177379694898372">No internet connection</translation>
 <translation id="4320948194796820126">Add a bookmark to your email</translation>
+<translation id="4321442524549817090">S&amp;how URL</translation>
 <translation id="4322394346347055525">Close Other Tabs</translation>
 <translation id="4324577459193912240">File incomplete</translation>
+<translation id="4325237902968425115">Uninstalling <ph name="LINUX_APP_NAME" />…</translation>
+<translation id="4328203388435897516">When your Chromebook is set up, press the Assistant button or say "Ok Google" to get help at any time. Go to Assistant settings to make changes.</translation>
 <translation id="4330387663455830245">Never Translate <ph name="LANGUAGE" /></translation>
 <translation id="4333854382783149454">PKCS #1 SHA-1 With RSA Encryption</translation>
 <translation id="4336032328163998280">Copy operation failed. <ph name="ERROR_MESSAGE" /></translation>
@@ -2299,6 +2327,7 @@
 <translation id="4572659312570518089">Authentication cancelled while connecting to "<ph name="DEVICE_NAME" />".</translation>
 <translation id="4572815280350369984"><ph name="FILE_TYPE" /> file</translation>
 <translation id="457386861538956877">More...</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Pair Bluetooth device</translation>
 <translation id="4579581181964204535">Unable to cast <ph name="HOST_NAME" />.</translation>
 <translation id="4582497162516204941">Install with Linux (Beta)</translation>
@@ -2397,6 +2426,7 @@
 <translation id="473775607612524610">Update</translation>
 <translation id="4742746985488890273">Pin to Shelf</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Find out how to update applications<ph name="END_LINK" /></translation>
+<translation id="4744981231093950366">{NUM_TABS,plural, =1{Unmute site}other{Unmute sites}}</translation>
 <translation id="4746351372139058112">Messages</translation>
 <translation id="4746971725921104503">Looks like you're already managing a user by that name. Did you want to <ph name="LINK_START" />import <ph name="USER_DISPLAY_NAME" /> to this device<ph name="LINK_END" />?</translation>
 <translation id="4748762018725435655">Requires extension from the Chrome Web Store</translation>
@@ -2421,6 +2451,7 @@
 <translation id="4780321648949301421">Save Page As...</translation>
 <translation id="4784330909746505604">PowerPoint presentation</translation>
 <translation id="4788092183367008521">Please check your network connection and try again.</translation>
+<translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4790972063719531840">Automatically send diagnostic and usage data to Google</translation>
 <translation id="4792711294155034829">&amp;Report an Issue...</translation>
 <translation id="479536056609751218">Web Page, HTML Only</translation>
@@ -2474,6 +2505,7 @@
 <translation id="4870903493621965035">No paired devices</translation>
 <translation id="4871308555310586478">Not from Chrome Web Store.</translation>
 <translation id="4871370605780490696">Add bookmark</translation>
+<translation id="4873265419374180291"><ph name="NUMBER_OF_BYTES" /> bytes</translation>
 <translation id="4873312501243535625">Media File Checker</translation>
 <translation id="4876273079589074638">Help our engineers investigate and fix this crash. List exact steps if you can. No detail is too small!</translation>
 <translation id="4876895919560854374">Lock and unlock the screen</translation>
@@ -2494,8 +2526,10 @@
 <translation id="4885705234041587624">MSCHAPv2</translation>
 <translation id="4887424188275796356">Open With System Viewer</translation>
 <translation id="488785315393301722">Show Details</translation>
+<translation id="4890242622846228088">Your Assistant uses these recordings and your spoken requests to create and update your voice model, which is only stored on devices where you've turned on Voice Match. View or delete voice activity in your Google activity controls.</translation>
 <translation id="4890773143211625964">Show advanced printer options</translation>
 <translation id="4891089016822695758">Beta forum</translation>
+<translation id="4892969127351273348">Unable to open with <ph name="APP_NAME" /></translation>
 <translation id="4893336867552636863">This will permanently delete your browsing data from this device.</translation>
 <translation id="4893522937062257019">On the lock screen</translation>
 <translation id="4898011734382862273">The certificate '<ph name="CERTIFICATE_NAME" />' represents a Certification Authority</translation>
@@ -2545,12 +2579,15 @@
 <translation id="4972129977812092092">Edit printer</translation>
 <translation id="4972164225939028131">Wrong password</translation>
 <translation id="4973307593867026061">Add printers</translation>
+<translation id="4973325300212422370">{NUM_TABS,plural, =1{Mute site}other{Mute sites}}</translation>
 <translation id="4973523518332075481">Use a name that's <ph name="MAX_LENGTH" /> characters or less</translation>
+<translation id="4973970068702235170">Zipping failed, unexpected error: <ph name="ERROR_MESSAGE" /></translation>
 <translation id="4974733135013075877">Exit and child lock</translation>
 <translation id="4977942889532008999">Confirm Access</translation>
 <translation id="4980805016576257426">This extension contains malware.</translation>
 <translation id="4981449534399733132">To clear browsing data from all of your synced devices and your Google Account, <ph name="BEGIN_LINK" />sign in<ph name="END_LINK" />.</translation>
 <translation id="498294082491145744">Change your settings that control websites' access to features such as cookies, JavaScript, plug-ins, geo-location, microphone, camera etc.</translation>
+<translation id="4988205478593450158">Are you sure that you want to delete '<ph name="FILE_NAME" />'?</translation>
 <translation id="4988526792673242964">Pages</translation>
 <translation id="49896407730300355">Rotate a&amp;nti-clockwise</translation>
 <translation id="4989966318180235467">Inspect &amp;background page</translation>
@@ -2669,6 +2706,7 @@
 <translation id="5177526793333269655">Thumbnail view</translation>
 <translation id="5177549709747445269">You are using mobile data</translation>
 <translation id="5178667623289523808">Find Previous</translation>
+<translation id="5179127818058486126">{NUM_TABS,plural, =1{Unmute tab}other{Unmute tabs}}</translation>
 <translation id="5181140330217080051">Downloading</translation>
 <translation id="5184063094292164363">&amp;JavaScript Console</translation>
 <translation id="5184662919967270437">Updating your device</translation>
@@ -2706,6 +2744,7 @@
 <translation id="5242724311594467048">Enable "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="5243522832766285132">Please try again in a few moments</translation>
 <translation id="5244474230056479698">Syncing to <ph name="EMAIL" /></translation>
+<translation id="52446585071384036">To open files with <ph name="APP_NAME" />, first copy to Linux files folder.</translation>
 <translation id="5246282308050205996"><ph name="APP_NAME" /> has crashed. Click this balloon to restart the app.</translation>
 <translation id="5247051749037287028">Display name (optional)</translation>
 <translation id="5249624017678798539">The browser crashed before the download completed.</translation>
@@ -2731,8 +2770,8 @@
 <translation id="5266113311903163739">Certification Authority Import Error</translation>
 <translation id="5269977353971873915">Print Failed</translation>
 <translation id="5270167208902136840">Show <ph name="NUMBER_OF_MORE_APPS" /> more apps</translation>
-<translation id="5272654297705279635">Custom settings</translation>
 <translation id="5275352920323889391">Dog</translation>
+<translation id="5275776633505022322">Attempts left: <ph name="ATTEMPTS_LEFT" /></translation>
 <translation id="5275973617553375938">Recovered files from Google Drive</translation>
 <translation id="527605982717517565">Always allow JavaScript on <ph name="HOST" /></translation>
 <translation id="5280426389926346830">Create Shortcut?</translation>
@@ -2796,6 +2835,7 @@
 <translation id="5360150013186312835">Show in Toolbar</translation>
 <translation id="5362741141255528695">Select private key file.</translation>
 <translation id="5363109466694494651">Powerwash and Revert</translation>
+<translation id="5365881113273618889">The folder that you selected contains sensitive files. Are you sure that you want to grant '<ph name="APP_NAME" />' permanent write access to this folder?</translation>
 <translation id="5367091008316207019">Reading file..</translation>
 <translation id="5368191757080475556">Share folder with Linux</translation>
 <translation id="5368720394188453070">Your phone is locked. Unlock it to enter.</translation>
@@ -2911,6 +2951,7 @@
 <translation id="5530766185686772672">Close incognito tabs</translation>
 <translation id="5532223876348815659">Global</translation>
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> wants to</translation>
+<translation id="5533102081734025921"><ph name="IMAGE_TYPE" /> image</translation>
 <translation id="5534304873398226603">Discard photo or video</translation>
 <translation id="5534520101572674276">Calculating size</translation>
 <translation id="5535941515421698170">Also remove your existing data from this device</translation>
@@ -3044,6 +3085,7 @@
 <translation id="5719603411793408026">Default search engines</translation>
 <translation id="5720705177508910913">Current user</translation>
 <translation id="572155275267014074">Android settings</translation>
+<translation id="5722930212736070253">Aw, Snap! The Zip Archiver encountered an error.</translation>
 <translation id="572328651809341494">Recent tabs</translation>
 <translation id="5723508132121499792">No background apps running</translation>
 <translation id="5727728807527375859">Extensions, apps and themes can harm your computer. Are you sure that you want to continue?</translation>
@@ -3079,6 +3121,7 @@
 <translation id="577624874850706961">Search cookies</translation>
 <translation id="5777468213129569553">Open Chrome</translation>
 <translation id="5778747455497889540">Below is the randomly generated secure module password that has been assigned to your computer:</translation>
+<translation id="5780011244986845107">The folder that you selected contains sensitive files. Are you sure that you want to grant '<ph name="APP_NAME" />' permanent read access to this folder?</translation>
 <translation id="5780973441651030252">Process priority</translation>
 <translation id="5781092003150880845">Sync as <ph name="ACCOUNT_FULL_NAME" /></translation>
 <translation id="5781865261247219930">Send commands to <ph name="EXTENSION_NAME" /></translation>
@@ -3135,6 +3178,7 @@
 <translation id="5855773610748894548">Oops, secure module error.</translation>
 <translation id="5856721540245522153">Enable debugging features</translation>
 <translation id="5857090052475505287">New Folder</translation>
+<translation id="5857774240076772505">Give Linux apps permission to modify files in the <ph name="FOLDER_NAME" /> folder</translation>
 <translation id="5858490737742085133">Terminal</translation>
 <translation id="585979798156957858">External Meta</translation>
 <translation id="5860033963881614850">Off</translation>
@@ -3171,6 +3215,7 @@
 <translation id="5911737117543891828">Temporary Google Drive offline files will be deleted. Files that you’ve set as available offline won’t be deleted from this device.</translation>
 <translation id="5911887972742538906">An error occurred during installation of your Linux application.</translation>
 <translation id="5912378097832178659">&amp;Edit search engines...</translation>
+<translation id="5913638992615760742">Copy operation failed, unexpected error: <ph name="ERROR_MESSAGE" /></translation>
 <translation id="5914724413750400082">Modulus (<ph name="MODULUS_NUM_BITS" /> bits):
   <ph name="MODULUS_HEX_DUMP" />
 
@@ -3197,6 +3242,7 @@
 <translation id="5941343993301164315">Please sign in to <ph name="TOKEN_NAME" />.</translation>
 <translation id="5941711191222866238">Minimise</translation>
 <translation id="5946591249682680882">Report ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation>
+<translation id="5949281959820712067">Give Linux apps permission to modify files in your Google Drive. Changes will sync to your other devices.</translation>
 <translation id="5949544233750246342">Unable to parse file</translation>
 <translation id="5955282598396714173">Your password has expired. Please sign out then sign in again to change it.</translation>
 <translation id="5955809630138889698">This device might be only eligible for online demo mode. Please contact your support representative for more details.</translation>
@@ -3487,6 +3533,7 @@
 <translation id="6390799748543157332">Pages that you view in this window won’t appear in the browser history and they won’t leave other traces, like cookies, on the computer after you close all open Guest windows. Any files that you download, however, will be preserved.</translation>
 <translation id="6390994422085833176">Review sync and personalisation features following setup</translation>
 <translation id="6395423953133416962">Send <ph name="BEGIN_LINK1" />system information<ph name="END_LINK1" /> and <ph name="BEGIN_LINK2" />metrics<ph name="END_LINK2" /></translation>
+<translation id="6395575651121294044"><ph name="NUMBER_OF_FILES" /> items</translation>
 <translation id="6397094776139756010">Sync and personalisation options</translation>
 <translation id="6397592254427394018">Open all bookmarks in &amp;Incognito window</translation>
 <translation id="6398715114293939307">Remove Google Play Store</translation>
@@ -3680,6 +3727,7 @@
 <translation id="6691331417640343772">Manage synced data on Google Dashboard</translation>
 <translation id="6691936601825168937">&amp;Forward</translation>
 <translation id="6697492270171225480">Show suggestions for similar pages when a page can't be found</translation>
+<translation id="6697690052557311665">To share, right-click on a folder in Files app, then select 'Share with Linux'.</translation>
 <translation id="6698810901424468597">Read and change your data on <ph name="WEBSITE_1" /> and <ph name="WEBSITE_2" /></translation>
 <translation id="6700480081846086223">Cast <ph name="HOST_NAME" /></translation>
 <translation id="6701535245008341853">Could not get profile.</translation>
@@ -3795,6 +3843,7 @@
 <translation id="6886476658664859389">NFC security key</translation>
 <translation id="6886871292305414135">Open link in new &amp;tab</translation>
 <translation id="6892812721183419409">Open Link as <ph name="USER" /></translation>
+<translation id="6895032998810961280">Report details to Google about harmful software, system settings and processes that were found on your computer during this clean up</translation>
 <translation id="6896758677409633944">Copy</translation>
 <translation id="6898440773573063262">Kiosk applications can now be configured to auto-launch on this device.</translation>
 <translation id="6898699227549475383">Organisation (O)</translation>
@@ -3809,6 +3858,7 @@
 <translation id="6911324888870229398">Network connection was lost. Please check your connection or try another Wi-Fi network.</translation>
 <translation id="6911734910326569517">Memory footprint</translation>
 <translation id="6914783257214138813">Your passwords will be visible to anyone who can see the exported file.</translation>
+<translation id="691516599546977041">Cannot save to <ph name="FOLDER_NAME" />. Edited images will be saved in the Downloads folder.</translation>
 <translation id="6915804003454593391">User:</translation>
 <translation id="6916590542764765824">Manage Extensions</translation>
 <translation id="691914323712916303">https://news.google.com</translation>
@@ -3988,6 +4038,7 @@
 <translation id="7186088072322679094">Keep in Toolbar</translation>
 <translation id="7187428571767585875">Registry entries to be removed or changed:</translation>
 <translation id="7189234443051076392">Make sure that there is enough space on your device</translation>
+<translation id="7189874332498648577"><ph name="NUMBER_OF_GB" /> GB</translation>
 <translation id="7189965711416741966">Fingerprint added.</translation>
 <translation id="7191159667348037">Unknown Printer (USB)</translation>
 <translation id="7191454237977785534">Save file as</translation>
@@ -4001,6 +4052,7 @@
 <translation id="7201118060536064622">'<ph name="DELETED_ITEM_NAME" />' deleted</translation>
 <translation id="7206693748120342859">Downloading <ph name="PLUGIN_NAME" />...</translation>
 <translation id="720715819012336933">{NUM_PAGES,plural, =1{Exit page}other{Exit pages}}</translation>
+<translation id="7207631048330366454">Search apps</translation>
 <translation id="7210499381659830293">Extension printers</translation>
 <translation id="721467499098558573">Press and hold the button on your security key for at least 5 seconds</translation>
 <translation id="7216409898977639127">Mobile provider</translation>
@@ -4097,6 +4149,7 @@
 <translation id="7352651011704765696">Something went wrong</translation>
 <translation id="735361434055555355">Installing Linux...</translation>
 <translation id="735745346212279324">VPN disconnected</translation>
+<translation id="7359359531237882347">Copying <ph name="NUMBER_OF_ITEMS" /> items…</translation>
 <translation id="7359588939039777303">Ads blocked.</translation>
 <translation id="7360183604634508679">Bookmarks menu</translation>
 <translation id="7360233684753165754"><ph name="PAGE_NUMBER" /> pages to <ph name="PRINTER_NAME" /></translation>
@@ -4104,6 +4157,7 @@
 <translation id="7361537270840348817">Disconnect your phone from your Chromebook</translation>
 <translation id="7362862325990022643">https://youtube.com</translation>
 <translation id="7363117941401515667">Updated <ph name="HOURS" /> hrs ago</translation>
+<translation id="7363260028279024205">{NUM_TABS,plural, =1{Pin Tab}other{Pin Tabs}}</translation>
 <translation id="7364796246159120393">Choose file</translation>
 <translation id="7366415735885268578">Add a site</translation>
 <translation id="7366909168761621528">Browsing data</translation>
@@ -4117,6 +4171,7 @@
 <translation id="7378812711085314936">Get data connection</translation>
 <translation id="7384292194278095697">This device is no longer supported</translation>
 <translation id="7385854874724088939">Something went wrong when trying to print.  Please check your printer and try again.</translation>
+<translation id="7385896526023870365">This extension has no additional site access.</translation>
 <translation id="7388044238629873883">You've almost finished!</translation>
 <translation id="7388222713940428051">Open Guest window</translation>
 <translation id="7392118418926456391">Virus scan failed</translation>
@@ -4132,6 +4187,7 @@
 <translation id="741204030948306876">Yes, I'm in</translation>
 <translation id="7412226954991670867">GPU Memory</translation>
 <translation id="7414464185801331860">18x</translation>
+<translation id="7415353017141825619">{NUM_TABS,plural, =1{Pin tab}other{Pin tabs}}</translation>
 <translation id="7416362041876611053">Unknown network error</translation>
 <translation id="7417705661718309329">Google map</translation>
 <translation id="741906494724992817">This app requires no special permissions.</translation>
@@ -4180,6 +4236,7 @@
 <translation id="7494065396242762445">Open Windows Settings</translation>
 <translation id="7494694779888133066"><ph name="WIDTH" /> x <ph name="HEIGHT" /></translation>
 <translation id="7495778526395737099">Forgot your old password?</translation>
+<translation id="7496511874649569424"><ph name="LINUX_APP_NAME" /> and the data associated with it will be removed from this device.</translation>
 <translation id="7497215489070763236">Server CA certificate</translation>
 <translation id="7497981768003291373">You have no recently captured WebRTC text logs.</translation>
 <translation id="7502658306369382406">IPv6 address</translation>
@@ -4271,6 +4328,7 @@
 <translation id="7650511557061837441">"<ph name="TRIGGERING_EXTENSION_NAME" />" would like to remove "<ph name="EXTENSION_NAME" />".</translation>
 <translation id="7652808307838961528">Edit person, <ph name="PROFILE_NAME" /></translation>
 <translation id="765293928828334535">Apps, extensions and user scripts cannot be added from this website</translation>
+<translation id="7654209398114106148">Moving <ph name="NUMBER_OF_ITEMS" /> items…</translation>
 <translation id="7654941827281939388">This account is already being used on this computer.</translation>
 <translation id="7658239707568436148">Cancel</translation>
 <translation id="7659584679870740384">You are not authorised to use this device. Please contact the administrator for sign-in permission.</translation>
@@ -4409,6 +4467,7 @@
     <ph name="BR" />
     <ph name="BR" />
     <ph name="BEGIN_BOLD" />Note:<ph name="END_BOLD" /> The system will reboot during the process.</translation>
+<translation id="7827012282502221009"><ph name="NUMBER_OF_TB" /> TB</translation>
 <translation id="7829298379596169484">Accessing audio input</translation>
 <translation id="7831491651892296503">Error configuring network</translation>
 <translation id="7831754656372780761"><ph name="TAB_TITLE" /> <ph name="EMOJI_MUTING" /></translation>
@@ -4440,6 +4499,7 @@
 <translation id="786957569166715433"><ph name="DEVICE_NAME" /> – Paired</translation>
 <translation id="7870730066603611552">Review sync options following setup</translation>
 <translation id="7870790288828963061">No Kiosk apps with newer version found. Nothing to update. Please remove the USB stick.</translation>
+<translation id="7873831373602885875">Cannot save to <ph name="FOLDER_NAME" />. All edits will be saved to <ph name="DOWNLOADS_FOLDER" /> in the Downloads folder.</translation>
 <translation id="7874257161694977650">Chrome backgrounds</translation>
 <translation id="7877451762676714207">Unknown server error. Please try again, or contact the server administrator.</translation>
 <translation id="7877680364634660272">Tour</translation>
@@ -4481,6 +4541,7 @@
 <translation id="7930294771522048157">Saved payment methods will appear here</translation>
 <translation id="79312157130859720"><ph name="APP_NAME" /> is sharing your screen and audio.</translation>
 <translation id="7931318309563332511">Unknown</translation>
+<translation id="7933314993013528982">{NUM_TABS,plural, =1{Unmute Site}other{Unmute Sites}}</translation>
 <translation id="7934414805353235750"><ph name="URL" /> wants to play protected content. Your device’s identity will be verified by Google.</translation>
 <translation id="793531125873261495">Error downloading the virtual machine. Please try again.</translation>
 <translation id="7938594894617528435">Currently offline</translation>
@@ -4533,6 +4594,7 @@
 Keep your key file in a safe place. You will need it to create new versions of your extension.</translation>
 <translation id="799923393800005025">Can view</translation>
 <translation id="8000066093800657092">No network</translation>
+<translation id="8000467600002607205">{NUM_TABS,plural, =1{Close Tab}other{Close Tabs}}</translation>
 <translation id="8004582292198964060">Browser</translation>
 <translation id="8005600846065423578">Always allow <ph name="HOST" /> to see the clipboard</translation>
 <translation id="8008356846765065031">Internet disconnected. Please check your Internet connection.</translation>
@@ -4563,6 +4625,7 @@
 <translation id="8037357227543935929">Ask (default)</translation>
 <translation id="803771048473350947">File</translation>
 <translation id="8038111231936746805">(default)</translation>
+<translation id="8042602468072383151"><ph name="AUDIO_TYPE" /> audio</translation>
 <translation id="8044899503464538266">Slow</translation>
 <translation id="8045253504249021590">Sync has been stopped via the Google Dashboard.</translation>
 <translation id="8045923671629973368">Enter application ID or web store URL</translation>
@@ -4578,6 +4641,7 @@
 <translation id="8059417245945632445">&amp;Inspect devices</translation>
 <translation id="8063235345342641131">Default green avatar</translation>
 <translation id="8064671687106936412">Key:</translation>
+<translation id="8066773524873206594">All edits will be saved to <ph name="DOWNLOADS_FOLDER" />.</translation>
 <translation id="806812017500012252">Reorder by title</translation>
 <translation id="8068253693380742035">Touch to sign in</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
@@ -4756,6 +4820,7 @@
 <translation id="8342861492835240085">Select a collection</translation>
 <translation id="8343956361364550006">Use high bandwidth for best video or animation. Other people with slow connections may not see your content.</translation>
 <translation id="8351419472474436977">This extension has taken control of your proxy settings, which means it can change, break or eavesdrop on anything that you do online. If you aren't sure why this change happened, you probably don't want it.</translation>
+<translation id="835238322900896202">An error occurred during uninstallation. Please uninstall through the Terminal.</translation>
 <translation id="8352772353338965963">Add an account to multiple sign-in. All signed-in accounts can be accessed without a password, so this feature should only be used with trusted accounts.</translation>
 <translation id="8353683614194668312">It can:</translation>
 <translation id="8356197132883132838"><ph name="TITLE" /> - <ph name="COUNT" /></translation>
@@ -4766,6 +4831,7 @@
 <translation id="8366396658833131068">Your network connectivity is restored. Please select a different network or press 'Continue' button below to launch your kiosk app.</translation>
 <translation id="8368859634510605990">&amp;Open all bookmarks</translation>
 <translation id="8371695176452482769">Speak now</translation>
+<translation id="8371925839118813971">{NUM_TABS,plural, =1{Mute Site}other{Mute Sites}}</translation>
 <translation id="8372369524088641025">Bad WEP key</translation>
 <translation id="8378714024927312812">Managed by your organisation</translation>
 <translation id="8379878387931047019">This device doesn't support the type of security key requested by this website</translation>
@@ -5048,6 +5114,7 @@
 <translation id="8807632654848257479">Stable</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Cat</translation>
+<translation id="8810671769985673465">Zipping failed, item exists: '<ph name="FILE_NAME" />'</translation>
 <translation id="8813698869395535039">Can't sign in to <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">sheet of paper</translation>
 <translation id="8814190375133053267">Wi-Fi</translation>
@@ -5097,6 +5164,7 @@
 <translation id="8888432776533519951">Colour:</translation>
 <translation id="8890516388109605451">Sources</translation>
 <translation id="8892168913673237979">Ready!</translation>
+<translation id="8893801527741465188">Uninstall complete</translation>
 <translation id="8893928184421379330">Sorry, the device <ph name="DEVICE_LABEL" /> could not be recognised.</translation>
 <translation id="8895454554629927345">Bookmark list</translation>
 <translation id="8898786835233784856">Select Next Tab</translation>
@@ -5186,6 +5254,7 @@
 <translation id="9037008143807155145">https://www.google.com/calendar/render?cid=%s</translation>
 <translation id="9037965129289936994">Show Original</translation>
 <translation id="9038430547971207796">Next time, your phone will unlock your <ph name="DEVICE_TYPE" />. Turn off Smart Lock in Settings.</translation>
+<translation id="9038620279323455325">The file named '<ph name="FILE_NAME" />' already exists. Please choose a different name.</translation>
 <translation id="9038649477754266430">Use a prediction service to load pages more quickly</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9040661932550800571">Update password for <ph name="ORIGIN" />?</translation>
@@ -5340,6 +5409,7 @@
 <translation id="984275831282074731">Payment methods</translation>
 <translation id="98515147261107953">Landscape</translation>
 <translation id="987897973846887088">No images available</translation>
+<translation id="988685240266037636">A file named '<ph name="FILE_NAME" />' already exists. Do you want to replace it?</translation>
 <translation id="988978206646512040">Empty passphrase is not allowed</translation>
 <translation id="992032470292211616">Extensions, apps and themes can harm your mobile device. Are you sure that you want to continue?</translation>
 <translation id="992592832486024913">Disable ChromeVox (spoken feedback)</translation>
@@ -5347,5 +5417,6 @@
 <translation id="994289308992179865">&amp;Loop</translation>
 <translation id="995782501881226248">YouTube</translation>
 <translation id="996250603853062861">Establishing secure connection...</translation>
+<translation id="996903396648773764"><ph name="NUMBER_OF_MB" /> MB</translation>
 <translation id="998747458861718449">I&amp;nspect</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 04145af6..bd81b57 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -761,6 +761,7 @@
 <translation id="215753907730220065">Salir de pantalla completa</translation>
 <translation id="2157875535253991059">Esta página está en modo de pantalla completa.</translation>
 <translation id="216169395504480358">Agregar Wi-Fi</translation>
+<translation id="2162155940152307086">La sincronización volverá a comenzar cuando salgas de la configuración</translation>
 <translation id="2163470535490402084">Conéctate a Internet para acceder a tu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">El veloz murciélago hindú comía feliz cardillo y kiwi</translation>
 <translation id="2169062631698640254">Acceder de todos modos</translation>
@@ -771,6 +772,7 @@
 <translation id="2178098616815594724">El complemento <ph name="PEPPER_PLUGIN_NAME" /> del dominio <ph name="PEPPER_PLUGIN_DOMAIN" /> desea acceder a tu computadora</translation>
 <translation id="2178614541317717477">Compromiso de entidad de certificación</translation>
 <translation id="218070003709087997">Usa un número para indicar la cantidad de copias que deseas imprimir (1 a 999).</translation>
+<translation id="2182253583899676504">El texto que escribas en los campos de texto se enviará a Google.</translation>
 <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios pueden reproducir sonido (recomendado)</translation>
 <translation id="2187895286714876935">Error en el servidor de importación de certificado</translation>
 <translation id="2187906491731510095">Se actualizaron las extensiones</translation>
@@ -782,7 +784,9 @@
 <translation id="2192505247865591433">De:</translation>
 <translation id="2193365732679659387">Configuración de confianza</translation>
 <translation id="2195729137168608510">Protección de correo electrónico</translation>
+<translation id="2198757192731523470">Es posible que Google use tu historial para personalizar la Búsqueda, Ads y otros servicios de Google.</translation>
 <translation id="2199298570273670671">Error</translation>
+<translation id="2199719347983604670">Datos de Sincronización de Chrome</translation>
 <translation id="2200094388063410062">Correo electrónico</translation>
 <translation id="2200356397587687044">Chrome necesita permiso para continuar</translation>
 <translation id="2200603218210188859">Preferencias de dispositivos USB</translation>
@@ -1239,6 +1243,7 @@
 <translation id="2889064240420137087">Abrir el vínculo con...</translation>
 <translation id="2889925978073739256">Seguir bloqueando los complementos no incluidos en la zona de pruebas</translation>
 <translation id="2893168226686371498">Navegador predeterminado</translation>
+<translation id="2895734772884435517">Puedes personalizar estas opciones de configuración en cualquier momento.</translation>
 <translation id="289644616180464099">La tarjeta SIM está bloqueada</translation>
 <translation id="289695669188700754">ID de clave: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">¿Estás seguro de que deseas abrir <ph name="TAB_COUNT" /> pestañas?</translation>
@@ -1594,7 +1599,6 @@
 <translation id="3470502288861289375">Copiando…</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;no se muestra 1 línea&gt;}other{&lt;no se muestran $1 líneas&gt;}}</translation>
 <translation id="3475843873335999118">No se puede reconocer tu huella digital. Ingresa tu contraseña.</translation>
 <translation id="347670947055184738">El sistema no pudo recuperar la política para tu dispositivo.</translation>
 <translation id="347785443197175480">Continuar permitiendo que <ph name="HOST" /> acceda a la cámara y al micrófono</translation>
@@ -1707,6 +1711,7 @@
 <translation id="3636096452488277381">Hola, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - Queda(n) <ph name="TIME" /></translation>
 <translation id="3637682276779847508">Tu tarjeta SIM quedará inhabilitada de forma permanente si no ingresas la clave de desbloqueo de PIN correcta.</translation>
+<translation id="363863692969456324">Revisa los errores de escritura con el corrector ortográfico mejorado</translation>
 <translation id="3640214691812501263">¿Quieres agregar "<ph name="EXTENSION_NAME" />" para <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Ancho</translation>
 <translation id="3645372836428131288">Mueve el dedo ligeramente para capturar otra parte de la huella digital.</translation>
@@ -2139,6 +2144,7 @@
 <translation id="4310139701823742692">El archivo no tiene el formato correcto. Verifica el archivo PPD y vuelve a intentarlo.</translation>
 <translation id="431076611119798497">&amp;Detalles</translation>
 <translation id="4312866146174492540">Bloquear (predeterminado)</translation>
+<translation id="4314815835985389558">Administrar la sincronización</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>
@@ -2218,6 +2224,7 @@
 <translation id="4450974146388585462">Diagnosticar</translation>
 <translation id="4451757071857432900">Bloqueados en sitios que muestran anuncios intrusivos o engañosos (opción recomendada)</translation>
 <translation id="4453946976636652378">Buscar en <ph name="SEARCH_ENGINE_NAME" /> o escribir una URL</translation>
+<translation id="4461835665417498653">Envía información del sistema y contenido de la página a Google de forma anónima.</translation>
 <translation id="4462159676511157176">Servidores de nombres personalizados</translation>
 <translation id="4467101674048705704">Expandir <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Bloqueados en sitios que muestran anuncios intrusivos o engañosos</translation>
@@ -2382,6 +2389,7 @@
 <translation id="4735265153267957659">Ingresa tu contraseña para activar Smart Lock. La próxima vez, tu teléfono desbloqueará tu <ph name="DEVICE_TYPE" />. Para desactivar Smart Lock, accede a la Configuración.</translation>
 <translation id="473546211690256853">Esta cuenta está administrada por <ph name="DOMAIN" />.</translation>
 <translation id="4735803855089279419">El sistema no pudo determinar los identificadores de dispositivo para este dispositivo.</translation>
+<translation id="4736292055110123391">Sincroniza tus favoritos, contraseñas, historial y mucho más en todos tus dispositivos</translation>
 <translation id="4737715515457435632">Conéctate a una red</translation>
 <translation id="473775607612524610">Actualizar</translation>
 <translation id="4742746985488890273">Fijar en la biblioteca</translation>
@@ -4892,6 +4900,7 @@
 <translation id="8598453409908276158">Se bloquearon complementos no incluidos en la zona de pruebas</translation>
 <translation id="8601206103050338563">Autenticación de cliente TLS WWW</translation>
 <translation id="8602851771975208551">Otro programa en tu computadora agregó una app que puede cambiar el funcionamiento de Chrome.</translation>
+<translation id="8604763363205185560">Ayuda a mejorar Chrome y la seguridad</translation>
 <translation id="8605428685123651449">Memoria SQLite</translation>
 <translation id="8606726445206553943">Usar tus dispositivos MIDI</translation>
 <translation id="8609465669617005112">Subir</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index aad4343..69f05ac 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1600,7 +1600,6 @@
 <translation id="3470502288861289375">Copiando...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;No se muestra 1 línea&gt;}other{&lt;No se muestran $1 líneas&gt;}}</translation>
 <translation id="3475843873335999118">Sigue sin reconocerse tu huella digital. Introduce la contraseña.</translation>
 <translation id="347670947055184738">¡Vaya! El sistema no ha podido recuperar la política para tu dispositivo.</translation>
 <translation id="347785443197175480">Seguir permitiendo que <ph name="HOST" /> acceda a la cámara y al micrófono</translation>
@@ -2729,7 +2728,6 @@
 <translation id="5266113311903163739">Error de importación de la entidad emisora de certificados</translation>
 <translation id="5269977353971873915">Error de impresión</translation>
 <translation id="5270167208902136840">Mostrar <ph name="NUMBER_OF_MORE_APPS" /> aplicaciones más</translation>
-<translation id="5272654297705279635">Configuración personalizada</translation>
 <translation id="5275352920323889391">Perro</translation>
 <translation id="5275973617553375938">Archivos recuperados de Google Drive</translation>
 <translation id="527605982717517565">Permitir siempre JavaScript en <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index b595870..550a6a0 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Täisekraanilt väljumine</translation>
 <translation id="2157875535253991059">See leht kuvati nüüd täisekraanil.</translation>
 <translation id="216169395504480358">Lisa WiFi ...</translation>
+<translation id="2162155940152307086">Sünkroonimine algab, kui sünkroonimisseadetest väljute</translation>
 <translation id="2163470535490402084">Seadmesse <ph name="DEVICE_TYPE" /> sisselogimiseks looge ühendus Internetiga.</translation>
 <translation id="2166369534954157698">Väle pruun rebane hüppab üle laisa koera</translation>
 <translation id="2169062631698640254">Logi ikkagi sisse</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> domeenil <ph name="PEPPER_PLUGIN_DOMAIN" /> soovib juurdepääsu teie arvutile</translation>
 <translation id="2178614541317717477">CA turvarike</translation>
 <translation id="218070003709087997">Kasutage numbrit, mis näitab, kui palju koopiaid printida (1 kuni 999).</translation>
+<translation id="2182253583899676504">Tekst, mille sisestate tekstiväljadele, saadetakse Google’ile.</translation>
 <translation id="2184515124301515068">Luba Chrome'il valida, millal saidid võivad heli esitada (soovitatav)</translation>
 <translation id="2187895286714876935">Serveri sertifikaadi impordi viga</translation>
 <translation id="2187906491731510095">Laiendused on värskendatud</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Allikas:</translation>
 <translation id="2193365732679659387">Usaldusväärsuse seaded</translation>
 <translation id="2195729137168608510">Meilikaitse</translation>
+<translation id="2198757192731523470">Google võib kasutada teie ajalugu otsingu, reklaamide ja muude Google'i teenuste isikupärastamiseks.</translation>
 <translation id="2199298570273670671">Viga</translation>
+<translation id="2199719347983604670">Chrome'i sünkroonimise teave</translation>
 <translation id="2200094388063410062">E-post</translation>
 <translation id="2200356397587687044">Chrome vajab jätkamiseks luba</translation>
 <translation id="2200603218210188859">USB-seadme eelistused</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Lingi avamine rakendusega ...</translation>
 <translation id="2889925978073739256">Blokeeri ka edaspidi liivakastist eemaldatud pistikprogrammid</translation>
 <translation id="2893168226686371498">Vaikebrauser</translation>
+<translation id="2895734772884435517">Neid seadeid saab igal ajal kohandada.</translation>
 <translation id="289644616180464099">SIM-kaart on lukustatud</translation>
 <translation id="289695669188700754">Võtme ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Kas te soovite kindlasti avada <ph name="TAB_COUNT" /> vahekaarti?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Kopeerimine ...</translation>
 <translation id="3473479545200714844">Ekraanisuurendi</translation>
 <translation id="3475447146579922140">Google'i arvutustabel</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 rida pole kuvatud&gt;}other{&lt;$1 rida pole kuvatud&gt;}}</translation>
 <translation id="3475843873335999118">Kahjuks ei suudetud ikka teie sõrmejälge tuvastada. Sisestage oma parool.</translation>
 <translation id="347670947055184738">Vabandust! Süsteemil ei õnnestunud teie seadme jaoks eeskirju tuua.</translation>
 <translation id="347785443197175480">Luba hostile <ph name="HOST" /> jätkuvalt juurdepääs kaamerale ja mikrofonile</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Terekest, <ph name="USER_GIVEN_NAME" />!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – <ph name="TIME" /> on jäänud</translation>
 <translation id="3637682276779847508">Kui te ei sisesta õiget PUK-koodi, keelatakse teie SIM-kaart jäädavalt.</translation>
+<translation id="363863692969456324">Täiustatud õigekirjakontrolliga kirjavigade parandamine</translation>
 <translation id="3640214691812501263">Kas soovite lisada kasutajale <ph name="USER_NAME" /> laiendi „<ph name="EXTENSION_NAME" />”?</translation>
 <translation id="3644896802912593514">Laius</translation>
 <translation id="3645372836428131288">Liigutage veidi sõrme, et sõrmejälje teine osa jäädvustada</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Failivorming on vale. Kontrollige PPD-faili ja proovige uuesti.</translation>
 <translation id="431076611119798497">&amp;Üksikasjad</translation>
 <translation id="4312866146174492540">Blokeeri (vaikimisi)</translation>
+<translation id="4314815835985389558">Sünkroonimise haldamine</translation>
 <translation id="4316850752623536204">Arendaja veebisait</translation>
 <translation id="4320177379694898372">Interneti-ühendus puudub</translation>
 <translation id="4320948194796820126">Lisage oma e-postile järjehoidja</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Diagnoosi</translation>
 <translation id="4451757071857432900">Blokeeritud saitidel, mis kuvavad sekkuvaid või eksitavaid reklaame (soovitatav)</translation>
 <translation id="4453946976636652378">Otsige teenusega <ph name="SEARCH_ENGINE_NAME" /> või sisestage URL</translation>
+<translation id="4461835665417498653">Saadab Google'ile anonüümselt teatud süsteemiteavet ja lehe sisu.</translation>
 <translation id="4462159676511157176">Kohandatud nimeserverid</translation>
 <translation id="4467101674048705704">Laienda kausta <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Blokeeritud saitidel, mis kuvavad sekkuvaid või eksitavaid reklaame</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Sisestage oma parool, et Smart Lock sisse lülitada. Järgmisel korral avab seadme <ph name="DEVICE_TYPE" /> teie telefon. Funktsiooni Smart Lock saate välja lülitada jaotises Seaded.</translation>
 <translation id="473546211690256853">Kontot haldab <ph name="DOMAIN" /></translation>
 <translation id="4735803855089279419">Süsteemil ei õnnestunud määrata sellele seadmele seadme tuvastajaid.</translation>
+<translation id="4736292055110123391">Järjehoidjate, paroolide, ajalugu ja muu sünkroonimine kõigis teie seadmetes</translation>
 <translation id="4737715515457435632">Looge ühendus võrguga</translation>
 <translation id="473775607612524610">Värskenda</translation>
 <translation id="4742746985488890273">Riiulile kinnitamine</translation>
@@ -4895,6 +4903,7 @@
 <translation id="8598453409908276158">Liivakastist eemaldatud pistikprogramm on blokeeritud</translation>
 <translation id="8601206103050338563">TLS WWW kliendi autentimine</translation>
 <translation id="8602851771975208551">Teine programm teie arvutis lisas rakenduse, mis võib muuta Chrome'i toimimist.</translation>
+<translation id="8604763363205185560">Aidake täiustada Chrome'i ja selle turvalisust</translation>
 <translation id="8605428685123651449">SQLite'i mälu</translation>
 <translation id="8606726445206553943">Kasutada MIDI-seadmeid</translation>
 <translation id="8609465669617005112">Liiguta üles</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 6e99f71..bd2d85de 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1598,7 +1598,6 @@
 <translation id="3470502288861289375">در حال کپی کردن...</translation>
 <translation id="3473479545200714844">ذره‌بین صفحه</translation>
 <translation id="3475447146579922140">‏صفحه‌گسترده Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;۱ خط نشان داده نمی‌شود&gt;}one{&lt;$1 خط نشان داده نمی‌شود&gt;}other{&lt;$1 خط نشان داده نمی‌شود&gt;}}</translation>
 <translation id="3475843873335999118">متأسفیم، اثر انگشتتان هنوز شناسایی نشده است. لطفاً گذرواژه‌تان را وارد کنید.</translation>
 <translation id="347670947055184738">وای! سیستم نتوانست خط‌مشی را برای دستگاهتان واکشی کند.</translation>
 <translation id="347785443197175480">همچنان دسترسی به دوربین و میکروفون شما، توسط <ph name="HOST" /> مجاز باشد</translation>
@@ -2728,7 +2727,6 @@
 <translation id="5266113311903163739">خطای ورود ارائه دهنده مجوز</translation>
 <translation id="5269977353971873915">چاپ نشد</translation>
 <translation id="5270167208902136840">نمایش <ph name="NUMBER_OF_MORE_APPS" /> برنامه بیشتر</translation>
-<translation id="5272654297705279635">تنظیمات سفارشی</translation>
 <translation id="5275352920323889391">سگ</translation>
 <translation id="5275973617553375938">‏فایل‌های بازیابی‌شده از Google Drive</translation>
 <translation id="527605982717517565">همیشه جاوا اسکریپت در <ph name="HOST" /> مجاز باشد</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index fb18e93b..49960a0 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Poistu koko näytön tilasta</translation>
 <translation id="2157875535253991059">Tämä sivu on nyt koko näytöllä.</translation>
 <translation id="216169395504480358">Lisää Wi-Fi-yhteys...</translation>
+<translation id="2162155940152307086">Synkronointi alkaa, kun poistut synkronointiasetuksista</translation>
 <translation id="2163470535490402084">Kirjaudu laitteelle <ph name="DEVICE_TYPE" /> muodostamalla verkkoyhteys.</translation>
 <translation id="2166369534954157698">Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.</translation>
 <translation id="2169062631698640254">Kirjaudu silti sisään</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> verkkotunnuksessa <ph name="PEPPER_PLUGIN_DOMAIN" /> haluaa käyttää tietokonettasi.</translation>
 <translation id="2178614541317717477">Myöntäjäkompromissi</translation>
 <translation id="218070003709087997">Määritä tulostettavien kappaleiden määrä antamalla numero (1–999).</translation>
+<translation id="2182253583899676504">Kenttiin kirjoittamasi teksti lähetetään Googlelle.</translation>
 <translation id="2184515124301515068">Anna Chromen valita, milloin sivustot voivat toistaa ääniä (suositus)</translation>
 <translation id="2187895286714876935">Palvelimen varmenteen tuontivirhe</translation>
 <translation id="2187906491731510095">Laajennukset päivitetty</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Lähettäjä:</translation>
 <translation id="2193365732679659387">Luottamusasetukset</translation>
 <translation id="2195729137168608510">Sähköpostin suojaus</translation>
+<translation id="2198757192731523470">Google voi muokata Hakua, mainoksia ja muita Googlen palveluita historiasi perusteella.</translation>
 <translation id="2199298570273670671">Virhe</translation>
+<translation id="2199719347983604670">Chromen synkronoinnista saatu data</translation>
 <translation id="2200094388063410062">Sähköposti</translation>
 <translation id="2200356397587687044">Chrome tarvitsee luvan jatkamiseen</translation>
 <translation id="2200603218210188859">USB-laiteasetukset</translation>
@@ -1243,6 +1247,7 @@
 <translation id="2889064240420137087">Avaa linkki sovelluksessa...</translation>
 <translation id="2889925978073739256">Estä hiekkalaatikossa toimimattomat laajennukset edelleen</translation>
 <translation id="2893168226686371498">Oletusselain</translation>
+<translation id="2895734772884435517">Voit muokata näitä asetuksia koska tahansa.</translation>
 <translation id="289644616180464099">SIM-kortti on lukittu</translation>
 <translation id="289695669188700754">Avaimen tunnus: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Haluatko varmasti avata <ph name="TAB_COUNT" /> välilehteä?</translation>
@@ -1598,7 +1603,6 @@
 <translation id="3470502288861289375">Kopioidaan…</translation>
 <translation id="3473479545200714844">Ruudun suurentaminen</translation>
 <translation id="3475447146579922140">Google-laskentataulukko</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 riviä ei näytetä&gt;}other{&lt;$1 riviä ei näytetä&gt;}}</translation>
 <translation id="3475843873335999118">Sormenjälkeäsi ei tunnistettu vieläkään. Anna salasana.</translation>
 <translation id="347670947055184738">Hups! Järjestelmä ei onnistunut noutamaan käytäntöä laitteellesi.</translation>
 <translation id="347785443197175480">Anna sivuston <ph name="HOST" /> käyttää edelleen kameraasi ja mikrofoniasi</translation>
@@ -1711,6 +1715,7 @@
 <translation id="3636096452488277381">Heipä hei, <ph name="USER_GIVEN_NAME" />!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % – <ph name="TIME" /> jäljellä</translation>
 <translation id="3637682276779847508">SIM-korttisi poistetaan käytöstä pysyvästi, jos et anna oikeaa PUK-koodia.</translation>
+<translation id="363863692969456324">Korjaa kirjoitusvirheet parannetulla oikeinkirjoituksen tarkistuksella</translation>
 <translation id="3640214691812501263">Lisätäänkö <ph name="EXTENSION_NAME" /> käyttäjälle <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Leveys</translation>
 <translation id="3645372836428131288">Liikuta sormeasi hieman, niin sormenjäljen toinen osa tallennetaan.</translation>
@@ -2140,6 +2145,7 @@
 <translation id="4310139701823742692">Tiedostomuoto on virheellinen. Tarkasta PPD-tiedosto ja yritä uudelleen.</translation>
 <translation id="431076611119798497">&amp;Tiedot</translation>
 <translation id="4312866146174492540">Estä (oletus)</translation>
+<translation id="4314815835985389558">Synkronointiasetusten muokkaus</translation>
 <translation id="4316850752623536204">Kehittäjän verkkosivusto</translation>
 <translation id="4320177379694898372">Ei internetyhteyttä</translation>
 <translation id="4320948194796820126">Lisää sähköpostiin kirjanmerkki</translation>
@@ -2219,6 +2225,7 @@
 <translation id="4450974146388585462">Diagnosoi</translation>
 <translation id="4451757071857432900">Estä sivustoilla, jotka näyttävät häiritseviä tai harhaanjohtavia mainoksia (suositus)</translation>
 <translation id="4453946976636652378">Tee <ph name="SEARCH_ENGINE_NAME" />-haku tai kirjoita URL-osoite</translation>
+<translation id="4461835665417498653">Lähettää joitain järjestelmän tietoja ja sivujen sisältöjä Googlelle anonyymisti</translation>
 <translation id="4462159676511157176">Omat nimipalvelimet</translation>
 <translation id="4467101674048705704">Laajenna <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Estetty häiritseviä tai harhaanjohtavia mainoksia näyttävillä sivustoilla</translation>
@@ -2383,6 +2390,7 @@
 <translation id="4735265153267957659">Ota Smart Lock käyttöön antamalla salasanasi. Seuraavalla kerralla <ph name="DEVICE_TYPE" /> voidaan avata puhelimellasi. Poista Smart Lock käytöstä Asetuksissa.</translation>
 <translation id="473546211690256853">Tätä tiliä hallitsee <ph name="DOMAIN" /></translation>
 <translation id="4735803855089279419">Järjestelmä ei onnistunut määrittämään tämän laitteen laitetunnisteita.</translation>
+<translation id="4736292055110123391">Synkronoi kirjanmerkit, salasanat, historia ja paljon muuta kaikilla laitteillasi</translation>
 <translation id="4737715515457435632">Muodosta verkkoyhteys</translation>
 <translation id="473775607612524610">Päivitä</translation>
 <translation id="4742746985488890273">Kiinnitä hyllyyn</translation>
@@ -4893,6 +4901,7 @@
 <translation id="8598453409908276158">Ei hiekkalaatikossa toimiva laajennus estetty</translation>
 <translation id="8601206103050338563">TLS WWW -palvelimen todennus</translation>
 <translation id="8602851771975208551">Toinen tietokoneellasi oleva ohjelma lisäsi sovelluksen, joka voi muuttaa Chromen toimintaa.</translation>
+<translation id="8604763363205185560">Auta parantamaan Chromea ja sen turvallisuutta</translation>
 <translation id="8605428685123651449">SQLiten käyttämä muisti</translation>
 <translation id="8606726445206553943">Käyttää MIDI-laitteitasi.</translation>
 <translation id="8609465669617005112">Siirrä ylös</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 3a174dfa..44589fc 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Kinokopya...</translation>
 <translation id="3473479545200714844">Screen magnifier</translation>
 <translation id="3475447146579922140">Spreadsheet ng Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linya ang hindi ipinapakita&gt;}one{&lt;$1 linya ang hindi ipinapakita&gt;}other{&lt;$1 na linya ang hindi ipinapakita&gt;}}</translation>
 <translation id="3475843873335999118">Paumanhin, hindi pa rin nakikilala ang iyong fingerprint. Pakilagay ang password mo.</translation>
 <translation id="347670947055184738">Oops!  Hindi nakuha ng system ang patakaran para sa iyong device.</translation>
 <translation id="347785443197175480">Magpatuloy sa pagpayag sa <ph name="HOST" /> na i-access ang iyong camera at mikropono</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Error sa Pag-import ng Certification Authority</translation>
 <translation id="5269977353971873915">Nabigo ang Pag-print</translation>
 <translation id="5270167208902136840">Magpakita ng <ph name="NUMBER_OF_MORE_APPS" /> pang app</translation>
-<translation id="5272654297705279635">Mga custom na setting</translation>
 <translation id="5275352920323889391">Aso</translation>
 <translation id="5275973617553375938">Mga nabawing file mula sa Google Drive</translation>
 <translation id="527605982717517565">Palaging hayaan ang JavaScript sa <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 6495811c..c7fad27e 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Quitter le mode plein écran</translation>
 <translation id="2157875535253991059">Cette page est maintenant en mode plein écran</translation>
 <translation id="216169395504480358">Ajouter un réseau Wi-Fi…</translation>
+<translation id="2162155940152307086">La synchronisation commencera une fois que vous aurez quitté les paramètres de synchronisation</translation>
 <translation id="2163470535490402084">Veuillez vous connecter à Internet pour vous connecter à votre <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">Voici à quoi ressemblera votre texte.</translation>
 <translation id="2169062631698640254">Se connecter quand même</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724">Le plug-in <ph name="PEPPER_PLUGIN_NAME" /> provenant du domaine <ph name="PEPPER_PLUGIN_DOMAIN" /> demande l'accès à votre ordinateur</translation>
 <translation id="2178614541317717477">Autorité de certification compromise</translation>
 <translation id="218070003709087997">Indiquez le nombre de copies à imprimer (1 à 999).</translation>
+<translation id="2182253583899676504">Le texte que vous saisissez dans les champs sera envoyé à Google.</translation>
 <translation id="2184515124301515068">Chrome détermine quand activer le son des sites (recommandé)</translation>
 <translation id="2187895286714876935">Erreur d'importation du certificat serveur</translation>
 <translation id="2187906491731510095">Extensions mises à jour</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">De :</translation>
 <translation id="2193365732679659387">Paramètres de confiance</translation>
 <translation id="2195729137168608510">Protection du courrier électronique</translation>
+<translation id="2198757192731523470">Google peut utiliser votre historique pour personnaliser la recherche, les annonces et d'autres services Google.</translation>
 <translation id="2199298570273670671">Erreur</translation>
+<translation id="2199719347983604670">Données de la synchronisation Chrome</translation>
 <translation id="2200094388063410062">E-mail</translation>
 <translation id="2200356397587687044">Google Chrome a besoin de votre autorisation pour continuer</translation>
 <translation id="2200603218210188859">Préférences du périphérique USB</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Ouvrir le lien avec...</translation>
 <translation id="2889925978073739256">Continuer à bloquer l'exécution hors bac à sable des plug-ins</translation>
 <translation id="2893168226686371498">Navigateur par défaut</translation>
+<translation id="2895734772884435517">Vous pouvez personnaliser ces paramètres à tout moment.</translation>
 <translation id="289644616180464099">La carte SIM est verrouillée</translation>
 <translation id="289695669188700754">ID de clé : <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Voulez-vous vraiment ouvrir <ph name="TAB_COUNT" /> onglets ?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Copie en cours…</translation>
 <translation id="3473479545200714844">Loupe</translation>
 <translation id="3475447146579922140">Feuille de calcul Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 ligne non affichée&gt;}one{&lt;$1 ligne non affichée&gt;}other{&lt;$1 lignes non affichées&gt;}}</translation>
 <translation id="3475843873335999118">Désolé, votre empreinte digitale n'est toujours pas reconnue. Veuillez saisir votre mot de passe.</translation>
 <translation id="347670947055184738">Petit problème… Le système n'a pas réussi à récupérer les règles pour votre appareil.</translation>
 <translation id="347785443197175480">Continuer à autoriser <ph name="HOST" /> à accéder à votre caméra et à votre micro</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Bonjour <ph name="USER_GIVEN_NAME" /></translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % – <ph name="TIME" /> restantes</translation>
 <translation id="3637682276779847508">Votre carte SIM sera définitivement désactivée si vous ne saisissez pas la clé de déblocage du code.</translation>
+<translation id="363863692969456324">Corrigez les fautes d'orthographe avec le correcteur orthographique amélioré</translation>
 <translation id="3640214691812501263">Ajouter <ph name="EXTENSION_NAME" /> pour <ph name="USER_NAME" /> ?</translation>
 <translation id="3644896802912593514">Largeur</translation>
 <translation id="3645372836428131288">Déplacez légèrement votre doigt pour enregistrer une autre partie de votre empreinte digitale.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Le format du fichier n'est pas valide. Vérifiez le fichier PPD, puis réessayez.</translation>
 <translation id="431076611119798497">&amp;Détails</translation>
 <translation id="4312866146174492540">Bloquer (par défaut)</translation>
+<translation id="4314815835985389558">Gérer la synchronisation</translation>
 <translation id="4316850752623536204">Site Web du développeur</translation>
 <translation id="4320177379694898372">Aucune connexion Internet.</translation>
 <translation id="4320948194796820126">Ajouter un favori à votre e-mail</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Analyser</translation>
 <translation id="4451757071857432900">Bloqué sur les sites qui affichent des annonces intrusives ou trompeuses (recommandé)</translation>
 <translation id="4453946976636652378">Effectuez une recherche sur <ph name="SEARCH_ENGINE_NAME" /> ou saisissez une URL</translation>
+<translation id="4461835665417498653">Envoie des informations système et du contenu de pages à Google de manière anonyme.</translation>
 <translation id="4462159676511157176">Serveurs de noms personnalisés</translation>
 <translation id="4467101674048705704">Développer le dossier "<ph name="FOLDER_NAME" />"</translation>
 <translation id="4469477701382819144">Bloqué sur les sites qui affichent des annonces intrusives ou trompeuses</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Saisissez votre mot de passe pour activer Smart Lock. La prochaine fois, votre téléphone déverrouillera votre <ph name="DEVICE_TYPE" />. Vous pouvez désactiver Smart Lock dans les paramètres.</translation>
 <translation id="473546211690256853">Ce compte est géré par <ph name="DOMAIN" />.</translation>
 <translation id="4735803855089279419">Impossible de déterminer les identifiants de cet appareil.</translation>
+<translation id="4736292055110123391">Synchronisez vos favoris, vos mots de passe, votre historique et plus encore sur tous vos appareils</translation>
 <translation id="4737715515457435632">Veuillez vous connecter à un réseau</translation>
 <translation id="473775607612524610">Mettre à jour</translation>
 <translation id="4742746985488890273">Épingler sur l'étagère</translation>
@@ -4895,6 +4903,7 @@
 <translation id="8598453409908276158">Blocage de l'accès via un plug-in sans système de bac à sable</translation>
 <translation id="8601206103050338563">Authentification du client WWW TLS</translation>
 <translation id="8602851771975208551">Un autre programme sur votre ordinateur a ajouté une application qui risque de modifier le fonctionnement de Google Chrome.</translation>
+<translation id="8604763363205185560">Contribuez à l'amélioration de Chrome et de sa sécurité</translation>
 <translation id="8605428685123651449">Mémoire SQLite</translation>
 <translation id="8606726445206553943">Utiliser vos appareils MIDI</translation>
 <translation id="8609465669617005112">Monter</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 7259194..9845603f 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1598,7 +1598,6 @@
 <translation id="3470502288861289375">કૉપિ કરી રહ્યું છે...</translation>
 <translation id="3473479545200714844">સ્ક્રીન બૃહદદર્શક</translation>
 <translation id="3475447146579922140">Google સ્પ્રેડશીટ</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 રેખા બતાવેલ નથી&gt;}one{&lt;$1 રેખાઓ બતાવેલ નથી&gt;}other{&lt;$1 રેખાઓ બતાવેલ નથી&gt;}}</translation>
 <translation id="3475843873335999118">માફ કરશો, તમારી ફિંગરપ્રિંટ હજી પણ ઓળખવામાં આવી નથી. કૃપા કરીને તમારો પાસવર્ડ દાખલ કરો.</translation>
 <translation id="347670947055184738">અરેરે!  તમારા ઉપકરણ માટે સિસ્ટમ નીતિ લાવવામાં નિષ્ફળ થયું.</translation>
 <translation id="347785443197175480">તમારા કૅમેરા અને માઇક્રોફોનને ઍક્સેસ કરવા માટે <ph name="HOST" /> ને સતત મંજૂરી આપે છે </translation>
@@ -2728,7 +2727,6 @@
 <translation id="5266113311903163739">પ્રમાણન અધિકારી આયાત ભૂલ</translation>
 <translation id="5269977353971873915">પ્રિન્ટ કાઢવામાં નિષ્ફળ</translation>
 <translation id="5270167208902136840">વધુ <ph name="NUMBER_OF_MORE_APPS" /> ઍપ બતાવો</translation>
-<translation id="5272654297705279635">કસ્ટમ સેટિંગ</translation>
 <translation id="5275352920323889391">કૂતરું</translation>
 <translation id="5275973617553375938">Google ડ્રાઇવમાંથી પુનર્પ્રાપ્ત ફાઇલો</translation>
 <translation id="527605982717517565"><ph name="HOST" /> પર JavaScript ને હંમેશા મંજૂરી આપો </translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 0ce5f2e..ed7732c 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">पूर्ण स्क्रीन से बाहर निकलें</translation>
 <translation id="2157875535253991059">यह पेज अब पूर्ण स्‍क्रीन है.</translation>
 <translation id="216169395504480358">वाई-फ़ाई  जोड़ें...</translation>
+<translation id="2162155940152307086">सिंक की सेटिंग छोड़ते ही सिंक फिर से शुरू हो जाएगा</translation>
 <translation id="2163470535490402084">अपने <ph name="DEVICE_TYPE" /> में साइन इन करने के लिए कृपया इंटरनेट से कनेक्ट करें.</translation>
 <translation id="2166369534954157698">स्वास्थ्यप्रद ठण्ढ में सफल गणितज्ञ के घर छत पर द्वन्द के उद्घोष का शङ्ख बजकर जैसे ही थमा, उच्च मञ्च पर वह दम्भी अकड़ू क्षत्रिय झट धनुष ले आ डटा कि चिह्नित उपजाऊ कृषि-भूमि की इकाई पर कब्ज़े से सम्बन्धित प्रश्नोत्तर हो, किन्तु तप भग्न होने से रुष्ट ऋषि की धुँआईं आँखों ने ऐसा श्राप दिया कि प्रसन्नचित्त कव्वाल की उच्छृङ्खल स्वर-शृंखला के उग्र रूप ने मेरे अद्भुत प्रज्ज्वलित ख्वाबों को मिट्टी की चुक्कड़ की चाय में डुबो डाला, और तब उदभ्रमित मैं दीर्घ उच्छ्वास लेकर कब्र से उठा कि पुरानी चिट्ठियाँ ढूँढकर पढ़ूँगा</translation>
 <translation id="2169062631698640254">किसी भी तरह साइन इन करें</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> पर <ph name="PEPPER_PLUGIN_NAME" /> आपके कंप्यूटर को एक्सेस करना चाहता है</translation>
 <translation id="2178614541317717477">CA समझौता</translation>
 <translation id="218070003709087997">प्रिंट की जाने वाली कॉपी की संख्या (1 से 999) दर्शाने के लिए किसी संख्या का उपयोग करें.</translation>
+<translation id="2182253583899676504">आप टेक्स्ट फ़ील्ड में जो भी टेक्स्ट लिखेंगे, उसे Google को भेजा जाएगा.</translation>
 <translation id="2184515124301515068">Chrome को चुनने दें कि साइटें कब आवाज़ चला सकती हैं (सुझाव)</translation>
 <translation id="2187895286714876935">सर्वर प्रमाणपत्र आयात गड़बड़ी</translation>
 <translation id="2187906491731510095">एक्सटेंशन अपडेट किए गए</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">द्वारा:</translation>
 <translation id="2193365732679659387">विश्‍वास सेटिंग</translation>
 <translation id="2195729137168608510">ईमेल सुरक्षा</translation>
+<translation id="2198757192731523470">खोज, विज्ञापन और दूसरी Google सेवाओं को मनमुताबिक बनाने के लिए Google आपके इतिहास का इस्तेमाल कर सकता है.</translation>
 <translation id="2199298570273670671">गड़बड़ी</translation>
+<translation id="2199719347983604670">Chrome सिंक का डेटा</translation>
 <translation id="2200094388063410062">ई-मेल</translation>
 <translation id="2200356397587687044">जारी रखने के लिए Chrome को अनुमति चाहिए</translation>
 <translation id="2200603218210188859">यूएसबी डिवाइस से जुड़ी पसंद</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">इनके साथ लिंक खोलें...</translation>
 <translation id="2889925978073739256">सैंडबॉक्स नहीं किए गए प्लग इन अवरोधित करते रहें</translation>
 <translation id="2893168226686371498">सामान्य ब्राउज़र</translation>
+<translation id="2895734772884435517">आप किसी भी इन सेटिंग को पसंद के मुताबिक बना सकते हैं.</translation>
 <translation id="289644616180464099">सिम कार्ड लॉक है</translation>
 <translation id="289695669188700754">कुंजी ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">क्या आप वाकई <ph name="TAB_COUNT" /> टैब खोलना चाहते हैं?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">कॉपी किया जा रहा है...</translation>
 <translation id="3473479545200714844">स्क्रीन आवर्द्धक</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 पंक्ति नहीं दिखाई गई है&gt;}one{&lt;$1 पंक्तियां नहीं दिखाई गई हैं&gt;}other{&lt;$1 पंक्तियां नहीं दिखाई गई हैं&gt;}}</translation>
 <translation id="3475843873335999118">माफ़ कीजिए, आपके फ़िंगरप्रिंट की अभी भी पहचान नहीं हुई हैैै. कृपया अपना पासवर्ड डालें.</translation>
 <translation id="347670947055184738">ओह!  सिस्टम आपके डिवाइस की नीति फ़ेच नहीं कर सका.</translation>
 <translation id="347785443197175480"><ph name="HOST" /> को अपने कैमरे और माइक्रोफ़ोन को एक्सेस करते रहन दें</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">कैसे हैं, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> शेष</translation>
 <translation id="3637682276779847508">अगर आप सही पिन अनलॉक कुंजी नहीं डाल पाते हैं तो आपका SIM कार्ड हमेशा के लिए अक्षम कर दिया जाएगा.</translation>
+<translation id="363863692969456324">बेहतर वर्तनी जाँच के ज़रिए वर्तनी की गड़बड़ियां ठीक करना</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> के लिए "<ph name="EXTENSION_NAME" />" को जोड़ें?</translation>
 <translation id="3644896802912593514">चौड़ाई</translation>
 <translation id="3645372836428131288">फ़िंगरप्रिंट के अलग हिस्से को कैप्चर करने के लिए उंगली धीरे से हिलाएं</translation>
@@ -2141,6 +2146,7 @@
 <translation id="4310139701823742692">फ़ाइल का फ़ॉर्मेट गलत है. PPD फ़ाइल देखें और फिर से कोशिश करें.</translation>
 <translation id="431076611119798497">&amp;विवरण</translation>
 <translation id="4312866146174492540">अवरुद्ध करें (डिफ़ॉल्ट)</translation>
+<translation id="4314815835985389558">सिंक प्रबंधित करें</translation>
 <translation id="4316850752623536204">डेवलपर वेबसाइट</translation>
 <translation id="4320177379694898372">कोई इंटरनेट कनेक्‍शन नहीं</translation>
 <translation id="4320948194796820126">अपने ईमेल में बुकमार्क जोड़ें</translation>
@@ -2220,6 +2226,7 @@
 <translation id="4450974146388585462">निदान करें</translation>
 <translation id="4451757071857432900">उन साइटों पर ब्लॉक है जिन पर तंग करने वाले या गुमराह करने वाले विज्ञापन दिखाई देते हैं (सुझाव)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> पर खोजें या कोई यूआरएल लिखें</translation>
+<translation id="4461835665417498653">सिस्टम की कुछ जानकारी और पेज की सामग्री Google को पहचान छिपाकर भेजती है.</translation>
 <translation id="4462159676511157176">कस्टम नाम सर्वर</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> विस्तृत करें</translation>
 <translation id="4469477701382819144">उन साइटों पर ब्लॉक है जिन पर तंग करने वाले या गुमराह करने वाले विज्ञापन दिखाई देते हैं</translation>
@@ -2384,6 +2391,7 @@
 <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="4736292055110123391">अपने बुकमार्क, पासवर्ड, इतिहास और दूसरी कई चीज़ें अपने सभी डिवाइस पर सिंक करना</translation>
 <translation id="4737715515457435632">कृपया किसी नेटवर्क से कनेक्ट करें</translation>
 <translation id="473775607612524610">अपडेट करें</translation>
 <translation id="4742746985488890273">अलमारी से पिन करें</translation>
@@ -4893,6 +4901,7 @@
 <translation id="8598453409908276158">सैंडबॉक्स नहीं किया गया प्लग इन ब्लॉक किया गया</translation>
 <translation id="8601206103050338563">TLS WWW क्लाइंट प्रमाणीकरण</translation>
 <translation id="8602851771975208551">आपके कंप्यूटर पर किसी अन्य प्रोग्राम ने ऐप्स  जोड़ा है, जो Chrome के काम करने के तरीके को बदल सकता है.</translation>
+<translation id="8604763363205185560">Chrome और उसकी सुरक्षा को बेहतर बनाने में मदद करना</translation>
 <translation id="8605428685123651449">SQLite मेमोरी</translation>
 <translation id="8606726445206553943">अपने MIDI डिवाइस का उपयोग करें</translation>
 <translation id="8609465669617005112">ऊपर जाएं</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 9aa4dfd..7fb80ed 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Kopiranje...</translation>
 <translation id="3473479545200714844">Povećalo</translation>
 <translation id="3475447146579922140">Googleova proračunska tablica</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linija nije prikazana&gt;}one{&lt;$1 linija nije prikazana&gt;}few{&lt;$1 linije nisu prikazane&gt;}other{&lt;$1 linija nije prikazano&gt;}}</translation>
 <translation id="3475843873335999118">Žao nam je, uređaj i dalje ne prepoznaje vaš otisak prsta. Unesite zaporku.</translation>
 <translation id="347670947055184738">Ups! Sustav nije uspio dohvatiti pravila za vaš uređaj.</translation>
 <translation id="347785443197175480">Nastavi dopuštati hostu <ph name="HOST" /> pristup kameri i mikrofonu</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Pogreška pri uvozu tijela za izdavanje certifikata</translation>
 <translation id="5269977353971873915">Ispis nije uspio</translation>
 <translation id="5270167208902136840">Prikaži više aplikacija (još <ph name="NUMBER_OF_MORE_APPS" />)</translation>
-<translation id="5272654297705279635">Prilagođene postavke</translation>
 <translation id="5275352920323889391">Pas</translation>
 <translation id="5275973617553375938">Oporavljene datoteke s Google diska</translation>
 <translation id="527605982717517565">Uvijek dopusti JavaScript na web-lokaciji <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 9e16996..f429f02 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Kilépés a teljes képernyős módból</translation>
 <translation id="2157875535253991059">Ez az oldal most teljes képernyős nézetben van.</translation>
 <translation id="216169395504480358">Wi-Fi hozzáadása...</translation>
+<translation id="2162155940152307086">A szinkronizálás akkor kezdődik el, amikor Ön kilép a szinkronizálási beállításokból.</translation>
 <translation id="2163470535490402084">Csatlakozzon az internethez, hogy be tudjon jelentkezni <ph name="DEVICE_TYPE" /> eszközére.</translation>
 <translation id="2166369534954157698">Árvíztűrő tükörfúrógép</translation>
 <translation id="2169062631698640254">Bejelentkezés mindenképp</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724">A(z) <ph name="PEPPER_PLUGIN_DOMAIN" /> webhelyen található <ph name="PEPPER_PLUGIN_NAME" /> bővítmény hozzá szeretne férni a számítógéphez</translation>
 <translation id="2178614541317717477">A tanúsítványkibocsátó veszélyeztetve</translation>
 <translation id="218070003709087997">Számmal jelezze, hogy hány példányt kell nyomtatni (1–999).</translation>
+<translation id="2182253583899676504">A szövegmezőkbe gépelt szöveget elküldjük a Google-nak.</translation>
 <translation id="2184515124301515068">A Chrome dönthet arról, hogy a webhelyek lejátszhatnak-e hangot (ajánlott)</translation>
 <translation id="2187895286714876935">Hiba a szervertanúsítvány importálásánál</translation>
 <translation id="2187906491731510095">Bővítmények frissítve</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Innen:</translation>
 <translation id="2193365732679659387">Bizalmi beállítások</translation>
 <translation id="2195729137168608510">E-mail védelem</translation>
+<translation id="2198757192731523470">A Google felhasználhatja az Ön előzményeit a Keresés, a hirdetések és más Google-szolgáltatások személyre szabására.</translation>
 <translation id="2199298570273670671">Hiba</translation>
+<translation id="2199719347983604670">A Chrome-szinkronizálás adatai</translation>
 <translation id="2200094388063410062">E-mail</translation>
 <translation id="2200356397587687044">A Chrome-nak szüksége van egy engedélyre a folytatáshoz</translation>
 <translation id="2200603218210188859">USB-eszközbeállítások</translation>
@@ -1243,6 +1247,7 @@
 <translation id="2889064240420137087">Link megnyitása...</translation>
 <translation id="2889925978073739256">Sandbox-technológiát nem alkalmazó beépülő modulok tiltásának fenntartása</translation>
 <translation id="2893168226686371498">Alapértelmezett böngésző</translation>
+<translation id="2895734772884435517">Ezeket a beállításokat bármikor személyre szabhatja.</translation>
 <translation id="289644616180464099">A SIM-kártya zárolva van</translation>
 <translation id="289695669188700754">Kulcsazonosító: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Biztosan meg szeretne nyitni <ph name="TAB_COUNT" /> lapot?</translation>
@@ -1598,7 +1603,6 @@
 <translation id="3470502288861289375">Másolás...</translation>
 <translation id="3473479545200714844">Képernyőnagyító</translation>
 <translation id="3475447146579922140">Google-táblázat</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 sor nincs megjelenítve&gt;}other{&lt;$1 sor nincs megjelenítve&gt;}}</translation>
 <translation id="3475843873335999118">Sajnos az ujjlenyomatát továbbra sem sikerült felismerni. Adja meg jelszavát.</translation>
 <translation id="347670947055184738">Hoppá! A rendszer nem tudta lehívni az eszköz házirendjét.</translation>
 <translation id="347785443197175480">A(z) <ph name="HOST" /> továbbra is hozzáférhet az Ön kamerájához és mikrofonjához</translation>
@@ -1711,6 +1715,7 @@
 <translation id="3636096452488277381">Üdvözöljük, <ph name="USER_GIVEN_NAME" />!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – <ph name="TIME" /> maradt</translation>
 <translation id="3637682276779847508">Ha nem tudja megadni a helyes PUK-kódot, a SIM-kártya véglegesen le lesz tiltva.</translation>
+<translation id="363863692969456324">Gépelési hibák javítása intelligens helyesírás-ellenőrzővel</translation>
 <translation id="3640214691812501263">Hozzáadja a(z) „<ph name="EXTENSION_NAME" />” bővítményt a következő felhasználónál: <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Szélesség</translation>
 <translation id="3645372836428131288">Óvatosan mozgassa ujját az ujjlenyomat újabb részének rögzítéséhez.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Hibás fájlformátum. Ellenőrizze a PPD-fájlt, és próbálja újra.</translation>
 <translation id="431076611119798497">&amp;Részletek</translation>
 <translation id="4312866146174492540">Letiltás (alapértelmezett)</translation>
+<translation id="4314815835985389558">Szinkronizálás kezelése</translation>
 <translation id="4316850752623536204">Fejlesztő webhelye</translation>
 <translation id="4320177379694898372">Nincs internetkapcsolat</translation>
 <translation id="4320948194796820126">Adja hozzá e-mail-szolgáltatását könyvjelzőként</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Elemzés</translation>
 <translation id="4451757071857432900">Letiltva a tolakodó vagy félrevezető hirdetéseket megjelenítő webhelyeken (ajánlott)</translation>
 <translation id="4453946976636652378">Keressen a(z) <ph name="SEARCH_ENGINE_NAME" /> segítségével, vagy írja be az URL-t</translation>
+<translation id="4461835665417498653">Anonim módon elküld bizonyos rendszer-információkat és oldaltartalmakat a Google-nak.</translation>
 <translation id="4462159676511157176">Egyéni névszerverek</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> kibontása</translation>
 <translation id="4469477701382819144">Letiltva a tolakodó vagy félrevezető hirdetéseket megjelenítő webhelyeken</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Adja meg jelszavát a Smart Lock bekapcsolásához. Legközelebb már telefonjával oldhatja fel <ph name="DEVICE_TYPE" /> eszköze lezárását. A Smart Lock funkciót a Beállításokban kapcsolhatja ki.</translation>
 <translation id="473546211690256853">Ennek a fióknak a kezelője: <ph name="DOMAIN" />.</translation>
 <translation id="4735803855089279419">A rendszer nem tudta megállapítani az eszközazonosítókat ehhez az eszközhöz.</translation>
+<translation id="4736292055110123391">Könyvjelzők, jelszavak, előzmények és más adatok szinkronizálása minden eszközén</translation>
 <translation id="4737715515457435632">Kérjük, csatlakozzon egy hálózathoz</translation>
 <translation id="473775607612524610">Frissítés</translation>
 <translation id="4742746985488890273">Rögzítés a polcra</translation>
@@ -4896,6 +4904,7 @@
 <translation id="8598453409908276158">Sandbox-technológiát nem alkalmazó beépülő modul letiltva</translation>
 <translation id="8601206103050338563">TLS WWW ügyfél hitelesítése</translation>
 <translation id="8602851771975208551">A számítógépen lévő egyik program olyan alkalmazást adott hozzá, amely módosíthatja a Chrome működését.</translation>
+<translation id="8604763363205185560">Segítség a Chrome és biztonsági funkciói fejlesztésében</translation>
 <translation id="8605428685123651449">SQLite-memória</translation>
 <translation id="8606726445206553943">MIDI-eszközök használata</translation>
 <translation id="8609465669617005112">Mozgatás felfelé</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 1cfc12c..cbe4d75 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3473479545200714844">Kaca pembesar layar</translation>
 <translation id="3475447146579922140">Spreadsheet Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 baris tidak ditampilkan&gt;}other{&lt;$1 baris tidak ditampilkan&gt;}}</translation>
 <translation id="3475843873335999118">Maaf, sidik jari Anda masih tidak dapat dikenali. Masukkan sandi Anda.</translation>
 <translation id="347670947055184738">Maaf!  Sistem gagal mengambil kebijakan untuk perangkat Anda.</translation>
 <translation id="347785443197175480">Terus izinkan <ph name="HOST" /> untuk mengakses kamera dan mikrofon Anda</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Kesalahan Impor Otoritas Sertifikasi</translation>
 <translation id="5269977353971873915">Gagal Mencetak</translation>
 <translation id="5270167208902136840">Tampilkan <ph name="NUMBER_OF_MORE_APPS" /> aplikasi lainnya</translation>
-<translation id="5272654297705279635">Setelan kustom</translation>
 <translation id="5275352920323889391">Anjing</translation>
 <translation id="5275973617553375938">File yang dipulihkan dari Google Drive</translation>
 <translation id="527605982717517565">Selalu izinkan JavaScript di <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 460d8941..3059efc 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1598,7 +1598,6 @@
 <translation id="3470502288861289375">Copia...</translation>
 <translation id="3473479545200714844">Ingrandimento dello schermo</translation>
 <translation id="3475447146579922140">Foglio di calcolo Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 riga non mostrata&gt;}other{&lt;$1 righe non mostrate&gt;}}</translation>
 <translation id="3475843873335999118">La tua impronta digitale non è stata ancora riconosciuta. Inserisci la password.</translation>
 <translation id="347670947055184738">Spiacenti. Il sistema non è riuscito a recuperare le norme del tuo dispositivo.</translation>
 <translation id="347785443197175480">Continua a consentire l'accesso di <ph name="HOST" /> alla webcam e al microfono</translation>
@@ -2727,7 +2726,6 @@
 <translation id="5266113311903163739">Errore di importazione dell'autorità di certificazione</translation>
 <translation id="5269977353971873915">Stampa non riuscita</translation>
 <translation id="5270167208902136840">Mostra altre <ph name="NUMBER_OF_MORE_APPS" /> app</translation>
-<translation id="5272654297705279635">Impostazioni personalizzate</translation>
 <translation id="5275352920323889391">Cane</translation>
 <translation id="5275973617553375938">File recuperati da Google Drive</translation>
 <translation id="527605982717517565">Consenti sempre JavaScript su <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 520873f..6a0c662 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -664,7 +664,7 @@
 <translation id="1997616988432401742">האישורים שלך</translation>
 <translation id="1999115740519098545">בעת ההפעלה</translation>
 <translation id="1999763610967697511">גרירה ושחרור</translation>
-<translation id="2000419248597011803">‏שליחה של חלק מקובצי ה-Cookie והחיפושים מסרגל הכתובות ומתיבת החיפוש אל מנוע החיפוש שהוגדר כברירת מחדל</translation>
+<translation id="2000419248597011803">‏שליחה של חלק מקובצי ה-Cookie והחיפושים משורת כתובת האתר ומתיבת החיפוש אל מנוע החיפוש שהוגדר כברירת מחדל</translation>
 <translation id="2001796770603320721">‏ניהול ב-Drive</translation>
 <translation id="2003130567827682533">‏כדי להפעיל נתונים של '<ph name="NAME" />', יש להתחבר תחילה לרשת Wi-Fi</translation>
 <translation id="200544492091181894">ניתן לשנות את האפשרות הזו מאוחר יותר בהגדרות</translation>
@@ -750,7 +750,7 @@
 <translation id="2144536955299248197">מציג האישורים: <ph name="CERTIFICATE_NAME" /></translation>
 <translation id="2148219725039824548">קרתה שגיאה בטעינת התקן הרשת לשיתוף קבצים. ההתקן שצוין לא נמצא ברשת.</translation>
 <translation id="2148756636027685713">הפרמוט הסתיים</translation>
-<translation id="2148892889047469596">העבר את הכרטיסייה</translation>
+<translation id="2148892889047469596">העברת הכרטיסייה</translation>
 <translation id="2150139952286079145">יעדי חיפוש</translation>
 <translation id="2150661552845026580">להוסיף את "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="2151576029659734873">הוזן אינדקס שגוי של כרטיסייה</translation>
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">מעתיק...</translation>
 <translation id="3473479545200714844">מגדיל התצוגה</translation>
 <translation id="3475447146579922140">‏גיליון אלקטרוני של Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;שורה אחת לא מוצגת&gt;}two{&lt;$1 שורות לא מוצגות&gt;}many{&lt;$1 שורות לא מוצגות&gt;}other{&lt;$1 שורות לא מוצגות&gt;}}</translation>
 <translation id="3475843873335999118">המערכת עדיין לא מזהה את טביעת האצבע. הזן את הסיסמה שלך.</translation>
 <translation id="347670947055184738">אופס! המערכת לא הצליחה לשלוף מדיניות למכשיר שלך.</translation>
 <translation id="347785443197175480">המשך לאפשר ל-<ph name="HOST" /> לגשת למצלמה ולמיקרופון</translation>
@@ -1770,7 +1769,7 @@
 <translation id="3719826155360621982">דף הבית</translation>
 <translation id="3720996970802414353">אני רוצה לעבור בכל זאת</translation>
 <translation id="3722108462506185496">קרתה שגיאה בהפעלת שירות המכונה הווירטואלית. צריך לנסות שוב.</translation>
-<translation id="3723158278575423087">‏ברוכים הבאים לחוויה של Cast ב-Chromium.</translation>
+<translation id="3723158278575423087">‏ברוכים הבאים לחוויה של העברה ב-Chromium.</translation>
 <translation id="3725367690636977613">דפים</translation>
 <translation id="3726463242007121105">לא ניתן לפתוח מכשיר זה מאחר שמערכת הקבצים שלו אינה נתמכת.</translation>
 <translation id="3727148787322499904">שינוי של הגדרה זו ישפיע על כל הרשתות המשותפות</translation>
@@ -1872,7 +1871,7 @@
 <translation id="3857807444929313943">להרים ולגעת בחיישן שוב</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: הסינכרון הושהה</translation>
 <translation id="3861241522664181545">הדף מושהה.</translation>
-<translation id="3862134173397075045">‏ברוכים הבאים לחוויה של Cast ב-Chrome!</translation>
+<translation id="3862134173397075045">‏ברוכים הבאים לחוויה של העברה ב-Chrome!</translation>
 <translation id="3862693525629180217">אימות באמצעות חיישן מובנה</translation>
 <translation id="3862788408946266506">‏במצב קיוסק של Chrome OS, יש להתקין אפליקציות עם מאפיין המניפסט 'kiosk_only'</translation>
 <translation id="3865414814144988605">רזולוציה</translation>
@@ -2051,7 +2050,7 @@
 <translation id="4131410914670010031">שחור ולבן</translation>
 <translation id="4136203100490971508">תאורת הלילה תכבה באופן אוטומטי בשעת הזריחה</translation>
 <translation id="4138267921960073861">הצג שמות משתמשים ותמונות במסך הכניסה</translation>
-<translation id="4144218403971135344">‏שיפור איכות הווידאו וחיסכון בחיי הסוללה. תוכן וידאו יופעל רק במסך התומך ב-Cast.</translation>
+<translation id="4144218403971135344">שיפור איכות הווידאו וחיסכון בחיי הסוללה. תוכן וידאו יופעל רק במסך התומך בהעברה.</translation>
 <translation id="4145922204387553806">‏Assistant יכול להראות לך מידע שקשור למה שמוצג על המסך</translation>
 <translation id="4146026355784316281">פתח תמיד באמצעות מציג המערכת</translation>
 <translation id="4146785383423576110">איפוס וניקוי</translation>
@@ -2165,7 +2164,7 @@
 <translation id="4358353773267946514"><ph name="LANGUAGE_1" />‏, <ph name="LANGUAGE_2" /></translation>
 <translation id="4359408040881008151">הותקן מפני שיש תוספים התלויים בו.</translation>
 <translation id="4361142739114356624">המפתח הפרטי לאישור לקוח זה חסר או אינו חוקי</translation>
-<translation id="4363771538994847871">לא נמצא יעד להעברה. זקוק לעזרה?</translation>
+<translation id="4363771538994847871">לא נמצא יעד להעברה. רוצה עזרה?</translation>
 <translation id="4364567974334641491"><ph name="APP_NAME" /> משתף חלון.</translation>
 <translation id="4364830672918311045">הצגת הודעות</translation>
 <translation id="4365673000813822030">אופס, הסינכרון הפסיק לפעול.</translation>
@@ -2383,7 +2382,7 @@
 <translation id="4724850507808590449"><ph name="FILE_COUNT" /> תמונות גובו</translation>
 <translation id="4726710629007580002">הופיעו אזהרות בעת הניסיון להתקין תוסף זה:</translation>
 <translation id="4728558894243024398">פלטפורמה</translation>
-<translation id="4732760563705710320">‏מצטערים, סרטון וידאו זה אינו נתמך במכשיר ה-cast שלך.</translation>
+<translation id="4732760563705710320">מצטערים, סרטון וידאו זה אינו נתמך במכשיר ההעברה שלך.</translation>
 <translation id="4733082559415072992"><ph name="URL" />‏ רוצה להשתמש במיקום המכשיר שלך</translation>
 <translation id="4733793249294335256">מיקום</translation>
 <translation id="4734518477988699048">הערך שהוזן אינו חוקי.</translation>
@@ -2730,7 +2729,6 @@
 <translation id="5266113311903163739">שגיאת ייבוא של רשות אישורים</translation>
 <translation id="5269977353971873915">ההדפסה נכשלה</translation>
 <translation id="5270167208902136840">הצגת <ph name="NUMBER_OF_MORE_APPS" /> אפליקציות נוספות</translation>
-<translation id="5272654297705279635">הגדרות מותאמות אישית</translation>
 <translation id="5275352920323889391">כלב</translation>
 <translation id="5275973617553375938">‏קבצים ששוחזרו מ-Google Drive</translation>
 <translation id="527605982717517565">‏אפשר תמיד JavaScript ב-<ph name="HOST" /></translation>
@@ -2905,7 +2903,7 @@
 <translation id="5526745900034778153">צריך להיכנס מחדש כדי להמשיך את הסינכרון</translation>
 <translation id="5527463195266282916">בוצע ניסיון לשדרג תוסף לאחור.</translation>
 <translation id="5527474464531963247">תוכל גם לבחור רשת אחרת.</translation>
-<translation id="5528368756083817449">מנהל הסימניות</translation>
+<translation id="5528368756083817449">ניהול הסימניות</translation>
 <translation id="5530160549030561969">בדיקת ההגדרות של כל תכונה, וביצוע התאמות במקרה הצורך</translation>
 <translation id="5530766185686772672">סגור כרטיסיות גלישה בסתר</translation>
 <translation id="5532223876348815659">גלובלי</translation>
@@ -2913,7 +2911,7 @@
 <translation id="5534304873398226603">מחיקת תמונה או סרטון</translation>
 <translation id="5534520101572674276">מחשב גודל</translation>
 <translation id="5535941515421698170">הסר גם את הנתונים הקיימים שלך ממכשיר זה</translation>
-<translation id="5537725057119320332">העבר</translation>
+<translation id="5537725057119320332">העברה</translation>
 <translation id="5539221284352502426">השרת דחה את הסיסמה שהזנת. סיבות אפשריות לכך: הסיסמה קצרה מדי; הסיסמה חייבת לכלול ספרות או סמלים; הסיסמה לא יכולה להיות זהה לסיסמה שכבר השתמשת בה בעבר.</translation>
 <translation id="5541687815721799001">להשתמש באפליקציה</translation>
 <translation id="5542132724887566711">פרופיל</translation>
@@ -3350,7 +3348,7 @@
 <translation id="6165508094623778733">למידע נוסף</translation>
 <translation id="6166185671393271715">‏ייבוא סיסמאות אל Chrome</translation>
 <translation id="6169040057125497443">יש לבדוק את המיקרופון.</translation>
-<translation id="6169666352732958425">לא ניתן להעביר מהמחשב השולחני.</translation>
+<translation id="6169666352732958425">לא ניתן להעביר את שולחן העבודה.</translation>
 <translation id="6171948306033499786">השהה הדפסה</translation>
 <translation id="6173623053897475761">יש להקליד שוב את הקוד</translation>
 <translation id="6175314957787328458">Microsoft Domain GUID</translation>
@@ -3680,7 +3678,7 @@
 <translation id="6691936601825168937">&amp;קדימה</translation>
 <translation id="6697492270171225480">הצגת הצעות לדפים דומים אם דף מסוים לא נמצא</translation>
 <translation id="6698810901424468597">לקרוא ולשנות את הנתונים שלך ב-<ph name="WEBSITE_1" /> וב-<ph name="WEBSITE_2" /></translation>
-<translation id="6700480081846086223">העבר את <ph name="HOST_NAME" /></translation>
+<translation id="6700480081846086223">העברה של <ph name="HOST_NAME" /></translation>
 <translation id="6701535245008341853">לא ניתן לקבל פרופיל.</translation>
 <translation id="6702639462873609204">&amp;ערוך...</translation>
 <translation id="6706210727756204531">היקף</translation>
@@ -3752,7 +3750,7 @@
 <translation id="6812841287760418429">השאר שינויים</translation>
 <translation id="6817174620439930047">‏שאל כשאתר רוצה להשתמש בהודעות בלעדיות של המערכת כדי לגשת להתקני MIDI (מומלץ)</translation>
 <translation id="6820687829547641339">‏ארכיון Gzip מכווץ של Bzip2</translation>
-<translation id="682123305478866682">העבר את שולחן העבודה</translation>
+<translation id="682123305478866682">העברת שולחן העבודה</translation>
 <translation id="6823506025919456619">‏עליך להיכנס ל-Chrome כדי לראות את המכשירים שלך</translation>
 <translation id="6824564591481349393">העתק כתובת &amp;אימייל</translation>
 <translation id="6824584962142919697">&amp;בדיקת רכיבים</translation>
@@ -4862,7 +4860,7 @@
 <translation id="8529925957403338845">יצירת החיבור לשיתוף אינטרנט מיידי בין ניידים נכשלה</translation>
 <translation id="8534656636775144800">אופס! משהו השתבש כשניסינו לצרף את הדומיין. נסה שוב.</translation>
 <translation id="8535005006684281994">‏כתובת אתר לחידוש אישור Netscape</translation>
-<translation id="8538358978858059843">‏להפעיל שירותי ענן בשביל Cast?</translation>
+<translation id="8538358978858059843">להפעיל שירותי ענן בשביל העברה?</translation>
 <translation id="8539727552378197395">‏לא (Http בלבד)</translation>
 <translation id="8545575359873600875">מצטערים, לא ניתן לאמת את הסיסמה שלך. ייתכן שהמנהל של המשתמש בפיקוח שינה את הסיסמה לאחרונה. במצב כזה הסיסמה החדשה תחול בפעם הבאה שתבצע כניסה. נסה להשתמש בסיסמה הישנה שלך.</translation>
 <translation id="8546186510985480118">חסר שטח אחסון במכשיר</translation>
@@ -5136,7 +5134,7 @@
 <translation id="8965697826696209160">אין מספיק שטח.</translation>
 <translation id="8966870118594285808">ניתן לפתוח כרטיסייה מחדש אם סגרת אותה בטעות</translation>
 <translation id="8967866634928501045">‏כדי להציג, יש להקיש על Alt+Shift+A</translation>
-<translation id="8970203673128054105">הצג רשימה של מצבי העברה</translation>
+<translation id="8970203673128054105">הצגת רשימה של מצבי העברה</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">‏פנה אל מנהל המערכת של הרשת שלך כדי לוודא שחומת האש אינה חוסמת הורדות משרתי Google.</translation>
 <translation id="8973557916016709913">הסר את רמת המרחק מהתצוגה</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 6c1eed1b..276150d 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">全画面表示を終了</translation>
 <translation id="2157875535253991059">現在このページは全画面表示です。</translation>
 <translation id="216169395504480358">Wi-Fi を追加...</translation>
+<translation id="2162155940152307086">同期設定を閉じると同期が開始します</translation>
 <translation id="2163470535490402084">お使いの <ph name="DEVICE_TYPE" /> にログインするにはインターネットに接続してください。</translation>
 <translation id="2166369534954157698">あいうえおアイウエオABCabc123漢字</translation>
 <translation id="2169062631698640254">このままログインする</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> の <ph name="PEPPER_PLUGIN_NAME" /> プラグインから、パソコンへのアクセス許可を求められています</translation>
 <translation id="2178614541317717477">認証局が侵害された</translation>
 <translation id="218070003709087997">印刷部数を数値(1~999)で指定してください。</translation>
+<translation id="2182253583899676504">テキスト欄に入力したテキストが Google に送信されます。</translation>
 <translation id="2184515124301515068">サイトで音声が再生される可能性がある場合、Chrome で自動的に許可またはブロックする(推奨)</translation>
 <translation id="2187895286714876935">サーバー証明書インポート エラー</translation>
 <translation id="2187906491731510095">拡張機能が更新されました</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">取得先:</translation>
 <translation id="2193365732679659387">信頼の設定</translation>
 <translation id="2195729137168608510">電子メールの保護</translation>
+<translation id="2198757192731523470">検索、広告、その他の Google サービスをカスタマイズする目的で、Google が履歴を使用することがあります。</translation>
 <translation id="2199298570273670671">エラー</translation>
+<translation id="2199719347983604670">Chrome 同期のデータ</translation>
 <translation id="2200094388063410062">メール</translation>
 <translation id="2200356397587687044">続行するには Chrome に権限が必要です</translation>
 <translation id="2200603218210188859">USB デバイス設定</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">次のプログラムでリンクを開く...</translation>
 <translation id="2889925978073739256">サンドボックスの無効化プラグインを引き続きブロックする</translation>
 <translation id="2893168226686371498">既定のブラウザ</translation>
+<translation id="2895734772884435517">これらの設定はいつでもカスタマイズできます。</translation>
 <translation id="289644616180464099">SIM カードはロックされています</translation>
 <translation id="289695669188700754">キー ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> 個のタブが開きます。本当によろしいですか?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">コピーしています...</translation>
 <translation id="3473479545200714844">画面拡大鏡</translation>
 <translation id="3475447146579922140">Google スプレッドシート</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 行が非表示です&gt;}other{&lt;$1 行が非表示です&gt;}}</translation>
 <translation id="3475843873335999118">指紋を認識できません。パスワードを入力してください。</translation>
 <translation id="347670947055184738">デバイスのポリシーを取得できませんでした。</translation>
 <translation id="347785443197175480"><ph name="HOST" /> によるカメラとマイクへのアクセスを引き続き許可する</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">こんにちは、<ph name="USER_GIVEN_NAME" /> さん。</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - 残り <ph name="TIME" /></translation>
 <translation id="3637682276779847508">正しい PIN ロック解除キーを入力できない場合、SIM カードは永久的に無効になります。</translation>
+<translation id="363863692969456324">改善されたスペルチェック機能でスペルミスを修正する</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> さんのアイテムとして「<ph name="EXTENSION_NAME" />」を追加しますか?</translation>
 <translation id="3644896802912593514">幅</translation>
 <translation id="3645372836428131288">指紋の別の部分を登録するため、指を少し移動してください。</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">ファイルの形式が正しくありません。PPD ファイルを確認してもう一度お試しください。</translation>
 <translation id="431076611119798497">詳細(&amp;D)</translation>
 <translation id="4312866146174492540">ブロック(デフォルト)</translation>
+<translation id="4314815835985389558">同期の管理</translation>
 <translation id="4316850752623536204">デベロッパーのウェブサイト</translation>
 <translation id="4320177379694898372">インターネットに接続されていません</translation>
 <translation id="4320948194796820126">メールサービスへのブックマークを追加</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">診断</translation>
 <translation id="4451757071857432900">煩わしい広告や誤解を招く広告が表示されるサイトでブロック(推奨)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> で検索するか、URL を入力してください</translation>
+<translation id="4461835665417498653">一部のシステム情報とページのコンテンツを匿名化して Google に送信します。</translation>
 <translation id="4462159676511157176">カスタム ネーム サーバー</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> を展開します</translation>
 <translation id="4469477701382819144">煩わしい広告や誤解を招く広告が表示されるサイトでブロックされています</translation>
@@ -2385,6 +2392,7 @@
 <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="4736292055110123391">すべてのデバイスでブックマーク、パスワード、履歴、その他の設定を同期する</translation>
 <translation id="4737715515457435632">ネットワークに接続してください</translation>
 <translation id="473775607612524610">更新</translation>
 <translation id="4742746985488890273">シェルフに固定</translation>
@@ -4895,6 +4903,7 @@
 <translation id="8598453409908276158">サンドボックスの無効化プラグインがブロックされました</translation>
 <translation id="8601206103050338563">TLS WWW クライアント認証</translation>
 <translation id="8602851771975208551">パソコン上の別のプログラムにより、Chrome の動作方法を変更する可能性のあるアプリが追加されました。</translation>
+<translation id="8604763363205185560">Chrome とそのセキュリティの向上に協力する</translation>
 <translation id="8605428685123651449">SQLite メモリ</translation>
 <translation id="8606726445206553943">MIDI デバイスの使用</translation>
 <translation id="8609465669617005112">上に移動</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 5c2d58f..155da71 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -761,6 +761,7 @@
 <translation id="215753907730220065">ಪೂರ್ಣಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
 <translation id="2157875535253991059">ಈ ಪುಟವು ಇದೀಗ ಪೂರ್ಣ ಪರದೆಯಾಗಿದೆ.</translation>
 <translation id="216169395504480358">ವೈ-ಫೈ ಸೇರಿಸಿ...</translation>
+<translation id="2162155940152307086">ಸಿಂಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನೀವು ತೊರೆದ ನಂತರ ಸಿಂಕ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ</translation>
 <translation id="2163470535490402084">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಇಂಟರ್ನೆಟ್‌ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಿ.</translation>
 <translation id="2166369534954157698">The quick brown fox jumps over the lazy dog</translation>
 <translation id="2169062631698640254">ಹೇಗಾದರೂ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
@@ -771,6 +772,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> ನಲ್ಲಿ ಇರುವ <ph name="PEPPER_PLUGIN_DOMAIN" />, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="2178614541317717477">CA ಹೊಂದಾಣಿಕೆ</translation>
 <translation id="218070003709087997">ಎಷ್ಟು ಪ್ರತಿಗಳನ್ನು ಮುದ್ರಿಸಬೇಕೆಂದು (1 ರಿಂದ 999) ಸೂಚಿಸಲು ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿ.</translation>
+<translation id="2182253583899676504">ಪಠ್ಯ ಫೀಲ್ಡ್‌ಗಳಲ್ಲಿ ನೀವು ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="2184515124301515068">ಯಾವ ಸೈಟ್‌ಗಳು ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು Chrome ಆಯ್ಕೆ ಮಾಡಲಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="2187895286714876935">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರದ ಆಮದು ದೋಷ</translation>
 <translation id="2187906491731510095">ವಿಸ್ತರಣೆಗಳನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿದೆ</translation>
@@ -782,7 +784,9 @@
 <translation id="2192505247865591433">ಇವರಿಂದ:</translation>
 <translation id="2193365732679659387">ವಿಶ್ವಾಸಾರ್ಹ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="2195729137168608510">ಇಮೇಲ್ ಭದ್ರತೆ</translation>
+<translation id="2198757192731523470">Google ನಿಮ್ಮ ಇತಿಹಾಸವನ್ನು ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ಬಳಸಬಹುದು.</translation>
 <translation id="2199298570273670671">ದೋಷ</translation>
+<translation id="2199719347983604670">Chrome ಸಿಂಕ್‌ನಲ್ಲಿನ ಡೇಟಾ</translation>
 <translation id="2200094388063410062">ಇಮೇಲ್‌</translation>
 <translation id="2200356397587687044">ಮುಂದುವರಿಯಲು, Chrome ಗೆ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="2200603218210188859">USB ಸಾಧನದ ಆದ್ಯತೆಗಳು</translation>
@@ -1238,6 +1242,7 @@
 <translation id="2889064240420137087">ಇದರೊಂದಿಗೆ Open Link...</translation>
 <translation id="2889925978073739256">ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್‌ಗಳ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಮುಂದುವರಿಸಿ</translation>
 <translation id="2893168226686371498">ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್</translation>
+<translation id="2895734772884435517">ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ ಈ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು.</translation>
 <translation id="289644616180464099">ಸಿಮ್‌ ಕಾರ್ಡ್ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="289695669188700754">ಕೀಲಿ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> ಟ್ಯಾಬ್‌ಗಳನ್ನು ತೆರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?</translation>
@@ -1593,7 +1598,6 @@
 <translation id="3470502288861289375">ನಕಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3473479545200714844">ಪರದೆ ವರ್ಧಕ</translation>
 <translation id="3475447146579922140">Google ಸ್ಪ್ರೆಡ್‌ಶೀಟ್‌</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 ಸಾಲನ್ನು ತೋರಿಸಿಲ್ಲ&gt;}one{&lt;$1 ಸಾಲುಗಳನ್ನು ತೋರಿಸಿಲ್ಲ&gt;}other{&lt;$1 ಸಾಲುಗಳನ್ನು ತೋರಿಸಿಲ್ಲ&gt;}}</translation>
 <translation id="3475843873335999118">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಫಿಂಗರ್‌‌ಫ್ರಿಂಟ್‌ ಇನ್ನೂ ಗುರುತಿಸಲಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ.</translation>
 <translation id="347670947055184738">ಓಹ್‌‌! ನಿಮ್ಮ ಸಾಧನಕ್ಕಾಗಿ ನೀತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ಸಿಸ್ಟಂ ವಿಫಲಗೊಂಡಿದೆ.</translation>
 <translation id="347785443197175480">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಹಾಗೂ ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು <ph name="HOST" /> ಗೆ ಅನುಮತಿಸುವುದನ್ನು ಮುಂದುವರೆಸಿ</translation>
@@ -1706,6 +1710,7 @@
 <translation id="3636096452488277381">ಹೇಗಿರುವಿರಿ, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> ಉಳಿದಿದೆ</translation>
 <translation id="3637682276779847508">ನೀವು ಸರಿಯಾದ ಪಿನ್ ಅನ್‌ಲಾಕ್ ಕೀಯನ್ನು ನಮೂದಿಸದಿದ್ದಲ್ಲಿ ನಿಮ್ಮ ಸಿಮ್ ಕಾರ್ಡ್ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation>
+<translation id="363863692969456324">ವರ್ಧಿತ ಕಾಗುಣಿತ ಪರೀಕ್ಷೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಾಗುಣಿತ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಿ</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> ಬಳಕೆದಾರರಿಗೆ "<ph name="EXTENSION_NAME" />" ವಿಸ್ತರಣೆಯನ್ನು ಸೇರಿಸುವುದೇ?</translation>
 <translation id="3644896802912593514">ಅಗಲ</translation>
 <translation id="3645372836428131288">ಫಿಂಗರ್‌‌ಪ್ರಿಂಟ್‌‌ನ ಬೇರೊಂದು ಭಾಗವನ್ನು ಸೆರೆಹಿಡಿಯಲು ಬೆರಳನ್ನು ನಿಧಾನವಾಗಿ ಸರಿಸಿ.</translation>
@@ -2138,6 +2143,7 @@
 <translation id="4310139701823742692">ಫೈಲ್ ತಪ್ಪು ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿದೆ. PPD ಫೈಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ, ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="431076611119798497">&amp;ವಿವರಗಳು</translation>
 <translation id="4312866146174492540">ನಿರ್ಬಂಧಿಸು (ಡಿಫಾಲ್ಟ್)</translation>
+<translation id="4314815835985389558">ಸಿಂಕ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="4316850752623536204">ಡೆವಲಪರ್ ವೆಬ್‌ಸೈಟ್</translation>
 <translation id="4320177379694898372">ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲ</translation>
 <translation id="4320948194796820126">ನಿಮ್ಮ ಇಮೇಲ್‌ಗೆ ಬುಕ್‌ಮಾರ್ಕ್ ಸೇರಿಸಿ</translation>
@@ -2217,6 +2223,7 @@
 <translation id="4450974146388585462">ಪತ್ತೆಹಚ್ಚುವಿಕೆ</translation>
 <translation id="4451757071857432900">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಅಥವಾ ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸುವ ಸೈಟ್‌ಗಳಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> ಹುಡುಕಿ ಅಥವಾ URL ಟೈಪ್ ಮಾಡಿ</translation>
+<translation id="4461835665417498653">ಸಿಸ್ಟಂ ಕುರಿತಾದ ಕೆಲವು ಮಾಹಿತಿ ಮತ್ತು ಪುಟದ ವಿಷಯವನ್ನು ಅನಾಮಧೇಯವಾಗಿ Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ.</translation>
 <translation id="4462159676511157176">ಕಸ್ಟಮ್ ಹೆಸರು ಸರ್ವರ್‌ಗಳು</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> ವಿಸ್ತರಿಸಿ</translation>
 <translation id="4469477701382819144">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಅಥವಾ ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸುವ ಸೈಟ್‌ಗಳಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
@@ -2381,6 +2388,7 @@
 <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="4736292055110123391">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲೂ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌‌ಗಳು, ಇತಿಹಾಸ ಹಾಗೂ ಹೆಚ್ಚಿನವುಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿ</translation>
 <translation id="4737715515457435632">ದಯವಿಟ್ಟು ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ</translation>
 <translation id="473775607612524610">ಅಪ್‌ಡೇಟ್‌‌</translation>
 <translation id="4742746985488890273">ಶೆಲ್ಫ್‌ಗೆ ಪಿನ್‌ ಮಾಡು</translation>
@@ -4886,6 +4894,7 @@
 <translation id="8598453409908276158">ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಿರುವ ಪ್ಲಗ್ ಇನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="8601206103050338563">TLS WWW ಗ್ರಾಹಕ ಅಪ್ಲಿಕೇಶನ್</translation>
 <translation id="8602851771975208551">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂ Chrome ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಿಸಬಹುದಾದಂತಹ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸೇರಿಸಿದೆ.</translation>
+<translation id="8604763363205185560">Chrome ಮತ್ತು ಅದರ ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation>
 <translation id="8605428685123651449">SQLite ಸ್ಮರಣೆ</translation>
 <translation id="8606726445206553943">ನಿಮ್ಮ MIDI ಸಾಧನಗಳನ್ನು ಬಳಸಿ</translation>
 <translation id="8609465669617005112">ಮೇಲೆ ಸರಿಸು</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 224b48b..c6a3b823 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">전체화면 종료</translation>
 <translation id="2157875535253991059">페이지가 현재 전체화면으로 전환되었습니다.</translation>
 <translation id="216169395504480358">Wi-Fi 추가</translation>
+<translation id="2162155940152307086">동기화 설정을 종료하면 동기화가 시작됩니다.</translation>
 <translation id="2163470535490402084"><ph name="DEVICE_TYPE" /> 기기에 로그인하려면 인터넷에 연결하세요.</translation>
 <translation id="2166369534954157698">재빠른 갈색 여우가 게으른 개를 뛰어넘습니다.</translation>
 <translation id="2169062631698640254">로그인</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" />의 <ph name="PEPPER_PLUGIN_NAME" />에서 내 컴퓨터에 액세스하려고 합니다</translation>
 <translation id="2178614541317717477">CA 손상</translation>
 <translation id="218070003709087997">숫자로 인쇄 부수를 표시하세요(1부터 999까지).</translation>
+<translation id="2182253583899676504">입력란에 텍스트를 입력하면 Google로 전송됩니다.</translation>
 <translation id="2184515124301515068">사이트의 소리 재생 여부를 Chrome이 결정(권장)</translation>
 <translation id="2187895286714876935">서버 인증서 가져오기 오류</translation>
 <translation id="2187906491731510095">확장 프로그램 업데이트됨</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">웹 브라우저</translation>
 <translation id="2193365732679659387">신뢰 설정</translation>
 <translation id="2195729137168608510">이메일 보호</translation>
+<translation id="2198757192731523470">Google에서 검색, 광고 및 다른 Google 서비스를 맞춤설정하기 위하여 내 방문 기록을 사용할 수 있습니다.</translation>
 <translation id="2199298570273670671">오류</translation>
+<translation id="2199719347983604670">Chrome 동기화 데이터</translation>
 <translation id="2200094388063410062">이메일</translation>
 <translation id="2200356397587687044">계속하려면 Chrome에 권한이 필요함</translation>
 <translation id="2200603218210188859">USB 기기 환경설정</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">다음으로 링크 열기...</translation>
 <translation id="2889925978073739256">샌드박스 처리되지 않은 플러그인 계속 차단</translation>
 <translation id="2893168226686371498">기본 브라우저</translation>
+<translation id="2895734772884435517">언제든지 이러한 설정을 맞춤설정할 수 있습니다.</translation>
 <translation id="289644616180464099">SIM 카드가 잠겨 있습니다.</translation>
 <translation id="289695669188700754">키 ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" />개 탭을 여시겠습니까?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">복사 중...</translation>
 <translation id="3473479545200714844">화면 돋보기</translation>
 <translation id="3475447146579922140">Google 스프레드시트</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1줄이 표시되지 않음&gt;}other{&lt;$1줄이 표시되지 않음&gt;}}</translation>
 <translation id="3475843873335999118">죄송합니다. 지문이 인식되지 않았습니다. 비밀번호를 입력하세요.</translation>
 <translation id="347670947055184738">시스템에서 기기 정책을 가져오지 못했습니다.</translation>
 <translation id="347785443197175480"><ph name="HOST" />에서 카메라와 마이크에 액세스하도록 계속 허용</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381"><ph name="USER_GIVEN_NAME" />님, 반갑습니다.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> 남음</translation>
 <translation id="3637682276779847508">정확한 PIN 잠금 해제 키를 입력하지 않으면 SIM 카드가 영구적으로 사용 중지됩니다.</translation>
+<translation id="363863692969456324">향상된 맞춤법 검사 기술로 맞춤법 오류 수정</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" />님에 대하여 '<ph name="EXTENSION_NAME" />'을(를) 추가할까요?</translation>
 <translation id="3644896802912593514">너비</translation>
 <translation id="3645372836428131288">지문의 다른 부분이 인식되도록 손가락을 살짝 움직이세요.</translation>
@@ -2140,6 +2145,7 @@
 <translation id="4310139701823742692">파일 형식이 잘못되었습니다. PPD 파일을 확인하고 다시 시도하세요.</translation>
 <translation id="431076611119798497">세부정보(&amp;D)</translation>
 <translation id="4312866146174492540">차단(기본값)</translation>
+<translation id="4314815835985389558">동기화 관리</translation>
 <translation id="4316850752623536204">개발자 웹사이트</translation>
 <translation id="4320177379694898372">인터넷에 연결되지 않음</translation>
 <translation id="4320948194796820126">북마크할 이메일 선택</translation>
@@ -2219,6 +2225,7 @@
 <translation id="4450974146388585462">진단</translation>
 <translation id="4451757071857432900">방해가 되거나 사용자를 현혹하는 광고를 표시하는 사이트에서 광고가 차단됨(권장)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" />에서 검색하거나 URL을 입력하세요.</translation>
+<translation id="4461835665417498653">일부 시스템 정보와 페이지 콘텐츠를 익명으로 Google로 전송</translation>
 <translation id="4462159676511157176">맞춤 이름 서버</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> 펼치기</translation>
 <translation id="4469477701382819144">방해가 되거나 사용자를 현혹하는 광고를 표시하는 사이트에서 광고가 차단됩니다.</translation>
@@ -2383,6 +2390,7 @@
 <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="4736292055110123391">북마크, 비밀번호, 방문 기록 등을 모든 기기에 동기화</translation>
 <translation id="4737715515457435632">네트워크에 연결하세요.</translation>
 <translation id="473775607612524610">업데이트</translation>
 <translation id="4742746985488890273">임시보관함에 고정</translation>
@@ -4892,6 +4900,7 @@
 <translation id="8598453409908276158">샌드박스 처리되지 않은 플러그인이 차단됨</translation>
 <translation id="8601206103050338563">TLS WWW 클라이언트 인증</translation>
 <translation id="8602851771975208551">컴퓨터의 다른 프로그램에서 Chrome 작동에 영향을 줄 수 있는 앱을 추가했습니다.</translation>
+<translation id="8604763363205185560">Chrome 및 보안 개선에 참여</translation>
 <translation id="8605428685123651449">SQLite 메모리</translation>
 <translation id="8606726445206553943">MIDI 기기를 사용합니다.</translation>
 <translation id="8609465669617005112">위로 이동</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 2d73a49..9db32eb 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Kopijuojama...</translation>
 <translation id="3473479545200714844">Ekrano didintuvas</translation>
 <translation id="3475447146579922140">„Google“ skaičiuoklė</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 eilutė nerodoma&gt;}one{&lt;$1 eilutė nerodoma&gt;}few{&lt;$1 eilutės nerodomos&gt;}many{&lt;$1 eilutės nerodoma&gt;}other{&lt;$1 eilučių nerodoma&gt;}}</translation>
 <translation id="3475843873335999118">Deja, piršto antspaudas vis dar neatpažintas. Įveskite slaptažodį.</translation>
 <translation id="347670947055184738">Oi! Sistemai nepavyko pateikti įrenginio politikos.</translation>
 <translation id="347785443197175480">Toliau leisti <ph name="HOST" /> pasiekti fotoaparatą ir mikrofoną</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Sertifikavimo institucijos importavimo klaida</translation>
 <translation id="5269977353971873915">Spausdinant įvyko klaida</translation>
 <translation id="5270167208902136840">Rodyti dar <ph name="NUMBER_OF_MORE_APPS" /> progr.</translation>
-<translation id="5272654297705279635">Tinkinti nustatymai</translation>
 <translation id="5275352920323889391">Šuo</translation>
 <translation id="5275973617553375938">Atkurti failai iš „Google“ disko</translation>
 <translation id="527605982717517565">Visada leisti „JavaScript“ <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index e9fcf25..5317e76 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Iziet no pilnekrāna režīma</translation>
 <translation id="2157875535253991059">Šī lapa tagad ir redzama pilnekrāna režīmā.</translation>
 <translation id="216169395504480358">Pievienot Wi-Fi...</translation>
+<translation id="2162155940152307086">Sinhronizācija tiks sākta, tiklīdz aizvērsiet sinhronizācijas iestatījumus.</translation>
 <translation id="2163470535490402084">Lai pierakstītos savā <ph name="DEVICE_TYPE" /> ierīcē, lūdzu, izveidojiet savienojumu ar internetu.</translation>
 <translation id="2166369534954157698">Muļķa hipiji turpat brīvi mēģina nogaršot celofāna žņaudzējčūsku</translation>
 <translation id="2169062631698640254">Tik un tā pierakstīties</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724">Spraudnim <ph name="PEPPER_PLUGIN_NAME" /> domēnā <ph name="PEPPER_PLUGIN_DOMAIN" /> ir nepieciešama piekļuve jūsu datoram.</translation>
 <translation id="2178614541317717477">CA drošības politikas apdraudējums</translation>
 <translation id="218070003709087997">Izmantojiet skaitli, lai norādītu, cik eksemplāri jādrukā (1–999).</translation>
+<translation id="2182253583899676504">Teksts, ko rakstāt teksta lauciņos, tiks nosūtīts Google serveriem.</translation>
 <translation id="2184515124301515068">Atļaut pārlūkam Chrome izvēlēties, kad vietnēs var atskaņot skaņu (ieteicams)</translation>
 <translation id="2187895286714876935">Servera sertifikāta importēšanas kļūda</translation>
 <translation id="2187906491731510095">Paplašinājumi ir atjaunināti</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">No:</translation>
 <translation id="2193365732679659387">Uzticamības iestatījumi</translation>
 <translation id="2195729137168608510">E-pasta aizsardzība</translation>
+<translation id="2198757192731523470">Google var izmantot jūsu vēsturi, lai personalizētu Meklēšanu, reklāmas un citus Google pakalpojumus.</translation>
 <translation id="2199298570273670671">Kļūda</translation>
+<translation id="2199719347983604670">Chrome sinhronizācijas dati</translation>
 <translation id="2200094388063410062">Nosūtīt e-pastā</translation>
 <translation id="2200356397587687044">Pārlūkam Chrome ir nepieciešama atļauja turpināt</translation>
 <translation id="2200603218210188859">USB ierīču preferences</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Atvērt saiti ar...</translation>
 <translation id="2889925978073739256">Turpināt bloķēt spraudņus, kas nav ievietoti smilškastē</translation>
 <translation id="2893168226686371498">Noklusējuma pārlūks</translation>
+<translation id="2895734772884435517">Jebkurā brīdī varat pielāgot šos iestatījumus.</translation>
 <translation id="289644616180464099">SIM karte ir bloķēta.</translation>
 <translation id="289695669188700754">Atslēgas ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Vai tiešām vēlaties atvērt <ph name="TAB_COUNT" /> cilnes?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Notiek kopēšana...</translation>
 <translation id="3473479545200714844">Ekrāna lupa</translation>
 <translation id="3475447146579922140">Google izklājlapa</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 rindiņa netiek rādīta&gt;}zero{&lt;$1 rindiņas netiek rādītas&gt;}one{&lt;$1 rindiņa netiek rādīta&gt;}other{&lt;$1 rindiņas netiek rādītas&gt;}}</translation>
 <translation id="3475843873335999118">Diemžēl jūsu pirksta nospiedums joprojām nav atpazīts. Lūdzu, ievadiet savu paroli.</translation>
 <translation id="347670947055184738">Diemžēl sistēmai neizdevās izgūt politiku jūsu ierīcei.</translation>
 <translation id="347785443197175480">Arī turpmāk ļaut vietnei <ph name="HOST" /> piekļūt kamerai un mikrofonam</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Sveicināti, <ph name="USER_GIVEN_NAME" />!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% — atlicis: <ph name="TIME" /></translation>
 <translation id="3637682276779847508">SIM karte tiks neatgriezeniski atspējota, ja nevarēsiet ievadīt pareizo PIN atbloķēšanas atslēgu.</translation>
+<translation id="363863692969456324">Labojiet pareizrakstības kļūdas, izmantojot uzlaboto pareizrakstības pārbaudi</translation>
 <translation id="3640214691812501263">Vai vēlaties pievienot lietotni “<ph name="EXTENSION_NAME" />” lietotājam <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Platums</translation>
 <translation id="3645372836428131288">Mazliet pakustiniet, lai uzņemtu citu pirksta nospieduma daļu</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Nepareizs faila formāts. Pārbaudiet PPD failu un mēģiniet vēlreiz.</translation>
 <translation id="431076611119798497">&amp;Informācija</translation>
 <translation id="4312866146174492540">Bloķēt (pēc noklusējuma)</translation>
+<translation id="4314815835985389558">Sinhronizācijas pārvaldība</translation>
 <translation id="4316850752623536204">Izstrādātāja vietne</translation>
 <translation id="4320177379694898372">Nav interneta savienojuma.</translation>
 <translation id="4320948194796820126">Pievienojiet grāmatzīmi savam e-pastam</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Diagnosticēt</translation>
 <translation id="4451757071857432900">Bloķētas vietnēs, kurās tiek rādītas traucējošas vai maldinošas reklāmas (ieteicams)</translation>
 <translation id="4453946976636652378">Meklējiet <ph name="SEARCH_ENGINE_NAME" /> meklētājprogrammā vai ierakstiet URL</translation>
+<translation id="4461835665417498653">Anonīmi nosūta noteiktu sistēmas informāciju un lapas saturu Google serveriem.</translation>
 <translation id="4462159676511157176">Pielāgoti nosaukumu serveri</translation>
 <translation id="4467101674048705704">Izvērst mapi <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Bloķētas vietnēs, kurās tiek rādītas traucējošas vai maldinošas reklāmas</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Ievadiet paroli, lai iespējotu funkciju Smart Lock. Nākamajā reizē šīs ierīces (<ph name="DEVICE_TYPE" />) atbloķēšanai tiks izmantots jūsu tālrunis. Iestatījumos varat izslēgt funkciju Smart Lock.</translation>
 <translation id="473546211690256853">Šo kontu pārvalda <ph name="DOMAIN" /></translation>
 <translation id="4735803855089279419">Sistēmā neizdevās noteikt šīs ierīces identifikatorus.</translation>
+<translation id="4736292055110123391">Sinhronizējiet grāmatzīmes, paroles, vēsturi un citu saturu visās savās ierīcēs</translation>
 <translation id="4737715515457435632">Lūdzu, izveidojiet savienojumu ar tīklu</translation>
 <translation id="473775607612524610">Atjaunināt</translation>
 <translation id="4742746985488890273">Piespraust plauktam</translation>
@@ -4894,6 +4902,7 @@
 <translation id="8598453409908276158">Ir bloķēts spraudnis, kas nav ievietots smilškastē</translation>
 <translation id="8601206103050338563">TLS WWW klienta autentifikācija</translation>
 <translation id="8602851771975208551">Cita datorā instalēta programma ir izraisījusi tādas lietotnes pievienošanu, kas var ietekmēt pārlūkprogrammas Chrome darbību.</translation>
+<translation id="8604763363205185560">Palīdziet uzlabot pārlūkprogrammu Chrome un tās drošību</translation>
 <translation id="8605428685123651449">SQLite atmiņa</translation>
 <translation id="8606726445206553943">izmantot jūsu MIDI ierīces</translation>
 <translation id="8609465669617005112">Virziet uz augšu</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 36f1cf8..c1b1e36 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1599,7 +1599,6 @@
 <translation id="3470502288861289375">പകർത്തുന്നു...</translation>
 <translation id="3473479545200714844">സ്‌ക്രീൻ മാഗ്‌നിഫയർ</translation>
 <translation id="3475447146579922140">Google സ്‌പ്രെഡ്‌ഷീറ്റ്</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;ഒരു വരി കാണിച്ചിട്ടില്ല&gt;}other{&lt;$1 വരികൾ കാണിച്ചിട്ടില്ല&gt;}}</translation>
 <translation id="3475843873335999118">ക്ഷമിക്കണം, ഇതുവരെ നിങ്ങളുടെ വിരലടയാളം തിരിച്ചറിയാനായില്ല. പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="347670947055184738">ക്ഷമിക്കണം! സിസ്‌റ്റത്തിന് നിങ്ങളുടെ ഉപകരണത്തിനുള്ള നയം ലഭ്യമാക്കാനായില്ല.</translation>
 <translation id="347785443197175480">നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ആക്‌സസ്സുചെയ്യുന്നതിന് <ph name="HOST" /> എന്നതിനെ അനുവദിക്കുന്നത് തുടരുക</translation>
@@ -2728,7 +2727,6 @@
 <translation id="5266113311903163739">സര്‍ട്ടിഫിക്കേഷന്‍ അതോറിറ്റി ഇറക്കുമതി പിശക്</translation>
 <translation id="5269977353971873915">പ്രിന്റുചെയ്യൽ പരാജയപ്പെട്ടു</translation>
 <translation id="5270167208902136840"><ph name="NUMBER_OF_MORE_APPS" /> ആപ്പുകൾ കൂടി കാണിക്കുക</translation>
-<translation id="5272654297705279635">ഇഷ്‌ടാനുസൃത ക്രമീകരണം</translation>
 <translation id="5275352920323889391">നായ</translation>
 <translation id="5275973617553375938">Google ഡ്രൈവിൽ നിന്നും ഫയലുകൾ വീണ്ടെടുത്തു</translation>
 <translation id="527605982717517565"><ph name="HOST" /> ല്‍‌ എല്ലായ്‌പ്പോഴുംJavaScript അനുവദിക്കുക </translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 0c20f85..67dafbf 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -763,6 +763,7 @@
 <translation id="215753907730220065">पूर्ण स्क्रीनमधून निर्गमन करा</translation>
 <translation id="2157875535253991059">हे पृष्ठ आता फुल स्‍क्रीन असेल.</translation>
 <translation id="216169395504480358">वाय-फाय जोडा...</translation>
+<translation id="2162155940152307086">तुम्ही सिंक सेटिंग्ज सोडल्यास सिंक सुरू होईल</translation>
 <translation id="2163470535490402084">कृपया आपल्‍या <ph name="DEVICE_TYPE" /> मध्‍ये साइन इन करण्‍यासाठी इंटरनेटशी कनेक्ट करा.</translation>
 <translation id="2166369534954157698">चपळ तपकिरी कोल्ह्याने आळशी कुत्र्यावर उडी मारली</translation>
 <translation id="2169062631698640254">तरीही साइन इन करा</translation>
@@ -773,6 +774,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> वरील <ph name="PEPPER_PLUGIN_NAME" /> ला तुमचा काँप्युटर अ‍ॅक्सेस करायचा आहे</translation>
 <translation id="2178614541317717477">CA तडजोड</translation>
 <translation id="218070003709087997">किती प्रती प्रिंट करायच्या ते सूचित करण्यासाठी संख्या वापरा (1 ते 999).</translation>
+<translation id="2182253583899676504">मजकुराच्या भागात टाइप केलेला मजकूर Google कडे पाठवला जाईल.</translation>
 <translation id="2184515124301515068">जेव्हा साइट आवाज प्ले करेल तेव्हा Chrome ला निवड करू दे (शिफारस केलेले)</translation>
 <translation id="2187895286714876935">सर्व्हर सर्टिफिकेट इंपोर्ट एरर</translation>
 <translation id="2187906491731510095">विस्तार अपडेट केले</translation>
@@ -784,7 +786,9 @@
 <translation id="2192505247865591433">द्वारा:</translation>
 <translation id="2193365732679659387">विश्वासू सेटिंग्ज</translation>
 <translation id="2195729137168608510">ईमेल संरक्षण</translation>
+<translation id="2198757192731523470">शोध, जाहिरात आणि इतर Google सेवा पर्सनलाइझ करण्यासाठी Google कदाचित तुमच्या इतिहासाचा वापर करू शकते.</translation>
 <translation id="2199298570273670671">एरर</translation>
+<translation id="2199719347983604670">Chrome सिंक मधील डेटा</translation>
 <translation id="2200094388063410062">ईमेल</translation>
 <translation id="2200356397587687044">सुरू ठेवण्यासाठी Chrome ला परवानगीची आवश्यकता आहे</translation>
 <translation id="2200603218210188859">USB डिव्हाइस प्राधान्ये</translation>
@@ -1241,6 +1245,7 @@
 <translation id="2889064240420137087">यासह दुवा उघडा...</translation>
 <translation id="2889925978073739256">सॅन्डबॉक्स न केलेले प्लगिन अवरोधित करणे सुरू ठेवा</translation>
 <translation id="2893168226686371498">डीफॉल्ट ब्राउझर</translation>
+<translation id="2895734772884435517">तुम्ही या सेटिंग्ज कधीही कस्टमाइझ करू शकता.</translation>
 <translation id="289644616180464099">सिम कार्ड लॉक केले आहे</translation>
 <translation id="289695669188700754">की आयडी: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">तुमची खात्री आहे की तुम्ही <ph name="TAB_COUNT" /> टॅब उघडू इच्छिता?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">कॉपी करत आहे...</translation>
 <translation id="3473479545200714844">स्क्रीन भिंग</translation>
 <translation id="3475447146579922140">Google स्प्रेडशीट</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;१ रेषा दाखवलेली नाही&gt;}one{&lt;$1 रेषा दाखवलेली नाही&gt;}other{&lt;$1 रेषा दाखवलेल्या नाहीत&gt;}}</translation>
 <translation id="3475843873335999118">क्षमस्व, तुमचे फिंगरप्रिंट अद्याप ओळखले नाही. कृपया तुमचा पासवर्ड एंटर करा.</translation>
 <translation id="347670947055184738">अरेरे! तुमच्या डीव्हाइससाठी धोरण आणण्यात सिस्टम अयशस्वी झाली.</translation>
 <translation id="347785443197175480">आपल्या कॅमेरा आणि मायक्रोफोनवर प्रवेश करण्यासाठी <ph name="HOST" /> ला अनुमती देणे सुरू ठेवा</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">कसे आहात, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> शिल्लक</translation>
 <translation id="3637682276779847508">तुम्ही योग्य पिन अनलॉक की एंटर न केल्यास तुमचे सिम कार्ड कायमचे अक्षम केले जाईल.</translation>
+<translation id="363863692969456324">सुधारित स्पेल चेकसह शब्दलेखनातील एररमध्ये सुधारणा करा</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> साठी "<ph name="EXTENSION_NAME" />" जोडायचे?</translation>
 <translation id="3644896802912593514">रूंदी</translation>
 <translation id="3645372836428131288">फिंगरप्रिंटचा वेगळा भाग कॅप्चर करण्यासाठी बोट किंचित हलवा.</translation>
@@ -2042,7 +2047,7 @@
 <translation id="412940972494182898">या वेळी फ्लॅश रन करा</translation>
 <translation id="4130199216115862831">डिव्‍हाइस लॉग</translation>
 <translation id="4130207949184424187">तुम्ही ओम्निबॉक्समधून शोध घेता तेव्हा कोणते पृष्ठ दर्शविले जाते ते या विस्ताराने बदलले आहे.</translation>
-<translation id="4130750466177569591">मी सहमत आहे</translation>
+<translation id="4130750466177569591">मला मान्य आहे</translation>
 <translation id="413121957363593859">घटक</translation>
 <translation id="4131410914670010031">कृष्ण धवल</translation>
 <translation id="4136203100490971508">सूर्योदयाच्या वेळी रात्रीचा प्रकाश आपोआप बंद होईल</translation>
@@ -2141,6 +2146,7 @@
 <translation id="4310139701823742692">फाइलचा फॉरमॅट चुकीचा आहे. PPD फाइल तपासा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="431076611119798497">&amp;तपशील</translation>
 <translation id="4312866146174492540">अवरोधित करा (डीफॉल्ट)</translation>
+<translation id="4314815835985389558">सिंक व्यवस्थापित करा</translation>
 <translation id="4316850752623536204">विकसक वेबसाइट</translation>
 <translation id="4320177379694898372">कोणतेही इंटरनेट कनेक्शन नाही</translation>
 <translation id="4320948194796820126">तुमच्या ईमेलवर बुकमार्क जोडा</translation>
@@ -2220,6 +2226,7 @@
 <translation id="4450974146388585462">निदान करा</translation>
 <translation id="4451757071857432900">अनाहूत किंवा दिशाभूल करणाऱ्या जाहिराती दाखवणाऱ्या साइटवर ब्लॉक केले (शिफारस केलेले)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> वर शोधा किंवा URL टाइप करा</translation>
+<translation id="4461835665417498653">Google ला काही सिस्टम माहिती आणि पेज आशय अज्ञातरित्या पाठवते.</translation>
 <translation id="4462159676511157176">सानुकूल नाव सर्व्हर</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> विस्तारित करा</translation>
 <translation id="4469477701382819144">अनाहूत किंवा दिशाभूल करणाऱ्या जाहिराती दाखवणाऱ्या साइटवर ब्लॉक केले</translation>
@@ -2384,6 +2391,7 @@
 <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="4736292055110123391">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क, पासवर्ड, इतिहास आणि बरेच काही सिंक करा</translation>
 <translation id="4737715515457435632">कृपया एका नेटवर्कशी कनेक्ट करा</translation>
 <translation id="473775607612524610">अपडेट करा</translation>
 <translation id="4742746985488890273">शेल्फवर पिन करा</translation>
@@ -4892,6 +4900,7 @@
 <translation id="8598453409908276158">सँडबॉक्स न केलेले प्लग-इन ब्लॉक केले</translation>
 <translation id="8601206103050338563">TLS WWW क्लायंट अॉथेंटिकेशन</translation>
 <translation id="8602851771975208551">आपल्या संगणकावरील दुसऱ्या प्रोग्रामने Chrome च्या कार्य करण्याचा मार्ग बदलू शकणारा अ‍ॅप जोडला.</translation>
+<translation id="8604763363205185560">Chrome आणि त्याची सुरक्षितता सुधारण्यास मदत करा</translation>
 <translation id="8605428685123651449">SQLite मेमरी</translation>
 <translation id="8606726445206553943">तुमचे MIDI डिव्हाइसेस वापरा</translation>
 <translation id="8609465669617005112">वर हलवा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index ae407b9..8cdb9887 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -1603,7 +1603,6 @@
 <translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3473479545200714844">Penggadang skrin</translation>
 <translation id="3475447146579922140">Hamparan Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 baris tidak ditunjukkan&gt;}other{&lt;$1 baris tidak ditunjukkan&gt;}}</translation>
 <translation id="3475843873335999118">Maaf, cap jari anda masih tidak dikenali. Sila masukkan kata laluan anda.</translation>
 <translation id="347670947055184738">Op!  Sistem gagal mengambil dasar untuk peranti anda.</translation>
 <translation id="347785443197175480">Teruskan membenarkan <ph name="HOST" /> untuk mengakses kamera dan mikrofon anda</translation>
@@ -2733,7 +2732,6 @@
 <translation id="5266113311903163739">Ralat Import Pihak Berkuasa Pensijilan</translation>
 <translation id="5269977353971873915">Cetakan Gagal</translation>
 <translation id="5270167208902136840">Tunjukkan <ph name="NUMBER_OF_MORE_APPS" /> lagi apl</translation>
-<translation id="5272654297705279635">Tetapan tersuai</translation>
 <translation id="5275352920323889391">Anjing</translation>
 <translation id="5275973617553375938">Fail yang diperoleh semula dari Google Drive</translation>
 <translation id="527605982717517565">Sentiasa benarkan JavaScript di <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 6805bb9..fcae93d 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Volledig scherm sluiten</translation>
 <translation id="2157875535253991059">Deze pagina wordt nu op volledig scherm weergegeven.</translation>
 <translation id="216169395504480358">Wifi toevoegen...</translation>
+<translation id="2162155940152307086">De synchronisatie wordt gestart wanneer je de synchronisatie-instellingen verlaat</translation>
 <translation id="2163470535490402084">Maak verbinding met internet om in te loggen op je <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">Pa's wijze lynx bezag vroom het fikse aquaduct</translation>
 <translation id="2169062631698640254">Toch inloggen</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> op <ph name="PEPPER_PLUGIN_DOMAIN" /> vraagt om toegang tot je computer</translation>
 <translation id="2178614541317717477">Inbreuk op CA</translation>
 <translation id="218070003709087997">Gebruik een cijfer om aan te geven hoeveel exemplaren er moeten worden afgedrukt (1-999).</translation>
+<translation id="2182253583899676504">De tekst die je in tekstvelden typt, wordt verzonden naar Google.</translation>
 <translation id="2184515124301515068">Chrome laten kiezen wanneer sites geluid mogen afspelen (aanbevolen)</translation>
 <translation id="2187895286714876935">Fout bij importeren van servercertificaat</translation>
 <translation id="2187906491731510095">Extensies geüpdatet</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Van:</translation>
 <translation id="2193365732679659387">Vertrouwensinstellingen</translation>
 <translation id="2195729137168608510">E-mail beveiligen</translation>
+<translation id="2198757192731523470">Google kan je geschiedenis gebruiken om Google Zoeken, advertenties en andere Google-services te personaliseren.</translation>
 <translation id="2199298570273670671">Fout</translation>
+<translation id="2199719347983604670">Gegevens van Chrome-synchronisatie</translation>
 <translation id="2200094388063410062">E-mail</translation>
 <translation id="2200356397587687044">Chrome heeft toestemming nodig om verder te gaan</translation>
 <translation id="2200603218210188859">Voorkeuren voor USB-apparaten</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Link openen met...</translation>
 <translation id="2889925978073739256">Plug-ins zonder sandbox blijven blokkeren</translation>
 <translation id="2893168226686371498">Standaardbrowser</translation>
+<translation id="2895734772884435517">Je kunt deze instellingen op elk gewenst moment aanpassen.</translation>
 <translation id="289644616180464099">Simkaart is vergrendeld</translation>
 <translation id="289695669188700754">Sleutel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Weet je zeker dat je <ph name="TAB_COUNT" /> tabbladen wilt openen?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Kopiëren...</translation>
 <translation id="3473479545200714844">Vergrootglas</translation>
 <translation id="3475447146579922140">Google-spreadsheet</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 regel niet weergegeven&gt;}other{&lt;$1 regels niet weergegeven&gt;}}</translation>
 <translation id="3475843873335999118">Je vingerafdruk wordt nog steeds niet herkend. Geef je wachtwoord op.</translation>
 <translation id="347670947055184738">Het systeem kan het beleid voor je apparaat niet ophalen.</translation>
 <translation id="347785443197175480"><ph name="HOST" /> toegang blijven geven tot je camera en microfoon</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Hallo, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> resterend</translation>
 <translation id="3637682276779847508">Je simkaart wordt permanent uitgeschakeld als je geen correcte pukcode kunt opgeven.</translation>
+<translation id="363863692969456324">Spelfouten corrigeren met een uitgebreide spellingcontrole</translation>
 <translation id="3640214691812501263">'<ph name="EXTENSION_NAME" />' toevoegen voor <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Breedte</translation>
 <translation id="3645372836428131288">Beweeg je vinger enigszins om een ander deel van de vingerafdruk vast te leggen.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Bestand heeft een onjuiste indeling. Controleer het PPD-bestand en probeer het opnieuw.</translation>
 <translation id="431076611119798497">&amp;Details</translation>
 <translation id="4312866146174492540">Blokkeren (standaard)</translation>
+<translation id="4314815835985389558">Synchronisatie beheren</translation>
 <translation id="4316850752623536204">Website van ontwikkelaar</translation>
 <translation id="4320177379694898372">Geen internetverbinding</translation>
 <translation id="4320948194796820126">Voeg een bladwijzer toe aan je e-mailservice</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Diagnose</translation>
 <translation id="4451757071857432900">Geblokkeerd op sites die opdringerige of misleidende advertenties weergeven (aanbevolen)</translation>
 <translation id="4453946976636652378">Zoek met <ph name="SEARCH_ENGINE_NAME" /> of voer een URL in</translation>
+<translation id="4461835665417498653">Hiermee worden bepaalde systeemgegevens en paginacontent anoniem naar Google verzonden.</translation>
 <translation id="4462159676511157176">Aangepaste naamservers</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> uitvouwen</translation>
 <translation id="4469477701382819144">Geblokkeerd op sites die opdringerige of misleidende advertenties weergeven</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Geef je wachtwoord op om Smart Lock in te schakelen. De volgende keer wordt je <ph name="DEVICE_TYPE" /> ontgrendeld met je telefoon. Schakel Smart Lock uit in Instellingen.</translation>
 <translation id="473546211690256853">Dit account wordt beheerd door <ph name="DOMAIN" />.</translation>
 <translation id="4735803855089279419">Het systeem kan de apparaat-ID's voor dit apparaat niet bepalen.</translation>
+<translation id="4736292055110123391">Je bladwijzers, wachtwoorden, geschiedenis en meer synchroniseren op al je apparaten</translation>
 <translation id="4737715515457435632">Maak verbinding met een netwerk</translation>
 <translation id="473775607612524610">Updaten</translation>
 <translation id="4742746985488890273">Vastmaken aan plank</translation>
@@ -4894,6 +4902,7 @@
 <translation id="8598453409908276158">Plug-in zonder sandbox geblokkeerd</translation>
 <translation id="8601206103050338563">TLS WWW-clientverificatie</translation>
 <translation id="8602851771975208551">Een ander programma op je computer heeft een app toegevoegd die de manier waarop Chrome werkt kan wijzigen.</translation>
+<translation id="8604763363205185560">Help Chrome en de beveiliging daarvan te verbeteren</translation>
 <translation id="8605428685123651449">SQLite-geheugen</translation>
 <translation id="8606726445206553943">Je MIDI-apparaten gebruiken</translation>
 <translation id="8609465669617005112">Omhoog</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index e08bb5c..26c54da0 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1592,7 +1592,6 @@
 <translation id="3470502288861289375">Kopierer ...</translation>
 <translation id="3473479545200714844">Skjermforstørrer</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linje vises ikke&gt;}other{&lt;$1 linjer vises ikke&gt;}}</translation>
 <translation id="3475843873335999118">Fingeravtrykket ditt ble fortsatt ikke gjenkjent. Skriv inn passordet ditt.</translation>
 <translation id="347670947055184738">Beklager. Systemet kunne ikke hente reglene for enheten din.</translation>
 <translation id="347785443197175480">Fortsett å gi <ph name="HOST" /> tillatelse til å bruke kameraet og mikrofonen</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 80fd1d4e..d63e85dc 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Kopiuję...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Arkusz kalkulacyjny Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 wiersz jest niewidoczny&gt;}few{&lt;$1 wiersze są niewidoczne&gt;}many{&lt;$1 wierszy jest niewidocznych&gt;}other{&lt;$1 wiersza jest niewidoczne&gt;}}</translation>
 <translation id="3475843873335999118">Odcisk palca nie został rozpoznany. Podaj hasło.</translation>
 <translation id="347670947055184738">Ups. System nie mógł pobrać zasad dotyczących Twojego urządzenia.</translation>
 <translation id="347785443197175480">Nadal zezwalaj witrynie <ph name="HOST" /> na dostęp do kamery i mikrofonu</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Błąd importowania urzędu certyfikacji</translation>
 <translation id="5269977353971873915">Niepowodzenie drukowania</translation>
 <translation id="5270167208902136840">Pokaż więcej aplikacji (<ph name="NUMBER_OF_MORE_APPS" />)</translation>
-<translation id="5272654297705279635">Ustawienia niestandardowe</translation>
 <translation id="5275352920323889391">Pies</translation>
 <translation id="5275973617553375938">Pliki odzyskane z Dysku Google</translation>
 <translation id="527605982717517565">Zawsze zezwalaj na wykonywanie kodu JavaScript w witrynie <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index bea2270..232ff8a4 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Copiando...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Planilha do Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linha não mostrada&gt;}one{&lt;$1 linha não mostrada&gt;}other{&lt;$1 linhas não mostradas&gt;}}</translation>
 <translation id="3475843873335999118">Sua impressão digital ainda não foi reconhecida. Digite sua senha.</translation>
 <translation id="347670947055184738">Falha do sistema ao buscar a política do seu dispositivo.</translation>
 <translation id="347785443197175480">Continuar permitindo que <ph name="HOST" /> acesse sua câmera e seu microfone</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Erro de importação da Autoridade de certificação</translation>
 <translation id="5269977353971873915">Falha ao imprimir</translation>
 <translation id="5270167208902136840">Mostrar mais <ph name="NUMBER_OF_MORE_APPS" /> apps</translation>
-<translation id="5272654297705279635">Configurações personalizadas</translation>
 <translation id="5275352920323889391">Cachorro</translation>
 <translation id="5275973617553375938">Arquivos recuperados a partir do Google Drive</translation>
 <translation id="527605982717517565">Sempre permitir JavaScript em <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 7409478d9..c903c7e3 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">A copiar...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Folha de cálculo do Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 linha não apresentada&gt;}other{&lt;$1 linhas não apresentadas&gt;}}</translation>
 <translation id="3475843873335999118">Lamentamos, mas a sua impressão digital ainda não foi reconhecida. Introduza a palavra-passe.</translation>
 <translation id="347670947055184738">Ups! O sistema não conseguiu obter a política para o seu dispositivo.</translation>
 <translation id="347785443197175480">Continuar a permitir que <ph name="HOST" /> aceda à sua câmara e microfone</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Erro ao importar autoridade de certificação</translation>
 <translation id="5269977353971873915">Falha de Impressão</translation>
 <translation id="5270167208902136840">Mostrar mais <ph name="NUMBER_OF_MORE_APPS" /> aplicações</translation>
-<translation id="5272654297705279635">Definições personalizadas</translation>
 <translation id="5275352920323889391">Cão</translation>
 <translation id="5275973617553375938">Ficheiros recuperados do Google Drive</translation>
 <translation id="527605982717517565">Permitir sempre JavaScript em <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 07624ac..730a715 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -792,7 +792,7 @@
 <translation id="2199719347983604670">Datele din Sincronizarea Chrome</translation>
 <translation id="2200094388063410062">E-mail</translation>
 <translation id="2200356397587687044">Chrome are nevoie de permisiune pentru a continua</translation>
-<translation id="2200603218210188859">Preferințe dispozitiv USB</translation>
+<translation id="2200603218210188859">Preferințe pentru dispozitivele USB</translation>
 <translation id="220138918934036434">Ascunde butonul</translation>
 <translation id="2202898655984161076">A apărut o problemă la listarea imprimantelor. Este posibil ca unele dintre imprimante să nu fi fost înregistrate la <ph name="CLOUD_PRINT_NAME" />.</translation>
 <translation id="2203682048752833055">Motorul de căutare folosit în <ph name="BEGIN_LINK" />bara de adrese<ph name="END_LINK" /></translation>
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Se copiază...</translation>
 <translation id="3473479545200714844">Lupă de ecran</translation>
 <translation id="3475447146579922140">Foaie de calcul Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;O linie nu este afișată&gt;}few{&lt;$1 linii nu sunt afișate&gt;}other{&lt;$1 de linii nu sunt afișate&gt;}}</translation>
 <translation id="3475843873335999118">Ne pare rău, amprenta nu este recunoscută. Introdu parola.</translation>
 <translation id="347670947055184738">Hopa! Sistemul nu a putut prelua politica pentru dispozitivul tău.</translation>
 <translation id="347785443197175480">Permiteți în continuare accesul <ph name="HOST" /> la camera și microfonul dvs.</translation>
@@ -2676,7 +2675,7 @@
 <translation id="5185386675596372454">Cea mai nouă versiune a „<ph name="EXTENSION_NAME" />” a fost dezactivată, deoarece necesită permisiuni suplimentare.</translation>
 <translation id="5187295959347858724">Acum sunteți conectat(ă) la <ph name="SHORT_PRODUCT_NAME" />. Marcajele dvs., istoricul și alte setări sunt sincronizate cu Contul dvs. Google.</translation>
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
-<translation id="5187892128515678283">Distribuie un dispozitiv USB cu Linux prin activarea comutării. Distribuirea va dura numai atât timp cât dispozitivul este detașat.</translation>
+<translation id="5187892128515678283">Permite accesul Linux la un dispozitiv USB folosind comutatorul. Permiterea accesului va dura numai până când dispozitivul este detașat.</translation>
 <translation id="51918995459521422"><ph name="ORIGIN" /> vrea să descarce mai multe fișiere</translation>
 <translation id="5204673965307125349">Folosește funcția Powerwash pe dispozitiv și încearcă din nou.</translation>
 <translation id="5204967432542742771">Introdu parola</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Eroare la importarea Autorității de certificare</translation>
 <translation id="5269977353971873915">Printarea a eșuat</translation>
 <translation id="5270167208902136840">Afișează încă <ph name="NUMBER_OF_MORE_APPS" /> aplicații</translation>
-<translation id="5272654297705279635">Setări personalizate</translation>
 <translation id="5275352920323889391">Câine</translation>
 <translation id="5275973617553375938">Fișiere recuperate din Google Drive</translation>
 <translation id="527605982717517565">Permite întotdeauna JavaScript pe <ph name="HOST" /></translation>
@@ -3727,7 +3725,7 @@
 <translation id="6777817260680419853">Redirecționarea a fost blocată</translation>
 <translation id="677965093459947883">Foarte mică</translation>
 <translation id="6780439250949340171">gestionați alte setări</translation>
-<translation id="6781284683813954823">Link Doodle</translation>
+<translation id="6781284683813954823">Linkul doodle-ului</translation>
 <translation id="6782111308708962316">Împiedică site-urile terță parte să salveze și să citească datele asociate cookie-urilor</translation>
 <translation id="6786747875388722282">Extensii</translation>
 <translation id="6787839852456839824">Comenzi rapide de la tastatură</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index bae8e6e..e40d57c 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Копирование…</translation>
 <translation id="3473479545200714844">Лупа</translation>
 <translation id="3475447146579922140">Электронная таблица Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 строка скрыта&gt;}one{&lt;$1 строка скрыта&gt;}few{&lt;$1 строки скрыто&gt;}many{&lt;$1 строк скрыто&gt;}other{&lt;$1 строки скрыто&gt;}}</translation>
 <translation id="3475843873335999118">Не удалось распознать отпечаток пальца. Введите пароль.</translation>
 <translation id="347670947055184738">Не удалось извлечь правила для вашего устройства.</translation>
 <translation id="347785443197175480">Предоставить сайту <ph name="HOST" /> доступ к камере и микрофону</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Ошибка при импорте Центра сертификации</translation>
 <translation id="5269977353971873915">Печать не выполнена</translation>
 <translation id="5270167208902136840">Показать другие приложения (<ph name="NUMBER_OF_MORE_APPS" />)</translation>
-<translation id="5272654297705279635">Пользовательские настройки</translation>
 <translation id="5275352920323889391">Собака</translation>
 <translation id="5275973617553375938">Восстановленные файлы с Google Диска</translation>
 <translation id="527605982717517565">Всегда разрешать JavaScript для сайта <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index fa9f4c6..9619e91 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -1600,7 +1600,6 @@
 <translation id="3470502288861289375">Prebieha kopírovanie...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Tabuľka Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;Nie je zobrazený 1 riadok&gt;}few{&lt;Nie sú zobrazené $1 riadky&gt;}many{&lt;Nie je zobrazeného $1 riadka&gt;}other{&lt;Nie je zobrazených $1 riadkov&gt;}}</translation>
 <translation id="3475843873335999118">Ľutujeme, váš odtlačok sa stále nepodarilo rozpoznať. Zadajte heslo.</translation>
 <translation id="347670947055184738">Ojoj! Systému sa nepodarilo načítať pravidlo pre vaše zariadenie.</translation>
 <translation id="347785443197175480">Aj naďalej povoliť stránkam <ph name="HOST" /> prístup ku kamere a mikrofónu</translation>
@@ -2730,7 +2729,6 @@
 <translation id="5266113311903163739">Chyba importovania certifikačnej autority</translation>
 <translation id="5269977353971873915">Zlyhanie tlače</translation>
 <translation id="5270167208902136840">Zobraziť ďalšie aplikácie (<ph name="NUMBER_OF_MORE_APPS" />)</translation>
-<translation id="5272654297705279635">Vlastné nastavenia</translation>
 <translation id="5275352920323889391">Pes</translation>
 <translation id="5275973617553375938">Obnovené súbory z Disku Google</translation>
 <translation id="527605982717517565">Vždy povoliť jazyk JavaScript na stránkach <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 3eacf2c6..fc015b2 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Izhod iz celozaslonskega načina</translation>
 <translation id="2157875535253991059">Ta stran je zdaj prikazana na celotnem zaslonu.</translation>
 <translation id="216169395504480358">Dodaj Wi-Fi ...</translation>
+<translation id="2162155940152307086">Sinhronizacija se bo začela, ko zaprete nastavitve sinhronizacije</translation>
 <translation id="2163470535490402084">Če se želite prijaviti v napravo <ph name="DEVICE_TYPE" />, vzpostavite povezavo z internetom.</translation>
 <translation id="2166369534954157698">Hitra rjava lisica preskoči lenega psa</translation>
 <translation id="2169062631698640254">Kljub temu se želim prijaviti</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724">Vtičnik <ph name="PEPPER_PLUGIN_NAME" /> v domeni <ph name="PEPPER_PLUGIN_DOMAIN" /> želi dostopati do vašega računalnika</translation>
 <translation id="2178614541317717477">Overitelj potrdil ni več varen</translation>
 <translation id="218070003709087997">Vnesite število izvodov, ki jih želite natisniti (od 1 do 999).</translation>
+<translation id="2182253583899676504">Besedilo, ki ga vnesete v besedilnih poljih, bo poslano Googlu.</translation>
 <translation id="2184515124301515068">Naj Chrome izbere, kdaj lahko spletna mesta predvajajo zvok (priporočeno)</translation>
 <translation id="2187895286714876935">Napaka pri uvozu strežniškega potrdila</translation>
 <translation id="2187906491731510095">Razširitve posodobljene</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Iz:</translation>
 <translation id="2193365732679659387">Nastavitve zaupanja</translation>
 <translation id="2195729137168608510">E-poštna zaščita</translation>
+<translation id="2198757192731523470">Google lahko vašo zgodovino uporabi za prilagajanje Iskanja Google, oglasov in drugih Googlovih storitev.</translation>
 <translation id="2199298570273670671">Napaka</translation>
+<translation id="2199719347983604670">Podatki iz Sinhronizacije za Chrome</translation>
 <translation id="2200094388063410062">E-pošta</translation>
 <translation id="2200356397587687044">Chrome potrebuje dovoljenje za nadaljevanje</translation>
 <translation id="2200603218210188859">Nastavitve naprave USB</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Odpri povezavo z ...</translation>
 <translation id="2889925978073739256">Še naprej blokiraj vtičnike</translation>
 <translation id="2893168226686371498">Privzeti brskalnik</translation>
+<translation id="2895734772884435517">Te nastavitve lahko kadar koli prilagodite.</translation>
 <translation id="289644616180464099">Kartica SIM je zaklenjena</translation>
 <translation id="289695669188700754">ID ključa: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Ali ste prepričani, da želite odpreti naslednje število zavihkov: <ph name="TAB_COUNT" /></translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Kopiranje ...</translation>
 <translation id="3473479545200714844">Lupa</translation>
 <translation id="3475447146579922140">Googlova preglednica</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 vrstica ni prikazana&gt;}one{&lt;$1 vrstica ni prikazana&gt;}two{&lt;$1 vrstici nista prikazani&gt;}few{&lt;$1 vrstice niso prikazane&gt;}other{&lt;$1 vrstic ni prikazanih&gt;}}</translation>
 <translation id="3475843873335999118">Prstni odtis še vedno ni prepoznan. Vnesite geslo.</translation>
 <translation id="347670947055184738">Ojoj. Sistemu ni uspelo prenesti pravilnika za napravo.</translation>
 <translation id="347785443197175480">Še naprej omogočaj gostitelju <ph name="HOST" /> dostop do kamere in mikrofona</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Zdravo, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684">Še <ph name="PERCENTAGE" /> % – <ph name="TIME" /></translation>
 <translation id="3637682276779847508">Kartica SIM bo trajno onemogočena, če ne boste vnesli pravilne kode za odklepanje kode PIN.</translation>
+<translation id="363863692969456324">Odpravljanje napak pri črkovanju z izboljšanim preverjanjem črkovanja</translation>
 <translation id="3640214691812501263">Želite dodati »<ph name="EXTENSION_NAME" />« za uporabnika <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Širina</translation>
 <translation id="3645372836428131288">Rahlo premaknite prst, da bo zajet drug del prstnega odtisa.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Datoteka je v napačni obliki zapisa. Preverite datoteko PPD in poskusite znova.</translation>
 <translation id="431076611119798497">&amp;Podrobnosti</translation>
 <translation id="4312866146174492540">Blokira (privzeto)</translation>
+<translation id="4314815835985389558">Upravljanje sinhronizacije</translation>
 <translation id="4316850752623536204">Spletno mesto razvijalca</translation>
 <translation id="4320177379694898372">Ni internetne povezave</translation>
 <translation id="4320948194796820126">Dodajte zaznamek e-pošti</translation>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Diagnosticiraj</translation>
 <translation id="4451757071857432900">Blokirano na spletnih mestih, ki prikazujejo vsiljive ali zavajajoče oglase (priporočljivo)</translation>
 <translation id="4453946976636652378">Uporabite <ph name="SEARCH_ENGINE_NAME" /> za iskanje ali vnesite URL</translation>
+<translation id="4461835665417498653">Anonimno pošilja nekatere informacije o sistemu in vsebino strani Googlu.</translation>
 <translation id="4462159676511157176">Imenski strežniki po meri</translation>
 <translation id="4467101674048705704">Razširi <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Blokirano na spletnih mestih, ki prikazujejo vsiljive ali zavajajoče oglase</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Vnesite geslo, če želite omogočiti Smart Lock. Naslednjič bo telefon odklenil napravo <ph name="DEVICE_TYPE" />. Funkcijo Smart Lock lahko izklopite v nastavitvah.</translation>
 <translation id="473546211690256853">Ta račun upravlja domena <ph name="DOMAIN" /></translation>
 <translation id="4735803855089279419">Sistemu ni uspelo določiti identifikatorjev naprave za to napravo.</translation>
+<translation id="4736292055110123391">Sinhronizirajte zaznamke, gesla, zgodovino in druge podatke v vseh vaših napravah</translation>
 <translation id="4737715515457435632">Povežite se z omrežjem</translation>
 <translation id="473775607612524610">Posodobi</translation>
 <translation id="4742746985488890273">Pripni na polico</translation>
@@ -4896,6 +4904,7 @@
 <translation id="8598453409908276158">Vtičnik, ki ni v peskovniku, je blokiran</translation>
 <translation id="8601206103050338563">Preverjanje pristnosti odjemalca TLS WWW</translation>
 <translation id="8602851771975208551">Drug program v računalniku je dodal aplikacijo, ki lahko spremeni način delovanja Chroma.</translation>
+<translation id="8604763363205185560">Pomagajte izboljšati Chrome in njegovo varnost</translation>
 <translation id="8605428685123651449">Pomnilnik za SQLite</translation>
 <translation id="8606726445206553943">Uporaba naprav MIDI</translation>
 <translation id="8609465669617005112">Premakni navzgor</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 18e9259a..1cbcf49 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -761,6 +761,7 @@
 <translation id="215753907730220065">Изађи из режима целог екрана</translation>
 <translation id="2157875535253991059">Ова страница је сада у режиму целог екрана.</translation>
 <translation id="216169395504480358">Додај Wi-Fi...</translation>
+<translation id="2162155940152307086">Синхронизација ће почети када изађете из подешавања синхронизације</translation>
 <translation id="2163470535490402084">Повежите се на интернет да бисте се пријавили на <ph name="DEVICE_TYPE" />.</translation>
 <translation id="2166369534954157698">На врх брда врба мрда</translation>
 <translation id="2169062631698640254">Ипак ме пријави</translation>
@@ -771,6 +772,7 @@
 <translation id="2178098616815594724">Додатна компонента <ph name="PEPPER_PLUGIN_NAME" /> на домену <ph name="PEPPER_PLUGIN_DOMAIN" /> жели да приступи рачунару</translation>
 <translation id="2178614541317717477">CA је компромитован</translation>
 <translation id="218070003709087997">Наведите број примерака за штампање (1 до 999).</translation>
+<translation id="2182253583899676504">Текст који уносите у поља за текст се шаље Google-у.</translation>
 <translation id="2184515124301515068">Нека Chrome одабере када сајтови могу да пусте звук (препоручено)</translation>
 <translation id="2187895286714876935">Грешка при увозу серверског сертификата</translation>
 <translation id="2187906491731510095">Додаци су ажурирани</translation>
@@ -782,7 +784,9 @@
 <translation id="2192505247865591433">Од:</translation>
 <translation id="2193365732679659387">Подешавања поузданости</translation>
 <translation id="2195729137168608510">Заштита е-поште</translation>
+<translation id="2198757192731523470">Google може да користи историју за персонализацију Претраге, огласа и других Google услуга.</translation>
 <translation id="2199298570273670671">Грешка</translation>
+<translation id="2199719347983604670">Подаци из Chrome синхронизације</translation>
 <translation id="2200094388063410062">Пошаљи имејлом</translation>
 <translation id="2200356397587687044">Chrome тражи дозволу да настави</translation>
 <translation id="2200603218210188859">Подешавања USB уређаја</translation>
@@ -1238,6 +1242,7 @@
 <translation id="2889064240420137087">Отвори линк користећи...</translation>
 <translation id="2889925978073739256">Настави блокирање додатних компонената које су изван заштићеног окружења</translation>
 <translation id="2893168226686371498">Подразумевани прегледач</translation>
+<translation id="2895734772884435517">Та подешавања можете да прилагодите у сваком тренутку.</translation>
 <translation id="289644616180464099">SIM картица је закључана</translation>
 <translation id="289695669188700754">ИД кључа: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Желите ли стварно да отворите <ph name="TAB_COUNT" /> картицa?</translation>
@@ -1593,7 +1598,6 @@
 <translation id="3470502288861289375">Копирање...</translation>
 <translation id="3473479545200714844">Лупа екрана</translation>
 <translation id="3475447146579922140">Google табела</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 ред није приказан&gt;}one{&lt;$1 ред није приказан&gt;}few{&lt;$1 реда нису приказана&gt;}other{&lt;$1 редова није приказано&gt;}}</translation>
 <translation id="3475843873335999118">Жао нам је, отисак прста и даље није препознат. Унесите лозинку.</translation>
 <translation id="347670947055184738">Упс! Систем није успео да преузме смернице за уређај.</translation>
 <translation id="347785443197175480">И даље дозвољавај сајту <ph name="HOST" /> да приступа камери и микрофону</translation>
@@ -1706,6 +1710,7 @@
 <translation id="3636096452488277381">Здраво <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – преостало је <ph name="TIME" /></translation>
 <translation id="3637682276779847508">SIM картица ће бити трајно онемогућена ако не унесете исправну шифру за откључавање PIN-а.</translation>
+<translation id="363863692969456324">Исправите правописне грешке помоћу побољшане провере правописа</translation>
 <translation id="3640214691812501263">Додај „<ph name="EXTENSION_NAME" />“ за корисника <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Ширина</translation>
 <translation id="3645372836428131288">Мало померите да бисте снимили други део отиска прста.</translation>
@@ -2138,6 +2143,7 @@
 <translation id="4310139701823742692">Формат датотеке је погрешан. Проверите PPD датотеку и пробајте поново.</translation>
 <translation id="431076611119798497">&amp;Детаљи</translation>
 <translation id="4312866146174492540">Блокирај (подразумевано)</translation>
+<translation id="4314815835985389558">Управљајте синхронизацијом</translation>
 <translation id="4316850752623536204">Веб-сајт програмера</translation>
 <translation id="4320177379694898372">Нема интернет везе</translation>
 <translation id="4320948194796820126">Додајте обележивач у имејл</translation>
@@ -2217,6 +2223,7 @@
 <translation id="4450974146388585462">Дијагностикуј</translation>
 <translation id="4451757071857432900">Блокирано на сајтовима који приказују огласе који ометају активности или обмањујуће огласе (препоручено)</translation>
 <translation id="4453946976636652378">Претражите <ph name="SEARCH_ENGINE_NAME" /> или унесите URL</translation>
+<translation id="4461835665417498653">Неке системске информације и садржај страница се шаљу анонимно Google-у.</translation>
 <translation id="4462159676511157176">Прилагођени сервери назива</translation>
 <translation id="4467101674048705704">Прошири директоријум <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Блокирано на сајтовима који приказују огласе који ометају активности или обмањујуће огласе</translation>
@@ -2381,6 +2388,7 @@
 <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="4736292055110123391">Синхронизујте обележиваче, лозинке, историју и други садржај на свим уређајима</translation>
 <translation id="4737715515457435632">Повежите се са мрежом</translation>
 <translation id="473775607612524610">Ажурирај</translation>
 <translation id="4742746985488890273">Закачи на полицу</translation>
@@ -4892,6 +4900,7 @@
 <translation id="8598453409908276158">Додатна компонента ван заштићеног окружења је блокирана</translation>
 <translation id="8601206103050338563">TLS WWW потврда идентитета клијента</translation>
 <translation id="8602851771975208551">Други програм на рачунару је додао апликацију која може да промени начин на који Chrome функционише.</translation>
+<translation id="8604763363205185560">Помозите нам да побољшамо Chrome и његову безбедност</translation>
 <translation id="8605428685123651449">SQLite меморија</translation>
 <translation id="8606726445206553943">користи MIDI уређаје</translation>
 <translation id="8609465669617005112">Премести нагоре</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 65badfc..8e542e6 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1601,7 +1601,6 @@
 <translation id="3470502288861289375">Kopierar ...</translation>
 <translation id="3473479545200714844">Skärmförstorare</translation>
 <translation id="3475447146579922140">Kalkylark i Google Dokument</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 rad visas inte&gt;}other{&lt;$1 rader visas inte&gt;}}</translation>
 <translation id="3475843873335999118">Fingeravtrycket känns fortfarande inte igen. Ange ditt lösenord.</translation>
 <translation id="347670947055184738">Hoppsan! Det gick inte att hämta enhetsprincipen.</translation>
 <translation id="347785443197175480">Fortsätt tillåta att <ph name="HOST" /> använder kameran och mikrofonen</translation>
@@ -2731,7 +2730,6 @@
 <translation id="5266113311903163739">Fel vid import av certifikatutfärdare</translation>
 <translation id="5269977353971873915">Det gick inte att skriva ut dokumentet</translation>
 <translation id="5270167208902136840">Visa <ph name="NUMBER_OF_MORE_APPS" /> fler appar</translation>
-<translation id="5272654297705279635">Anpassade inställningar</translation>
 <translation id="5275352920323889391">Hund</translation>
 <translation id="5275973617553375938">Återställda filer från Google Drive</translation>
 <translation id="527605982717517565">Tillåt alltid JavaScript på <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index b8e0d015..9d7bb375 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1595,7 +1595,6 @@
 <translation id="3470502288861289375">Inanakili...</translation>
 <translation id="3473479545200714844">Kikuza skrini</translation>
 <translation id="3475447146579922140">Lahajedwali ya Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;Haijaonyesha mstari 1&gt;}other{&lt;Haijaonyesha mistari $1&gt;}}</translation>
 <translation id="3475843873335999118">Samahani, alama yako ya kidole bado haijatambuliwa. Tafadhali weka nenosiri lako.</translation>
 <translation id="347670947055184738">Lo!  Mfumo umeshindwa kuleta sera ya kifaa chako.</translation>
 <translation id="347785443197175480">Endelea kuruhusu <ph name="HOST" /> kufikia kamera na maikrofoni yako</translation>
@@ -2723,7 +2722,6 @@
 <translation id="5266113311903163739">Hitilafu ya Kuleta ya Mamlaka ya Utojai Vyeti</translation>
 <translation id="5269977353971873915">Uchapishaji Haukufanikiwa</translation>
 <translation id="5270167208902136840">Onyesha programu zingine <ph name="NUMBER_OF_MORE_APPS" /></translation>
-<translation id="5272654297705279635">Mipangilio maalum</translation>
 <translation id="5275352920323889391">Mbwa</translation>
 <translation id="5275973617553375938">Faili zilizorejeshwa kutoka Hifadhi ya Google</translation>
 <translation id="527605982717517565">Ruhusu <ph name="HOST" /> iendeshe JavaScript kila wakati</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 485e4ac675..3900b8b 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">நகலெடுக்கிறது...</translation>
 <translation id="3473479545200714844">திரை உருப்பெருக்கி</translation>
 <translation id="3475447146579922140">Google விரிதாள்</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 வரி காட்டப்படவில்லை&gt;}other{&lt;$1 வரிகள் காட்டப்படவில்லை&gt;}}</translation>
 <translation id="3475843873335999118">உங்கள் கைரேகையை இன்னும் அடையாளங்காண முடியவில்லை. கடவுச்சொல்லை உள்ளிடவும்.</translation>
 <translation id="347670947055184738">அச்சச்சோ!  உங்கள் சாதனத்திற்கான கொள்கையைப் பெற முடியவில்லை.</translation>
 <translation id="347785443197175480">உங்கள் கேமராவையும் மைக்ரோஃபோனையும் அணுக <ph name="HOST" /> ஐத் தொடர்ந்து அனுமதி</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">சான்றளிக்கும் மைய இறக்குமதி பிழை</translation>
 <translation id="5269977353971873915">அச்சிடுதல் தோல்வி</translation>
 <translation id="5270167208902136840">மேலும் <ph name="NUMBER_OF_MORE_APPS" /> ஆப்ஸைக் காட்டு</translation>
-<translation id="5272654297705279635">தனிப்பயன் அமைப்புகள்</translation>
 <translation id="5275352920323889391">நாய்</translation>
 <translation id="5275973617553375938">Google இயக்கத்திலிருந்து மீட்கப்பட்ட கோப்புகள்</translation>
 <translation id="527605982717517565"><ph name="HOST" /> இல் JavaScript ஐ எப்போதும் அனுமதி</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 36df189..5755446 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -112,7 +112,7 @@
 <translation id="1151917987301063366">సెన్సార్‌లను యాక్సెస్ చేయడానికి ఎల్లవేళలా <ph name="HOST" />ని అనుమతించు</translation>
 <translation id="1153356358378277386">జత చేసిన పరికరాలు</translation>
 <translation id="1156488781945104845">ప్రస్తుత సమయం</translation>
-<translation id="1161575384898972166">దయచేసి క్లయింట్ ప్రమాణపత్రాన్ని ఎగుమతి చెయ్యడానికి <ph name="TOKEN_NAME" />కి సైన్ ఇన్ చెయ్యండి.</translation>
+<translation id="1161575384898972166">దయచేసి క్లయింట్ స‌ర్టిఫికెట్‌ను ఎగుమతి చేయ‌డానికి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation>
 <translation id="1161699061380012396">Chrome OS ఇన్‌పుట్ విధానం</translation>
 <translation id="1163931534039071049">ఫ్రేమ్ మూలాన్ని &amp;వీక్షించండి</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" />కు Smart Lockని ఆఫ్ చేయాలా?</translation>
@@ -194,14 +194,14 @@
 <translation id="126710816202626562">అనువాద భాష:</translation>
 <translation id="126768002343224824">16x</translation>
 <translation id="1272079795634619415">ఆపు</translation>
-<translation id="1272978324304772054">ఈ వినియోగదారు ఖాతా పరికరం నమోదు చేయబడిన డొమైన్‌కు చెందినది కాదు. మీరు వేరొక డొమైన్‌కు నమోదు చేయాలనుకుంటే మీరు ముందుగా పరికరాన్ని పునరుద్ధరించాలి.</translation>
+<translation id="1272978324304772054">ఈ వినియోగదారు ఖాతా, పరికరం నమోదు చేయబడిన డొమైన్‌కు చెందినది కాదు. మీరు వేరొక డొమైన్‌కు నమోదు చేయాలనుకుంటే మీరు ముందుగా పరికరాన్ని పునరుద్ధరించాలి.</translation>
 <translation id="1274977772557788323">Adobe Flash Player నిల్వ సెట్టింగ్‌లు</translation>
 <translation id="1274997165432133392">కుక్కీలు మరియు ఇతర సైట్ డేటా</translation>
 <translation id="127668050356036882">మీ అన్ని విండోలను మూసివేయండి</translation>
 <translation id="1277908057200820621">పరికర జాబితాను వీక్షించండి</translation>
 <translation id="1280820357415527819">మొబైల్ నెట్‌వర్క్‌ల కోసం శోధిస్తోంది</translation>
 <translation id="1285320974508926690">ఈ సైట్‌ను అనువదించవద్దు</translation>
-<translation id="1285484354230578868">మీ Google డిస్క్ ఖాతాలో డేటాని నిల్వ చేయండి</translation>
+<translation id="1285484354230578868">మీ Google డిస్క్ ఖాతాలో డేటాను నిల్వ చేయండి</translation>
 <translation id="1288037062697528143">సూర్యాస్తమయ సమయానికి రాత్రి కాంతి స్వయంచాలకంగా ఆన్ అవుతుంది</translation>
 <translation id="1288300545283011870">ప్రసంగ లక్షణాలు</translation>
 <translation id="1293264513303784526">USB-C పరికరం (ఎడమ పోర్ట్)</translation>
@@ -219,14 +219,14 @@
 <translation id="1307931752636661898">Linux ఫైల్‌లను చూడటం సాధ్యపడలేదు</translation>
 <translation id="1313405956111467313">స్వయంచాలక ప్రాక్సీ కాన్ఫిగరేషన్</translation>
 <translation id="131364520783682672">Caps Lock</translation>
-<translation id="1313705515580255288">మీ బుక్‌మార్క్‌లు, చరిత్ర మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి.</translation>
+<translation id="1313705515580255288">మీ బుక్‌మార్క్‌లు, చరిత్ర, ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సింక్ చేయ‌బ‌డ‌తాయి.</translation>
 <translation id="1314565355471455267">Android VPN</translation>
 <translation id="131461803491198646">హోమ్  నెట్‌వర్క్, రోమింగ్ లేదు</translation>
 <translation id="1316136264406804862">శోధిస్తోంది...</translation>
 <translation id="1316495628809031177">సమకాలీకరణ పాజ్ చేయబడింది</translation>
 <translation id="1322046419516468189">మీ <ph name="SAVED_PASSWORDS_STORE" />లో సేవ్ చేసిన పాస్‌వర్డ్‌లను చూడండి మరియు నిర్వహించండి</translation>
 <translation id="1326317727527857210">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Chromeకి సైన్ ఇన్ చేయండి.</translation>
-<translation id="1327074568633507428">Google మేఘ ముద్రణలో ప్రింటర్</translation>
+<translation id="1327074568633507428">Google క్లౌడ్ ప్రింట్‌లో ప్రింటర్</translation>
 <translation id="1327977588028644528">గేట్‌వే</translation>
 <translation id="1329584516321524826">ఇప్పుడే నవీకరించబడింది</translation>
 <translation id="1330145147221172764">స్క్రీన్‌లో కీబోర్డ్‌ను ప్రారంభించండి</translation>
@@ -254,7 +254,7 @@
 <translation id="1370553626198299309">మీ Chromebook ఇంటర్నెట్‌కు కనెక్ట్ చేయబడి ఉందని మరియు మీ ఫోన్‌లో బ్లూటూత్ ఆన్ చేయబడి ఉందని నిర్ధారించుకోండి</translation>
 <translation id="1371301976177520732">మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌‌లు, చరిత్ర మరియు మరిన్నింటిని మీ అన్ని పరికరాల్లోనూ పొందగలరు</translation>
 <translation id="1372681413396468867">{NUM_ITEMS,plural, =1{1 అంశం తీసివేయబడాలి}other{# అంశాలు తీసివేయబడాలి}}</translation>
-<translation id="1372841398847029212">మీ ఖాతాకు సమకాలీకరించండి</translation>
+<translation id="1372841398847029212">మీ ఖాతాకు సింక్ చేయండి</translation>
 <translation id="1374844444528092021">"<ph name="NETWORK_NAME" />" నెట్‌వర్క్‌కు అవసరమైన ప్రమాణపత్రం ఇన్‌స్టాల్ చేయబడలేదు లేదా చెల్లదు. దయచేసి క్రొత్త ప్రమాణపత్రాన్ని పొందండి మరియు మళ్లీ కనెక్ట్ చేయడాన్ని ప్రయత్నించండి.</translation>
 <translation id="1375321115329958930">సేవ్ చెయ్యబడిన పాస్‌వర్డ్‌లు</translation>
 <translation id="137651782282853227">సేవ్ చేసిన చిరునామాలు ఇక్కడ కనిపిస్తాయి</translation>
@@ -292,7 +292,7 @@
 <translation id="1420920093772172268">జత చేయడాన్ని అనుమతించడానికి <ph name="TURN_ON_BLUETOOTH_LINK" /></translation>
 <translation id="1422159345171879700">అసురక్షిత స్క్రిప్ట్‌లను లోడ్ చేయి</translation>
 <translation id="1426410128494586442">అవును</translation>
-<translation id="1426870617281699524">మళ్లీ ప్రయత్నించుని క్లిక్ చేసి, మీ కంప్యూటర్‌లో ప్రాంప్ట్‌ని ఆమోదించండి</translation>
+<translation id="1426870617281699524">మళ్లీ ప్రయత్నించును క్లిక్ చేసి, మీ కంప్యూటర్‌లో ప్రాంప్ట్‌ను ఆమోదించండి</translation>
 <translation id="142758023928848008">స్టిక్కీ కీలను ప్రారంభించు (క్రమానుసారంగా కీబోర్డ్ షార్ట్‌క‌ట్‌ల‌ను టైప్ చేయడం ద్వారా వాటిని అమలు చేయడానికి)</translation>
 <translation id="143027896309062157">మీ కంప్యూటర్‌లో మరియు మీరు సందర్శించే వెబ్‌సైట్‌లలో మీ మొత్తం డేటాను చదవడం మరియు మార్చడం</translation>
 <translation id="1430915738399379752">ముద్రించు</translation>
@@ -373,7 +373,7 @@
 <translation id="1545177026077493356">స్వయంచాలక కియోస్క్ మోడ్</translation>
 <translation id="1545775234664667895">వ్యవస్థాపితమైన థీమ్ "<ph name="THEME_NAME" />"</translation>
 <translation id="1545786162090505744">ప్రశ్న యొక్క ప్రదేశంలో %sతో URL</translation>
-<translation id="1546280085599573572">ఈ పొడిగింపు మీరు హోమ్ బటన్‌ను క్లిక్ చేసినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
+<translation id="1546280085599573572">ఈ ఎక్స్‌టెన్ష‌న్‌ మీరు హోమ్ బటన్‌ను క్లిక్ చేసినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> <ph name="VOLUME_NAME" />ని ప్రాప్యత చేయాలనుకుంటోంది. దీని వలన మీ ఫైల్‌లు మారవచ్చు లేదా తొలగించబడవచ్చు.</translation>
 <translation id="1553538517812678578">అపరిమిత</translation>
 <translation id="1554390798506296774"><ph name="HOST" />లో ఎల్లప్పుడూ శాండ్‌బాక్స్ చేయని ప్లగిన్‌లను అనుమతించు</translation>
@@ -446,7 +446,7 @@
 <translation id="1650371550981945235">ఇన్‌పుట్ ఎంపికలను చూపు</translation>
 <translation id="1651008383952180276">మీరు తప్పనిసరిగా ఒకే రహస్య పదబంధాన్ని రెండుసార్లు నమోదు చేయాలి</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{ప్రింటర్‌ను Google క్లౌడ్ ప్రింట్‌కు జోడించండి, తద్వారా మీరు ఎక్కడినుండైనా ముద్రించవచ్చు}other{Google క్లౌడ్ ప్రింట్‌కు # ప్రింటర్‌లను జోడించండి, అప్పుడు మీరు ఎక్కడి నుండైనా ముద్రించవచ్చు.}}</translation>
-<translation id="1657406563541664238">Googleకు వినియోగ గణాంకాలు, క్రాష్ నివేదికలను ఆటోమేటిక్‌గా పంపడం ద్వారా <ph name="PRODUCT_NAME" />ను మరింత మెరుగుపరచడంలో సహాయపడండి</translation>
+<translation id="1657406563541664238">Googleకు వినియోగ గ‌ణాంకాలు, క్రాష్ నివేదికలను ఆటోమేటిక్‌గా పంపడం ద్వారా <ph name="PRODUCT_NAME" />ను మరింత మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="1658424621194652532">ఈ పేజీ మీ మైక్రోఫోన్‌ను ప్రాప్యత చేస్తోంది.</translation>
 <translation id="1660204651932907780">ధ్వనిని ప్లే చేయడానికి సైట్‌లను అనుమతించండి (సిఫార్సు చేయబడింది)</translation>
 <translation id="1661156625580498328">AES ఎన్‌క్రిప్షన్‌ను అమలు చేయి (సిఫార్సు చేయబడినది).</translation>
@@ -573,7 +573,7 @@
 <translation id="1841705068325380214"><ph name="EXTENSION_NAME" /> నిలిపివేయబడింది</translation>
 <translation id="1842766183094193446">మీరు ఖచ్చితంగా డెమో మోడ్‌ని ప్రారంభించాలనుకుంటున్నారా?</translation>
 <translation id="1844692022597038441">ఈ ఫైల్ ఆఫ్‌లైన్‌లో అందుబాటులో లేదు.</translation>
-<translation id="1846308012215045257"><ph name="PLUGIN_NAME" />ని అమలు చేయడానికి కంట్రోల్ నొక్కి, క్లిక్ చేయండి</translation>
+<translation id="1846308012215045257"><ph name="PLUGIN_NAME" />ను అమలు చేయడానికి కంట్రోల్ నొక్కి, క్లిక్ చేయండి</translation>
 <translation id="1847880352285315359">సేవ్ చేయబడింది</translation>
 <translation id="1848219224579402567">మూత మూసి ఉన్నప్పుడు సైన్ అవుట్ చేయండి</translation>
 <translation id="1849186935225320012">ఈ పేజీ MIDI పరికరాలకు పూర్తి నియంత్రణను కలిగి ఉంది.</translation>
@@ -643,7 +643,7 @@
 <translation id="1954813140452229842">షేర్‌ను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మీ ఆధారాలను సరిచూసుకుని, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="1956050014111002555">ఫైల్ బహుళ ప్రమాణపత్రాలను కలిగి ఉంది, వీటిలో ఏది దిగుమతి చెయ్యబడింది:</translation>
 <translation id="1956390763342388273">ఇది "<ph name="FOLDER_PATH" />" నుండి అన్ని ఫైల్‌లను అప్‌లోడ్ చేస్తుంది. మీరు సైట్‌ను విశ్వసిస్తే మాత్రమే దీన్ని చేయండి.</translation>
-<translation id="1962233722219655970">ఈ పేజీ మీ కంప్యూటర్‌లో పని చేయని స్థానిక క్లయింట్ యాప్‌ని ఉపయోగిస్తుంది.</translation>
+<translation id="1962233722219655970">ఈ పేజీ మీ కంప్యూటర్‌లో పని చేయని స్థానిక క్లయింట్ యాప్‌ను ఉపయోగిస్తుంది.</translation>
 <translation id="1962969542251276847">స్క్రీన్‌ను లాక్ చేయి</translation>
 <translation id="1963227389609234879">అన్నీ తొలగించు</translation>
 <translation id="1965624977906726414">ప్రత్యేక అనుమతులు లేవు.</translation>
@@ -682,7 +682,7 @@
 <translation id="2020183425253392403">నెట్‌వర్క్ చిరునామా సెట్టింగ్‌లను చూపు</translation>
 <translation id="2023167225947895179">PIN సులభంగా ఊహించగలిగేలా ఉండవచ్చు</translation>
 <translation id="202352106777823113">డౌన్‌లోడ్‌కు చాలా సమయం పడుతుంది మరియు నెట్‌వర్క్ ద్వారా నిలిపివేయబడింది.</translation>
-<translation id="2025632980034333559"><ph name="APP_NAME" /> క్రాష్ అయ్యింది. పొడగింపును రీలోడ్ చెయ్యడానికి ఈ బెలూన్‌ని క్లిక్ చెయ్యండి.</translation>
+<translation id="2025632980034333559"><ph name="APP_NAME" /> క్రాష్ అయింది. ఎక్స్‌టెన్ష‌న్‌ను రీలోడ్ చేయ‌డానికి ఈ బెలూన్‌ను క్లిక్ చేయండి.</translation>
 <translation id="2028997212275086731">RAR ఆర్కైవ్</translation>
 <translation id="2034346955588403444">మరో WiFi నెట్‌వర్క్‌ని జోడించండి</translation>
 <translation id="203574396658008164">లాక్ స్క్రీన్ నుండి గ‌మ‌నిక‌ సేకరణను ప్రారంభించండి</translation>
@@ -704,7 +704,7 @@
 <translation id="2070909990982335904">డాట్‌తో ప్రారంభమయ్యే పేర్లు సిస్టమ్ కోసం ప్రత్యేకించబడినవి. దయచేసి మరొక పేరును ఎంచుకోండి.</translation>
 <translation id="2071393345806050157">స్థానిక లాగ్ ఫైల్ లేదు.</translation>
 <translation id="2075474481720804517">బ్యాటరీ <ph name="BATTERY_PERCENTAGE" />% ఉంది</translation>
-<translation id="2075959085554270910">క్లిక్ చేయ‌డానికి నొక్కండి, నొక్కి పట్టుకుని, లాగండిని ప్రారంభించడానికి/నిలిపివేయడానికి మిమ్మల్ని అనుమతిస్తుంది</translation>
+<translation id="2075959085554270910">క్లిక్ చేయ‌డానికి నొక్కండి. నొక్కి పట్టుకుని, లాగండిని ప్రారంభించడానికి/నిలిపివేయడానికి మిమ్మల్ని అనుమతిస్తుంది</translation>
 <translation id="2076269580855484719">ఈ ప్లగ్ఇన్‌ని దాచిపెట్టు</translation>
 <translation id="2076672359661571384">మధ్యస్థం (సిఫార్సు చేయబడింది)</translation>
 <translation id="2077129598763517140">అందుబాటులో ఉన్నప్పుడు హార్డ్‌వేర్ వేగవృద్ధిని ఉపయోగించు</translation>
@@ -765,6 +765,7 @@
 <translation id="215753907730220065">పూర్తి స్క్రీన్‌ను నిష్క్రమించు</translation>
 <translation id="2157875535253991059">ఈ పేజీ ఇప్పుడు పూర్తి స్క్రీన్‌లో ఉంది.</translation>
 <translation id="216169395504480358">Wi-Fiని జోడించండి...</translation>
+<translation id="2162155940152307086">మీరు ఒకసారి సింక్ సెట్టింగ్‌ల పేజీని వదిలివెళ్లినప్పటి నుండి సింక్ ప్రారంభమవుతుంది</translation>
 <translation id="2163470535490402084">దయచేసి మీ <ph name="DEVICE_TYPE" />కు సైన్ ఇన్ చేయడానికి ఇంటర్నెట్‌కు కనెక్ట్ అవ్వండి.</translation>
 <translation id="2166369534954157698">దేశ భాషలందు తెలుగు లెస్స</translation>
 <translation id="2169062631698640254">ఏదేమైనా సైన్ ఇన్ చేయి</translation>
@@ -775,18 +776,21 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" />లోని <ph name="PEPPER_PLUGIN_NAME" /> మీ కంప్యూటర్‌ని యాక్సెస్ చేయాలనుకుంటోంది</translation>
 <translation id="2178614541317717477">CA రాజీ</translation>
 <translation id="218070003709087997">ఎన్ని కాపీలను ముద్రించాలో (1 నుండి 999) సంఖ్యతో సూచించండి.</translation>
+<translation id="2182253583899676504">మీరు వచన ఫీల్డ్‌లలో టైప్ చేసే వచనం Googleకు పంపబడుతుంది.</translation>
 <translation id="2184515124301515068">సైట్‌లు ధ్వనిని ఎప్పుడు ప్లే చేయాలనేది Chrome ఎంచుకునేలా సెట్ చేయండి (సిఫార్సు చేయబడింది)</translation>
 <translation id="2187895286714876935">సర్వర్  ప్రమాణపత్రం  దిగుమతి లోపం</translation>
 <translation id="2187906491731510095">పొడిగింపులు నవీకరించబడ్డాయి</translation>
 <translation id="2188881192257509750"><ph name="APPLICATION" />ని తెరువు</translation>
 <translation id="2190069059097339078">WiFi క్రెడెన్షియల్స్ గెట్టర్</translation>
-<translation id="219008588003277019">ప్రాంతీయ క్లయింట్ మాడ్యూల్: <ph name="NEXE_NAME" /></translation>
+<translation id="219008588003277019">స్థానిక క్లయింట్ మాడ్యూల్: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(ఖాళీ)</translation>
 <translation id="2191223688506386601">ఒక చివరి అంశం</translation>
 <translation id="2192505247865591433">నుండి:</translation>
 <translation id="2193365732679659387">విశ్వసనీయత సెట్టింగ్‌లు</translation>
 <translation id="2195729137168608510">ఇమెయిల్ రక్షణ</translation>
+<translation id="2198757192731523470">శోధన, ప్రకటనలు మరియు ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి Google మీ చరిత్రను ఉపయోగించవచ్చు</translation>
 <translation id="2199298570273670671">ఎర్రర్</translation>
+<translation id="2199719347983604670">Chrome సింక్ నుండి డేటా</translation>
 <translation id="2200094388063410062">ఇమెయిల్</translation>
 <translation id="2200356397587687044">కొనసాగడానికి Chromeకి అనుమతి అవసరం</translation>
 <translation id="2200603218210188859">USB పరికర ప్రాధాన్యతలు</translation>
@@ -813,7 +817,7 @@
 <translation id="222931766245975952">ఫైల్ కుదించబడింది</translation>
 <translation id="2230051135190148440">CHAP</translation>
 <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" ఫోల్డర్‌ను సృష్టించడం సాధ్యపడలేదు. <ph name="ERROR_MESSAGE" /></translation>
-<translation id="223106756035922488">నేటి డూడుల్‌ని వీక్షించడం కోసం క్లిక్ చేయండి</translation>
+<translation id="223106756035922488">నేటి డూడుల్‌ను వీక్షించడం కోసం క్లిక్ చేయండి</translation>
 <translation id="2231238007119540260">మీరు సర్వర్ ప్రమాణపత్రాన్ని తొలగిస్తే, సర్వర్ కోసం మీరు సాధారణ భద్రతా తనిఖీలను పునరుద్ధరించండి మరియు చెల్లుబాటు అయ్యే ప్రమాణపత్రాన్ని ఉపయోగించడానికి ఇది అవసరం.</translation>
 <translation id="2232379019872353004">కొంత సిస్టమ్ సమాచారం మరియు పేజీ కంటెంట్‌ను Googleకి పంపుతుంది</translation>
 <translation id="2232876851878324699">ఫైల్ దిగుమతి చెయ్యని ఒక ప్రమాణపత్రాన్ని కలిగి ఉంది:</translation>
@@ -995,7 +999,7 @@
 <translation id="2513403576141822879">గోప్యత, భద్రత మరియు డేటా సేకరణకు సంబంధించిన మరిన్ని సెట్టింగ్‌ల కోసం, <ph name="BEGIN_LINK" />సమకాలీకరణ మరియు Google సేవలను<ph name="END_LINK" /> చూడండి</translation>
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2517472476991765520">స్కాన్ చేయి</translation>
-<translation id="2518024842978892609">మీ క్లయింట్ ప్రమాణపత్రాలను ఉపయోగించడానికి అనుమతి</translation>
+<translation id="2518024842978892609">మీ క్లయింట్ స‌ర్టిఫికెట్‌లను ఉపయోగించడానికి అనుమతి</translation>
 <translation id="2520644704042891903">అందుబాటులో ఉన్న సాకెట్ కోసం వేచి ఉంది...</translation>
 <translation id="252219247728877310">అంశం నవీకరించబడలేదు</translation>
 <translation id="2522791476825452208">చాలా దగ్గరగా ఉండాలి</translation>
@@ -1038,8 +1042,7 @@
 <translation id="2585724835339714757">ఈ ట్యాబ్‌ మీ స్క్రీన్‌ను షేర్ చేస్తోంది.</translation>
 <translation id="2586657967955657006">క్లిప్‌బోర్డ్</translation>
 <translation id="2586672484245266891">దయచేసి చిన్న URLని నమోదు చేయండి</translation>
-<translation id="2587922270115112871">పర్యవేక్షించబడే వినియోగదారుని సృష్టించడం వలన Google ఖాతా సృష్టించబడదు మరియు వాటి సెట్టింగ్‌లు
-    మరియు డేటా Chrome సమకాలీకరణతో ఇతర పరికరాలకు అనుసరించబడవు. పర్యవేక్షించబడే వినియోగదారు ఈ పరికరానికి మాత్రమే వర్తింపజేయబడతారు.</translation>
+<translation id="2587922270115112871">పర్యవేక్షించబడే వినియోగదారుని సృష్టించడం వ‌ల్ల Google ఖాతా సృష్టించబడదు. వారి సెట్టింగ్‌లు, డేటా- Chrome సింక్‌తో ఇతర పరికరాలకు అనుసరించబడదు. పర్యవేక్షించబడే వినియోగదారు ఈ పరికరానికి మాత్రమే వర్తింపజేయబడతారు.</translation>
 <translation id="258932246702879617"><ph name="BEGIN_BOLD" />విధి పట్టీకి పిన్ చేయి<ph name="END_BOLD" /> ఎంపికను ఎంచుకోండి</translation>
 <translation id="2594999711683503743">Googleలో వెతకండి లేదా URLని టైప్ చేయండి</translation>
 <translation id="2600115369439982409">ఫైల్‌లు మరియు ప్రోగ్రామ్‌లు:</translation>
@@ -1098,7 +1101,7 @@
 <translation id="2670429602441959756">ఇప్పటికీ VRలో మద్దతు లేని ఫీచర్‌లను ఈ పేజీ కలిగి ఉంది. నిష్క్రమిస్తోంది...</translation>
 <translation id="2671451824761031126">మీ బుక్‌మార్క్‌లు మరియు సెట్టింగ్‌లు సిద్ధంగా ఉన్నాయి</translation>
 <translation id="2672142220933875349">చెల్లని crx ఫైల్, అన్‌ప్యాక్ చేయడం విఫలమైంది.</translation>
-<translation id="2672394958563893062">లోపం సంభవించింది. మొదటి నుండి పునఃప్రారంభించడానికి క్లిక్ చేయండి.</translation>
+<translation id="2672394958563893062">ఎర్ర‌ర్ ఏర్ప‌డింది. మొదటి నుండి పునఃప్రారంభించడానికి క్లిక్ చేయండి.</translation>
 <translation id="2673135533890720193">మీ బ్రౌజింగ్ చరిత్రను చదవడానికి అనుమతి</translation>
 <translation id="2673589024369449924">ఈ వినియోగదారు కోసం డెస్క్‌టాప్ సత్వరమార్గాన్ని సృష్టించు</translation>
 <translation id="2676946222714718093">ఇందులో ప్లే అవుతోంది</translation>
@@ -1106,7 +1109,7 @@
 <translation id="2678063897982469759">మ‌ళ్లీ-ప్రారంభించు</translation>
 <translation id="268053382412112343">&amp;చరిత్ర</translation>
 <translation id="2683638487103917598">ఫోల్డర్ క్రమబద్ధీకరించబడింది</translation>
-<translation id="2684004000387153598">కొనసాగించడానికి, సరే క్లిక్ చేసి, ఆపై మీ ఇమెయిల్ చిరునామా కోసం కొత్త ప్రొఫైల్‌ని రూపొందించడానికి వ్యక్తిని జోడించు క్లిక్ చేయండి.</translation>
+<translation id="2684004000387153598">కొనసాగించడానికి, సరే క్లిక్ చేసి, ఆపై మీ ఇమెయిల్ చిరునామా కోసం కొత్త ప్రొఫైల్‌ను రూపొందించడానికి వ్యక్తిని జోడించు క్లిక్ చేయండి.</translation>
 <translation id="2688196195245426394">పరికరం సర్వర్‌తో నమోదు అవుతున్నప్పుడు లోపం: <ph name="CLIENT_ERROR" />.</translation>
 <translation id="2690024944919328218">భాష ఎంపికలను చూపు</translation>
 <translation id="2691385045260836588">మోడల్</translation>
@@ -1138,7 +1141,7 @@
 <translation id="2731700343119398978">దయచేసి వేచి ఉండండి...</translation>
 <translation id="2731710757838467317">మీ పర్యవేక్షించబడే వినియోగదారుని సృష్టిస్తోంది. దీనికి కొంత సమయం పట్టవచ్చు.</translation>
 <translation id="2734760316755174687"><ph name="SITE_GROUP_NAME" />లోని సైట్‌లు కూడా రీసెట్ చేయబడతాయి.</translation>
-<translation id="2735438478659026460">మౌస్ కర్సర్ ఆపినప్పుడు స్వయంచాలకంగా క్లిక్ అవుతుంది</translation>
+<translation id="2735438478659026460">మౌస్ కర్సర్ ఆపినప్పుడు ఆటోమేటిక్‌గా క్లిక్ అవుతుంది</translation>
 <translation id="2735712963799620190">షెడ్యూల్</translation>
 <translation id="2737363922397526254">కుదించు...</translation>
 <translation id="2738771556149464852">తరువాత కాదు</translation>
@@ -1220,7 +1223,7 @@
 <translation id="2859806420264540918">ఈ సైట్ అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపుతుంది.</translation>
 <translation id="2860150991415616761">చాలా సుదీర్ఘం (4s)</translation>
 <translation id="2861301611394761800">సిస్టమ్ అప్‌డేట్ పూర్తయ్యింది. దయచేసి సిస్టమ్‌ని పునరుద్ధరించండి.</translation>
-<translation id="2861941300086904918">దేశీయ క్లయింట్ భద్రతా సంచాలకులు</translation>
+<translation id="2861941300086904918">స్థానిక‌ క్లయింట్ భద్రతా మేనేజ‌ర్‌</translation>
 <translation id="2864601841139725659">మీ ప్రొఫైల్ చిత్రాన్ని సెట్ చేయండి</translation>
 <translation id="2867768963760577682">పిన్ చేసిన ట్యాబ్ వలె తెరువు</translation>
 <translation id="2868746137289129307">ఈ పొడిగింపు చాలా పాతది మరియు వ్యాపార విధానం కారణంగా నిలిపివేయబడింది. కొత్త సంస్కరణ అందుబాటులో ఉన్నప్పుడు ఇది స్వయంచాలకంగా ప్రారంభించబడవచ్చు.</translation>
@@ -1243,6 +1246,7 @@
 <translation id="2889064240420137087">దీనితో లింక్ తెరువు...</translation>
 <translation id="2889925978073739256">శాండ్‌బాక్స్ చేయని ప్లగిన్‌లను బ్లాక్ చేయడం కొనసాగించు</translation>
 <translation id="2893168226686371498">డిఫాల్ట్ బ్రౌజర్</translation>
+<translation id="2895734772884435517">మీరు ఈ సెట్టింగ్‌లను ఎప్పుడైనా అనుకూలీకరించవచ్చు.</translation>
 <translation id="289644616180464099">SIM కార్డ్ లాక్ అయింది</translation>
 <translation id="289695669188700754">కీ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">మీరు <ph name="TAB_COUNT" /> టాబ్‌లను తెరవాలనుకుంటున్నారా?</translation>
@@ -1283,7 +1287,7 @@
 <translation id="2958721676848865875">ప్యాక్ పొడిగింపు హెచ్చరిక</translation>
 <translation id="296026337010986570">పూర్తయింది! హానికరమైన సాఫ్ట్‌వేర్ తీసివేయబడింది. ఎక్స్‌టెన్షన్‌లను తిరిగి ఆన్ చేయడానికి, &lt;a href="chrome://extensions"&gt;ఎక్స్‌టెన్షన్‌లు&lt;/a&gt; సందర్శించండి.</translation>
 <translation id="2961090598421146107"><ph name="CERTIFICATE_NAME" /> (పొడిగింపు అందించినది)</translation>
-<translation id="2961695502793809356">ముందుకు వెళ్ళడానికి క్లిక్ చెయ్యండి, చరిత్రను చూడటానికి నొక్కి ఉంచండి</translation>
+<translation id="2961695502793809356">ముందుకు వెళ్ళడానికి క్లిక్ చెయ్యండి. చరిత్రను చూడటానికి నొక్కి ఉంచండి</translation>
 <translation id="2963151496262057773">కింది ప్లగిన్ ప్రతిస్పందించడం లేదు: <ph name="PLUGIN_NAME" />మీరు దీన్ని ఆపివేయాలనుకుంటున్నారా?</translation>
 <translation id="2966937470348689686">Android ప్రాధాన్యతలను నిర్వహించండి</translation>
 <translation id="2972557485845626008">ఫిర్మ్‌వేర్</translation>
@@ -1536,7 +1540,7 @@
 <translation id="3382073616108123819">అయ్యో!  ఈ పరికరం కోసం పరికర ఐడెంటిఫైయర్‌లను నిర్ణయించడంలో సిస్టమ్ విఫలమైంది.</translation>
 <translation id="3382200254148930874">పర్యవేక్షణను ఆపివేస్తోంది...</translation>
 <translation id="338583716107319301">విభాగిని</translation>
-<translation id="3389312115541230716">విధి పట్టీలో <ph name="SMALL_PRODUCT_LOGO" /> చిహ్నాన్ని కుడి క్లిక్ చేయండి</translation>
+<translation id="3389312115541230716">టాస్క్‌బార్‌లో <ph name="SMALL_PRODUCT_LOGO" /> చిహ్నాన్ని కుడి క్లిక్ చేయండి</translation>
 <translation id="3396800784455899911">"నేను అంగీకరిస్తున్నాను" బటన్‌ని క్లిక్ చేయడం ద్వారా, ఈ Google సేవల కోసం ఎగువ పేర్కొన్న వాటిని ప్రాసెస్ చేయడానికి మీరు అంగీకరిస్తున్నారు.</translation>
 <translation id="3399432415385675819">నోటిఫికేషన్‌లు నిలిపివేయబడతాయి</translation>
 <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
@@ -1582,7 +1586,7 @@
 <translation id="3454157711543303649">సక్రియం చేయడం పూర్తయింది</translation>
 <translation id="345693547134384690">క్రొత్త టాబ్‌లో &amp;చిత్రాన్ని తెరువు</translation>
 <translation id="3459509316159669723">ముద్రణ</translation>
-<translation id="3459697287128633276">మీ ఖాతాలో Google Play స్టోర్ యాక్సెస్‌ను ప్రారంభించాలంటే, దయచేసి మీ గుర్తింపు ప్రదాతతో ప్రామాణీకరించండి.</translation>
+<translation id="3459697287128633276">మీ ఖాతాలో Google Play స్టోర్ యాక్సెస్‌ను ఆరంభించాలంటే, దయచేసి మీ గుర్తింపు ప్రదాతతో ప్రామాణీకరించండి.</translation>
 <translation id="3459774175445953971">చివరగా సవరించబడింది:</translation>
 <translation id="3461266716147554923"><ph name="URL" /> క్లిప్‌బోర్డ్‌కు కాపీ చేసిన వచనం మరియు చిత్రాలను చూడాలనుకుంటోంది.</translation>
 <translation id="3462311546193741693">చాలా సైట్‌ల నుండి మిమ్మల్ని సైన్ అవుట్ చేస్తుంది. మీరు మీ Google ఖాతాలో అలాగే సైన్ ఇన్ చేసి ఉంటారు, కనుక మీ సమకాలీకరించిన డేటాను తీసివేయవచ్చు.</translation>
@@ -1598,7 +1602,6 @@
 <translation id="3470502288861289375">కాపీ చేస్తోంది...</translation>
 <translation id="3473479545200714844">స్క్రీన్ మాగ్నిఫైయర్</translation>
 <translation id="3475447146579922140">Google స్ప్రెడ్‌షీట్</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 పంక్తి చూపబడలేదు&gt;}other{&lt;$1 పంక్తులు చూపబడలేదు&gt;}}</translation>
 <translation id="3475843873335999118">క్షమించండి, మీ వేలిముద్ర ఇప్పటికీ గుర్తించబడలేదు. దయచేసి మీ పాస్‌వర్డ్‌ను నమోదు చేయండి.</translation>
 <translation id="347670947055184738">అయ్యో! మీ పరికరం కోసం విధానాన్ని పొందడంలో సిస్టమ్ విఫలమైంది.</translation>
 <translation id="347785443197175480">మీ కెమెరా మరియు మైక్రోఫోన్‌ను ప్రాప్యత చేయడానికి <ph name="HOST" />ను అనుమతించడాన్ని కొనసాగించండి</translation>
@@ -1711,6 +1714,7 @@
 <translation id="3636096452488277381">హాయ్, <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> మిగిలి ఉంది</translation>
 <translation id="3637682276779847508">మీరు సరైన PIN అన్‌లాక్ కీని నమోదు చేయకపోతే, మీ SIM కార్డ్ శాశ్వతంగా నిలిపివేయబడుతుంది.</translation>
+<translation id="363863692969456324">మెరుగుపరచబడిన స్పెల్‌చెక్‌తో స్పెల్లింగ్ ఎర్రర్‌లను సరిదిద్దిండి</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> కోసం "<ph name="EXTENSION_NAME" />"ని జోడించాలా?</translation>
 <translation id="3644896802912593514">వెడల్పు</translation>
 <translation id="3645372836428131288">వేలిముద్రలోని వేరే భాగాన్ని క్యాప్చర్ చేయడం కోసం కొద్దిగా కదిలించండి.</translation>
@@ -2063,7 +2067,7 @@
 <translation id="4159681666905192102">ఇది <ph name="CUSTODIAN_EMAIL" /> మరియు <ph name="SECOND_CUSTODIAN_EMAIL" /> నిర్వహించే చిన్నపిల్లల ఖాతా.</translation>
 <translation id="4162259808650104522">https://maps.google.com</translation>
 <translation id="4163560723127662357">తెలియని కీబోర్డ్</translation>
-<translation id="4168015872538332605"><ph name="PRIMARY_EMAIL" />కి సంబంధించిన కొన్ని సెట్టింగ్‌లు మీతో భాగస్వామ్యం చేయబడుతున్నాయి. ఈ సెట్టింగ్‌లు బహుళ సైన్-ఇన్‌ని ఉపయోగించేటప్పుడు మాత్రమే మీ ఖాతాను ప్రభావితం చేస్తాయి.</translation>
+<translation id="4168015872538332605"><ph name="PRIMARY_EMAIL" />కు సంబంధించిన కొన్ని సెట్టింగ్‌లు మీతో షేర్‌ చేయబడుతున్నాయి. ఈ సెట్టింగ్‌లు బహుళ సైన్-ఇన్‌ను ఉపయోగించేటప్పుడు మాత్రమే మీ ఖాతాను ప్రభావితం చేస్తాయి.</translation>
 <translation id="4170314459383239649">నిష్క్రమించేటప్పుడు క్లియర్ చేయి</translation>
 <translation id="4172051516777682613">ఎల్లప్పుడూ చూపు</translation>
 <translation id="4175737294868205930">నిరంతర నిల్వ</translation>
@@ -2073,7 +2077,7 @@
 <translation id="4181841719683918333">భాషలు</translation>
 <translation id="4184885522552335684">డిస్‌ప్లేను తరలించడానికి లాగండి</translation>
 <translation id="4193154014135846272">Google పత్రం</translation>
-<translation id="4194570336751258953">క్లిక్ చేయ‌డానికి నొక్కండిని ప్రారంభించండి</translation>
+<translation id="4194570336751258953">క్లిక్ చేయ‌డానికి టాప్ చేయి ప్రారంభించు</translation>
 <translation id="4195249722193633765">Linux (బీటా)తో అప్లికేషన్‌ని ఇన్‌స్టాల్ చేయండి</translation>
 <translation id="4195643157523330669">క్రొత్త టాబ్‌లో తెరువు</translation>
 <translation id="4195814663415092787">మీరు నిష్క్రమించిన చోటు నుండే కొనసాగించండి</translation>
@@ -2086,7 +2090,7 @@
 <translation id="4206944295053515692">సూచనల కోసం Googleను అడగండి</translation>
 <translation id="4208390505124702064"><ph name="SITE_NAME" />లో శోధించు</translation>
 <translation id="4209092469652827314">పెద్దది</translation>
-<translation id="4209464433672152343">ముద్రించడం కోసం పత్రాలను సిద్ధం చేయడానికి అవి <ph name="BEGIN_LINK_HELP" />Googleకు పంపబడతాయి<ph name="END_LINK_HELP" />. <ph name="BEGIN_LINK_DASHBOARD" />Google మేఘ ముద్రణ డాష్‌బోర్డ్<ph name="END_LINK_DASHBOARD" />లో మీ ప్రింటర్‌లు మరియు ప్రింటర్ చరిత్రను చూడండి, సవరించండి మరియు నిర్వహించండి.</translation>
+<translation id="4209464433672152343">ముద్రించడం కోసం పత్రాలను సిద్ధం చేయడానికి అవి <ph name="BEGIN_LINK_HELP" />Googleకు పంపబడతాయి<ph name="END_LINK_HELP" />. <ph name="BEGIN_LINK_DASHBOARD" />Google క్లౌడ్ ప్రింట్‌ డాష్‌బోర్డ్<ph name="END_LINK_DASHBOARD" />లో మీ ప్రింటర్‌లు, ప్రింటర్ చరిత్రను చూడండి. సవరించండి. నిర్వహించండి.</translation>
 <translation id="421017592316736757">ఈ ఫైల్‌ను యాక్సెస్ చేయడానికి మీరు తప్పనిసరిగా ఆన్‌లైన్‌లో ఉండాలి.</translation>
 <translation id="421182450098841253"> &amp;బుక్‌మార్క్‌ల బార్‌ను చూపు</translation>
 <translation id="42126664696688958">ఎగుమతి చేయి</translation>
@@ -2143,6 +2147,7 @@
 <translation id="4310139701823742692">ఫైల్ తప్పు ఫార్మాట్‌లో ఉంది. PPD ఫైల్‌ని తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="431076611119798497">&amp;వివరాలు</translation>
 <translation id="4312866146174492540">బ్లాక్ చేయి (డిఫాల్ట్)</translation>
+<translation id="4314815835985389558">సింక్‌ను నిర్వహించండి</translation>
 <translation id="4316850752623536204">డెవలపర్ వెబ్‌సైట్</translation>
 <translation id="4320177379694898372">ఇంటర్నెట్ కనెక్షన్ లేదు</translation>
 <translation id="4320948194796820126">మీ ఇమెయిల్‌కి బుక్‌మార్క్‌ని జోడించండి</translation>
@@ -2156,12 +2161,12 @@
 <translation id="4342311272543222243">అయ్యో, TPM ఎర్రర్.</translation>
 <translation id="4345587454538109430">కన్ఫిగర్ చెయ్యి...</translation>
 <translation id="4348766275249686434">లోపాలను సేకరించు</translation>
-<translation id="4350019051035968019">ఈ పరికరాన్ని మీ ఖాతా చెందిన డొమైన్‌కు నమోదు చేయడం సాధ్యపడదు ఎందుకంటే పరికరం వేరే డొమైన్ ద్వారా నిర్వహించబడేలా గుర్తించబడింది.</translation>
+<translation id="4350019051035968019">ఈ పరికరాన్ని మీ ఖాతా చెందిన డొమైన్‌కు నమోదు చేయడం సాధ్యపడదు. ఎందుకంటే పరికరం వేరే డొమైన్ ద్వారా నిర్వహించబడేలా గుర్తించబడింది.</translation>
 <translation id="435527878592612277">మీ ఫోటోని ఎంచుకోండి</translation>
 <translation id="4356334633973342967">లేదంటే, మీ స్వంత డ్రైవర్‌ను పేర్కొనండి:</translation>
 <translation id="4358353773267946514"><ph name="LANGUAGE_1" />, <ph name="LANGUAGE_2" /></translation>
 <translation id="4359408040881008151">ఆధారిత పొడిగింపు(లు) కారణంగా ఇన్‌స్టాల్ చేయబడింది.</translation>
-<translation id="4361142739114356624">ఈ క్లయింట్ ప్రమాణపత్రం యొక్క ప్రైవేట్ కీ లేదు లేదా చెల్లదు</translation>
+<translation id="4361142739114356624">ఈ క్లయింట్ స‌ర్టిఫికెట్‌ ప్రైవేట్ కీ లేదు లేదా చెల్లదు</translation>
 <translation id="4363771538994847871">Cast గమ్యస్థానాలు ఏవీ కనుగొనబడలేదు. సహాయం కావాలా?</translation>
 <translation id="4364567974334641491"><ph name="APP_NAME" /> ఒక విండోను భాగస్వామ్యం చేస్తోంది.</translation>
 <translation id="4364830672918311045">నోటిఫికేషన్‌లను ప్రదర్శించడం</translation>
@@ -2222,6 +2227,7 @@
 <translation id="4450974146388585462">విశ్లేషించు</translation>
 <translation id="4451757071857432900">అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపించే సైట్‌లలో బ్లాక్ చేయబడింది (సిఫార్సు చేయబడింది)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" />లో వెతకండి లేదా URLని టైప్ చేయండి</translation>
+<translation id="4461835665417498653">కొంత సిస్టమ్ సమాచారం మరియు పేజీ కంటెంట్‌ను Googleకి వివరాలను వెల్లడించకుండా పంపుతుంది</translation>
 <translation id="4462159676511157176">అనుకూల పేరు సర్వర్‌లు</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" />ని విస్తరింపజేయండి</translation>
 <translation id="4469477701382819144">అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపించే సైట్‌లలో బ్లాక్ చేయబడింది</translation>
@@ -2269,7 +2275,7 @@
 <translation id="4543778593405494224">ప్రమాణపత్ర నిర్వాహికి</translation>
 <translation id="4544174279960331769">డిఫాల్ట్ నీలం రంగు అవతార్</translation>
 <translation id="4545028762441890696">దీనిని తిరిగి ప్రారంభించ‌డానికి, కొత్త అనుమతులను ఆమోదించండి:</translation>
-<translation id="454547174531670764">మరొక ఖాతాకు సమకాలీకరించండి</translation>
+<translation id="454547174531670764">మరొక ఖాతాకు సింక్ చేయండి</translation>
 <translation id="4545759655004063573">సరిపోని అనుమతుల కారణంగా సేవ్ చేయలేరు. దయచేసి మరొక స్థానానికి సేవ్ చేయండి.</translation>
 <translation id="4546308221697447294">Google Chromeతో వేగంగా బ్రౌజ్ చేయండి</translation>
 <translation id="4547659257713117923">ఇతర పరికరాల నుండి ట్యాబ్‌లు లేవు</translation>
@@ -2278,7 +2284,7 @@
 <translation id="4552678318981539154">మరింత నిల్వని కొనుగోలు చేయండి</translation>
 <translation id="4554591392113183336">బాహ్య పొడిగింపు ప్రస్తుతం ఉన్న సంస్కరణతో పోలిస్తే అదేలాంటి సంస్కరణ లేదా తక్కువ సంస్కరణ.</translation>
 <translation id="4555769855065597957">నీడ</translation>
-<translation id="4556110439722119938">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు</translation>
+<translation id="4556110439722119938">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సింక్ చేయ‌బ‌డ‌తాయి. కాబట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు</translation>
 <translation id="4558426062282641716">స్వీయ-ప్రారంభ అనుమతి అభ్యర్థించబడింది</translation>
 <translation id="4558491878126948419"><ph name="DEVICE_TYPE" /> చిట్కాలు మరియు Google ఉత్పత్తులకు చెందిన అప్‌డేట్‌లను పొందండి మరియు అభిప్రాయాన్ని షేర్ చేయండి. ఏ సమయంలో అయినా సభ్యత్వాన్ని తీసివేయండి.</translation>
 <translation id="4559617833001311418">ఈ సైట్ మీ మోషన్ లేదా లైట్ సెన్సార్‌లను యాక్సెస్ చేస్తోంది.</translation>
@@ -2342,7 +2348,7 @@
 <translation id="4663373278480897665">కెమెరా అనుమతించబడింది</translation>
 <translation id="4664482161435122549">PKCS #12 ఎగుమతి లోపం</translation>
 <translation id="4665014895760275686">తయారీదారు</translation>
-<translation id="4668721319092543482"><ph name="PLUGIN_NAME" />ని ప్రారంభించడానికి క్లిక్ చేయండి</translation>
+<translation id="4668721319092543482"><ph name="PLUGIN_NAME" />ను ప్రారంభించడానికి క్లిక్ చేయండి</translation>
 <translation id="4669606053856530811">'<ph name="SOURCE_NAME" />' యొక్క సభ్యులతో ఈ అంశాలను భాగస్వామ్యం చేస్తే మినహా వారు ప్రాప్యతను కోల్పోతారు.</translation>
 <translation id="4672657274720418656">పేజీని డిస్టిల్ చేయి</translation>
 <translation id="4673442866648850031">స్టైలస్‌ను బయటకు తీసినప్పుడు స్టైలస్ సాధనాలను తెరుస్తుంది</translation>
@@ -2386,6 +2392,7 @@
 <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="4736292055110123391">మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌‌లు, చరిత్ర మరియు మరిన్నింటిని మీ అన్ని పరికరాల్లోనూ సింక్ చేయండి</translation>
 <translation id="4737715515457435632">దయచేసి నెట్‌వర్క్‌కు కనెక్ట్ చేయండి</translation>
 <translation id="473775607612524610">అప్‌డేట్</translation>
 <translation id="4742746985488890273">అరకు పిన్ చేయండి</translation>
@@ -2468,7 +2475,7 @@
 <translation id="4871308555310586478">Chrome వెబ్ స్టోర్ నుండి కాదు.</translation>
 <translation id="4871370605780490696">బుక్‌మార్క్‌ను జోడించండి</translation>
 <translation id="4873312501243535625">మీడియా ఫైల్ చెక్కర్</translation>
-<translation id="4876273079589074638">క్రాష్ ఎందుకు జరిగిందన్నది తెలుసుకోవడానికి మరియు పరిష్కరించడానికి మా ఇంజినీర్‌లకు సహాయం చేయండి. మీకు సాధ్యమైతే విషయాన్ని క్రమ పద్ధతిలో దశల వారీగా పేర్కొనండి. వివరణ ఏదీ మరీ చిన్నగా ఉండకూడదు!</translation>
+<translation id="4876273079589074638">క్రాష్ ఎందుకు జరిగిందన్నది తెలుసుకోవడానికి, పరిష్కరించడానికి మా ఇంజినీర్‌లకు సహాయం చేయండి. మీకు సాధ్యమైతే విషయాన్ని క్రమ పద్ధతిలో దశల వారీగా పేర్కొనండి. వివరణ ఏదీ మరీ చిన్నగా ఉండకూడదు!</translation>
 <translation id="4876895919560854374">స్క్రీన్‌ను లాక్ చేయండి మరియు అన్‌లాక్ చేయండి</translation>
 <translation id="4877276003880815204">మూలకాలను పర్యవేక్షించు</translation>
 <translation id="4879491255372875719">ఆటోమేటిక్ (డిఫాల్ట్)</translation>
@@ -2605,7 +2612,7 @@
 <translation id="5086874064903147617">డిఫాల్ట్ హోమ్ పేజీని పునరుద్ధరించాలా?</translation>
 <translation id="5087249366037322692">మూడవ పక్షం ద్వారా జోడించబడింది</translation>
 <translation id="5087580092889165836">కార్డ్‌ను జోడించు</translation>
-<translation id="5087926280563932024">మీ ఖాతాని ధృవీకరించడం సాధ్యం కాలేదు. దయచేసి మళ్లీ ప్రయత్నించండి లేదా మీ Chromebookని పునఃప్రారంభించండి.</translation>
+<translation id="5087926280563932024">మీ ఖాతాను ధృవీకరించడం సాధ్యం కాలేదు. దయచేసి మళ్లీ ప్రయత్నించండి. లేదా మీ Chromebookను పునఃప్రారంభించండి.</translation>
 <translation id="5088172560898466307">సర్వర్ హోస్ట్ పేరు</translation>
 <translation id="5088534251099454936">RSA గుప్తీకరణతో PKCS #1 SHA-512</translation>
 <translation id="509429900233858213">ఒక లోపం సంభవించింది.</translation>
@@ -2616,7 +2623,7 @@
 <translation id="5109044022078737958">మియా</translation>
 <translation id="5111692334209731439">&amp;బుక్‌మార్క్ సంచాలకులు</translation>
 <translation id="5112577000029535889">&amp;డెవలపర్ ఉపకరణాలు</translation>
-<translation id="5113739826273394829">మీరు ఈ చిహ్నాన్ని క్లిక్ చేస్తే, ఈ <ph name="DEVICE_TYPE" />ని మాన్యువల్‌గా లాక్ చేస్తారు. తదుపరిసారి, మీరు ప్రవేశించడానికి మీ పాస్‌వర్డ్‌ను టైప్ చేయాలి.</translation>
+<translation id="5113739826273394829">మీరు ఈ చిహ్నాన్ని క్లిక్ చేస్తే, ఈ <ph name="DEVICE_TYPE" />ను మాన్యువల్‌గా లాక్ చేస్తారు. తదుపరిసారి, మీరు ప్రవేశించడానికి మీ పాస్‌వర్డ్‌ను టైప్ చేయాలి.</translation>
 <translation id="5115309401544567011">దయచేసి మీ <ph name="DEVICE_TYPE" />ని ఛార్జింగ్ పెట్టండి</translation>
 <translation id="5115338116365931134">SSO</translation>
 <translation id="5116628073786783676">ఆడియోని ఇలా సే&amp;వ్ చెయ్యి...</translation>
@@ -2635,7 +2642,7 @@
 <translation id="5138227688689900538">తక్కువ చూపు</translation>
 <translation id="5139955368427980650">&amp;తెరువు</translation>
 <translation id="5142961317498132443">ప్రమాణీకరణ</translation>
-<translation id="5143374789336132547">"<ph name="EXTENSION_NAME" />" పొడిగింపు మీరు హోమ్ బటన్‌ను క్లిక్ చేసినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
+<translation id="5143374789336132547">"<ph name="EXTENSION_NAME" />" ఎక్స్‌టెన్ష‌న్‌, మీరు హోమ్ బటన్‌ను క్లిక్ చేసినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
 <translation id="5143712164865402236">పూర్తి స్క్రీన్‌ను ఎంటర్ చెయ్యండి</translation>
 <translation id="5145331109270917438">సవరించబడిన తేదీ</translation>
 <translation id="514575469079499857">స్థానాన్ని (డిఫాల్ట్) గుర్తించడానికి మీ IP చిరునామాని ఉపయోగించండి</translation>
@@ -2699,7 +2706,7 @@
 <translation id="5242724311594467048">"<ph name="EXTENSION_NAME" />"ను ప్రారంభించాలా?</translation>
 <translation id="5243522832766285132">దయచేసి కొన్ని నిమిషాల్లో మళ్లీ ప్రయత్నించండి</translation>
 <translation id="5244474230056479698"><ph name="EMAIL" />కి సమకాలీకరిస్తోంది</translation>
-<translation id="5246282308050205996"><ph name="APP_NAME" /> క్రాష్ అయ్యింది. అనువర్తనం పునఃప్రారంభించడానికి ఈ బెలూన్‌ని క్లిక్ చెయ్యండి.</translation>
+<translation id="5246282308050205996"><ph name="APP_NAME" /> క్రాష్ అయ్యింది. యాప్‌ పునఃప్రారంభించడానికి ఈ బెలూన్‌ను క్లిక్ చేయండి.</translation>
 <translation id="5247051749037287028">ప్రదర్శన పేరు (ఐచ్ఛికం)</translation>
 <translation id="5249624017678798539">డౌన్‌లోడ్ పూర్తి కావడానికి ముందే బ్రౌజర్ క్రాష్ అయింది.</translation>
 <translation id="5250372599208556903">స్థానిక కంటెంట్‌ని అందించడానికి <ph name="SEARCH_ENGINE_NAME" /> మీ స్థానాన్ని ఉపయోగిస్తుంది. మీరు దీన్ని <ph name="SETTINGS_LINK" />లో మార్చవచ్చు.</translation>
@@ -2795,7 +2802,7 @@
 <translation id="5370819323174483825">&amp;మళ్లీ లోడ్ చేయి</translation>
 <translation id="5372529912055771682">సరఫరా చేయబడిన నమోదు మోడ్‌కు ఆపరేటింగ్ సిస్టమ్ యొక్క ఈ వెర్ష‌న్‌ ద్వారా మద్దతు లేదు. దయచేసి మీరు తాజా వెర్ష‌న్‌ను అమలు చేస్తున్నారని నిర్ధారించుకోండి. మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="5374359983950678924">చిత్రాన్ని మార్చు</translation>
-<translation id="5376169624176189338">వెనుకకు వెళ్ళడానికి క్లిక్ చెయ్యండి, చరిత్రను చూడటానికి నొక్కి ఉంచండి</translation>
+<translation id="5376169624176189338">వెనుకకు వెళ్ల‌డానికి క్లిక్ చేయండి. చరిత్రను చూడటానికి నొక్కి ఉంచండి</translation>
 <translation id="5376931455988532197">ఫైల్ చాలా పెద్దదిగా ఉంది</translation>
 <translation id="537813040452600081">మీరు ఈ విండోలో వీక్షించే పేజీలు బ్రౌజర్ చరిత్రలో కనిపించవు. మీరు సైన్ అవుట్ చేసిన తర్వాత కంప్యూటర్‌లో అవి కుక్కీల వంటి ఇతర జాడలను వదిలిపెట్టవు. మీరు డౌన్‌లోడ్ చేసే ఫైల్‌లు, సృష్టించే బుక్‌మార్క్‌లు భద్రపరచబడవు.</translation>
 <translation id="5379140238605961210">మైక్రోఫోన్ ప్రాప్యతను బ్లాక్ చేయడాన్ని కొనసాగించు</translation>
@@ -2885,7 +2892,7 @@
 <translation id="5511379779384092781">అతి చిన్నది</translation>
 <translation id="5511823366942919280">మీరు ఖచ్చితంగా ఈ పరికరాన్ని "షార్క్"గా సెటప్ చేయాలనుకుంటున్నారా?</translation>
 <translation id="5512653252560939721">వినియోగదారు సర్టిఫికెట్ ఖచ్చితంగా హార్డ్‌వేర్-బ్యాకెడ్ అయ్యుండాలి.</translation>
-<translation id="5516183516694518900">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లను మీ అన్ని పరికరాల్లో పొందడానికి మీ Google ఖాతాతో Chromeకి సైన్ ఇన్ చేయండి.</translation>
+<translation id="5516183516694518900">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లను మీ అన్ని పరికరాల్లో పొందడానికి మీ Google ఖాతాతో Chromeకు సైన్ ఇన్ చేయండి.</translation>
 <translation id="551752069230578406">మీ ఖాతాకు ప్రింటర్‌ను జోడిస్తోంది - దీనికి కొంత సమయం పట్టవచ్చు...</translation>
 <translation id="5517879053351788087">మీ వేలితో సెన్సార్‌ను తాకండి. ఇది మీ Chromebook అంచున ఉంది.</translation>
 <translation id="5518219166343146486">క్లిప్‌బోర్డ్‌కు కాపీ చేసిన వచనం మరియు చిత్రాలను సైట్ చూడాలన్నప్పుడు అనుమతి అడగాలి</translation>
@@ -2919,7 +2926,7 @@
 <translation id="5553089923092577885">సర్టిఫికెట్ విధాన మాపింగ్‌లు</translation>
 <translation id="5554489410841842733">ప్రస్తుత పేజీలో పొడిగింపు ఉండే వరకు ఈ చిహ్నం కనిపిస్తుంది.</translation>
 <translation id="5554720593229208774">ఇమెయిల్ అధికారి స‌ర్టిఫికేష‌న్ అధికారిక సంస్థ‌</translation>
-<translation id="5556206011531515970">మీ డిఫాల్ట్ బ్రౌజర్‌ను ఎంచుకోవడానికి తదుపరి క్లిక్ చేయండి.</translation>
+<translation id="5556206011531515970">మీ డిఫాల్ట్ బ్రౌజర్‌ను ఎంచుకోవడానికి త‌ర్వాత‌ క్లిక్ చేయండి.</translation>
 <translation id="5556459405103347317">రీలోడ్</translation>
 <translation id="5557991081552967863">నిద్రావస్థలో ఉన్నప్పుడు Wi-Fiని ఆన్‌లో ఉంచు</translation>
 <translation id="5558129378926964177">దగ్గరికి జూమ్ చేయి</translation>
@@ -2977,7 +2984,7 @@
 <translation id="5624120631404540903">పాస్‌వర్డ్‌లను నిర్వహించండి</translation>
 <translation id="5626134646977739690">పేరు:</translation>
 <translation id="5626283214046138476">మీ పర్యవేక్షించబడిన వినియోగదారు ఖాతా గడువు త్వరలో ముగియబోతోంది.</translation>
-<translation id="5627086634964711283">ఇది హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
+<translation id="5627086634964711283">ఇది, హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
 <translation id="5627676517703583263">Chromeతో స్మార్ట్‌గా బ్రౌజ్ చేయండి</translation>
 <translation id="562935524653278697">మీ నిర్వాహకుడు మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌ల సమకాలీకరణను నిలిపివేసారు.</translation>
 <translation id="5632566673632479864">మీ ఖాతా <ph name="EMAIL" /> ఇకపై ప్రాథమిక ఖాతాగా అనుమతించబడదు. ఈ ఖాతా <ph name="DOMAIN" /> ద్వారా నిర్వహించబడుతోంది కాబట్టి, మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు ఈ పరికరం నుండి తొలగించబడతాయి.</translation>
@@ -3201,7 +3208,7 @@
 <translation id="595959584676692139">ఈ ఎక్స్‌టెన్షన్‌ను ఉపయోగించడానికి పేజీని మళ్లీ లోడ్ చేయండి</translation>
 <translation id="5962207703002684882">మీ అసిస్టెంట్ మీ వాయిస్ మోడల్‌ని సృష్టించడానికి ఈ రికార్డింగ్‌లను ఉపయోగిస్తుంది, ఇది మీ పరికరంలో నిల్వ చేయబడుతుంది. అసిస్టెంట్ సెట్టింగ్‌లలో ఆ మోడల్‌ను తొలగించండి లేదా మళ్లీ శిక్షణనివ్వండి. మీ Google కార్యకలాప నియంత్రణలలో వాయిస్ ఆదేశాలను చూడండి లేదా తొలగించండి.</translation>
 <translation id="5963453369025043595"><ph name="NUM_HANDLES" /> (<ph name="NUM_KILOBYTES_LIVE" /> మిగిలి ఉన్నాయి)</translation>
-<translation id="5965661248935608907">ఇది మీరు హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు లేదా ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
+<translation id="5965661248935608907">ఇది, మీరు హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు లేదా ఓమ్నిబాక్స్‌ నుండి శోధించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
 <translation id="5971037678316050792">బ్లూటూత్ అడాప్టర్ స్థితిని మరియు జత చేసే విధానాన్ని నియంత్రించడానికి అనుమతి</translation>
 <translation id="5972017421290582825">MIDI సెట్టింగ్‌లను నిర్వహించండి...</translation>
 <translation id="5972708806901999743">పైకి తరలించు</translation>
@@ -3502,7 +3509,7 @@
 <translation id="6418511932144861495">కీలకమైన అప్‌డేట్‌ని ఇన్‌స్టాల్ చేయండి</translation>
 <translation id="6419288379019356534">ఈ పరికరం <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ద్వారా నిర్వహించబడుతోంది.
     <ph name="LINE_BREAK" />
-    దయచేసి మీ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ఖాతాకి సైన్ ఇన్ చేయడం కొనసాగించడానికి "తదుపరి" క్లిక్ చేయండి.</translation>
+    దయచేసి మీ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ఖాతాకు సైన్ ఇన్ చేయడం కొనసాగించడానికి "త‌ర్వాత‌" క్లిక్ చేయండి.</translation>
 <translation id="6419546358665792306">ప్యాక్ చేయబడని పొడిగింపును లోడ్ చేయి</translation>
 <translation id="642282551015776456">ఈ పేరును ఫైల్ యొక్క ఫోల్డర్ పేరుగా ఉపయోగించలేము.</translation>
 <translation id="642469772702851743">ఈ (SN: <ph name="SERIAL_NUMBER" />) పరికరం యజమానిచే లాక్ చేయబడింది.</translation>
@@ -3519,7 +3526,7 @@
 <translation id="6447842834002726250">కుక్కీలు</translation>
 <translation id="6449285849137521213">"<ph name="EXTENSION_NAME" />" అనువర్తనం జోడించబడింది.</translation>
 <translation id="6450876761651513209">మీ గోప్యతా-సంబంధిత సెట్టింగ్‌లను మార్చండి</translation>
-<translation id="6451180435462401570">క్లౌడ్ ముద్రణ పరికరాలను నిర్వహించు</translation>
+<translation id="6451180435462401570">క్లౌడ్ ప్రింట్ పరికరాలను నిర్వహించు</translation>
 <translation id="6451689256222386810">మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే లేదా ఈ సెట్టింగ్‌ను మార్చాలనుకుంటే, <ph name="BEGIN_LINK" />సమకాలీకరణను రీసెట్ చేయండి<ph name="END_LINK" />.</translation>
 <translation id="6452181791372256707">తిరస్కరించు</translation>
 <translation id="6455264371803474013">కొన్ని నిర్దిష్ట సైట్‌లలో మాత్రమే</translation>
@@ -3686,7 +3693,7 @@
 <translation id="6721678857435001674">మీ భద్రతా కీ యొక్క తయారీదారు బ్రాండ్ పేరు మరియు మోడల్‌ని చూడండి</translation>
 <translation id="6721972322305477112">&amp;ఫైల్</translation>
 <translation id="672213144943476270">అతిథి లాగా బ్రౌజ్ చేయబోయే ముందు దయచేసి మీ ప్రొఫైల్‌ను అన్‌లాక్ చేయండి.</translation>
-<translation id="6723354935081862304">Google డాక్స్‌కు మరియు ఇతర మేఘ గమ్యస్థానాలకు ముద్రించండి. Google మేఘ ముద్రణకు ముద్రించడానికి <ph name="BEGIN_LINK" />సైన్ ఇన్ చేయండి<ph name="END_LINK" />.</translation>
+<translation id="6723354935081862304">Google డాక్స్‌కు, ఇతర క్లౌడ్ గమ్యస్థానాలకు ముద్రించండి. Google క్లౌడ్ ప్రింట్‌కు ముద్రించడానికి <ph name="BEGIN_LINK" />సైన్ ఇన్ చేయండి<ph name="END_LINK" />.</translation>
 <translation id="6723661294526996303">బుక్‌మార్క్‌లను మరియు సెట్టింగులను దిగుమతి చెయ్యి...</translation>
 <translation id="6723839937902243910">పవర్</translation>
 <translation id="6725073593266469338">UI సేవ</translation>
@@ -3736,7 +3743,7 @@
 <translation id="6802031077390104172"><ph name="USAGE" /> (<ph name="OID" />)</translation>
 <translation id="6804671422566312077">అన్ని బుక్‌మార్క్‌లను &amp;క్రొత్త విండోలో తెరువు</translation>
 <translation id="6805038906417219576">సరే</translation>
-<translation id="6805647936811177813">దయచేసి <ph name="HOST_NAME" /> నుండి క్లయింట్ ప్రమాణపత్రాన్ని దిగుమతి చెయ్యడానికి <ph name="TOKEN_NAME" />కి సైన్ ఇన్ చెయ్యండి.</translation>
+<translation id="6805647936811177813">దయచేసి <ph name="HOST_NAME" /> నుండి క్లయింట్ స‌ర్టిఫికెట్‌ను దిగుమతి చేయ‌డానికి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation>
 <translation id="680572642341004180"><ph name="SHORT_PRODUCT_OS_NAME" />లో RLZ ట్రాకింగ్‌ను ప్రారంభించు.</translation>
 <translation id="6806699711453372963">Linux షేరింగ్‌ని నిర్వహించండి</translation>
 <translation id="6810613314571580006">నిల్వ చేసిన ఆధారాలను ఉపయోగించి ఆటోమేటిక్‌గా వెబ్‌సైట్‌లకు సైన్ ఇన్ చేస్తుంది. లక్షణాన్ని నిలిపివేసినప్పుడు, మీరు వెబ్‌సైట్‌కు సైన్ ఇన్ చేసే ప్రతిసారి నిర్ధారణ కోసం మిమ్మల్ని అడుగుతుంది.</translation>
@@ -3893,10 +3900,10 @@
 <translation id="7055152154916055070">మళ్లింపు బ్లాక్ చేయబడింది:</translation>
 <translation id="7056526158851679338">&amp;పరికరాలను పర్యవేక్షించు</translation>
 <translation id="7059858479264779982">స్వీయ-ప్రారంభానికి సెట్ చేయి</translation>
-<translation id="7059893117020417984">ప్రైవేట్‌గా బ్రౌజ్ చేయాలంటే, అజ్ఞాత విండోని తెరవడం కోసం చుక్కల చిహ్నం మెనూని క్లిక్ చేయండి.</translation>
+<translation id="7059893117020417984">ప్రైవేట్‌గా బ్రౌజ్ చేయ‌డానికి, అజ్ఞాత విండోను తెరవడం కోసం చుక్కల చిహ్నం మెనూను క్లిక్ చేయండి.</translation>
 <translation id="7062222374113411376">డేటాను పంపడం మరియు స్వీకరించడం పూర్తి చేయడానికి ఇటీవల మూసివేసిన సైట్‌లను అనుమతించు (సిఫార్సు చేయబడింది)</translation>
 <translation id="7063129466199351735">సత్వరమార్గాలను ప్రాసెస్ చేస్తోంది...</translation>
-<translation id="7063957500469387217">Google క్లౌడ్ ముద్రణలో ప్రింటర్‌లను సెటప్ చేయండి లేదా నిర్వహించండి.</translation>
+<translation id="7063957500469387217">Google క్లౌడ్ ప్రింట్‌లో ప్రింటర్‌లను సెటప్ చేయండి లేదా నిర్వహించండి.</translation>
 <translation id="7065223852455347715">ఈ పరికరం వ్యాపార నమోదుని నిరోధించే మోడ్‌లో లాక్ చేయబడింది.  మీరు పరికరాన్ని నమోదు చేయాలనుకుంటే ముందుగా పరికర పునరుద్ధరణను పరిశీలించాలి.</translation>
 <translation id="7065534935986314333">సిస్టమ్ గురించి</translation>
 <translation id="706626672220389329">షేర్‌ను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. పేర్కొన్న షేర్ ఇప్పటికే మౌంట్ చేయబడింది.</translation>
@@ -3939,7 +3946,7 @@
 <translation id="711840821796638741">నిర్వహించబడే బుక్‌మార్క్‌లను చూపు</translation>
 <translation id="711902386174337313">మీ సైన్-ఇన్ చేసిన పరికరాల యొక్క జాబితాను చదవడం</translation>
 <translation id="7120865473764644444">సమకాలీకరణ సర్వర్‌కి కనెక్ట్ చేయడం సాధ్యపడలేదు. మళ్లీ ప్రయత్నిస్తోంది...</translation>
-<translation id="7121362699166175603">చిరునామా బార్‌లో చరిత్ర మరియు స్వీయ పూరణలను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
+<translation id="7121362699166175603">చిరునామా బార్‌లో చరిత్ర, స్వీయపూరింపులను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="7123360114020465152">ఇకపై మద్దతు లేదు</translation>
 <translation id="7124929488592184705"><ph name="DOCUMENT_NAME" />ని ముద్రిస్తున్నప్పుడు లోపం ఏర్పడింది</translation>
 <translation id="7126604456862387217">'&lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt;' - &lt;em&gt;డిస్క్‌లో శోధించు&lt;/em&gt;</translation>
@@ -4012,12 +4019,12 @@
 <translation id="7238585580608191973">SHA-256 వేలిముద్ర</translation>
 <translation id="7240120331469437312">సర్టిఫికెట్ విషయ ప్రత్యామ్నాయ పేరు</translation>
 <translation id="7240339475467890413">కొత్త హాట్‌స్పాట్‌కి కనెక్ట్ చేయాలా?</translation>
-<translation id="7241389281993241388">దయచేసి క్లయింట్ ప్రమాణపత్రాన్ని దిగుమతి చెయ్యడానికి <ph name="TOKEN_NAME" />కి సైన్ ఇన్ చెయ్యండి.</translation>
+<translation id="7241389281993241388">దయచేసి క్లయింట్ స‌ర్టిఫికెట్‌ను దిగుమతి చేయ‌డానికి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation>
 <translation id="7243632151880336635">తీసివేసి, సైన్ అవుట్ చేయి</translation>
 <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ఉత్తమం)</translation>
 <translation id="7246947237293279874">FTP ప్రాక్సీ</translation>
 <translation id="7248671827512403053">అప్లికేషన్‌</translation>
-<translation id="725109152065019550">క్షమించండి, మీ నిర్వాహకుడు మీ ఖాతాలో బాహ్య నిల్వను నిలిపివేసారు.</translation>
+<translation id="725109152065019550">క్షమించండి, మీ నిర్వాహకుడు మీ ఖాతాలో బాహ్య నిల్వను నిలిపివేశారు.</translation>
 <translation id="7251346854160851420">డిఫాల్ట్ వాల్‌పేపర్</translation>
 <translation id="7253521419891527137">&amp;మరింత తెలుసుకోండి</translation>
 <translation id="7254554697254365959">ఈ పేజీని అనువదించడం సాధ్యపడలేదు.</translation>
@@ -4092,7 +4099,7 @@
 <translation id="7359588939039777303">ప్రకటనలు బ్లాక్ చేయబడ్డాయి.</translation>
 <translation id="7360183604634508679">బుక్‌మార్క్‌ల మెను</translation>
 <translation id="7360233684753165754"><ph name="PRINTER_NAME" />కు <ph name="PAGE_NUMBER" /> పేజీలు</translation>
-<translation id="7361297102842600584"><ph name="PLUGIN_NAME" />ని అమలు చేయడానికి కుడి క్లిక్ చేయండి</translation>
+<translation id="7361297102842600584"><ph name="PLUGIN_NAME" />ను అమలు చేయడానికి కుడి క్లిక్ చేయండి</translation>
 <translation id="7361537270840348817">మీ Chromebook నుండి మీ ఫోన్‌ని డిస్‌కనెక్ట్ చేయండి</translation>
 <translation id="7362862325990022643">https://youtube.com</translation>
 <translation id="7363117941401515667"><ph name="HOURS" /> గంటల క్రితం అప్‌డేట్ చేయబడింది</translation>
@@ -4271,7 +4278,7 @@
 <translation id="7662283695561029522">కాన్ఫిగర్ చేయడానికి నొక్కండి</translation>
 <translation id="7663719505383602579">స్వీకర్త: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="7664620655576155379">మద్దతు లేని బ్లూటూత్ పరికరం: "<ph name="DEVICE_NAME" />".</translation>
-<translation id="7665369617277396874">ఖాతాను జోడించు</translation>
+<translation id="7665369617277396874">ఖాతాను జోడించండి</translation>
 <translation id="7671130400130574146">సిస్టమ్ శీర్షిక బార్ మరియు హద్దులను ఉపయోగించు</translation>
 <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" />, <ph name="PAGE_TITLE" />లో.</translation>
 <translation id="7676867886086876795">మీరు రాయాలనుకునేది Googleకి చెబితే చాలు వెంటనే వచన రూపంలోకి మారుస్తుంది.</translation>
@@ -4568,7 +4575,7 @@
 <translation id="8064671687106936412">కీలకమైన:</translation>
 <translation id="806812017500012252">శీర్షిక ద్వారా క్రమాన్ని మార్చు</translation>
 <translation id="8068253693380742035">సైన్ ఇన్ చేయడానికి తాకండి</translation>
-<translation id="8069615408251337349">Google మేఘ ముద్రణ</translation>
+<translation id="8069615408251337349">Google క్లౌడ్ ప్రింట్</translation>
 <translation id="8071432093239591881">చిత్రం వలె ముద్రించు</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />పరిచయాలు, సందేశాలు మరియు ఫోటోల వంటి యాప్ సేవ్ చేసిన (డెవలపర్ సెట్టింగ్‌ల ఆధారంగా) ఎలాంటి డేటా అయినా యాప్ డేటాగా పరిగణించబడుతుంది.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />బ్యాకప్ డేటా మీ చిన్నారి డిస్క్ నిల్వ కోటాలో లెక్కించబడదు.<ph name="END_PARAGRAPH2" />
@@ -4745,7 +4752,7 @@
 <translation id="8343956361364550006">ఉత్తమ శ్రేణి వీడియో లేదా యానిమేషన్ కోసం అధిక బ్యాండ్‌విడ్త్‌ను ఉపయోగించండి.
 నెమ్మది కనెక్షన్‌లు గల ఇతర వ్యక్తులు మీ కంటెంట్‌ను చూడలేకపోవచ్చు.</translation>
 <translation id="8351419472474436977">ఈ ఎక్స్‌టెన్షన్‌ మీ ప్రాక్సీ సెట్టింగ్‌లను దాని నియంత్రణలోకి తీసుకుంది, అది మీరు ఆన్‌లైన్‌లో ఏదైనా చేస్తుంటే దాన్ని మార్చడం, అంతరాయం కలిగించడం లేదా రహస్యంగా గమనించడం వంటివి చేయగలదని దీనర్థం. ఈ మార్పు ఎందుకు సంభవించిందో మీకు ఖచ్చితంగా తెలియలేదంటే బహుశా మీరు దాన్ని కోరుకొని ఉండకపోవచ్చు.</translation>
-<translation id="8352772353338965963">బహుళ సైన్ ఇన్ కోసం ఖాతాను జోడించండి. అన్ని సైన్ ఇన్ చేసిన ఖాతాలను పాస్‌వర్డ్ లేకుండానే యాక్సెస్ చేయవచ్చు, కనుక ఈ ఫీచర్‌ని విశ్వసనీయ ఖాతాలతో మాత్రమే ఉపయోగించాలి.</translation>
+<translation id="8352772353338965963">బహుళ సైన్ ఇన్ కోసం ఖాతాను జోడించండి. అన్ని సైన్ ఇన్ చేసిన ఖాతాలను పాస్‌వర్డ్ లేకుండానే యాక్సెస్‌ చేయవచ్చు. కాబ‌ట్టి ఈ ఫీచ‌ర్‌ను విశ్వసనీయ ఖాతాలతో మాత్రమే ఉపయోగించాలి.</translation>
 <translation id="8353683614194668312">ఇది వీటిని చేయగలదు:</translation>
 <translation id="8356197132883132838"><ph name="TITLE" /> - <ph name="COUNT" /></translation>
 <translation id="8358685469073206162">పేజీలను పునరుద్ధరించాలా?</translation>
@@ -4892,6 +4899,7 @@
 <translation id="8598453409908276158">శాండ్‌బాక్స్ చేయని ప్లగిన్ బ్లాక్ చేయబడింది</translation>
 <translation id="8601206103050338563">TLS WWW క్లయింట్ ప్రామాణీకరణ</translation>
 <translation id="8602851771975208551">మీ కంప్యూటర్‌లోని మరో ప్రోగ్రామ్ జోడించిన యాప్ కారణంగా Chrome పని చేసే విధానం మారవచ్చు.</translation>
+<translation id="8604763363205185560">Chrome మరియు దాని భద్రతను మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="8605428685123651449">SQLite మెమరీ</translation>
 <translation id="8606726445206553943">మీ MIDI పరికరాలను ఉపయోగించాలనుకుంటోంది</translation>
 <translation id="8609465669617005112">పైకి తరలించు</translation>
@@ -5001,7 +5009,7 @@
 <translation id="8755376271068075440">&amp;పెద్దగా</translation>
 <translation id="8756969031206844760">పాస్‌వర్డ్‌ను అప్‌డేట్ చేయాలా?</translation>
 <translation id="8757090071857742562">డెస్క్‌టాప్‌ను ప్రసారం చేయడం సాధ్యపడలేదు.  మీ స్క్రీన్‌ను షేర్ చేయడం ప్రారంభించడానికి మీరు ప్రాంప్ట్‌ని నిర్ధారించారో లేదో సరిచూసుకోవడానికి తనిఖీ చేయండి.</translation>
-<translation id="8757803915342932642">Google Cloud పరికరాల్లోని పరికరం</translation>
+<translation id="8757803915342932642">Google క్లౌడ్‌ పరికరాల్లోని పరికరం</translation>
 <translation id="8758418656925882523">డిక్టేషన్‌ను ప్రారంభించండి (టైప్ చేయడానికి మాట్లాడండి)</translation>
 <translation id="8759408218731716181">బహుళ సైన్-ఇన్‌ను సెటప్ చేయలేరు</translation>
 <translation id="8759753423332885148">మరింత తెలుసుకోండి.</translation>
@@ -5094,7 +5102,7 @@
 <translation id="8904976895050290827">Chrome Sync</translation>
 <translation id="8909833622202089127">సైట్ మీ స్థానాన్ని ట్రాక్ చేస్తోంది</translation>
 <translation id="8910146161325739742">మీ స్క్రీన్‌ను భాగస్వామ్యం చేయండి</translation>
-<translation id="8910222113987937043">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌ల్లో మార్పులు మీ Google ఖాతాకి ఇకపై సమకాలీకరించబడవు. అయినప్పటికీ, ఇప్పటికే ఉన్న మీ డేటా Google ఖాతాలో నిల్వ చేయబడుతుంది మరియు <ph name="BEGIN_LINK" />Google డాష్‌బోర్డ్<ph name="END_LINK" />లో నిర్వహించబడుతుంది.</translation>
+<translation id="8910222113987937043">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌ల‌లో మార్పులు మీ Google ఖాతాకు ఇకపై సింక్ చేయ‌బడవు. అయినప్పటికీ, ఇప్పటికే ఉన్న మీ డేటా Google ఖాతాలో నిల్వ చేయబడుతుంది. <ph name="BEGIN_LINK" />Google డాష్‌బోర్డ్<ph name="END_LINK" />లో నిర్వహించబడుతుంది.</translation>
 <translation id="8912362522468806198">Google ఖాతా</translation>
 <translation id="8912793549644936705">విస్తరించు</translation>
 <translation id="8915370057835397490">సూచన లోడ్ అవుతోంది</translation>
@@ -5140,7 +5148,7 @@
 <translation id="8983677657449185470">సురక్షిత బ్రౌజింగ్‌ను మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="8984179138335769204">శీఘ్ర ప్రారంభం</translation>
 <translation id="8986362086234534611">మరిచిపోయారా</translation>
-<translation id="8986494364107987395">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపు</translation>
+<translation id="8986494364107987395">Googleకు ఆటోమేటిక్‌గా వినియోగ‌ గణాంకాలను, క్రాష్ నివేదికలను పంపు</translation>
 <translation id="8987927404178983737">నెల</translation>
 <translation id="8991520179165052608">సైట్ మీ మైక్రోఫోన్‌ని ఉపయోగించవచ్చు</translation>
 <translation id="899403249577094719">Netscape సర్టిఫికెట్ ఆధార URL</translation>
@@ -5167,7 +5175,7 @@
 <translation id="9026731007018893674">డౌన్‌లోడ్</translation>
 <translation id="9026852570893462412">ఈ ప్రాసెస్‌కు కొన్ని నిమిషాలు పట్టవచ్చు. మర్చువల్ మెషీన్ డౌన్‌లోడ్ అవుతోంది.</translation>
 <translation id="9027459031423301635">లింక్‌ను క్రొత్త &amp;టాబ్‌లో తెరువు</translation>
-<translation id="9030515284705930323">మీ సంస్థ మీ ఖాతా కోసం Google Play స్టోర్‌ని ప్రారంభించలేదు. మరింత సమాచారం కోసం మీ నిర్వాహకులను సంప్రదించండి.</translation>
+<translation id="9030515284705930323">మీ సంస్థ మీ ఖాతా కోసం Google Play స్టోర్‌ను ప్రారంభించలేదు. మరింత సమాచారం కోసం మీ నిర్వాహకులను సంప్రదించండి.</translation>
 <translation id="9033857511263905942">&amp;అతికించు</translation>
 <translation id="9034924485347205037">Linux ఫైల్‌లు</translation>
 <translation id="9035012421917565900">ఈ అంశాలను '<ph name="DESTINATION_NAME" />'లోకి తిరిగి తరలించడం సాధ్యపడదు, కనుక మీరు ఈ చర్యను రద్దు చేయలేరు.</translation>
@@ -5184,7 +5192,7 @@
 <translation id="9045430190527754450">మీరు సంప్రదించడానికి ప్రయత్నిస్తున్న పేజీ యొక్క వెబ్ చిరునామాను Googleకి పంపుతుంది</translation>
 <translation id="9046895021617826162">కనెక్ట్ విఫలమైంది</translation>
 <translation id="9050666287014529139">పాస్‌ఫ్రేజ్</translation>
-<translation id="9052208328806230490">మీరు <ph name="EMAIL" /> ఖాతాని ఉపయోగించి <ph name="CLOUD_PRINT_NAME" />తో మీ ముద్రకాలను నమోదు చేసారు</translation>
+<translation id="9052208328806230490">మీరు <ph name="EMAIL" /> ఖాతాను ఉపయోగించి <ph name="CLOUD_PRINT_NAME" />తో మీ ప్రింట‌ర్‌ల‌ను నమోదు చేశారు</translation>
 <translation id="9052404922357793350">బ్లాక్ చేయడాన్ని కొనసాగించు</translation>
 <translation id="9053091947372579468">మీ పరికరంలో Chrome లైసెన్స్ ఉంది, కానీ నిర్వాహకుల కన్సోల్‌తో మీ వినియోగదారు పేరు అనుబంధంగా లేదు. నమోదు చేయడం కొనసాగించడానికి దయచేసి నిర్వాహకుల కన్సోల్ ఖాతాను సృష్టించండి. గమనిక: కొత్త నిర్వాహకుల కన్సోల్ ఖాతాను సృష్టించడానికి మీరు మీ స్వంత డొమైన్‌ని ఉపయోగించాలని ఎంచుకుంటే, మీరు సైన్అప్ తర్వాత డొమైన్ ధృవీకరణను కూడా తప్పనిసరిగా పూర్తి చేయవలసి ఉంటుంది. https://g.co/ChromeEnterpriseAccount</translation>
 <translation id="9053893665344928494">నా ఎంపికను గుర్తుంచుకో</translation>
@@ -5195,7 +5203,7 @@
 <translation id="9062468308252555888">14x</translation>
 <translation id="9063208415146866933">పంక్తి <ph name="ERROR_LINE_START" /> నుండి <ph name="ERROR_LINE_END" /> వరకు ఎర్రర్</translation>
 <translation id="9064142312330104323">Google ప్రొఫైల్ ఫోటో (లోడ్ అవుతోంది)</translation>
-<translation id="9064275926664971810">ఫారమ్‌లను ఒక‌ క్లిక్‌లో నింపడానికి స్వీయపూరింపును ప్రారంభిస్తుంది</translation>
+<translation id="9064275926664971810">ఫారమ్‌లను ఒకే క్లిక్‌లో నింపడానికి స్వీయపూరింపును ప్రారంభిస్తుంది</translation>
 <translation id="9064939804718829769">బదిలీ చేస్తోంది...</translation>
 <translation id="9065203028668620118">సవరించు</translation>
 <translation id="9066773882585798925">వినేందుకు వీలుగా వచనం గట్టిగా చదవబడుతుంది</translation>
@@ -5291,7 +5299,7 @@
 <translation id="93343527085570547">చట్టపరమైన కారణాలతో కంటెంట్ మార్పులను అభ్యర్ధించడానికి <ph name="BEGIN_LINK1" />చట్టపరమైన అంశాల సహాయ పేజీ<ph name="END_LINK1" />కు వెళ్లండి. కొంత ఖాతా మరియు సిస్టమ్ సమాచారం Googleకి పంపబడవచ్చు. సాంకేతిక సమస్యల పరిష్కారానికి మరియు మా సేవలను మెరుగుపరచడానికి మీరు మాకు ఇచ్చిన సమాచారాన్ని మా <ph name="BEGIN_LINK2" />గోప్యతా విధానం<ph name="END_LINK2" /> మరియు <ph name="BEGIN_LINK3" />సేవా నిబంధనలు<ph name="END_LINK3" />కు లోబడి మేము ఉపయోగిస్తాము.</translation>
 <translation id="93393615658292258">పాస్‌వర్డ్ మాత్రమే</translation>
 <translation id="934503638756687833">అవసరమైతే ఇక్కడ జాబితా చేయబడని అంశాలను కూడా తీసివేయవచ్చు. Chrome గోప్యత విధాన పత్రంలో &lt;a href="<ph name="URL" />"&gt;అవాంఛిత సాఫ్ట్‌వేర్ రక్షణ&lt;/a&gt; గురించి మరింత తెలుసుకోండి.</translation>
-<translation id="935490618240037774">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు.</translation>
+<translation id="935490618240037774">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సింక్ చేయ‌బడతాయి. కాబ‌ట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు.</translation>
 <translation id="936801553271523408">సిస్టమ్ విశ్లేషణ డేటా</translation>
 <translation id="93766956588638423">పొడిగింపును సరి చేయి</translation>
 <translation id="938339467127511841">Linux (బీటా) నిల్వ</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index b7c3d31..7fd2c63 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">กำลังคัดลอก...</translation>
 <translation id="3473479545200714844">แว่นขยายหน้าจอ</translation>
 <translation id="3475447146579922140">สเปรดชีตของ Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;ไม่ได้แสดง 1 บรรทัด&gt;}other{&lt;ไม่ได้แสดง $1 บรรทัด&gt;}}</translation>
 <translation id="3475843873335999118">ขออภัย ระบบยังคงไม่รู้จักลายนิ้วมือของคุณ โปรดป้อนรหัสผ่าน</translation>
 <translation id="347670947055184738">อ๊ะ! ระบบไม่สามารถดึงข้อมูลนโยบายจากอุปกรณ์</translation>
 <translation id="347785443197175480">อนุญาตให้ <ph name="HOST" /> เข้าถึงกล้องถ่ายรูปและไมโครโฟนของคุณต่อไป</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">ข้อผิดพลาดเกี่ยวกับการนำเข้าผู้ออกใบรับรอง</translation>
 <translation id="5269977353971873915">การพิมพ์ล้มเหลว</translation>
 <translation id="5270167208902136840">แสดงอีก <ph name="NUMBER_OF_MORE_APPS" /> แอป</translation>
-<translation id="5272654297705279635">การตั้งค่าที่กำหนดเอง</translation>
 <translation id="5275352920323889391">สุนัข</translation>
 <translation id="5275973617553375938">ไฟล์ที่กู้คืนจาก Google ไดรฟ์</translation>
 <translation id="527605982717517565">อนุญาตให้เรียกใช้ JavaScript บน <ph name="HOST" /> เสมอ</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 4f4d4bc..4326da34 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Tam Ekrandan Çık</translation>
 <translation id="2157875535253991059">Bu sayfa artık tam ekran.</translation>
 <translation id="216169395504480358">Kablosuz Ekle...</translation>
+<translation id="2162155940152307086">Senkronizasyon işlemi, senkonizasyon ayarlarından çıktığınızda başlayacaktır</translation>
 <translation id="2163470535490402084"><ph name="DEVICE_TYPE" /> cihazınızda oturum açmak için lütfen İnternet'e bağlanın.</translation>
 <translation id="2166369534954157698">Pijamalı hasta, yağız şoföre çabucak güvendi</translation>
 <translation id="2169062631698640254">Yine de oturum aç</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> alanındaki <ph name="PEPPER_PLUGIN_NAME" /> eklentisi bilgisayarınıza erişmek istiyor</translation>
 <translation id="2178614541317717477">CA Uzlaşması</translation>
 <translation id="218070003709087997">Yazdırılacak kopya sayısını göstermek için rakam kullanın (1 - 999 arası).</translation>
+<translation id="2182253583899676504">Metin alanlarına yazdığınız metinler Google'a gönderilecektir.</translation>
 <translation id="2184515124301515068">Sitelerin ne zaman ses çalacağını Chrome'un seçmesine izin verin (önerilir)</translation>
 <translation id="2187895286714876935">Sunucu Sertifikası İçe Aktarma Hatası</translation>
 <translation id="2187906491731510095">Uzantılar güncellendi</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Nereden:</translation>
 <translation id="2193365732679659387">Güven ayarları</translation>
 <translation id="2195729137168608510">E-posta Koruması</translation>
+<translation id="2198757192731523470">Google; Arama, reklamlar ve diğer Google hizmetlerini kişiselleştirmek için geçmişinizi kullanabilir</translation>
 <translation id="2199298570273670671">Hata</translation>
+<translation id="2199719347983604670">Chrome senkronizasyonundan veriler</translation>
 <translation id="2200094388063410062">E-posta</translation>
 <translation id="2200356397587687044">Chrome'un devam edebilmesi için izin gerekiyor</translation>
 <translation id="2200603218210188859">USB Cihaz tercihleri</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Bağlantıyı şununla aç...</translation>
 <translation id="2889925978073739256">Korumalı alanda olmayan eklentileri engellemeye devam et</translation>
 <translation id="2893168226686371498">Varsayılan tarayıcı</translation>
+<translation id="2895734772884435517">Bu metinleri istediğiniz zaman ayarlardan özelleştirebilirsiniz.</translation>
 <translation id="289644616180464099">SIM Kart kilitli</translation>
 <translation id="289695669188700754">Anahtar Kimliği: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> sekmeyi açmak istediğinizden emin misiniz?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Kopyalanıyor...</translation>
 <translation id="3473479545200714844">Ekran büyüteci</translation>
 <translation id="3475447146579922140">Google e-tablosu</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 satır gösterilmiyor&gt;}other{&lt;$1 satır gösterilmiyor&gt;}}</translation>
 <translation id="3475843873335999118">Maalesef parmak iziniz hâlâ tanınamadı. Lütfen şifrenizi girin.</translation>
 <translation id="347670947055184738">Hay aksi! Sistem, cihazınıza ait politikayı getiremedi.</translation>
 <translation id="347785443197175480"><ph name="HOST" /> sitesinin kamerama ve mikrofonuma erişmesine izin vermeye devam et</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Merhaba <ph name="USER_GIVEN_NAME" />.</translation>
 <translation id="3636766455281737684">%<ph name="PERCENTAGE" /> - <ph name="TIME" /> kaldı</translation>
 <translation id="3637682276779847508">Doğru PIN Kilit Açma Anahtarını giremezseniz SIM kartınız kalıcı olarak devre dışı bırakılacaktır.</translation>
+<translation id="363863692969456324">Yazım hatalarını geliştirilmiş yazım denetimiyle düzeltin</translation>
 <translation id="3640214691812501263"><ph name="USER_NAME" /> için "<ph name="EXTENSION_NAME" />" uzantısı eklensin mi?</translation>
 <translation id="3644896802912593514">Genişlik</translation>
 <translation id="3645372836428131288">Parmak izinizin farklı bir kısmının yakalanması için parmağınızı çok az hareket ettirin.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Dosya yanlış biçimde. PPD dosyasını kontrol edip tekrar deneyin.</translation>
 <translation id="431076611119798497">&amp;Ayrıntılar</translation>
 <translation id="4312866146174492540">Engelle (varsayılan)</translation>
+<translation id="4314815835985389558">Senkronizasyonu yönetin</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>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Teşhis Et</translation>
 <translation id="4451757071857432900">Araya giren veya yanıltıcı reklamlar gösteren sitelerde engellendi (önerilen)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> üzerinde arayın veya bir URL yazın</translation>
+<translation id="4461835665417498653">Bazı sistem bilgilerini ve sayfa içeriğini Google'a anonim olarak gönderir.</translation>
 <translation id="4462159676511157176">Özel ad sunucuları</translation>
 <translation id="4467101674048705704"><ph name="FOLDER_NAME" /> klasörünü genişlet</translation>
 <translation id="4469477701382819144">Araya giren veya yanıltıcı reklamlar gösteren sitelerde engellendi</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Smart Lock'u açmak için şifrenizi girin. Böylece, bir dahaki sefere telefonunuzu kullanarak <ph name="DEVICE_TYPE" /> cihazınızın kilidini açabilirsiniz. Ayarlar'dan Smart Lock'u kapatın.</translation>
 <translation id="473546211690256853">Bu hesap <ph name="DOMAIN" /> tarafından yönetiliyor.</translation>
 <translation id="4735803855089279419">Sistem, bu cihaz için cihaz tanıtıcılarını belirleyemedi.</translation>
+<translation id="4736292055110123391">Yer işaretleriniz, şifreleriniz, geçmişiniz ve daha fazlasını tüm cihazlarınızda senkronize edin</translation>
 <translation id="4737715515457435632">Lütfen bir ağa bağlanın</translation>
 <translation id="473775607612524610">Güncelle</translation>
 <translation id="4742746985488890273">Rafa sabitle</translation>
@@ -4894,6 +4902,7 @@
 <translation id="8598453409908276158">Korumalı alan içinde olmayan eklenti engellendi</translation>
 <translation id="8601206103050338563">TLS WWW İstemci Kimlik Doğrulaması</translation>
 <translation id="8602851771975208551">Bilgisayarınızdaki başka bir program, Chrome'un çalışma şeklini değiştirebilecek bir uygulama ekledi.</translation>
+<translation id="8604763363205185560">Chrome'u ve güvenlik özelliklerini iyileştirmeye yardımcı olun</translation>
 <translation id="8605428685123651449">SQLite Belleği</translation>
 <translation id="8606726445206553943">MIDI cihazlarınızı kullanma</translation>
 <translation id="8609465669617005112">Yukarı taşı</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 9f3078c..f9f2772 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1602,7 +1602,6 @@
 <translation id="3470502288861289375">Копіювання…</translation>
 <translation id="3473479545200714844">Лупа</translation>
 <translation id="3475447146579922140">Таблиці Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;Не показано 1 рядок&gt;}one{&lt;Не показано $1 рядок&gt;}few{&lt;Не показано $1 рядки&gt;}many{&lt;Не показано $1 рядків&gt;}other{&lt;Не показано $1 рядка&gt;}}</translation>
 <translation id="3475843873335999118">Не вдається розпізнати ваш відбиток пальця. Введіть пароль.</translation>
 <translation id="347670947055184738">На жаль, системі не вдалось отримати правило для вашого пристрою.</translation>
 <translation id="347785443197175480">Продовжити надавати хосту <ph name="HOST" /> доступ до ваших камери та мікрофона</translation>
@@ -2732,7 +2731,6 @@
 <translation id="5266113311903163739">Помилка імпортування центру сертифікації</translation>
 <translation id="5269977353971873915">Помилка друку</translation>
 <translation id="5270167208902136840">Показати ще стільки додатків: <ph name="NUMBER_OF_MORE_APPS" /></translation>
-<translation id="5272654297705279635">Власні налаштування</translation>
 <translation id="5275352920323889391">Собака</translation>
 <translation id="5275973617553375938">Відновлені файли з Google Диска</translation>
 <translation id="527605982717517565">Завжди дозволяти JavaScript на хості <ph name="HOST" /></translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 998ceaa..9f78b01f 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -764,6 +764,7 @@
 <translation id="215753907730220065">Thoát khỏi Chế độ Toàn màn hình</translation>
 <translation id="2157875535253991059">Trang này hiện ở chế độ toàn màn hình.</translation>
 <translation id="216169395504480358">Thêm Wi-Fi...</translation>
+<translation id="2162155940152307086">Quá trình đồng bộ hóa sẽ bắt đầu sau khi bạn thoát khỏi trang cài đặt đồng bộ hóa</translation>
 <translation id="2163470535490402084">Vui lòng kết nối Internet để đăng nhập vào <ph name="DEVICE_TYPE" /> của bạn.</translation>
 <translation id="2166369534954157698">Lươn ngắn lại chê trạch dài</translation>
 <translation id="2169062631698640254">Đăng nhập bằng mọi cách</translation>
@@ -774,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> trên <ph name="PEPPER_PLUGIN_DOMAIN" /> muốn truy cập vào máy tính của bạn</translation>
 <translation id="2178614541317717477">Lộ CA</translation>
 <translation id="218070003709087997">Sử dụng một số để cho biết số bản cần in (1 đến 999).</translation>
+<translation id="2182253583899676504">Nội dung bạn nhập vào các trường văn bản sẽ được gửi đến Google.</translation>
 <translation id="2184515124301515068">Cho phép Chrome chọn thời điểm trang web có thể phát âm thanh (khuyên dùng)</translation>
 <translation id="2187895286714876935">Lỗi nhập chứng chỉ máy chủ</translation>
 <translation id="2187906491731510095">Đã cập nhật tiện ích</translation>
@@ -785,7 +787,9 @@
 <translation id="2192505247865591433">Từ:</translation>
 <translation id="2193365732679659387">Cài đặt tin cậy</translation>
 <translation id="2195729137168608510">Bảo vệ Email</translation>
+<translation id="2198757192731523470">Google có thể sử dụng lịch sử của bạn để cá nhân hóa tính năng Tìm kiếm, quảng cáo và các dịch vụ khác của Google.</translation>
 <translation id="2199298570273670671">Lỗi</translation>
+<translation id="2199719347983604670">Dữ liệu từ Chrome Sync</translation>
 <translation id="2200094388063410062">Email</translation>
 <translation id="2200356397587687044">Để tiếp tục, Chrome cần được cấp quyền</translation>
 <translation id="2200603218210188859">Tùy chọn Thiết bị USB</translation>
@@ -1242,6 +1246,7 @@
 <translation id="2889064240420137087">Mở liên kết bằng...</translation>
 <translation id="2889925978073739256">Tiếp tục chặn plugin không có hộp cát</translation>
 <translation id="2893168226686371498">Trình duyệt mặc định</translation>
+<translation id="2895734772884435517">Bạn có thể tùy chỉnh các tùy chọn cài đặt này bất cứ lúc nào.</translation>
 <translation id="289644616180464099">Thẻ SIM bị khóa</translation>
 <translation id="289695669188700754">ID Khoá: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">Bạn có chắc chắn muốn mở <ph name="TAB_COUNT" /> tab không?</translation>
@@ -1597,7 +1602,6 @@
 <translation id="3470502288861289375">Đang sao chép...</translation>
 <translation id="3473479545200714844">Phóng to màn hình</translation>
 <translation id="3475447146579922140">Bảng tính Google</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;1 dòng không hiển thị&gt;}other{&lt;$1 dòng không hiển thị&gt;}}</translation>
 <translation id="3475843873335999118">Rất tiếc, vân tay của bạn vẫn chưa được nhận dạng. Vui lòng nhập mật khẩu của bạn.</translation>
 <translation id="347670947055184738">Rất tiếc! Hệ thống không tìm nạp được chính sách cho thiết bị của bạn.</translation>
 <translation id="347785443197175480">Tiếp tục cho phép <ph name="HOST" /> truy cập vào máy ảnh và micrô của bạn</translation>
@@ -1710,6 +1714,7 @@
 <translation id="3636096452488277381">Xin chào <ph name="USER_GIVEN_NAME" />!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - còn lại <ph name="TIME" /></translation>
 <translation id="3637682276779847508">Thẻ SIM của bạn sẽ bị vô hiệu hóa vĩnh viễn nếu bạn không thể nhập Khóa mở khóa mã PIN chính xác.</translation>
+<translation id="363863692969456324">Sửa lỗi chính tả bằng tính năng kiểm tra chính tả nâng cao</translation>
 <translation id="3640214691812501263">Thêm "<ph name="EXTENSION_NAME" />" cho <ph name="USER_NAME" />?</translation>
 <translation id="3644896802912593514">Chiều rộng</translation>
 <translation id="3645372836428131288">Nhẹ nhàng di chuyển ngón tay để hệ thống quét các phần của vân tay.</translation>
@@ -2142,6 +2147,7 @@
 <translation id="4310139701823742692">Tệp có định dạng sai. Hãy kiểm tra tệp PPD rồi thử lại.</translation>
 <translation id="431076611119798497">&amp;Chi tiết</translation>
 <translation id="4312866146174492540">Chặn (mặc định)</translation>
+<translation id="4314815835985389558">Quản lý dữ liệu đồng bộ hóa</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>
@@ -2221,6 +2227,7 @@
 <translation id="4450974146388585462">Chẩn đoán</translation>
 <translation id="4451757071857432900">Đã chặn trên những trang web hiển thị quảng cáo xâm nhập hoặc quảng cáo gây hiểu nhầm (khuyên dùng)</translation>
 <translation id="4453946976636652378">Tìm kiếm <ph name="SEARCH_ENGINE_NAME" /> hoặc nhập một URL</translation>
+<translation id="4461835665417498653">Gửi ẩn danh một số thông tin hệ thống và nội dung trang cho Google.</translation>
 <translation id="4462159676511157176">Máy chủ có tên tùy chỉnh</translation>
 <translation id="4467101674048705704">Mở rộng <ph name="FOLDER_NAME" /></translation>
 <translation id="4469477701382819144">Đã chặn trên những trang web hiển thị quảng cáo xâm nhập hoặc quảng cáo gây hiểu nhầm</translation>
@@ -2385,6 +2392,7 @@
 <translation id="4735265153267957659">Nhập mật khẩu để bật tính năng Smart Lock. Vào lần tới, điện thoại của bạn sẽ mở khóa <ph name="DEVICE_TYPE" />. Bạn có thể tắt tính năng Smart Lock trong mục Cài đặt.</translation>
 <translation id="473546211690256853">Tài khoản này do <ph name="DOMAIN" /> quản lý</translation>
 <translation id="4735803855089279419">Hệ thống không xác định được mã nhận dạng thiết bị cho thiết bị này.</translation>
+<translation id="4736292055110123391">Đồng bộ hóa dấu trang, mật khẩu, lịch sử và nhiều nội dung khác trên tất cả các thiết bị của bạn</translation>
 <translation id="4737715515457435632">Hãy kết nối với mạng</translation>
 <translation id="473775607612524610">Cập nhật</translation>
 <translation id="4742746985488890273">Ghim vào giá</translation>
@@ -4894,6 +4902,7 @@
 <translation id="8598453409908276158">Đã chặn truy cập vào plugin không có hộp cát</translation>
 <translation id="8601206103050338563">Xác thực Ứng dụng khách TLS WWW</translation>
 <translation id="8602851771975208551">Một chương trình khác trên máy tính của bạn đã thêm một ứng dụng có thể thay đổi cách Chrome hoạt động.</translation>
+<translation id="8604763363205185560">Giúp cải thiện Chrome và nâng cao tính bảo mật</translation>
 <translation id="8605428685123651449">Bộ nhớ SQLite</translation>
 <translation id="8606726445206553943">Sử dụng các thiết bị MIDI của bạn</translation>
 <translation id="8609465669617005112">Di chuyển lên</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 24009b97..1cdef643 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1595,7 +1595,6 @@
 <translation id="3470502288861289375">正在复制…</translation>
 <translation id="3473479545200714844">屏幕放大镜</translation>
 <translation id="3475447146579922140">Google 电子表格</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;有 1 行代码未显示出来&gt;}other{&lt;有 $1 行代码未显示出来&gt;}}</translation>
 <translation id="3475843873335999118">抱歉,系统仍无法识别您的指纹。请输入您的密码。</translation>
 <translation id="347670947055184738">糟糕!系统未能成功抓取您设备的政策。</translation>
 <translation id="347785443197175480">继续允许 <ph name="HOST" /> 使用您的摄像头和麦克风</translation>
@@ -2719,7 +2718,6 @@
 <translation id="5266113311903163739">证书授权中心导入错误</translation>
 <translation id="5269977353971873915">打印失败</translation>
 <translation id="5270167208902136840">显示另外 <ph name="NUMBER_OF_MORE_APPS" /> 个应用</translation>
-<translation id="5272654297705279635">自定义设置</translation>
 <translation id="5275352920323889391">狗</translation>
 <translation id="5275973617553375938">从 Google 云端硬盘恢复的文件</translation>
 <translation id="527605982717517565">始终允许使用 <ph name="HOST" /> 上的 JavaScript</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 4c652349..23697e2 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -528,6 +528,7 @@
 <translation id="177694132944350798">你已在 <ph name="TIME" />使用 Google 密碼對資料進行加密。如要開始同步處理資料,請輸入密碼。</translation>
 <translation id="1779652936965200207">請在「<ph name="DEVICE_NAME" />」上輸入以下密碼金鑰:</translation>
 <translation id="1781502536226964113">開啟新分頁</translation>
+<translation id="1781771911845953849">帳戶與同步處理</translation>
 <translation id="1782196717298160133">搜尋你的手機</translation>
 <translation id="1784849162047402014">裝置磁碟空間即將用盡</translation>
 <translation id="1786636458339910689">小組雲端硬碟</translation>
@@ -763,6 +764,7 @@
 <translation id="215753907730220065">結束全螢幕</translation>
 <translation id="2157875535253991059">這個頁面已顯示為全螢幕。</translation>
 <translation id="216169395504480358">新增 WiFi...</translation>
+<translation id="2162155940152307086">同步功能會在你退出同步功能設定後立即啟動</translation>
 <translation id="2163470535490402084">請連線至網際網路,以登入您的 <ph name="DEVICE_TYPE" />。</translation>
 <translation id="2166369534954157698">狐狗大戰</translation>
 <translation id="2169062631698640254">繼續登入</translation>
@@ -773,6 +775,7 @@
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> 的「<ph name="PEPPER_PLUGIN_NAME" />」要求存取你的電腦</translation>
 <translation id="2178614541317717477">CA 洩露</translation>
 <translation id="218070003709087997">使用數字指定列印份數 (1 至 999)。</translation>
+<translation id="2182253583899676504">系統會將你在文字欄位中輸入的文字傳送給 Google。</translation>
 <translation id="2184515124301515068">讓 Chrome 自行判斷何時允許網站播放音訊 (建議使用)</translation>
 <translation id="2187895286714876935">伺服器憑證匯入錯誤</translation>
 <translation id="2187906491731510095">擴充功能已更新</translation>
@@ -784,8 +787,12 @@
 <translation id="2192505247865591433">來源:</translation>
 <translation id="2193365732679659387">信任設定</translation>
 <translation id="2195729137168608510">電子郵件保護</translation>
+<translation id="2198757192731523470">Google 可能會使用你的歷史記錄,為你提供個人化的搜尋服務、廣告內容和其他各項 Google 服務。</translation>
 <translation id="2199298570273670671">錯誤</translation>
+<translation id="2199719347983604670">Chrome 同步功能資料</translation>
+<translation id="2200094388063410062">電子郵件</translation>
 <translation id="2200356397587687044">Chrome 需要權限才能繼續執行</translation>
+<translation id="2200603218210188859">USB 裝置偏好設定</translation>
 <translation id="220138918934036434">隱藏按鈕</translation>
 <translation id="2202898655984161076">列出印表機清單時發生問題,你的部分印表機尚未使用 <ph name="CLOUD_PRINT_NAME" /> 完成註冊。</translation>
 <translation id="2203682048752833055"><ph name="BEGIN_LINK" />網址列<ph name="END_LINK" />中使用的搜尋引擎</translation>
@@ -1063,6 +1070,7 @@
 <translation id="2633199387167390344">「<ph name="NAME" />」正在使用 <ph name="USAGE" /> MB 的磁碟空間。</translation>
 <translation id="2633212996805280240">要移除「<ph name="EXTENSION_NAME" />」嗎?</translation>
 <translation id="263325223718984101"><ph name="PRODUCT_NAME" /> 無法完成安裝,但會繼續透過磁碟映像執行。</translation>
+<translation id="2635094637295383009">Twitter</translation>
 <translation id="2635276683026132559">簽署</translation>
 <translation id="2636625531157955190">Chrome 無法存取這張圖片。</translation>
 <translation id="2638087589890736295">必須輸入通關密語,才能開始進行同步處理</translation>
@@ -1237,6 +1245,7 @@
 <translation id="2889064240420137087">使用其他程式開啟連結...</translation>
 <translation id="2889925978073739256">繼續封鎖無沙箱防護的外掛程式</translation>
 <translation id="2893168226686371498">預設瀏覽器</translation>
+<translation id="2895734772884435517">你隨時可以自訂這些設定。</translation>
 <translation id="289644616180464099">SIM 卡已鎖定</translation>
 <translation id="289695669188700754">金鑰識別碼:<ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">你確定要開啟 <ph name="TAB_COUNT" /> 分頁嗎?</translation>
@@ -1387,6 +1396,7 @@
 <translation id="3141318088920353606">聽取中…</translation>
 <translation id="3141917231319778873">無法對以下裝置提出指定的要求:「<ph name="DEVICE_NAME" />」。</translation>
 <translation id="3143515551205905069">取消同步處理</translation>
+<translation id="3143754809889689516">從頭播放</translation>
 <translation id="3144126448740580210">完成</translation>
 <translation id="3144647712221361880">以其他身分開啟連結</translation>
 <translation id="3146006635381699911">無法使用離線示範模式的資源。</translation>
@@ -1527,6 +1537,7 @@
 <translation id="337920581046691015">系統將會安裝「<ph name="PRODUCT_NAME" />」。</translation>
 <translation id="3380365263193509176">未知的錯誤</translation>
 <translation id="3382073616108123819">糟糕!系統無法判別這個裝置的裝置識別碼。</translation>
+<translation id="3382200254148930874">正在停用監督功能...</translation>
 <translation id="338583716107319301">分隔線</translation>
 <translation id="3389312115541230716">以滑鼠右鍵按一下工作列中的 <ph name="SMALL_PRODUCT_LOGO" /> 圖示</translation>
 <translation id="3396800784455899911">點選 [接受並繼續] 按鈕即表示您同意上述的 Google 服務處理程序。</translation>
@@ -1538,6 +1549,7 @@
 <translation id="3405763860805964263">...</translation>
 <translation id="3406605057700382950">顯示書籤列(&amp;S)</translation>
 <translation id="3407837288045706722">如需更多與隱私權、安全性和資料收集相關的設定,請參閱<ph name="BEGIN_LINK" />同步處理和個人化<ph name="END_LINK" /></translation>
+<translation id="3409785640040772790">地圖</translation>
 <translation id="3412265149091626468">跳至所選範圍</translation>
 <translation id="3413122095806433232">CA 發行者:<ph name="LOCATION" /></translation>
 <translation id="3414856743105198592">將卸除式媒體格式化會清除所有資料,你要繼續嗎?</translation>
@@ -1589,7 +1601,6 @@
 <translation id="3470502288861289375">複製中...</translation>
 <translation id="3473479545200714844">畫面放大鏡</translation>
 <translation id="3475447146579922140">Google 試算表</translation>
-<translation id="3475538074809281797">{LINE_COUNT,plural, =1{&lt;還有 1 行未顯示&gt;}other{&lt;還有 $1 行未顯示&gt;}}</translation>
 <translation id="3475843873335999118">很抱歉,系統仍然無法辨識你的指紋。請輸入你的密碼。</translation>
 <translation id="347670947055184738">糟糕!系統無法擷取裝置政策。</translation>
 <translation id="347785443197175480">繼續允許 <ph name="HOST" /> 存取你的攝影機和麥克風</translation>
@@ -1606,6 +1617,7 @@
 <translation id="3495304270784461826">發生 <ph name="COUNT" /> 個錯誤。</translation>
 <translation id="3495660573538963482">Google 助理設定</translation>
 <translation id="3496213124478423963">縮小</translation>
+<translation id="3497560059572256875">分享 Doodle</translation>
 <translation id="3505030558724226696">撤銷裝置存取權</translation>
 <translation id="3507421388498836150">「<ph name="EXTENSION_NAME" />」目前擁有的權限</translation>
 <translation id="3507547268929739059">移除 Chromebook 的 Linux 應用程式</translation>
@@ -1701,6 +1713,7 @@
 <translation id="3636096452488277381"><ph name="USER_GIVEN_NAME" />,你好!</translation>
 <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - 還可以使用 <ph name="TIME" /></translation>
 <translation id="3637682276779847508">如果無法輸入正確的 PIN 解鎖金鑰,SIM 卡會遭到永久停用。</translation>
+<translation id="363863692969456324">使用進階拼字檢查功能修正拼字錯誤</translation>
 <translation id="3640214691812501263">為<ph name="USER_NAME" />新增「<ph name="EXTENSION_NAME" />」?</translation>
 <translation id="3644896802912593514">寬度</translation>
 <translation id="3645372836428131288">請稍微移動手指,讓系統擷取完整指紋</translation>
@@ -1849,6 +1862,7 @@
 <translation id="3839516600093027468">一律禁止 <ph name="HOST" /> 讀取剪貼簿</translation>
 <translation id="3842552989725514455">Serif 字型</translation>
 <translation id="3846116211488856547">取得網站開發工具、Android 應用程式等等。安裝 Linux 將下載 <ph name="DOWNLOAD_SIZE" /> 的資料。</translation>
+<translation id="3850262920366203352">正在設定監督功能...</translation>
 <translation id="385051799172605136">返回</translation>
 <translation id="3851428669031642514">載入不安全的指令碼</translation>
 <translation id="3854599674806204102">選擇所需選項</translation>
@@ -1943,6 +1957,7 @@
 <translation id="3979748722126423326">啟用 <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">輸入的儲存類型無效。</translation>
 <translation id="3982375475032951137">只要簡單幾個步驟就能完成瀏覽器設定</translation>
+<translation id="3983400541576569538">某些應用程式的資料可能會遺失</translation>
 <translation id="3983586614702900908">製造商不明的裝置</translation>
 <translation id="3984159763196946143">無法啟動示範模式</translation>
 <translation id="3987348946546879621">數據用量更少</translation>
@@ -2048,6 +2063,7 @@
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">開啟播放清單</translation>
 <translation id="4159681666905192102">這是由 <ph name="CUSTODIAN_EMAIL" /> 和 <ph name="SECOND_CUSTODIAN_EMAIL" /> 所管理的兒童專用帳戶。</translation>
+<translation id="4162259808650104522">https://maps.google.com</translation>
 <translation id="4163560723127662357">未知的鍵盤</translation>
 <translation id="4168015872538332605"><ph name="PRIMARY_EMAIL" /> 的部分設定已與你共用。不過只有使用多重登入時,這些設定才會影響你的帳戶。</translation>
 <translation id="4170314459383239649">退出時清除</translation>
@@ -2129,6 +2145,7 @@
 <translation id="4310139701823742692">檔案格式錯誤。請檢查 PPD 檔案,然後再試一次。</translation>
 <translation id="431076611119798497">詳細資訊(&amp;D)</translation>
 <translation id="4312866146174492540">封鎖 (預設)</translation>
+<translation id="4314815835985389558">管理同步功能資料</translation>
 <translation id="4316850752623536204">開發人員網站</translation>
 <translation id="4320177379694898372">沒有網際網路連線</translation>
 <translation id="4320948194796820126">為電子郵件服務加上書籤</translation>
@@ -2208,6 +2225,7 @@
 <translation id="4450974146388585462">診斷</translation>
 <translation id="4451757071857432900">已封鎖干擾性或誤導性的網站廣告 (建議)</translation>
 <translation id="4453946976636652378">執行 <ph name="SEARCH_ENGINE_NAME" /> 搜尋或輸入網址</translation>
+<translation id="4461835665417498653">將部分系統資訊和網頁內容以匿名方式傳送給 Google。</translation>
 <translation id="4462159676511157176">自訂名稱伺服器</translation>
 <translation id="4467101674048705704">展開「<ph name="FOLDER_NAME" />」</translation>
 <translation id="4469477701382819144">已封鎖干擾性或誤導性的網站廣告</translation>
@@ -2372,6 +2390,7 @@
 <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="4736292055110123391">讓你在所有裝置上的書籤、密碼、歷史記錄及其他設定保持同步</translation>
 <translation id="4737715515457435632">請連上網路</translation>
 <translation id="473775607612524610">更新</translation>
 <translation id="4742746985488890273">固定至檔案櫃</translation>
@@ -2618,6 +2637,7 @@
 <translation id="5133483819862530305">日落到日出</translation>
 <translation id="5135533361271311778">無法建立書籤項目。</translation>
 <translation id="5137501176474113045">刪除此項目</translation>
+<translation id="5138227688689900538">顯示較少</translation>
 <translation id="5139955368427980650">開啟(&amp;O)</translation>
 <translation id="5142961317498132443">驗證</translation>
 <translation id="5143374789336132547">擴充功能「<ph name="EXTENSION_NAME" />」已變更您點選 [首頁] 按鈕時所顯示的網頁。</translation>
@@ -2653,6 +2673,7 @@
 <translation id="5185386675596372454">由於最新版本的 <ph name="EXTENSION_NAME" /> 需要更多權限,因此已經停用。</translation>
 <translation id="5187295959347858724">你已登入 <ph name="SHORT_PRODUCT_NAME" />,系統正在將你的書籤、瀏覽記錄和其他設定與「Google 帳戶」進行同步處理。</translation>
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
+<translation id="5187892128515678283">如要與 Linux 共用 USB 裝置,請將開關切換至開啟。共用設定在裝置卸除後即失效。</translation>
 <translation id="51918995459521422"><ph name="ORIGIN" /> 想要下載多個檔案</translation>
 <translation id="5204673965307125349">請在裝置上執行 Powerwash,然後再試一次。</translation>
 <translation id="5204967432542742771">輸入密碼</translation>
@@ -2707,6 +2728,7 @@
 <translation id="5265797726250773323">安裝時發生錯誤</translation>
 <translation id="5266113311903163739">憑證授權單位匯入錯誤</translation>
 <translation id="5269977353971873915">列印失敗</translation>
+<translation id="5270167208902136840">顯示另外 <ph name="NUMBER_OF_MORE_APPS" /> 個應用程式</translation>
 <translation id="5275352920323889391">狗</translation>
 <translation id="5275973617553375938">從 Google 雲端硬碟還原檔案</translation>
 <translation id="527605982717517565">永遠允許在 <ph name="HOST" /> 執行 JavaScript</translation>
@@ -3176,6 +3198,7 @@
 <translation id="5955282598396714173">你的密碼已過期。如要變更密碼,請先登出然後重新登入。</translation>
 <translation id="5955809630138889698">這個裝置可能只能使用線上示範模式。如需詳情,請與你的產品支援代表聯絡。</translation>
 <translation id="5956585768868398362">這是你想要的搜尋頁面嗎?</translation>
+<translation id="595685469232282893">https://chrome.google.com/webstore</translation>
 <translation id="5957613098218939406">更多選項</translation>
 <translation id="5957987129450536192">輕觸靠近設定檔圖片的「隨選朗讀」圖示,然後選取你要聆聽的內容。</translation>
 <translation id="5958529069007801266">受監管的使用者</translation>
@@ -3439,11 +3462,13 @@
 <translation id="6351063337294363751">你可以使用這個選單清除瀏覽資料</translation>
 <translation id="6352773953037195952">最高</translation>
 <translation id="6354918092619878358">SECG 橢圓曲線 secp256r1 (亦稱為 ANSI X9.62 prime256v1、NIST P-256)</translation>
+<translation id="635609604405270300">請讓裝置保持開啟</translation>
 <translation id="6356138805250111037">將你在瀏覽器中輸入的文字傳送給 Google,讓 Chrome 為你提供更精確的拼字檢查功能。</translation>
 <translation id="63566973648609420">只有知道通關密語的使用者可以讀取你的加密資料。系統不會將通關密語傳送給 Google,Google 也不會儲存通關密語。如果你忘記自己的通關密語,或是想變更這項設定,則必須<ph name="BEGIN_LINK" />重設同步功能<ph name="END_LINK" />。</translation>
 <translation id="6357619544108132570">歡迎使用 <ph name="SHORT_PRODUCT_NAME" /> 系列機種,體驗不同凡響的新世代電腦。</translation>
 <translation id="6361850914223837199">錯誤詳細資料:</translation>
 <translation id="6362853299801475928">回報問題(&amp;R)...</translation>
+<translation id="6365069501305898914">Facebook</translation>
 <translation id="6365411474437319296">新增家人好友</translation>
 <translation id="636850387210749493">企業註冊</translation>
 <translation id="6370021412472292592">無法載入資訊清單。</translation>
@@ -3698,6 +3723,7 @@
 <translation id="6777817260680419853">已禁止重新導向</translation>
 <translation id="677965093459947883">非常小</translation>
 <translation id="6780439250949340171">管理其他設定</translation>
+<translation id="6781284683813954823">Doodle 連結</translation>
 <translation id="6782111308708962316">禁止第三方網站儲存及讀取 Cookie 資料</translation>
 <translation id="6786747875388722282">擴充功能</translation>
 <translation id="6787839852456839824">鍵盤快速鍵</translation>
@@ -3744,6 +3770,7 @@
 <translation id="6841186874966388268">錯誤</translation>
 <translation id="6843423766595476978">Ok Google 設定完成</translation>
 <translation id="6845038076637626672">最大化開啟</translation>
+<translation id="6848388270925200958">目前你有一些卡片只能在這部裝置上使用</translation>
 <translation id="6851497530878285708">應用程式已啟用</translation>
 <translation id="6853388645642883916">更新程式休眠中</translation>
 <translation id="68541483639528434">關閉其他分頁</translation>
@@ -3781,6 +3808,7 @@
 <translation id="6914783257214138813">凡是可查看匯出的檔案的使用者都能看到你的密碼。</translation>
 <translation id="6915804003454593391">使用者:</translation>
 <translation id="6916590542764765824">管理擴充功能</translation>
+<translation id="691914323712916303">https://news.google.com</translation>
 <translation id="6920989436227028121">在一般分頁中開啟</translation>
 <translation id="6921709132208495314">停止這個網頁使用數據流量</translation>
 <translation id="6923132443355966645">捲動/點選</translation>
@@ -3999,6 +4027,7 @@
 <translation id="7253521419891527137">瞭解詳情(&amp;L)</translation>
 <translation id="7254554697254365959">無法翻譯這個網頁的內容。</translation>
 <translation id="7254951428499890870">你確定要在診斷模式中啟動「<ph name="APP_NAME" />」?</translation>
+<translation id="7255002516883565667">目前你有一張卡片只能在這部裝置上使用</translation>
 <translation id="7255220508626648026">現正投放:<ph name="ROUTETITLE" /></translation>
 <translation id="7255935316994522020">套用</translation>
 <translation id="7256069762010468647">網站正在使用你的攝影機</translation>
@@ -4070,6 +4099,7 @@
 <translation id="7360233684753165754">將 <ph name="PAGE_NUMBER" /> 個網頁傳送至「<ph name="PRINTER_NAME" />」列印</translation>
 <translation id="7361297102842600584">以滑鼠右鍵按一下即可執行「<ph name="PLUGIN_NAME" />」</translation>
 <translation id="7361537270840348817">中斷手機與 Chromebook 的連線</translation>
+<translation id="7362862325990022643">https://youtube.com</translation>
 <translation id="7363117941401515667">更新時間為 <ph name="HOURS" /> 小時前</translation>
 <translation id="7364796246159120393">選擇檔案</translation>
 <translation id="7366415735885268578">新增網站</translation>
@@ -4291,6 +4321,7 @@
 <translation id="7737238973539693982">刪除 Linux (測試版)</translation>
 <translation id="773905249182896430">保護你和你的裝置不受危險網站攻擊</translation>
 <translation id="7740996059027112821">標準</translation>
+<translation id="7742008146327708230">最近開啟的應用程式</translation>
 <translation id="7748626145866214022">動作列中有更多可用的選項。按下 Alt+A 即可將焦點移到動作列。</translation>
 <translation id="7750228210027921155">子母畫面</translation>
 <translation id="7751260505918304024">全部顯示</translation>
@@ -4577,6 +4608,7 @@
 <translation id="8116972784401310538">書籤管理員(&amp;B)</translation>
 <translation id="8117620576188476503">透過狀態匣管理連線、更新和設定。如要使用鍵盤開啟這個畫面,請按下 Alt + Shift + S 鍵。</translation>
 <translation id="8118362518458010043">這個擴充功能可能不安全,因此遭到 Chrome 停用。</translation>
+<translation id="8118488170956489476">你的<ph name="BEGIN_LINK" />瀏覽器是由貴機構所管理<ph name="END_LINK" /></translation>
 <translation id="8118860139461251237">管理下載內容</translation>
 <translation id="8123590694679414600">系統已採用你在 <ph name="TIME" />設定的同步通關密語針對資料進行加密處理。加密的資料不包括 Google Pay 的付款方式和地址。</translation>
 <translation id="81238879832906896">黃色和白色花朵</translation>
@@ -4820,6 +4852,7 @@
 <translation id="8521475323816527629">快速存取應用程式</translation>
 <translation id="8523493869875972733">保留變更</translation>
 <translation id="8523849605371521713">依政策新增</translation>
+<translation id="8524783101666974011">將卡片儲存到你的 Google 帳戶</translation>
 <translation id="8525306231823319788">全螢幕</translation>
 <translation id="8528074251912154910">新增語言</translation>
 <translation id="8528962588711550376">登入中。</translation>
@@ -4865,6 +4898,7 @@
 <translation id="8598453409908276158">已封鎖無沙箱防護的外掛程式</translation>
 <translation id="8601206103050338563">TLS WWW 用戶端驗證</translation>
 <translation id="8602851771975208551">電腦中其他程式所新增的應用程式可能會變更 Chrome 的運作方式。</translation>
+<translation id="8604763363205185560">協助改善 Chrome 及其安全性</translation>
 <translation id="8605428685123651449">SQLite 記憶體使用量</translation>
 <translation id="8606726445206553943">使用您的 MIDI 裝置</translation>
 <translation id="8609465669617005112">上移</translation>
@@ -4945,6 +4979,7 @@
 <translation id="8714838604780058252">背景圖形</translation>
 <translation id="8715480913140015283">背景分頁正在使用你的攝影機</translation>
 <translation id="8716931980467311658">要將所有 Linux 應用程式和「Linux 檔案」資料夾中的資料從這部 <ph name="DEVICE_TYPE" /> 上刪除嗎?</translation>
+<translation id="8717864919010420084">複製連結</translation>
 <translation id="8719653885894320876">「<ph name="PLUGIN_NAME" />」下載失敗</translation>
 <translation id="8720816553731218127">安裝時屬性的初始化作業已逾時。</translation>
 <translation id="8724405322205516354">當你看到這個圖示時,請使用你的指紋來驗證身分或核准購物交易。</translation>
@@ -5033,6 +5068,7 @@
 <translation id="8846141544112579928">正在搜尋鍵盤...</translation>
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848561196844274665">當裝置連結時,即表示你同意讓 Chromebook 執行以下事項:</translation>
+<translation id="8858253359017755945">https://translate.google.com</translation>
 <translation id="8859057652521303089">選擇語言:</translation>
 <translation id="8859174528519900719">子頁框:<ph name="SUBFRAME_SITE" /></translation>
 <translation id="8860454412039442620">Excel 試算表</translation>
@@ -5304,6 +5340,7 @@
 <translation id="992592832486024913">停用 ChromeVox (互動朗讀)</translation>
 <translation id="993540765962421562">正在進行安裝程序</translation>
 <translation id="994289308992179865">循環播放(&amp;L)</translation>
+<translation id="995782501881226248">YouTube</translation>
 <translation id="996250603853062861">正在建立安全連線...</translation>
 <translation id="998747458861718449">檢查(&amp;N)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb
index a2c38161..8397b0e 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -208,6 +208,7 @@
 <translation id="683440813066116847">Inbound rule for Google Chrome Canary to allow mDNS traffic.</translation>
 <translation id="686561893457936865">Take Chrome everywhere</translation>
 <translation id="6885412569789873916">Chrome Beta Apps</translation>
+<translation id="6943584222992551122">This person's browsing data will be deleted from this device. To recover the data, sign in to Chrome as <ph name="USER_EMAIL" />.</translation>
 <translation id="6964107240822114422">{0,plural, =0{A Chrome update is available}=1{A Chrome update is available}other{A Chrome update has been available for # days}}</translation>
 <translation id="6967962315388095737">Inbound rule for Google Chrome Beta to allow mDNS traffic.</translation>
 <translation id="6970811910055250180">Updating your device...</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb
index efbad2d..56e08d08 100644
--- a/chrome/app/resources/google_chrome_strings_iw.xtb
+++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -19,7 +19,7 @@
 <translation id="1399397803214730675">‏במחשב זה מותקנת כבר גירסה עדכנית יותר של Google Chrome. אם התוכנה אינה פועלת, הסר את ההתקנה של Google Chrome ונסה שוב.</translation>
 <translation id="1434626383986940139">‏יישומי Chrome - קאנארי</translation>
 <translation id="1457721931618994305">‏מעדכן את Google Chrome...</translation>
-<translation id="1469002951682717133">Chrome App Launcher</translation>
+<translation id="1469002951682717133">‏מרכז האפליקציות של Chrome</translation>
 <translation id="1553358976309200471">‏עדכן את Chrome</translation>
 <translation id="1585657529869845941">אם הלחצן <ph name="BEGIN_BOLD" />אני רוצה להחליף בכל מקרה<ph name="END_BOLD" /> מופיע, צריך ללחוץ עליו</translation>
 <translation id="1587223624401073077">‏Google Chrome משתמש במצלמה שלך.</translation>
@@ -218,7 +218,7 @@
 <translation id="7419046106786626209">‏מערכת ההפעלה של Chrome לא הצליחה לסנכרן את הנתונים שלך מפני שהסנכרון אינו זמין עבור הדומיין שלך.</translation>
 <translation id="7459554271817304652">‏הגדר סנכרון כדי לשמור את תכונות הדפדפן המותאמות אישית שלך באינטרנט ולגשת אליהן מ-Google Chrome בכל מחשב.</translation>
 <translation id="7473136999113284234">‏Chrome מתעדכן באופן אוטומטי, כך שתמיד נמצאת ברשותך הגרסה העדכנית ביותר.</translation>
-<translation id="7486227612705979895">‏Chrome ייגש ל-Drive שלך כדי להציג הצעות בסרגל הכתובות</translation>
+<translation id="7486227612705979895">‏Chrome ייגש ל-Drive שלך כדי להציג הצעות בשורת כתובת האתר</translation>
 <translation id="7535429826459677826">‏גרסת הפיתוח של Google Chrome</translation>
 <translation id="7552219221109926349">‏הצג את מערכת ההפעלה של Chrome בשפה זו</translation>
 <translation id="7561940363513215021">{0,plural, =1{‏Chrome יופעל מחדש בעוד דקה}two{‏Chrome יופעל מחדש בעוד שתי דקות}many{‏Chrome יופעל מחדש בעוד # דקות}other{‏Chrome יופעל מחדש בעוד # דקות}}</translation>
@@ -261,7 +261,7 @@
 <translation id="8498858610309223613">‏בוצע עדכון אבטחה מיוחד של Google Chrome. עכשיו עליך להפעיל מחדש את Chrome ואנחנו נשחזר את הכרטיסיות.</translation>
 <translation id="8521348052903287641">‏כלל נכנס לגרסת הפיתוח של Google Chrome כדי לאפשר תנועת mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
-<translation id="8547799825197623713">‏מפעיל היישומים של Chrome - קאנארי</translation>
+<translation id="8547799825197623713">‏מרכז האפליקציות של Chrome – קאנארי</translation>
 <translation id="8556340503434111824">‏גרסה חדשה של Google Chrome זמינה, והיא מהירה יותר מאי פעם.</translation>
 <translation id="8568392309447938879">‏עליך להיות מחובר ל-Chrome כדי להשתמש ביישומים. כך Chrome יכול לסנכרן את היישומים, הסימניות, ההיסטוריה, הסיסמאות והגדרות נוספות בין מכשירים שונים.</translation>
 <translation id="8606668294522778825">‏Google Chrome עשוי להשתמש בשירותי אינטרנט לשיפור חוויית הגלישה שלך. ניתן להשבית את השירותים האלה. <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index 47759d05..0b8e8b5d 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -47,7 +47,7 @@
 <translation id="2094919256425865063">ఏదేమైనా Chromeని మూసివేయాలా?</translation>
 <translation id="2120620239521071941">ఇది ఈ పరికరం నుండి <ph name="ITEMS_COUNT" /> అంశాలను తొలగిస్తుంది. మీ డేటాను తర్వాత తిరిగి పొందడానికి, Chromeకి <ph name="USER_EMAIL" /> వలె సైన్ ఇన్ చేయండి.</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />ప్రస్తుత సెట్టింగ్‌లను<ph name="END_LINK" /> నివేదించడం ద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి</translation>
-<translation id="216054706567564023">మీ ఫోన్‌లో Chromeను ఇన్‌స్టాల్ చేయండి. మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMSను పంపుతాము.</translation>
+<translation id="216054706567564023">మీ ఫోన్‌లో Chromeను ఇన్‌స్టాల్ చేయండి. మేము మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMSను పంపుతాము.</translation>
 <translation id="2246246234298806438">అంతర్నిర్మిత PDF వ్యూవర్ లేనప్పుడు Google Chrome ముద్రణ ప్రివ్యూను చూపించదు.</translation>
 <translation id="2252923619938421629">ప్రస్తుత సెట్టింగ్‌లను నివేదించడం ద్వారా Google Chromeను మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="225363235161345695">{0,plural, =1{ఒక గంటలో Chrome తిరిగి ప్రారంభించబడుతుంది}other{# గంటల్లో Chrome తిరిగి ప్రారంభించబడుతుంది}}</translation>
@@ -69,7 +69,7 @@
 <translation id="2586406160782125153">ఇది ఈ పరికరం నుండి మీ బ్రౌజింగ్ డేటాను తొలగిస్తుంది. మీ డేటాను తర్వాత తిరిగి పొందడానికి, Chromeకి <ph name="USER_EMAIL" /> వలె సైన్ ఇన్ చేయండి.</translation>
 <translation id="2588322182880276190">Chrome లోగో</translation>
 <translation id="2652691236519827073">కొత్త Chrome &amp;ట్యాబ్‌లో లింక్‌ను తెరువు</translation>
-<translation id="2665296953892887393">Googleకు వినియోగ గణాంకాలు మరియు <ph name="UMA_LINK" />ను పంపడం ద్వారా Google Chromeను మెరుగుపరచడంలో సహాయపడండి</translation>
+<translation id="2665296953892887393">Googleకు క్రాష్ నివేదికలను, <ph name="UMA_LINK" />ను పంపడం ద్వారా Google Chromeను మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="2689103672227170538">ఈ పొడిగింపు మీరు Chromeని ప్రారంభించినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
 <translation id="2765403129283291972">ఈ సైట్ కోసం మీ మైక్రోఫోన్‌ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం</translation>
 <translation id="2770231113462710648">డిఫాల్ట్ బ్రౌజర్‌ను దీనికి మార్చు:</translation>
@@ -79,18 +79,18 @@
 <translation id="2871893339301912279">మీరు Chromeకు సైన్ ఇన్ చేసారు!</translation>
 <translation id="2888126860611144412">Chrome పరిచయం</translation>
 <translation id="3037838751736561277">Google Chrome నేపథ్య మోడ్‌లో ఉంది.</translation>
-<translation id="3047079729301751317"><ph name="USERNAME" />ని డిస్‌కనెక్ట్ చేయడం వలన ఈ పరికరంలో నిల్వ చేయబడిన మీ చరిత్ర, బుక్‌మార్క్‌లు, సెట్టింగ్‌లు మరియు ఇతర Chrome డేటా క్లియర్ చేయబడతాయి. మీ Google ఖాతాలో నిల్వ చేయబడిన డేటా క్లియర్ చేయబడదు మరియు దాన్ని <ph name="GOOGLE_DASHBOARD_LINK" />Google డాష్‌బోర్డ్<ph name="END_GOOGLE_DASHBOARD_LINK" />లో నిర్వహించవచ్చు.</translation>
+<translation id="3047079729301751317"><ph name="USERNAME" />ను డిస్‌కనెక్ట్ చేయడం వ‌ల్ల‌ ఈ పరికరంలో నిల్వ చేయబడిన మీ చరిత్ర, బుక్‌మార్క్‌లు, సెట్టింగ్‌లు, ఇతర Chrome డేటా క్లియర్ చేయబడతాయి. మీ Google ఖాతాలో నిల్వ చేయబడిన డేటా క్లియర్ చేయబడదు. దాన్ని <ph name="GOOGLE_DASHBOARD_LINK" />Google డాష్‌బోర్డ్<ph name="END_GOOGLE_DASHBOARD_LINK" />లో నిర్వహించవచ్చు.</translation>
 <translation id="3065168410429928842">Chrome ట్యాబ్</translation>
 <translation id="3080151273017101988">Google Chromeను మూసివేసినపుడు, యాప్‌లను నేపథ్యంలో అమలు చేయడాన్ని కొనసాగించు</translation>
 <translation id="3089968997497233615">Google Chrome యొక్క క్రొత్త సురక్షితమైన సంస్కరణ అందుబాటులో ఉంది.</translation>
 <translation id="3149510190863420837">Chrome యాప్‌లు</translation>
 <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" /> వెబ్ మొత్తాన్ని బ్రౌజ్ చేయగలరు.
+<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>
@@ -101,7 +101,7 @@
 <translation id="3479552764303398839">ఇప్పుడు కాదు</translation>
 <translation id="3503306920980160878">ఈ సైట్‌తో మీ స్థానాన్ని షేర్ చేయడానికి Chromeకు మీ స్థాన యాక్సెస్ అవసరం</translation>
 <translation id="3582972582564653026">మీ పరికరాల అంతటా Chromeని సమకాలీకరించండి మరియు వ్యక్తిగతీకరించండి</translation>
-<translation id="3622797965165704966">ఇప్పుడు మీ Google ఖాతాతో మరియు భాగస్వామ్య కంప్యూటర్‌లలో Chromeని సులభంగా ఉపయోగించవచ్చు.</translation>
+<translation id="3622797965165704966">ఇప్పుడు మీ Google ఖాతాతో, షేర్ చేయ‌బ‌డిన కంప్యూటర్‌ల‌లో Chromeను సులభంగా ఉపయోగించవచ్చు.</translation>
 <translation id="3637702109597584617">Google Chrome OS <ph name="TERMS_OF_SERVICE_LINK" />సేవా నిబంధనలు<ph name="END_TERMS_OF_SERVICE_LINK" /></translation>
 <translation id="3716182511346448902">ఈ పేజీ చాలా మెమరీని ఉపయోగిస్తోంది, కాబట్టి దీన్ని Chrome పాజ్ చేయబడింది.</translation>
 <translation id="3718181793972440140">ఇది ఈ పరికరం నుండి 1 అంశాన్ని తొలగిస్తుంది. మీ డేటాను తర్వాత తిరిగి పొందడానికి, Chromeకి <ph name="USER_EMAIL" /> వలె సైన్ ఇన్ చేయండి.</translation>
@@ -130,7 +130,7 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458462641685292929">Google Chromeలో మరొక వ్యవస్థాపన జరుగుతోంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="4480040274068703980">సైన్ ఇన్ చేయడంలో ఎర్రర్ సంభవించినందున Chrome OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation>
-<translation id="4561051373932531560">Google Chrome వెబ్‌లో మిమ్మళ్ని ఫోన్ నంబర్ క్లిక్ చెయ్యనిస్తుంది మరియు Skypeతో కాల్ చేస్తుంది!</translation>
+<translation id="4561051373932531560">Google Chrome వెబ్‌లో మిమ్మల్ని ఫోన్ నంబర్ క్లిక్ చేయ‌నిస్తుంది. Skypeతో కాల్ చేస్తుంది!</translation>
 <translation id="4567424176335768812">మీరు <ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు. ఇప్పుడు మీరు మీ సైన్ ఇన్ చేసిన అన్ని పరికరాల్లో మీ బుక్‌మార్క్‌లు, చరిత్ర మరియు ఇతర సెట్టింగ్‌లను ప్రాప్యత చేయవచ్చు.</translation>
 <translation id="4571503333518166079">Chrome నోటిఫికేషన్ సెట్టింగ్‌లలోకి వెళ్లు</translation>
 <translation id="459622048091363950">ఓసారి Chromeకి యాక్సెస్ లభించాక, ఆపై వెబ్‌సైట్‌లకు ఏమైనా యాక్సెస్‌ కావాలంటే అవి మిమ్మల్ని అడగవచ్చు.</translation>
@@ -191,7 +191,7 @@
 <translation id="6468844726266617801">{0,plural, =1{ఒక రోజులో Chromeని తిరిగి ప్రారంభించండి}other{# రోజుల్లో Chromeని తిరిగి ప్రారంభించండి}}</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">Google Chrome నవీకరించబడుతోంది (<ph name="PROGRESS_PERCENT" />)</translation>
-<translation id="6598387184982954187">మీరు మీ Chrome అంశాలను సింక్ చేయడానికి <ph name="PROFILE_EMAIL" />ని ఉపయోగిస్తున్నారు. మీ సింక్ ప్రాధాన్యతను అప్‌డేట్ చేయడానికి లేదా Google ఖాతా లేకుండా Chromeని ఉపయోగించడానికి, <ph name="SETTINGS_LINK" />ను సందర్శించండి.</translation>
+<translation id="6598387184982954187">మీరు మీ Chrome అంశాలను సింక్ చేయ‌డానికి <ph name="PROFILE_EMAIL" />ను ఉపయోగిస్తున్నారు. మీ సింక్‌ ప్రాధాన్యతను అప్‌డేట్ చేయ‌డానికి లేదా Google ఖాతా లేకుండా Chromeను ఉపయోగించడానికి, <ph name="SETTINGS_LINK" />ను సందర్శించండి.</translation>
 <translation id="6600954340915313787">Chromeకి కాపీ చేయబడింది</translation>
 <translation id="6634887557811630702">Google Chrome తాజాగా ఉంది.</translation>
 <translation id="6676384891291319759">ఇంటర్నెట్‌ను యాక్సెస్ చేయండి</translation>
@@ -227,7 +227,7 @@
 <translation id="7626032353295482388">Chromeకు స్వాగతం</translation>
 <translation id="7651907282515937834">Chrome ఎంటర్‌ప్రైజ్ లోగో</translation>
 <translation id="7747138024166251722">ఇన్‌స్టాలర్ ఒక తాత్కాలిక డైరక్టరీని సృష్టించలేకపోయింది. సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయడానికి దయచేసి డిస్క్‌కు సంబంధించి నిల్వ, అనుమతిని తనిఖీ చేయండి.</translation>
-<translation id="7761834446675418963">Chromeని తెరిచి, బ్రౌజింగ్‌ను ప్రారంభించడానికి మీ పేరుని క్లిక్ చేయండి.</translation>
+<translation id="7761834446675418963">Chromeను తెరిచి, బ్రౌజింగ్‌ను ప్రారంభించడానికి మీ పేరును క్లిక్ చేయండి.</translation>
 <translation id="7781002470561365167">Google Chrome యొక్క క్రొత్త సంస్కరణ ఇప్పుడు అందుబాటులో ఉంది.</translation>
 <translation id="7787950393032327779">ఈ ప్రొఫైల్‌ని మరొక కంప్యూటర్ (<ph name="HOST_NAME" />)లో మరో Google Chrome ప్రాసెస్ (<ph name="PROCESS_ID" />) ఉపయోగిస్తున్నట్లు కనిపిస్తోంది. ఈ ప్రొఫైల్ పాడవకూడదని Chrome దానిని లాక్ చేసింది. ఈ ప్రొఫైల్‌ని వేరే ఇతర ప్రాసెస్‌లు ఏవీ ఉపయోగించడం లేదని మీకు ఖచ్చితంగా తెలిస్తే, మీరు ప్రొఫైల్‌ని అన్‌లాక్ చేసి Chromeని మళ్లీ లాంచ్ చేయవచ్చు.</translation>
 <translation id="7808348361785373670">Chrome నుండి తీసివేయి...</translation>
@@ -257,7 +257,7 @@
 <translation id="8406086379114794905">Chromeని మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="8432724323949790809">మీరు ఇప్పుడు Google Chromeని పునఃప్రారంభించాలి</translation>
 <translation id="8455999171311319804">ఐచ్ఛికం: విశ్లేషణ మరియు వినియోగ డేటాను ఆటోమేటిక్‌గా Googleకి పంపడం ద్వారా Chrome OSని మెరుగుపరచడంలో సహాయం అందించండి.</translation>
-<translation id="8478823064122749032">మీ ఫోన్‌లో Chromeను ఇన్‌స్టాల్ చేయండి. మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMSను పంపుతాము: <ph name="PHONE_NUMBER" /></translation>
+<translation id="8478823064122749032">మీ ఫోన్‌లో Chromeను ఇన్‌స్టాల్ చేయండి. మేము మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్‌కు SMSను పంపుతాము: <ph name="PHONE_NUMBER" /></translation>
 <translation id="8498858610309223613">Google Chromeకి సంబంధించిన ప్రత్యేక భద్రతా అప్‌డేట్ వర్తింపజేయబడింది. ఇప్పుడే పునఃప్రారంభించండి, మేము మీ ట్యాబ్‌లను పునరుద్ధరిస్తాము.</translation>
 <translation id="8521348052903287641">mDNS ట్రాఫిక్‌ను అనుమతించడానికి Google Chrome డెవలపర్ కోసం ఇన్‌బౌండ్ నియమం.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
@@ -274,10 +274,10 @@
 <translation id="8736674169840206667">అప్‌డేట్‌ని వర్తింపజేయడం కోసం మీరు Chromeని పునఃప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు</translation>
 <translation id="8791470158600044404">{0,plural, =1{Chrome OS 1 నిమిషంలో మళ్లీ ప్రారంభించబడుతుంది}other{Chrome OS # నిమిషాల్లో మళ్లీ ప్రారంభించబడుతుంది}}</translation>
 <translation id="8823341990149967727">Chrome కాలం చెల్లినది</translation>
-<translation id="884296878221830158">ఇది మీరు Chromeని ప్రారంభించేటప్పుడు లేదా హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
+<translation id="884296878221830158">ఇది మీరు Chromeను ప్రారంభించేటప్పుడు లేదా హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
 <translation id="8862326446509486874">సిస్టమ్-స్థాయిలో ఇన్‌స్టాల్‌ చెయ్యడానికి మీకు సరైన హక్కులు లేవు. నిర్వాహకుడి లాగా ఇన్‌స్టాలర్‌ను మళ్లీ రన్ చెయ్యడానికి ప్రయత్నించండి.</translation>
 <translation id="8914504000324227558">Chromeను పునఃప్రారంభించు</translation>
-<translation id="9026991721384951619">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chrome OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation>
+<translation id="9026991721384951619">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chrome OS మీ డేటాను సింక్ చేయ‌లేకపోయింది.</translation>
 <translation id="9067395829937117663">Google Chromeకి Windows 7 లేదా అంతకంటే ఆధునికమైనది ఉండటం ఆవశ్యకం.</translation>
 <translation id="909149346112452267">{0,plural, =1{Chrome OS గంటలో మళ్లీ ప్రారంభించబడుతుంది}other{Chrome OS # గంటల్లో మళ్లీ ప్రారంభించబడుతుంది}}</translation>
 <translation id="911206726377975832">మీ బ్రౌజింగ్ డేటాని కూడా తొలగించాలా?</translation>
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
index 4274cee..d145194 100644
--- a/chrome/browser/after_startup_task_utils.cc
+++ b/chrome/browser/after_startup_task_utils.cc
@@ -125,10 +125,7 @@
   for (AfterStartupTask* queued_task : g_after_startup_tasks.Get())
     ScheduleTask(base::WrapUnique(queued_task));
   g_after_startup_tasks.Get().clear();
-
-  // The shrink_to_fit() method is not available for all of our build targets.
-  base::circular_deque<AfterStartupTask*>(g_after_startup_tasks.Get())
-      .swap(g_after_startup_tasks.Get());
+  g_after_startup_tasks.Get().shrink_to_fit();
 
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
   // Make sure we complete the startup notification sequence, or launchers will
diff --git a/chrome/browser/android/vr/arcore_device/arcore.h b/chrome/browser/android/vr/arcore_device/arcore.h
index 9b0b0cf..cd57addb 100644
--- a/chrome/browser/android/vr/arcore_device/arcore.h
+++ b/chrome/browser/android/vr/arcore_device/arcore.h
@@ -45,7 +45,6 @@
 
   virtual bool RequestHitTest(
       const mojom::XRRayPtr& ray,
-      const gfx::Size& image_size,
       std::vector<mojom::XRHitResultPtr>* hit_results) = 0;
 
   virtual void Pause() = 0;
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.cc b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
index 370b03a..1f6a024 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
@@ -265,8 +265,7 @@
   gl_thread_task_runner_->PostTask(
       FROM_HERE,
       base::BindOnce(&ArCoreGl::ProcessFrame, weak_ptr_factory_.GetWeakPtr(),
-                     base::Passed(&frame_data), frame_size,
-                     base::Passed(&callback)));
+                     base::Passed(&frame_data), base::Passed(&callback)));
 }
 
 void ArCoreGl::RequestHitTest(
@@ -284,7 +283,6 @@
 
 void ArCoreGl::ProcessFrame(
     mojom::XRFrameDataPtr frame_data,
-    const gfx::Size& frame_size,
     mojom::XRFrameDataProvider::GetFrameDataCallback callback) {
   DCHECK(IsOnGlThread());
   DCHECK(is_initialized_);
@@ -304,7 +302,7 @@
   // obvious how the timing between the results and the frame should go.
   for (auto& request : hit_test_requests_) {
     std::vector<mojom::XRHitResultPtr> results;
-    if (arcore_->RequestHitTest(request->ray, frame_size, &results)) {
+    if (arcore_->RequestHitTest(request->ray, &results)) {
       std::move(request->callback).Run(std::move(results));
     } else {
       // Hit test failed, i.e. unprojected location was offscreen.
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.h b/chrome/browser/android/vr/arcore_device/arcore_gl.h
index 1dd2d82..e12f33a 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.h
@@ -67,9 +67,7 @@
   base::WeakPtr<ArCoreGl> GetWeakPtr();
 
  private:
-  // TODO(https://crbug/835948): remove frame_size.
   void ProcessFrame(mojom::XRFrameDataPtr frame_data,
-                    const gfx::Size& frame_size,
                     mojom::XRFrameDataProvider::GetFrameDataCallback callback);
 
   bool InitializeGl();
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.cc b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
index 5ddb02e9..3fd89bd 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
@@ -207,10 +207,8 @@
   return result;
 }
 
-// TODO(835948): remove image-size
 bool ArCoreImpl::RequestHitTest(
     const mojom::XRRayPtr& ray,
-    const gfx::Size& image_size,
     std::vector<mojom::XRHitResultPtr>* hit_results) {
   DCHECK(IsOnGlThread());
   DCHECK(arcore_session_.is_valid());
@@ -227,17 +225,14 @@
     return false;
   }
 
-  gfx::PointF screen_point;
-  if (!TransformRayToScreenSpace(ray, image_size, &screen_point)) {
-    return false;
-  }
-
   // ArCore returns hit-results in sorted order, thus providing the guarantee
   // of sorted results promised by the WebXR spec for requestHitTest().
-  ArFrame_hitTest(arcore_session_.get(), arcore_frame_.get(),
-                  screen_point.x() * image_size.width(),
-                  screen_point.y() * image_size.height(),
-                  arcore_hit_result_list.get());
+  float origin[3] = {ray->origin.x(), ray->origin.y(), ray->origin.z()};
+  float direction[3] = {ray->direction.x(), ray->direction.y(),
+                        ray->direction.z()};
+
+  ArFrame_hitTestRay(arcore_session_.get(), arcore_frame_.get(), origin,
+                     direction, arcore_hit_result_list.get());
 
   int arcore_hit_result_list_size = 0;
   ArHitResultList_getSize(arcore_session_.get(), arcore_hit_result_list.get(),
@@ -315,61 +310,6 @@
   return true;
 }
 
-// TODO(835948): remove this method.
-bool ArCoreImpl::TransformRayToScreenSpace(const mojom::XRRayPtr& ray,
-                                           const gfx::Size& image_size,
-                                           gfx::PointF* screen_point) {
-  DCHECK(IsOnGlThread());
-  DCHECK(arcore_session_.is_valid());
-  DCHECK(arcore_frame_.is_valid());
-
-  internal::ScopedArCoreObject<ArCamera*> arcore_camera;
-  ArFrame_acquireCamera(
-      arcore_session_.get(), arcore_frame_.get(),
-      internal::ScopedArCoreObject<ArCamera*>::Receiver(arcore_camera).get());
-  DCHECK(arcore_camera.is_valid())
-      << "ArFrame_acquireCamera failed despite documentation saying it cannot";
-
-  // Get the projection matrix.
-  float projection_matrix[16];
-  ArCamera_getProjectionMatrix(arcore_session_.get(), arcore_camera.get(), 0.1,
-                               1000, projection_matrix);
-  SkMatrix44 projection44;
-  projection44.setColMajorf(projection_matrix);
-  gfx::Transform projection_transform(projection44);
-
-  // Get the view matrix.
-  float view_matrix[16];
-  ArCamera_getViewMatrix(arcore_session_.get(), arcore_camera.get(),
-                         view_matrix);
-  SkMatrix44 view44;
-  view44.setColMajorf(view_matrix);
-  gfx::Transform view_transform(view44);
-
-  // Create the combined matrix.
-  gfx::Transform proj_view_transform = projection_transform * view_transform;
-
-  // Transform the ray into screen space.
-  gfx::Point3F screen_point_3d = ray->origin + ray->direction;
-
-  proj_view_transform.TransformPoint(&screen_point_3d);
-  if (screen_point_3d.x() < -1 || screen_point_3d.x() > 1 ||
-      screen_point_3d.y() < -1 || screen_point_3d.y() > 1) {
-    // The point does not project back into screen space, so this won't
-    // work with the screen-space-based hit-test API.
-    DLOG(ERROR) << "Invalid ray - does not originate from device screen.";
-    return false;
-  }
-
-  screen_point->set_x((screen_point_3d.x() + 1) / 2);
-  // The calculated point in GL's normalized device coordinates (NDC) ranges
-  // from -1..1, with -1, -1 at the bottom left of the screen, +1 at the top.
-  // The output screen space coordinates range from 0..1, with 0, 0 at the
-  // top left.
-  screen_point->set_y((-screen_point_3d.y() + 1) / 2);
-  return true;
-}
-
 bool ArCoreImpl::IsOnGlThread() {
   return gl_thread_task_runner_->BelongsToCurrentThread();
 }
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.h b/chrome/browser/android/vr/arcore_device/arcore_impl.h
index 2561e08..344d7fa 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.h
@@ -82,14 +82,9 @@
   void Pause() override;
   void Resume() override;
   bool RequestHitTest(const mojom::XRRayPtr& ray,
-                      const gfx::Size& image_size,
                       std::vector<mojom::XRHitResultPtr>* hit_results) override;
 
  private:
-  bool TransformRayToScreenSpace(const mojom::XRRayPtr& ray,
-                                 const gfx::Size& image_size,
-                                 gfx::PointF* screen_point);
-
   bool IsOnGlThread();
   base::WeakPtr<ArCoreImpl> GetWeakPtr() {
     return weak_ptr_factory_.GetWeakPtr();
diff --git a/chrome/browser/android/vr/arcore_device/arcore_shim.cc b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
index 98a009875..9b9fabff 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_shim.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
@@ -22,7 +22,7 @@
   CALL(ArFrame_acquireCamera)            \
   CALL(ArFrame_create)                   \
   CALL(ArFrame_destroy)                  \
-  CALL(ArFrame_hitTest)                  \
+  CALL(ArFrame_hitTestRay)               \
   CALL(ArFrame_transformDisplayUvCoords) \
   CALL(ArHitResult_create)               \
   CALL(ArHitResult_destroy)              \
@@ -152,13 +152,13 @@
   arcore_api->impl_ArFrame_destroy(frame);
 }
 
-void ArFrame_hitTest(const ArSession* session,
-                     const ArFrame* frame,
-                     float pixel_x,
-                     float pixel_y,
-                     ArHitResultList* out_hit_results) {
-  arcore_api->impl_ArFrame_hitTest(session, frame, pixel_x, pixel_y,
-                                   out_hit_results);
+void ArFrame_hitTestRay(const ArSession* session,
+                        const ArFrame* frame,
+                        const float* ray_origin_3,
+                        const float* ray_direction_3,
+                        ArHitResultList* out_hit_results) {
+  arcore_api->impl_ArFrame_hitTestRay(session, frame, ray_origin_3,
+                                      ray_direction_3, out_hit_results);
 }
 
 void ArFrame_transformDisplayUvCoords(const ArSession* session,
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.cc b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
index b4bdfc19..1205748 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.cc
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
@@ -203,7 +203,6 @@
 
 bool FakeArCore::RequestHitTest(
     const mojom::XRRayPtr& ray,
-    const gfx::Size& image_size,
     std::vector<mojom::XRHitResultPtr>* hit_results) {
   mojom::XRHitResultPtr hit = mojom::XRHitResult::New();
   hit->hit_matrix.resize(16);
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.h b/chrome/browser/android/vr/arcore_device/fake_arcore.h
index d78672a..12b560d8 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.h
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.h
@@ -35,7 +35,6 @@
   void Resume() override;
 
   bool RequestHitTest(const mojom::XRRayPtr& ray,
-                      const gfx::Size& image_size,
                       std::vector<mojom::XRHitResultPtr>* hit_results) override;
 
   void SetCameraAspect(float aspect) { camera_aspect_ = aspect; }
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index c935149..83e0983 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3926,7 +3926,7 @@
   return false;
 }
 
-std::unique_ptr<base::Value>
+base::Optional<service_manager::Manifest>
 ChromeContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
   int id = -1;
@@ -3943,11 +3943,12 @@
   else if (name == content::mojom::kUtilityServiceName)
     id = IDR_CHROME_CONTENT_UTILITY_MANIFEST_OVERLAY;
   if (id == -1)
-    return nullptr;
+    return base::nullopt;
 
   base::StringPiece manifest_contents =
       rb.GetRawDataResourceForScale(id, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 std::vector<content::ContentBrowserClient::ServiceManifestInfo>
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index b3d2fa4..d8aaa26 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -408,7 +408,7 @@
       service_manager::mojom::ServiceRequest request) override;
   bool ShouldTerminateOnServiceQuit(
       const service_manager::Identity& id) override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   std::vector<content::ContentBrowserClient::ServiceManifestInfo>
   GetExtraServiceManifests() override;
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index 9034553..f97ded67 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -48,6 +48,7 @@
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/session_manager_client.h"
 #include "chromeos/printing/printer_configuration.h"
+#include "chromeos/services/assistant/public/mojom/constants.mojom.h"
 #include "chromeos/services/machine_learning/public/cpp/service_connection.h"
 #include "components/arc/arc_prefs.h"
 #include "components/arc/metrics/arc_metrics_constants.h"
@@ -1202,6 +1203,84 @@
 }
 
 ///////////////////////////////////////////////////////////////////////////////
+// AutotestPrivateSendAssistantTextQueryFunction
+///////////////////////////////////////////////////////////////////////////////
+AutotestPrivateSendAssistantTextQueryFunction::
+    AutotestPrivateSendAssistantTextQueryFunction()
+    : assistant_interaction_subscriber_binding_(this),
+      result_(std::make_unique<base::DictionaryValue>()) {}
+
+AutotestPrivateSendAssistantTextQueryFunction::
+    ~AutotestPrivateSendAssistantTextQueryFunction() = default;
+
+ExtensionFunction::ResponseAction
+AutotestPrivateSendAssistantTextQueryFunction::Run() {
+  DVLOG(1) << "AutotestPrivateSendAssistantTextQueryFunction";
+
+  std::unique_ptr<api::autotest_private::SendAssistantTextQuery::Params> params(
+      api::autotest_private::SendAssistantTextQuery::Params::Create(*args_));
+  EXTENSION_FUNCTION_VALIDATE(params);
+
+  Profile* profile = Profile::FromBrowserContext(browser_context());
+  if (!profile || arc::IsAssistantAllowedForProfile(profile) !=
+                      ash::mojom::AssistantAllowedState::ALLOWED) {
+    return RespondNow(Error("Assistant is not available for the current user"));
+  }
+
+  // Bind to Assistant service interface.
+  service_manager::Connector* connector =
+      content::BrowserContext::GetConnectorFor(profile);
+  connector->BindInterface(chromeos::assistant::mojom::kServiceName,
+                           &assistant_);
+
+  // Subscribe to Assistant interaction events.
+  chromeos::assistant::mojom::AssistantInteractionSubscriberPtr ptr;
+  assistant_interaction_subscriber_binding_.Bind(mojo::MakeRequest(&ptr));
+  assistant_->AddAssistantInteractionSubscriber(std::move(ptr));
+
+  // Start text interaction with Assistant server.
+  assistant_->StartTextInteraction(params->query, true);
+
+  // Set up a delayed timer to wait for the query response and hold a reference
+  // to |this| to avoid being destructed. Also make sure we stop and respond
+  // when timeout.
+  timeout_timer_.Start(
+      FROM_HERE, base::TimeDelta::FromMilliseconds(params->timeout_ms),
+      base::BindOnce(&AutotestPrivateSendAssistantTextQueryFunction::Timeout,
+                     this));
+
+  return RespondLater();
+}
+
+void AutotestPrivateSendAssistantTextQueryFunction::OnTextResponse(
+    const std::string& response) {
+  result_->SetKey("text", base::Value(response));
+}
+
+void AutotestPrivateSendAssistantTextQueryFunction::OnHtmlResponse(
+    const std::string& response,
+    const std::string& fallback) {
+  result_->SetKey("htmlResponse", base::Value(response));
+  result_->SetKey("htmlFallback", base::Value(fallback));
+}
+
+void AutotestPrivateSendAssistantTextQueryFunction::OnInteractionFinished(
+    AssistantInteractionResolution resolution) {
+  if (resolution != AssistantInteractionResolution::kNormal) {
+    Respond(Error("Interaction ends abnormally."));
+    timeout_timer_.AbandonAndStop();
+    return;
+  }
+
+  Respond(OneArgument(std::move(result_)));
+  timeout_timer_.AbandonAndStop();
+}
+
+void AutotestPrivateSendAssistantTextQueryFunction::Timeout() {
+  Respond(Error("Assistant response timeout."));
+}
+
+///////////////////////////////////////////////////////////////////////////////
 // AutotestPrivateAPI
 ///////////////////////////////////////////////////////////////////////////////
 
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
index 39939e2..89d14e6 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
@@ -16,6 +16,7 @@
 #include "base/timer/timer.h"
 #include "chrome/browser/chromeos/printing/cups_printers_manager.h"
 #include "chrome/browser/extensions/chrome_extension_function.h"
+#include "chromeos/services/assistant/public/mojom/assistant.mojom.h"
 #include "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
 #include "ui/message_center/public/cpp/notification_types.h"
@@ -443,6 +444,54 @@
   base::OneShotTimer timeout_timer_;
 };
 
+class AutotestPrivateSendAssistantTextQueryFunction
+    : public UIThreadExtensionFunction,
+      public chromeos::assistant::mojom::AssistantInteractionSubscriber {
+ public:
+  AutotestPrivateSendAssistantTextQueryFunction();
+  DECLARE_EXTENSION_FUNCTION("autotestPrivate.sendAssistantTextQuery",
+                             AUTOTESTPRIVATE_SENDASSISTANTTEXTQUERY)
+
+ private:
+  ~AutotestPrivateSendAssistantTextQueryFunction() override;
+  ResponseAction Run() override;
+
+  using AssistantSuggestionPtr =
+      chromeos::assistant::mojom::AssistantSuggestionPtr;
+  using AssistantInteractionResolution =
+      chromeos::assistant::mojom::AssistantInteractionResolution;
+
+  // chromeos::assistant::mojom::AssistantInteractionSubscriber:
+  void OnHtmlResponse(const std::string& response,
+                      const std::string& fallback) override;
+  void OnTextResponse(const std::string& response) override;
+  void OnInteractionFinished(
+      AssistantInteractionResolution resolution) override;
+  void OnInteractionStarted(bool is_voice_interaction) override {}
+  void OnSuggestionsResponse(
+      std::vector<AssistantSuggestionPtr> response) override {}
+  void OnOpenUrlResponse(const GURL& url) override {}
+  void OnSpeechRecognitionStarted() override {}
+  void OnSpeechRecognitionIntermediateResult(
+      const std::string& high_confidence_text,
+      const std::string& low_confidence_text) override {}
+  void OnSpeechRecognitionEndOfUtterance() override {}
+  void OnSpeechRecognitionFinalResult(
+      const std::string& final_result) override {}
+  void OnSpeechLevelUpdated(float speech_level) override {}
+  void OnTtsStarted(bool due_to_error) override {}
+
+  // Called when Assistant service fails to respond in a certain amount of
+  // time. We will respond with an error.
+  void Timeout();
+
+  chromeos::assistant::mojom::AssistantPtr assistant_;
+  mojo::Binding<chromeos::assistant::mojom::AssistantInteractionSubscriber>
+      assistant_interaction_subscriber_binding_;
+  base::OneShotTimer timeout_timer_;
+  std::unique_ptr<base::DictionaryValue> result_;
+};
+
 // The profile-keyed service that manages the autotestPrivate extension API.
 class AutotestPrivateAPI : public BrowserContextKeyedAPI {
  public:
diff --git a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
index 192c228ec..c1ef656 100644
--- a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
+++ b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
@@ -16,7 +16,6 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
-#include "base/memory/linked_ptr.h"
 #include "chrome/browser/extensions/api/declarative_content/content_action.h"
 #include "chrome/browser/extensions/api/declarative_content/content_condition.h"
 #include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index e23f941..0d0cd998 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -181,7 +181,7 @@
 // Tasks.
 class TestIPCSender : public IPC::Sender {
  public:
-  typedef std::list<linked_ptr<IPC::Message> > SentMessages;
+  using SentMessages = std::list<std::unique_ptr<IPC::Message>>;
 
   // Adds a Task to the queue. We will fire these in order as events are
   // dispatched.
@@ -210,7 +210,7 @@
                                                   task_queue_.front());
     task_queue_.pop();
 
-    sent_messages_.push_back(linked_ptr<IPC::Message>(message));
+    sent_messages_.push_back(base::WrapUnique(message));
     return true;
   }
 
diff --git a/chrome/browser/extensions/chrome_test_extension_loader.cc b/chrome/browser/extensions/chrome_test_extension_loader.cc
index b9483cd..1b60d34 100644
--- a/chrome/browser/extensions/chrome_test_extension_loader.cc
+++ b/chrome/browser/extensions/chrome_test_extension_loader.cc
@@ -8,12 +8,14 @@
 
 #include "base/files/file_util.h"
 #include "base/run_loop.h"
+#include "base/scoped_observer.h"
 #include "base/threading/thread_restrictions.h"
 #include "chrome/browser/extensions/chrome_extension_test_notification_observer.h"
 #include "chrome/browser/extensions/crx_installer.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/extensions/extension_util.h"
 #include "chrome/browser/extensions/unpacked_installer.h"
+#include "chrome/browser/profiles/profile.h"
 #include "content/public/browser/notification_details.h"
 #include "content/public/browser/notification_source.h"
 #include "content/public/test/test_utils.h"
@@ -22,12 +24,48 @@
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/extension_util.h"
 #include "extensions/browser/notification_types.h"
+#include "extensions/browser/shared_user_script_master.h"
 #include "extensions/browser/test_extension_registry_observer.h"
+#include "extensions/browser/user_script_loader.h"
+#include "extensions/common/manifest_handlers/content_scripts_handler.h"
 #include "extensions/test/extension_test_notification_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace extensions {
 
+namespace {
+
+// A single-use class to wait for content scripts to be loaded.
+class ContentScriptLoadWaiter : public UserScriptLoader::Observer {
+ public:
+  ContentScriptLoadWaiter(UserScriptLoader* loader, const HostID& host_id)
+      : host_id_(host_id), loader_(loader), scoped_observer_(this) {
+    scoped_observer_.Add(loader_);
+  }
+  ~ContentScriptLoadWaiter() = default;
+
+  void Wait() { run_loop_.Run(); }
+
+ private:
+  // UserScriptLoader::Observer:
+  void OnScriptsLoaded(UserScriptLoader* loader) override {
+    if (loader_->HasLoadedScripts(host_id_)) {
+      // Quit when idle in order to allow other observers to run.
+      run_loop_.QuitWhenIdle();
+    }
+  }
+  void OnUserScriptLoaderDestroyed(UserScriptLoader* loader) override {}
+
+  const HostID host_id_;
+  UserScriptLoader* const loader_;
+  base::RunLoop run_loop_;
+  ScopedObserver<UserScriptLoader, UserScriptLoader::Observer> scoped_observer_;
+
+  DISALLOW_COPY_AND_ASSIGN(ContentScriptLoadWaiter);
+};
+
+}  // namespace
+
 ChromeTestExtensionLoader::ChromeTestExtensionLoader(
     content::BrowserContext* browser_context)
     : browser_context_(browser_context),
@@ -66,6 +104,7 @@
     return nullptr;
 
   extension_id_ = extension->id();
+
   // Trying to reload a shared module (as we do when adjusting extension
   // permissions) causes ExtensionService to crash. Only adjust permissions for
   // non-shared modules.
@@ -95,14 +134,26 @@
     return nullptr;
 
   base::RunLoop().RunUntilIdle();
-  if (!WaitForExtensionReady()) {
+  if (!WaitForExtensionReady(*extension)) {
     ADD_FAILURE() << "Failed to wait for extension ready";
     return nullptr;
   }
   return extension;
 }
 
-bool ChromeTestExtensionLoader::WaitForExtensionReady() {
+bool ChromeTestExtensionLoader::WaitForExtensionReady(
+    const Extension& extension) {
+  SharedUserScriptMaster* user_script_master =
+      ExtensionSystem::Get(browser_context_)->shared_user_script_master();
+  // Note: |user_script_master| can be null in tests.
+  if (user_script_master &&
+      !ContentScriptsInfo::GetContentScripts(&extension).empty()) {
+    UserScriptLoader* user_script_loader = user_script_master->script_loader();
+    HostID host_id(HostID::EXTENSIONS, extension_id_);
+    if (!user_script_loader->HasLoadedScripts(host_id))
+      ContentScriptLoadWaiter(user_script_loader, host_id).Wait();
+  }
+
   return ChromeExtensionTestNotificationObserver(browser_context_)
       .WaitForExtensionViewsToLoad();
 }
diff --git a/chrome/browser/extensions/chrome_test_extension_loader.h b/chrome/browser/extensions/chrome_test_extension_loader.h
index 2d8b5b1..69c31590 100644
--- a/chrome/browser/extensions/chrome_test_extension_loader.h
+++ b/chrome/browser/extensions/chrome_test_extension_loader.h
@@ -97,7 +97,7 @@
   bool CheckInstallWarnings(const Extension& extension);
 
   // Waits for the extension to finish setting up.
-  bool WaitForExtensionReady();
+  bool WaitForExtensionReady(const Extension& extension);
 
   // The associated context and services.
   content::BrowserContext* browser_context_ = nullptr;
diff --git a/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc b/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc
new file mode 100644
index 0000000..0adbe344
--- /dev/null
+++ b/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc
@@ -0,0 +1,97 @@
+// 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 "chrome/browser/extensions/chrome_test_extension_loader.h"
+
+#include "base/strings/strcat.h"
+#include "chrome/browser/extensions/extension_apitest.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/test/browser_test_utils.h"
+#include "extensions/browser/extension_system.h"
+#include "extensions/browser/shared_user_script_master.h"
+#include "extensions/browser/user_script_loader.h"
+#include "extensions/common/host_id.h"
+#include "extensions/test/test_extension_dir.h"
+#include "net/dns/mock_host_resolver.h"
+
+namespace extensions {
+
+class ChromeTestExtensionLoaderUnitTest : public ExtensionApiTest {
+ public:
+  ChromeTestExtensionLoaderUnitTest() {}
+  ~ChromeTestExtensionLoaderUnitTest() override {}
+
+  void SetUpOnMainThread() override {
+    ExtensionApiTest::SetUpOnMainThread();
+    host_resolver()->AddRule("*", "127.0.0.1");
+    ASSERT_TRUE(StartEmbeddedTestServer());
+  }
+};
+
+// Tests that when loading an extension, the test loading code waits for
+// content scripts to be fully read and initialized before continuing.
+// Regression test for https://crbug.com/898682.
+IN_PROC_BROWSER_TEST_F(ChromeTestExtensionLoaderUnitTest,
+                       ContentScriptsAreFullyLoaded) {
+  TestExtensionDir test_dir;
+  test_dir.WriteManifest(
+      R"({
+           "name": "Test Ext",
+           "manifest_version": 2,
+           "version": "1.0",
+           "content_scripts": [{
+             "matches": ["http://example.com:*/*"],
+             "js": ["script1.js", "script2.js"],
+             "run_at": "document_end"
+           }]
+         })");
+  constexpr char kScriptTemplate[] =
+      R"((function() {
+           let span = document.createElement('span');
+           span.id = '%s';
+           document.body.appendChild(span);
+         })();
+         %s)";
+
+  // Create an extension that has reasonably large content scripts. The size of
+  // the file is important, since it needs to be enough that reading it isn't
+  // instantaneous. In local testing, this size (roughly 1MB) was sufficient to
+  // consistently cause failures when the loading code did not properly wait for
+  // content scripts.
+  std::string lots_of_content =
+      base::StrCat({"// ", std::string(1024 * 1024, 'a')});
+  test_dir.WriteFile(
+      FILE_PATH_LITERAL("script1.js"),
+      base::StringPrintf(kScriptTemplate, "script1", lots_of_content.c_str()));
+  test_dir.WriteFile(
+      FILE_PATH_LITERAL("script2.js"),
+      base::StringPrintf(kScriptTemplate, "script2", lots_of_content.c_str()));
+
+  scoped_refptr<const Extension> extension =
+      ChromeTestExtensionLoader(profile()).LoadExtension(
+          test_dir.UnpackedPath());
+  ASSERT_TRUE(extension);
+
+  ExtensionSystem* extension_system = ExtensionSystem::Get(profile());
+  EXPECT_TRUE(
+      extension_system->shared_user_script_master()
+          ->script_loader()
+          ->HasLoadedScripts(HostID(HostID::EXTENSIONS, extension->id())));
+
+  // Sanity check: Test that the scripts inject.
+  ui_test_utils::NavigateToURL(
+      browser(), embedded_test_server()->GetURL("example.com", "/simple.html"));
+
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  EXPECT_EQ(true, content::EvalJs(web_contents,
+                                  "!!document.getElementById('script1');"));
+  EXPECT_EQ(true, content::EvalJs(web_contents,
+                                  "!!document.getElementById('script2');"));
+}
+
+}  // namespace extensions
diff --git a/chrome/browser/printing/print_view_manager.cc b/chrome/browser/printing/print_view_manager.cc
index 68e831f..6e42720 100644
--- a/chrome/browser/printing/print_view_manager.cc
+++ b/chrome/browser/printing/print_view_manager.cc
@@ -163,6 +163,7 @@
     CHECK(it != map.end());
     it->second.Run();
     map.erase(it);
+    scripted_print_preview_rph_->SetBlocked(false);
     scripted_print_preview_rph_ = nullptr;
   }
   print_preview_state_ = NOT_PREVIEWING;
@@ -228,6 +229,7 @@
   map[rph] = base::Bind(&PrintViewManager::OnScriptedPrintPreviewReply,
                         base::Unretained(this), reply_msg);
   scripted_print_preview_rph_ = rph;
+  scripted_print_preview_rph_->SetBlocked(true);
 }
 
 void PrintViewManager::OnShowScriptedPrintPreview(content::RenderFrameHost* rfh,
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
index 536d2a9..28e0b7ca 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />፣ የምናሌ ንጥል</translation>
 <translation id="3393605254399152980">እርስዎ የነኩትን ለመስማት በአንድ ጣት ይጎትቱ</translation>
 <translation id="3406283310380167331">የቅጾች ዝርዝር አሳይ</translation>
-<translation id="3423495725743882470">ረድፍ $1 ዓምድ $2</translation>
 <translation id="3457000393508828486">በከፊል ተጭኗል</translation>
 <translation id="3458865416877308321"><ph name="NAME" />፣ ጠፍቷል</translation>
 <translation id="3462439746547587373"><ph name="NAME" />፣ አዝራር</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">የራስ-አጠናቅቅ ዝርዝር</translation>
 <translation id="3810838688059735925">ቪዲዮ</translation>
-<translation id="3812237531158591503">$1 ለጥፍ።</translation>
 <translation id="3816633764618089385">ቀጣይ ሚዲያ</translation>
 <translation id="3819376190738087562">ምንም ዝላዮች የሉም።</translation>
 <translation id="385383972552776628">የአማራጮች ገጹን ይክፈቱ</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">ሁነታዊ ማንቂያ</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{ድርብ ሰረዝ}one{# ድርብ ሰረዞች}other{# ድርብ ሰረዞች}}</translation>
 <translation id="5411891038905756502">ምንም ቀዳሚ የመዝለያ ነጥብ የለም።</translation>
-<translation id="5417034931411865818">ከማዞሪያ ቁልፍ $1 ስር ያለውን ንጥል ጠቅ ያድርጉት</translation>
 <translation id="5435274640623994081">የጆሮ አዶ ምዝግብ ማስታወሻን ያንቁ</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ያንሳል}one{# የያንሳል ምልክቶች}other{# የያንሳል ምልክቶች}}</translation>
 <translation id="5444587279251314700">(ገቢር)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">ባዶ ቦታ</translation>
 <translation id="6132506484792346370">የዝርዝር ሳጥን ወይም የጥምር ሳጥን</translation>
-<translation id="6138576064440631958">$1 ሕብረዜማ</translation>
 <translation id="6142308968191113180">ርዕስ 4</translation>
 <translation id="6164829606128959761">ሜትር</translation>
 <translation id="6169420925157477918">ረጅም ማብራሪያ ያለው ምስል</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">ምንም ቀዳሚ የርዕስ ንጥል የለም።</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">ቀዳሚ ርዕስ</translation>
-<translation id="6378565991815958969">$1 ቅዳ።</translation>
 <translation id="6385591741672306837">ዓምድ</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">ምንም ቀዳሚ የሬዲዮ አዝራር የለም።</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">ወደ ቀጣይ ረድፍ ይሂዱ</translation>
 <translation id="8215202828671303819">ብዙ ምርጫ</translation>
 <translation id="826825447994856889">መግቢያ</translation>
-<translation id="826991282343985864">ረ$1አ$2</translation>
 <translation id="8276439074553447000">ሊተኮርበት ወደሚችል ቀዳሚ ንጥል ይዝለሉ</translation>
 <translation id="8278417001922463147">ምንም ቀዳሚ ጽሑፍ የለም።</translation>
 <translation id="8283603667300770666">ቀጣይ የቅጽ መስክ</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">ምንም ቀዳሚ ተንሸራታች የለም።</translation>
 <translation id="9087707351856729768">በራስ-ሰር ለማጠናቀቅ ይተይቡ።</translation>
 <translation id="9089864840575085222">የትየባ ማስተጋባት ዑደት</translation>
-<translation id="9105227991373418255">$1 ቁረጥ።</translation>
 <translation id="9107530006868467849">ምንም ቀድማኢ የሚዲያ ንዑስ ፕሮግራም የለም።</translation>
 <translation id="9108370397979208512">ሒሳብ</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
index 132897f7..23b5904 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">عنصر القائمة <ph name="NAME" /></translation>
 <translation id="3393605254399152980">السحب بإصبع واحد لسماع التعليقات عند لمس الشاشة</translation>
 <translation id="3406283310380167331">عرض قائمة النماذج</translation>
-<translation id="3423495725743882470">صف $1 عمود $2</translation>
 <translation id="3457000393508828486">مضغوط جزئيًا</translation>
 <translation id="3458865416877308321"><ph name="NAME" />، في وضع إيقاف التشغيل</translation>
 <translation id="3462439746547587373">الزر <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}zero{#}two{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">إكمال تلقائي على هيئة قائمة</translation>
 <translation id="3810838688059735925">فيديو</translation>
-<translation id="3812237531158591503">لصق $1.</translation>
 <translation id="3816633764618089385">الوسائط التالية</translation>
 <translation id="3819376190738087562">ليست هناك نقاط انتقال.</translation>
 <translation id="385383972552776628">فتح صفحة الخيارات</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">تنبيه نمطي</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{فاصلة منقوطة واحدة}zero{# semicolons}two{فاصلتان منقوطتان (#)}few{# فواصل منقوطة}many{# فاصلة منقوطة}other{# من الفواصل المنقوطة}}</translation>
 <translation id="5411891038905756502">ليست هناك نقطة انتقال سابقة.</translation>
-<translation id="5417034931411865818">النقر على العنصر أسفل مفتاح التوجيه $1</translation>
 <translation id="5435274640623994081">تفعيل ميزة تسجيل الرمز الصوتي</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{علامة أقل من واحدة}zero{# less than signs}two{علامتا أقل من (#)}few{# علامات أقل من}many{# علامة أقل من}other{# من علامات أقل من}}</translation>
 <translation id="5444587279251314700">(نشط)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">مسافة</translation>
 <translation id="6132506484792346370">مربع القائمة أو مربع التحرير والسرد</translation>
-<translation id="6138576064440631958">$1 متآلفة</translation>
 <translation id="6142308968191113180">العنوان الرابع</translation>
 <translation id="6164829606128959761">متر</translation>
 <translation id="6169420925157477918">الصورة بها وصف مطول</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">ليس هناك عنصر قائمة سابق.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">العنوان السابق</translation>
-<translation id="6378565991815958969">نسخ $1.</translation>
 <translation id="6385591741672306837">العمود</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">ليس هناك زر اختيار سابق.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">انتقِل إلى الصف التالي.</translation>
 <translation id="8215202828671303819">تحديد متعدد</translation>
 <translation id="826825447994856889">مقدمة</translation>
-<translation id="826991282343985864">ص$1ع$2</translation>
 <translation id="8276439074553447000">الانتقال إلى العنصر السابق القابل للتركيز</translation>
 <translation id="8278417001922463147">لا تتوفر مقالة سابقة.</translation>
 <translation id="8283603667300770666">حقل النموذج التالي</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">ليس هناك شريط تمرير سابق.</translation>
 <translation id="9087707351856729768">يُرجى الكتابة للإكمال التلقائي.</translation>
 <translation id="9089864840575085222">دورة صدى الكتابة</translation>
-<translation id="9105227991373418255">قص $1.</translation>
 <translation id="9107530006868467849">لا توجد أداة للوسائط السابقة.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
index 8b53955..4c0b8f3 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549">„<ph name="NAME" />“, елемент от меню</translation>
 <translation id="3393605254399152980">Плъзнете с един пръст, за да чуете какво докосвате</translation>
 <translation id="3406283310380167331">Показване на списъка с формуляри</translation>
-<translation id="3423495725743882470">ред $1, колона $2</translation>
 <translation id="3457000393508828486">Частично натиснато</translation>
 <translation id="3458865416877308321">„<ph name="NAME" />“ в изключено състояние</translation>
 <translation id="3462439746547587373">„<ph name="NAME" />“, бутон</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Автоматично довършване в списък</translation>
 <translation id="3810838688059735925">Видео</translation>
-<translation id="3812237531158591503">Поставяне на $1.</translation>
 <translation id="3816633764618089385">Следващият мултимедиен елемент</translation>
 <translation id="3819376190738087562">Няма преминавания.</translation>
 <translation id="385383972552776628">Отваряне на страницата с опции</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Модален сигнал</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{точка и запетая}other{# точки и запетаи}}</translation>
 <translation id="5411891038905756502">Няма предишна точка за преминаване.</translation>
-<translation id="5417034931411865818">Кликване върху елемента под ключ за пренасочване $1</translation>
 <translation id="5435274640623994081">Активиране на записването в регистрационен файл за аудиоиконите</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{знак за по-малко}other{# знака за по-малко}}</translation>
 <translation id="5444587279251314700">(активен раздел)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">бутон</translation>
 <translation id="6129953537138746214">Интервал</translation>
 <translation id="6132506484792346370">Списъчно поле или разгъващ се списък</translation>
-<translation id="6138576064440631958">комбинация от $1</translation>
 <translation id="6142308968191113180">Заглавие от четвърто ниво</translation>
 <translation id="6164829606128959761">индикатор</translation>
 <translation id="6169420925157477918">Изображение с дълго описание</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Няма предишен списъчен елемент.</translation>
 <translation id="6364795331201459219">заглавие от шесто ниво</translation>
 <translation id="6368143427468974988">Предишното заглавие</translation>
-<translation id="6378565991815958969">Копиране на $1.</translation>
 <translation id="6385591741672306837">кол.</translation>
 <translation id="6387719785439924554">странично съдържание</translation>
 <translation id="6411426777058107714">Няма предишен бутон за избор.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Преминаване към следващия ред</translation>
 <translation id="8215202828671303819">Избор на няколко елемента</translation>
 <translation id="826825447994856889">Въведение</translation>
-<translation id="826991282343985864">р$1к$2</translation>
 <translation id="8276439074553447000">Преминаване към предишния елемент, който може да получи фокус</translation>
 <translation id="8278417001922463147">Няма предишна статия.</translation>
 <translation id="8283603667300770666">Следващото поле във формуляра</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Няма предишен плъзгач.</translation>
 <translation id="9087707351856729768">Въведете текст за автоматично довършване.</translation>
 <translation id="9089864840575085222">Цикъл на ехото при въвеждане</translation>
-<translation id="9105227991373418255">Изрязване на $1.</translation>
 <translation id="9107530006868467849">Няма предишно приспособление за мултимедия.</translation>
 <translation id="9108370397979208512">математически израз</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
index 04d6a6f..59ad9e20 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, মেনু আইটেম</translation>
 <translation id="3393605254399152980">আপনি কী টাচ করছেন তা শোনার জন্য টাচস্ক্রিনে রাখা একটি আঙ্গুল টেনে আনুন</translation>
 <translation id="3406283310380167331">ফর্ম তালিকা দেখান</translation>
-<translation id="3423495725743882470">সারি $1 কলাম $2</translation>
 <translation id="3457000393508828486">আংশিক টেপা</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, বন্ধ করুন</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, বোতাম</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">স্বতসম্পূর্ণ তালিকা</translation>
 <translation id="3810838688059735925">ভিডিও</translation>
-<translation id="3812237531158591503">$1 আটকান।</translation>
 <translation id="3816633764618089385">পরবর্তী মিডিয়া</translation>
 <translation id="3819376190738087562">কোনো জাম্প নেই৷</translation>
 <translation id="385383972552776628">বিকল্প পৃষ্ঠা খুলুন</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">একটি মোডাল সতর্কতা</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{সেমিকোলন}one{#টি সেমিকোলন}other{#টি সেমিকোলন}}</translation>
 <translation id="5411891038905756502">কোনো পূর্ববর্তী জাম্প বিন্দু নেই৷</translation>
-<translation id="5417034931411865818">রাউটিং কী $1 এর নিচের আইটেমটি ক্লিক করুন</translation>
 <translation id="5435274640623994081">ইয়ারকন লগ-ইন চালু করুন</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ক্ষুদ্রতম}one{#টি ক্ষুদ্রতম চিহ্ন}other{#টি ক্ষুদ্রতম চিহ্ন}}</translation>
 <translation id="5444587279251314700">(সক্রিয়)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">ব্যবধান</translation>
 <translation id="6132506484792346370">একটি তালিকা বাক্স বা কম্বো বাক্স</translation>
-<translation id="6138576064440631958">$1 কর্ড</translation>
 <translation id="6142308968191113180">শিরোলেখ ৪</translation>
 <translation id="6164829606128959761">মিটার</translation>
 <translation id="6169420925157477918">দীর্ঘ বিবরণ সহ ছবি</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">কোনো পূর্ববর্তী তালিকা আইটেম নেই৷</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">পূর্ববর্তী শিরোনাম</translation>
-<translation id="6378565991815958969">$1 কপি করুন।</translation>
 <translation id="6385591741672306837">কলাম</translation>
 <translation id="6387719785439924554">একপাশে</translation>
 <translation id="6411426777058107714">কোনো পূর্ববর্তী রেডিও বোতাম নেই৷</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">পরের সারিতে যান</translation>
 <translation id="8215202828671303819">একাধিক নির্বাচন</translation>
 <translation id="826825447994856889">পরিচয়</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">পূর্ববর্তী ফোকাসযোগ্য আইটেমে জাম্প করুন</translation>
 <translation id="8278417001922463147">এর পূর্বে কোনো নিবন্ধ নেই৷</translation>
 <translation id="8283603667300770666">পরবর্তী ফর্ম ক্ষেত্র</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">কোনো পূর্ববর্তী স্লাইডার নেই৷</translation>
 <translation id="9087707351856729768">নিজে থেকে সম্পূর্ণ করার জন্য টাইপ করুন।</translation>
 <translation id="9089864840575085222">আবর্ত টাইপিং ইকো</translation>
-<translation id="9105227991373418255">$1 কাটুন।</translation>
 <translation id="9107530006868467849">কোনো পূর্ববর্তী মিডিয়া উইজেট নেই৷</translation>
 <translation id="9108370397979208512">গণিত</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
index ae20c783..1175df0 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, element de menú</translation>
 <translation id="3393605254399152980">Arrossega un dit per sentir què estàs tocant</translation>
 <translation id="3406283310380167331">Mostra la llista de formularis.</translation>
-<translation id="3423495725743882470">fila $1, columna $2</translation>
 <translation id="3457000393508828486">S'ha premut parcialment.</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, desactiva</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, botó</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Llista de compleció automàtica</translation>
 <translation id="3810838688059735925">Vídeo</translation>
-<translation id="3812237531158591503">enganxa $1.</translation>
 <translation id="3816633764618089385">Fitxer multimèdia següent</translation>
 <translation id="3819376190738087562">No hi ha cap salt.</translation>
 <translation id="385383972552776628">Obre la pàgina d'opcions</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Una alerta modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{punt i coma}other{# punts i coma}}</translation>
 <translation id="5411891038905756502">No hi ha cap punt de salt anterior.</translation>
-<translation id="5417034931411865818">Fes clic a l'element que hi ha a sota de la tecla d'encaminament $1</translation>
 <translation id="5435274640623994081">Activa el registre de sons</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{menor que}other{# símbols menor que}}</translation>
 <translation id="5444587279251314700">(activa)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">botó</translation>
 <translation id="6129953537138746214">Espai</translation>
 <translation id="6132506484792346370">Un quadre de llista o combinat</translation>
-<translation id="6138576064440631958">Acord: $1</translation>
 <translation id="6142308968191113180">Capçalera 4</translation>
 <translation id="6164829606128959761">comptador</translation>
 <translation id="6169420925157477918">Imatge amb descripció llarga</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">No hi ha cap element de llista anterior.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Capçalera anterior</translation>
-<translation id="6378565991815958969">copia $1.</translation>
 <translation id="6385591741672306837">columna</translation>
 <translation id="6387719785439924554">complement</translation>
 <translation id="6411426777058107714">No hi ha cap botó d'opció anterior.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Ves a la fila següent</translation>
 <translation id="8215202828671303819">Selecció múltiple</translation>
 <translation id="826825447994856889">Introducció</translation>
-<translation id="826991282343985864">f$1c$2</translation>
 <translation id="8276439074553447000">Ves a l'element enfocable anterior</translation>
 <translation id="8278417001922463147">No hi ha cap article anterior.</translation>
 <translation id="8283603667300770666">Camp de formulari següent</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">No hi ha cap control lliscant anterior.</translation>
 <translation id="9087707351856729768">Escriu alguna cosa per emplenar el camp automàticament.</translation>
 <translation id="9089864840575085222">Retorn de l'escriptura del cicle</translation>
-<translation id="9105227991373418255">retalla $1.</translation>
 <translation id="9107530006868467849">No hi ha cap widget multimèdia anterior.</translation>
 <translation id="9108370397979208512">matemàtiques</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
index fe1d47a..c816b4a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, položka nabídky</translation>
 <translation id="3393605254399152980">Přejetím jedním prstem získáte hlasovou odezvu</translation>
 <translation id="3406283310380167331">Zobrazit seznam formulářů</translation>
-<translation id="3423495725743882470">řádek $1, sloupec $2</translation>
 <translation id="3457000393508828486">Částečně stisknuto</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, vypnuto</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, tlačítko</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Seznam automatického doplňování</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">vložit $1.</translation>
 <translation id="3816633764618089385">Další mediální objekt</translation>
 <translation id="3819376190738087562">Žádné skoky.</translation>
 <translation id="385383972552776628">Otevřít stránku možností</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Modální upozornění</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{středník}few{# středníky}many{# semicolons}other{# středníků}}</translation>
 <translation id="5411891038905756502">Žádný předchozí bod skoku.</translation>
-<translation id="5417034931411865818">Klikněte na položku pod navigační klávesou $1</translation>
 <translation id="5435274640623994081">Zapnout protokolování</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{je menší než}few{# znaky je menší než}many{# less than signs}other{# znaků je menší než}}</translation>
 <translation id="5444587279251314700">(aktivní)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">tlčtko</translation>
 <translation id="6129953537138746214">Mezera</translation>
 <translation id="6132506484792346370">Seznam nebo pole se seznamem</translation>
-<translation id="6138576064440631958">Akord $1</translation>
 <translation id="6142308968191113180">Nadpis 4</translation>
 <translation id="6164829606128959761">měřič</translation>
 <translation id="6169420925157477918">Obrázek s dlouhým popisem</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Žádná předchozí položka seznamu.</translation>
 <translation id="6364795331201459219">nadp 6</translation>
 <translation id="6368143427468974988">Předchozí záhlaví</translation>
-<translation id="6378565991815958969">kopírovat $1.</translation>
 <translation id="6385591741672306837">sloupec</translation>
 <translation id="6387719785439924554">stranou</translation>
 <translation id="6411426777058107714">Žádný předchozí přepínač.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Přejít na další řádek</translation>
 <translation id="8215202828671303819">Vícenásobný výběr</translation>
 <translation id="826825447994856889">Úvod</translation>
-<translation id="826991282343985864">ř$1s$2</translation>
 <translation id="8276439074553447000">Přejít na předchozí zaměřitelnou položku</translation>
 <translation id="8278417001922463147">Žádný předchozí článek.</translation>
 <translation id="8283603667300770666">Další pole formuláře</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Žádný předchozí posuvník.</translation>
 <translation id="9087707351856729768">Něco zadejte a text se automaticky dokončí.</translation>
 <translation id="9089864840575085222">Vyslovování zadávaného textu</translation>
-<translation id="9105227991373418255">vyjmout $1.</translation>
 <translation id="9107530006868467849">Žádný předchozí mediální widget není k dispozici.</translation>
 <translation id="9108370397979208512">matematika</translation>
 <translation id="9108589040018540527">posuvník</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
index a7aaaa8..16607e9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Menupunktet <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Træk med én finger for at høre, hvad du berører</translation>
 <translation id="3406283310380167331">Vis formularliste</translation>
-<translation id="3423495725743882470">række $1 kolonne 2$</translation>
 <translation id="3457000393508828486">Delvist trykket ned</translation>
 <translation id="3458865416877308321">Kontakten <ph name="NAME" /> er slået fra</translation>
 <translation id="3462439746547587373">Knappen <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">Autofuldførelsesliste</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">indsæt $1.</translation>
 <translation id="3816633764618089385">Næste medie</translation>
 <translation id="3819376190738087562">Ingen hop.</translation>
 <translation id="385383972552776628">Åbn siden med indstillinger</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">En modal advarsel</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semikolon}one{# semikoloner}other{# semikoloner}}</translation>
 <translation id="5411891038905756502">Ingen tidligere hoppunkter.</translation>
-<translation id="5417034931411865818">Klik på elementet under routingtasten $1</translation>
 <translation id="5435274640623994081">Aktivér logning af lydikoner</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{mindre end}one{# mindre end-tegn}other{# mindre end-tegn}}</translation>
 <translation id="5444587279251314700">(aktiv)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">knp</translation>
 <translation id="6129953537138746214">Mellemrum</translation>
 <translation id="6132506484792346370">Et listefelt eller kombifelt</translation>
-<translation id="6138576064440631958">Akkorden $1</translation>
 <translation id="6142308968191113180">Overskrift 4</translation>
 <translation id="6164829606128959761">måler</translation>
 <translation id="6169420925157477918">Billede med lang beskrivelse</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Ingen tidligere elementer på listen.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Forrige overskrift</translation>
-<translation id="6378565991815958969">kopier $1.</translation>
 <translation id="6385591741672306837">kol</translation>
 <translation id="6387719785439924554">tilsi</translation>
 <translation id="6411426777058107714">Ingen tidligere alternativknapper.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Gå til næste række</translation>
 <translation id="8215202828671303819">Valg af flere</translation>
 <translation id="826825447994856889">Indledning</translation>
-<translation id="826991282343985864">r$1k$2</translation>
 <translation id="8276439074553447000">Gå til forrige element, der kan fokuseres på</translation>
 <translation id="8278417001922463147">Ingen tidligere artikel.</translation>
 <translation id="8283603667300770666">Næste formularfelt</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Ingen tidligere skydere.</translation>
 <translation id="9087707351856729768">Skriv for at udfylde automatisk.</translation>
 <translation id="9089864840575085222">Cyklus for ekko ved indtastning</translation>
-<translation id="9105227991373418255">klip $1.</translation>
 <translation id="9107530006868467849">Der er ikke nogen tidligere mediewidgets.</translation>
 <translation id="9108370397979208512">matematik</translation>
 <translation id="9108589040018540527">scbr</translation>
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 3f063877..d9632f1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549">Menüeintrag "<ph name="NAME" />"</translation>
 <translation id="3393605254399152980">Ziehen Sie einen Finger, um zu hören, was Sie berühren</translation>
 <translation id="3406283310380167331">Formularliste anzeigen</translation>
-<translation id="3423495725743882470">Zeile: $1, Spalte: $2</translation>
 <translation id="3457000393508828486">Teilweise gedrückt</translation>
 <translation id="3458865416877308321">Der Schalter "<ph name="NAME" />" ist deaktiviert</translation>
 <translation id="3462439746547587373">Schaltfläche "<ph name="NAME" />"</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Liste der Autovervollständigungen</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">$1 einfügen.</translation>
 <translation id="3816633764618089385">Nächstes Medium</translation>
 <translation id="3819376190738087562">Keine Sprünge</translation>
 <translation id="385383972552776628">Seite "Optionen" öffnen</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Eine modale Benachrichtigung</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{Strichpunkt}other{# Strichpunkte}}</translation>
 <translation id="5411891038905756502">Kein vorheriger Ausgangspunkt</translation>
-<translation id="5417034931411865818">Klicken Sie auf das Element unterhalb des Routing-Schlüssels $1</translation>
 <translation id="5435274640623994081">Earcon-Protokollierung aktivieren</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{Kleiner-als-Zeichen}other{# Kleiner-als-Zeichen}}</translation>
 <translation id="5444587279251314700">(aktiv)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Leerzeichen</translation>
 <translation id="6132506484792346370">Ein Listen- oder Kombinationsfeld</translation>
-<translation id="6138576064440631958">$1 Akkord</translation>
 <translation id="6142308968191113180">Überschrift 4</translation>
 <translation id="6164829606128959761">Messinstrument</translation>
 <translation id="6169420925157477918">Bild mit ausführlicher Beschreibung</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Kein vorheriges Listenelement</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Vorherige Überschrift</translation>
-<translation id="6378565991815958969">$1 kopieren.</translation>
 <translation id="6385591741672306837">Spalte</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Kein vorheriges Optionsfeld</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Zur nächsten Zeile</translation>
 <translation id="8215202828671303819">Mehrfachauswahl</translation>
 <translation id="826825447994856889">Einleitung</translation>
-<translation id="826991282343985864">Z$1S$2</translation>
 <translation id="8276439074553447000">Zum vorherigen fokussierbaren Element springen</translation>
 <translation id="8278417001922463147">Kein vorheriger Artikel</translation>
 <translation id="8283603667300770666">Nächstes Formularfeld</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Kein vorheriger Schieberegler</translation>
 <translation id="9087707351856729768">Zur automatischen Vervollständigung etwas eintippen.</translation>
 <translation id="9089864840575085222">Eingabeecho wiederholen</translation>
-<translation id="9105227991373418255">$1 ausschneiden.</translation>
 <translation id="9107530006868467849">Kein vorheriges Medien-Widget</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
index f3a1024..01382d8 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, στοιχείο μενού</translation>
 <translation id="3393605254399152980">Σύρετε ένα δάκτυλο για να ακούσετε τι αγγίζετε</translation>
 <translation id="3406283310380167331">Εμφάνιση λίστας φορμών</translation>
-<translation id="3423495725743882470">σειρά $1 στήλη $2</translation>
 <translation id="3457000393508828486">Έχει πατηθεί μερικώς</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, απενεργοποίηση</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, κουμπί</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Λίστα αυτόματης συμπλήρωσης</translation>
 <translation id="3810838688059735925">Βίντεο</translation>
-<translation id="3812237531158591503">επικόλληση $1.</translation>
 <translation id="3816633764618089385">Επόμενο μέσο</translation>
 <translation id="3819376190738087562">Δεν υπάρχουν μεταβάσεις.</translation>
 <translation id="385383972552776628">Άνοιγμα σελίδας επιλογών</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Μια αποκλειστική ειδοποίηση</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{ερωτηματικό}other{# ερωτηματικά}}</translation>
 <translation id="5411891038905756502">Δεν υπάρχει προηγούμενο σημείο μετάβασης.</translation>
-<translation id="5417034931411865818">Κάντε κλικ στο στοιχείο κάτω από το πλήκτρο δρομολόγησης $1</translation>
 <translation id="5435274640623994081">Ενεργοποίηση καταγραφής ηχητικών μηνυμάτων</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{σύμβολο "μικρότερο από"}other{# σύμβολα "μικρότερο από"}}</translation>
 <translation id="5444587279251314700">(ενεργή)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">κουμπί</translation>
 <translation id="6129953537138746214">Κενό</translation>
 <translation id="6132506484792346370">Ένα πλαίσιο λίστας ή ένα σύνθετο πλαίσιο</translation>
-<translation id="6138576064440631958">συγχορδία $1</translation>
 <translation id="6142308968191113180">Επικεφαλίδα 4</translation>
 <translation id="6164829606128959761">μετρητής</translation>
 <translation id="6169420925157477918">Εικόνα με εκτενή περιγραφή</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Δεν υπάρχει προηγούμενο στοιχείο στη λίστα.</translation>
 <translation id="6364795331201459219">κεφαλίδα 6</translation>
 <translation id="6368143427468974988">Προηγούμενη επικεφαλίδα</translation>
-<translation id="6378565991815958969">αντιγραφή $1.</translation>
 <translation id="6385591741672306837">στήλη</translation>
 <translation id="6387719785439924554">εκτός</translation>
 <translation id="6411426777058107714">Δεν υπάρχει προηγούμενο κουμπί επιλογής.</translation>
@@ -899,7 +894,6 @@
 <translation id="820469951249669083">Μετάβαση στην επόμενη σειρά</translation>
 <translation id="8215202828671303819">Πολλαπλής επιλογής</translation>
 <translation id="826825447994856889">Εισαγωγή</translation>
-<translation id="826991282343985864">σ$1στ$2</translation>
 <translation id="8276439074553447000">Μετάβαση στο προηγούμενο αντικείμενο με δυνατότητα εστίασης</translation>
 <translation id="8278417001922463147">Δεν υπάρχει προηγούμενο αντικείμενο.</translation>
 <translation id="8283603667300770666">Επόμενο πεδίο φόρμας</translation>
@@ -981,7 +975,6 @@
 <translation id="9082874451376019682">Δεν υπάρχει προηγούμενο ρυθμιστικό.</translation>
 <translation id="9087707351856729768">Πληκτρολογήστε για αυτόματη συμπλήρωση.</translation>
 <translation id="9089864840575085222">Επανάληψη εκφώνησης πληκτρολόγησης</translation>
-<translation id="9105227991373418255">αποκοπή $1.</translation>
 <translation id="9107530006868467849">Δεν υπάρχει γραφικό στοιχείο προηγούμενου μέσου.</translation>
 <translation id="9108370397979208512">μαθηματικά</translation>
 <translation id="9108589040018540527">γραμμή κύλισης</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
index 597526e..7e7ea74 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, menu item</translation>
 <translation id="3393605254399152980">Drag one finger to hear what you touch</translation>
 <translation id="3406283310380167331">Show forms list</translation>
-<translation id="3423495725743882470">row $1 column $2</translation>
 <translation id="3457000393508828486">Partially pressed</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, switch off</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, button</translation>
@@ -345,6 +344,7 @@
 <translation id="3468959318854349468">No title</translation>
 <translation id="3473644018603298796">sld <ph name="COUNT" /></translation>
 <translation id="3486232535569802404"><ph name="V1" /> to <ph name="V2" /></translation>
+<translation id="3490765818161916458">List grid</translation>
 <translation id="3492609944033322585">{COUNT,plural, =1{right bracket}other{# right brackets}}</translation>
 <translation id="3493915602752813531">No next anchor.</translation>
 <translation id="3494946239022273294">mnuitm</translation>
@@ -376,13 +376,13 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Auto-completion list</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">paste $1.</translation>
 <translation id="3816633764618089385">Next media</translation>
 <translation id="3819376190738087562">No jumps.</translation>
 <translation id="385383972552776628">Open options page</translation>
 <translation id="3856075812838139784">Read only</translation>
 <translation id="3887576927692165210">ed</translation>
 <translation id="3897092660631435901">Menu</translation>
+<translation id="3907138069015388678">lstgrd</translation>
 <translation id="3909320334364316587">Previous level 6 heading</translation>
 <translation id="3914173277599553213">Required</translation>
 <translation id="3914732343065571127">ChromeVox Command Reference</translation>
@@ -578,7 +578,6 @@
 <translation id="5402791055281059602">A modal alert</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semicolon}other{# semicolons}}</translation>
 <translation id="5411891038905756502">No previous jump point.</translation>
-<translation id="5417034931411865818">Click the item under routing key $1</translation>
 <translation id="5435274640623994081">Enable earcon logging</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{less than}other{# less than signs}}</translation>
 <translation id="5444587279251314700">(active)</translation>
@@ -676,7 +675,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Space</translation>
 <translation id="6132506484792346370">A list box or combo box</translation>
-<translation id="6138576064440631958">$1 chord</translation>
 <translation id="6142308968191113180">Heading 4</translation>
 <translation id="6164829606128959761">meter</translation>
 <translation id="6169420925157477918">Image with long description</translation>
@@ -698,7 +696,6 @@
 <translation id="6355910664415701303">No previous list item.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Previous heading</translation>
-<translation id="6378565991815958969">copy $1.</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">No previous radio button.</translation>
@@ -898,7 +895,6 @@
 <translation id="820469951249669083">Go to the next row</translation>
 <translation id="8215202828671303819">Multi select</translation>
 <translation id="826825447994856889">Introduction</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Jump to previous focusable item</translation>
 <translation id="8278417001922463147">No previous article.</translation>
 <translation id="8283603667300770666">Next form field</translation>
@@ -980,7 +976,6 @@
 <translation id="9082874451376019682">No previous slider.</translation>
 <translation id="9087707351856729768">Type to auto complete.</translation>
 <translation id="9089864840575085222">Cycle typing echo</translation>
-<translation id="9105227991373418255">cut $1.</translation>
 <translation id="9107530006868467849">No previous media widget.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</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 b51f3f1..83b892a 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
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, elemento del menú</translation>
 <translation id="3393605254399152980">Arrastra un dedo para escuchar lo que tocas</translation>
 <translation id="3406283310380167331">Mostrar lista de formularios</translation>
-<translation id="3423495725743882470">fila $1 columna $2</translation>
 <translation id="3457000393508828486">Presionado parcialmente</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, desactivar</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, botón</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Lista de autocompletados</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">pegar $1</translation>
 <translation id="3816633764618089385">Archivo multimedia siguiente</translation>
 <translation id="3819376190738087562">No hay saltos.</translation>
 <translation id="385383972552776628">Abrir página de opciones</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Una alerta modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{punto y coma}other{# punto y coma}}</translation>
 <translation id="5411891038905756502">No hay ningún punto de salto anterior.</translation>
-<translation id="5417034931411865818">Haz clic en el elemento que aparece debajo de la clave de enrutamiento $1</translation>
 <translation id="5435274640623994081">Habilitar el acceso con íconos sonoros</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{menor que}other{# signos menor que}}</translation>
 <translation id="5444587279251314700">(activo)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Google Space</translation>
 <translation id="6132506484792346370">Un cuadro de lista o uno combinado</translation>
-<translation id="6138576064440631958">Secuencia de $1</translation>
 <translation id="6142308968191113180">Encabezado 4</translation>
 <translation id="6164829606128959761">medidor</translation>
 <translation id="6169420925157477918">Imagen con descripción larga</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">No hay ningún elemento de la lista anterior.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Encabezado anterior</translation>
-<translation id="6378565991815958969">copiar $1</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">lateral</translation>
 <translation id="6411426777058107714">No hay ningún botón de selección anterior.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Ir a la fila siguiente</translation>
 <translation id="8215202828671303819">Selección múltiple</translation>
 <translation id="826825447994856889">Introducción</translation>
-<translation id="826991282343985864">f$1c$2</translation>
 <translation id="8276439074553447000">Saltar al elemento enfocable anterior</translation>
 <translation id="8278417001922463147">No hay artículos anteriores.</translation>
 <translation id="8283603667300770666">Siguiente campo de formulario</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">No hay ningún control deslizante anterior.</translation>
 <translation id="9087707351856729768">Escribe para seleccionar una opción de autocompletado.</translation>
 <translation id="9089864840575085222">Reproducción oral del ciclo de escritura</translation>
-<translation id="9105227991373418255">cortar $1</translation>
 <translation id="9107530006868467849">No hay widgets multimedia anteriores.</translation>
 <translation id="9108370397979208512">expr mtmtc</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
index 86f518d..07d62b29 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, elemento de menú</translation>
 <translation id="3393605254399152980">Arrastra un dedo para escuchar lo que tocas</translation>
 <translation id="3406283310380167331">Muestra la lista de formularios</translation>
-<translation id="3423495725743882470">fila $1, columna $2</translation>
 <translation id="3457000393508828486">Pulsado parcialmente</translation>
 <translation id="3458865416877308321">Interruptor <ph name="NAME" /> desactivado</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, botón</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Lista de autocompletados</translation>
 <translation id="3810838688059735925">Vídeo</translation>
-<translation id="3812237531158591503">pegar $1.</translation>
 <translation id="3816633764618089385">Siguiente archivo multimedia</translation>
 <translation id="3819376190738087562">No hay saltos.</translation>
 <translation id="385383972552776628">Abre página de opciones</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Una alerta modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{punto y coma}other{# puntos y comas}}</translation>
 <translation id="5411891038905756502">No hay ningún punto de salto anterior.</translation>
-<translation id="5417034931411865818">Haz clic en el elemento que aparece debajo de la tecla de enrutamiento $1</translation>
 <translation id="5435274640623994081">Habilitar registro de audiconos</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{menor que}other{# signos menor que}}</translation>
 <translation id="5444587279251314700">(activa)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Espacio</translation>
 <translation id="6132506484792346370">Un cuadro de lista o cuadro combinado</translation>
-<translation id="6138576064440631958">cor $1</translation>
 <translation id="6142308968191113180">Título 4</translation>
 <translation id="6164829606128959761">medidor</translation>
 <translation id="6169420925157477918">Imagen con descripción larga</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">No hay ningún elemento de la lista anterior.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Encabezado anterior</translation>
-<translation id="6378565991815958969">copiar $1.</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">etiqueta de contenido tangencial</translation>
 <translation id="6411426777058107714">No hay ningún botón de opción anterior.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Ir a la fila siguiente</translation>
 <translation id="8215202828671303819">Selección múltiple</translation>
 <translation id="826825447994856889">Introducción</translation>
-<translation id="826991282343985864">f$1c$2</translation>
 <translation id="8276439074553447000">Salta al elemento enfocable anterior</translation>
 <translation id="8278417001922463147">No hay artículos anteriores.</translation>
 <translation id="8283603667300770666">Siguiente campo de formulario</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">No hay ningún control deslizante anterior.</translation>
 <translation id="9087707351856729768">Escribe algo para utilizar la función Autocompletar.</translation>
 <translation id="9089864840575085222">Di ciclo de escritura</translation>
-<translation id="9105227991373418255">cortar $1.</translation>
 <translation id="9107530006868467849">No hay widgets multimedia anteriores.</translation>
 <translation id="9108370397979208512">expresión matemática</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
index 5b452ed..d9c2eee 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Menüü-üksus <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Lohistage ühe sõrmega, et kuulda, mida puudutate</translation>
 <translation id="3406283310380167331">Kuva vormide loend</translation>
-<translation id="3423495725743882470">rida $1, veerg $2</translation>
 <translation id="3457000393508828486">Osaliselt vajutatud</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, lüliti on väljas</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, nupp</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Loendi automaatne täitmine</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">kleebi $1.</translation>
 <translation id="3816633764618089385">Järgmine meediaüksus</translation>
 <translation id="3819376190738087562">Siirdeid ei ole.</translation>
 <translation id="385383972552776628">Ava valikute leht</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modaalne teatis</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semikoolon}other{# semikoolonit}}</translation>
 <translation id="5411891038905756502">Eelmist siirdepunkti ei ole.</translation>
-<translation id="5417034931411865818">Klõpsake marsruutimisklahvi $1 all oleval üksusel</translation>
 <translation id="5435274640623994081">Helisignaali logimise lubamine</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{vähem kui}other{# märki „vähem kui”}}</translation>
 <translation id="5444587279251314700">(aktiivne)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">nupp</translation>
 <translation id="6129953537138746214">Tühik</translation>
 <translation id="6132506484792346370">Loendiboks või liitboks</translation>
-<translation id="6138576064440631958">$1 kõõl</translation>
 <translation id="6142308968191113180">4. pealkiri</translation>
 <translation id="6164829606128959761">mõõdik</translation>
 <translation id="6169420925157477918">Pika kirjeldusega kujutis</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Eelmist loendiüksust ei ole.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Eelmine pealkiri</translation>
-<translation id="6378565991815958969">kopeeri $1.</translation>
 <translation id="6385591741672306837">veerg</translation>
 <translation id="6387719785439924554">kõrvale</translation>
 <translation id="6411426777058107714">Eelmist raadionuppu ei ole.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Liigu järgmisele reale</translation>
 <translation id="8215202828671303819">Mitmikvalimine</translation>
 <translation id="826825447994856889">Sissejuhatus</translation>
-<translation id="826991282343985864">r$1v$2</translation>
 <translation id="8276439074553447000">Liigu eelmise fookustatava üksuse juurde</translation>
 <translation id="8278417001922463147">Eelmist artiklit pole.</translation>
 <translation id="8283603667300770666">Vormi järgmine väli</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Eelmist liugurit ei ole.</translation>
 <translation id="9087707351856729768">Automaatseks täitmiseks hakake teksti sisestama.</translation>
 <translation id="9089864840575085222">Teksti sisestamise kaja tsükkel</translation>
-<translation id="9105227991373418255">lõika $1.</translation>
 <translation id="9107530006868467849">Eelmist meediavidinat pole.</translation>
 <translation id="9108370397979208512">matemaatika</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
index 2573157..a2eae6a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />، مورد منو</translation>
 <translation id="3393605254399152980">برای شنیدن صدای آنچه لمس می‌کنید، یک انگشت را بکشید</translation>
 <translation id="3406283310380167331">نمایش فهرست فرم‌ها</translation>
-<translation id="3423495725743882470">ردیف $1 ستون $2</translation>
 <translation id="3457000393508828486">فشردن مختصر</translation>
 <translation id="3458865416877308321"><ph name="NAME" /> در حالت خاموش است</translation>
 <translation id="3462439746547587373"><ph name="NAME" />، دکمه</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">فهرست تکمیل خودکار</translation>
 <translation id="3810838688059735925">فیلم</translation>
-<translation id="3812237531158591503">جای‌گذاری $1.</translation>
 <translation id="3816633764618089385">رسانه بعدی</translation>
 <translation id="3819376190738087562">پرشی وجود ندارد.</translation>
 <translation id="385383972552776628">باز کردن صفحه گزینه‌ها</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">هشدار کیفیتی</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{نقطه ویرگول}one{# نقطه ویرگول}other{# نقطه ویرگول}}</translation>
 <translation id="5411891038905756502">هیچ نقطه پرش قبلی وجود ندارد.</translation>
-<translation id="5417034931411865818">مورد زیر کلید مسیریابی $1 را کلیک کنید</translation>
 <translation id="5435274640623994081">فعال کردن گزارش‌گیری از نماد شنیداری</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{علامت کوچک‌تر}one{# علامت کوچک‌تر}other{# علامت کوچک‌تر}}</translation>
 <translation id="5444587279251314700">(فعال)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">فاصله</translation>
 <translation id="6132506484792346370">کادر فهرست یا کادر ترکیبی</translation>
-<translation id="6138576064440631958">$1 آکورد</translation>
 <translation id="6142308968191113180">عنوان ۴</translation>
 <translation id="6164829606128959761">متر</translation>
 <translation id="6169420925157477918">تصویر با شرح طولانی</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">مورد قبلی فهرست وجود ندارد.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">عنوان قبلی</translation>
-<translation id="6378565991815958969">کپی $1.</translation>
 <translation id="6385591741672306837">ستون</translation>
 <translation id="6387719785439924554">جدا</translation>
 <translation id="6411426777058107714">دکمه رادیویی قبلی وجود ندارد.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">رفتن به ردیف بعدی</translation>
 <translation id="8215202828671303819">چند انتخاب</translation>
 <translation id="826825447994856889">مقدمه</translation>
-<translation id="826991282343985864">ر$1س$2</translation>
 <translation id="8276439074553447000">پرش به مورد قابل فوکوس قبلی</translation>
 <translation id="8278417001922463147">مقاله قبلی وجود ندارد.</translation>
 <translation id="8283603667300770666">فیلد بعدی فرم</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">اسلایدر قبلی موجود نیست.</translation>
 <translation id="9087707351856729768">برای تکمیل خودکار، تایپ کنید.</translation>
 <translation id="9089864840575085222">بازگویی تایپ حلقه</translation>
-<translation id="9105227991373418255">برش $1.</translation>
 <translation id="9107530006868467849">ابزارک رسانه‌ای قبلی دیگری وجود ندارد.</translation>
 <translation id="9108370397979208512">حساب</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
index d946626d..e023ba2 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, valikkokohde</translation>
 <translation id="3393605254399152980">Vetämällä yhdellä sormella kuulet, mitä kohtaa kosket</translation>
 <translation id="3406283310380167331">Näytä muotojen luettelo</translation>
-<translation id="3423495725743882470">Rivi $1, sarake $2</translation>
 <translation id="3457000393508828486">Painettu osittain</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, poista käytöstä</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, painike</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Ennakoivan tekstinsyötön luettelo</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">liitä $1.</translation>
 <translation id="3816633764618089385">Seuraava mediakohde</translation>
 <translation id="3819376190738087562">Ei siirtymiä.</translation>
 <translation id="385383972552776628">Avaa asetussivu</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modaalinen ilmoitus</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{puolipiste}other{# puolipistettä}}</translation>
 <translation id="5411891038905756502">Ei edellisiä siirtymäkohtia.</translation>
-<translation id="5417034931411865818">Klikkaa reititysavaimen $1 alla olevaa kohdetta</translation>
 <translation id="5435274640623994081">Ota earcon-äänimerkkien kirjaaminen käyttöön</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{pienemmyys}other{# pienemmyysmerkkiä}}</translation>
 <translation id="5444587279251314700">(aktiivinen)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">pain.</translation>
 <translation id="6129953537138746214">Välilyönti</translation>
 <translation id="6132506484792346370">Luetteloruutu tai yhdistelmäruutu</translation>
-<translation id="6138576064440631958">$1 puoliympyrä</translation>
 <translation id="6142308968191113180">Otsikko 4</translation>
 <translation id="6164829606128959761">mittari</translation>
 <translation id="6169420925157477918">Kuva, jolla on pitkä kuvaus</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Ei edellisiä luettelokohteita.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Edellinen otsikko</translation>
-<translation id="6378565991815958969">kopioi $1.</translation>
 <translation id="6385591741672306837">sarake</translation>
 <translation id="6387719785439924554">sivuun</translation>
 <translation id="6411426777058107714">Ei edellisiä valintanappeja.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Siirry seuraavalle riville</translation>
 <translation id="8215202828671303819">Monivalinta</translation>
 <translation id="826825447994856889">Johdanto</translation>
-<translation id="826991282343985864">r$1s$2</translation>
 <translation id="8276439074553447000">Siirry edelliseen aktivoitavaan kohteeseen</translation>
 <translation id="8278417001922463147">Ei aiempaa artikkelia.</translation>
 <translation id="8283603667300770666">Seuraava lomakekenttä</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Ei edellisiä liukusäätimiä.</translation>
 <translation id="9087707351856729768">Aloita automaattisen täydennyksen käyttö kirjoittamalla.</translation>
 <translation id="9089864840575085222">Ota kirjoituksen puhuminen käyttöön tai pois käytöstä</translation>
-<translation id="9105227991373418255">leikkaa $1.</translation>
 <translation id="9107530006868467849">Ei edellistä mediawidgetiä.</translation>
 <translation id="9108370397979208512">matematiikka</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
index dc0bee5..4b2893e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, item sa menu</translation>
 <translation id="3393605254399152980">Mag-drag ng isang daliri para marinig ang pipindutin mo</translation>
 <translation id="3406283310380167331">Ipakita ang listahan ng mga form</translation>
-<translation id="3423495725743882470">row $1 column $2</translation>
 <translation id="3457000393508828486">Bahagyang napindot</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, i-off</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, button</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">Listahan ng autocompletion</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">i-paste ang $1.</translation>
 <translation id="3816633764618089385">Susunod na media</translation>
 <translation id="3819376190738087562">Walang mga jump.</translation>
 <translation id="385383972552776628">Buksan ang page ng mga opsyon</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Isang modal na alerto</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semicolon}one{# semicolon}other{# na semicolon}}</translation>
 <translation id="5411891038905756502">Walang nakaraang jump point.</translation>
-<translation id="5417034931411865818">I-click ang item sa ilalim ng routing key $1</translation>
 <translation id="5435274640623994081">I-enable ang pag-log ng earcon</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{less than}one{# less than sign}other{# na less than sign}}</translation>
 <translation id="5444587279251314700">(aktibo)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Puwang</translation>
 <translation id="6132506484792346370">Isang listbox o combo box</translation>
-<translation id="6138576064440631958">$1 chord</translation>
 <translation id="6142308968191113180">Heading 4</translation>
 <translation id="6164829606128959761">metro</translation>
 <translation id="6169420925157477918">Larawang may mahabang paglalarawan</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Walang nakaraang item sa listahan.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Nakaraang heading</translation>
-<translation id="6378565991815958969">kopyahin ang $1.</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Walang nakaraang radio button.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Pumunta sa susunod na row</translation>
 <translation id="8215202828671303819">Maramihang pagpili</translation>
 <translation id="826825447994856889">Panimula</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Lumaktaw sa nakaraang napo-focus na item</translation>
 <translation id="8278417001922463147">Walang nakaraang artikulo.</translation>
 <translation id="8283603667300770666">Susunod na field ng form</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Walang nakaraang slider.</translation>
 <translation id="9087707351856729768">I-type upang awtomatikong makumpleto.</translation>
 <translation id="9089864840575085222">Echo ng cycle typing</translation>
-<translation id="9105227991373418255">i-cut ang $1.</translation>
 <translation id="9107530006868467849">Walang nakaraang widget ng media.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
index 0eec5db0..86d4b00 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, élément de menu</translation>
 <translation id="3393605254399152980">Faites glisser un doigt pour entendre une description de ce que vous touchez</translation>
 <translation id="3406283310380167331">Afficher la liste des formulaires</translation>
-<translation id="3423495725743882470">ligne $1 colonne $2</translation>
 <translation id="3457000393508828486">Partiellement sélectionné</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, interrupteur désactivé</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, bouton</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">et{COUNT,plural, =1{# autre}one{# autre}other{# autres}}</translation>
 <translation id="3801735343383419236">Saisie semi-automatique sous forme de liste</translation>
 <translation id="3810838688059735925">Vidéo</translation>
-<translation id="3812237531158591503">coller $1.</translation>
 <translation id="3816633764618089385">Contenu multimédia suivant</translation>
 <translation id="3819376190738087562">Aucun renvoi</translation>
 <translation id="385383972552776628">Ouvrir la page d'options</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Une alerte modale</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{point-virgule}one{# point-virgule}other{# points-virgules}}</translation>
 <translation id="5411891038905756502">Aucun renvoi précédent</translation>
-<translation id="5417034931411865818">Cliquez sur l'élément sous la clé de routage $1</translation>
 <translation id="5435274640623994081">Activer la journalisation des icônes sonores</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{signe inférieur à}one{# signe inférieur à}other{# signes inférieur à}}</translation>
 <translation id="5444587279251314700">(activé)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">bouton</translation>
 <translation id="6129953537138746214">Espace</translation>
 <translation id="6132506484792346370">Une zone de liste ou une liste déroulante</translation>
-<translation id="6138576064440631958">Accord $1</translation>
 <translation id="6142308968191113180">Titre 4</translation>
 <translation id="6164829606128959761">outil de mesure</translation>
 <translation id="6169420925157477918">Image avec une description longue</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Aucun élément de liste précédent</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">En-tête précédent</translation>
-<translation id="6378565991815958969">copier $1.</translation>
 <translation id="6385591741672306837">colonne</translation>
 <translation id="6387719785439924554">contenu relatif</translation>
 <translation id="6411426777058107714">Aucune case d'option précédente</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Accéder à la ligne suivante</translation>
 <translation id="8215202828671303819">Sélection multiple</translation>
 <translation id="826825447994856889">Introduction</translation>
-<translation id="826991282343985864">l$1c$2</translation>
 <translation id="8276439074553447000">Renvoyer à l'élément précédent pouvant être agrandi</translation>
 <translation id="8278417001922463147">Aucun article précédent</translation>
 <translation id="8283603667300770666">Champ de formulaire suivant</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Aucun curseur précédent</translation>
 <translation id="9087707351856729768">Saisissez du texte pour activer la saisie semi-automatique.</translation>
 <translation id="9089864840575085222">Écho de la saisie par cycle</translation>
-<translation id="9105227991373418255">couper $1.</translation>
 <translation id="9107530006868467849">Aucun widget de contenu multimédia précédent</translation>
 <translation id="9108370397979208512">math.</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
index df63cc93..9091d4a9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, મેનૂ આઇટમ</translation>
 <translation id="3393605254399152980">તમે જે સ્પર્શ કરી રહ્યાં હો તે લખાણને સાંભળવા માટે કોઈ આંગળીને સ્ક્રીન પર ખેંચો</translation>
 <translation id="3406283310380167331">ફોર્મ્સની સૂચિ બતાવો</translation>
-<translation id="3423495725743882470">પંક્તિ $1 કૉલમ $2</translation>
 <translation id="3457000393508828486">આંશિક રૂપે દબાયેલું</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, બંધ કરો</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, બટન</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">સ્વતઃપૂર્ણ સૂચિ</translation>
 <translation id="3810838688059735925">વીડિયો</translation>
-<translation id="3812237531158591503">$1 પેસ્ટ કરો.</translation>
 <translation id="3816633764618089385">આગલું મીડિયા</translation>
 <translation id="3819376190738087562">જમ્પ્સ નથી</translation>
 <translation id="385383972552776628">વિકલ્પોનું પૃષ્ઠ ખોલો</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">મોડલ ચેતવણી</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{અર્ધવિરામ}one{# અર્ધવિરામ}other{# અર્ધવિરામ}}</translation>
 <translation id="5411891038905756502">કોઈ પાછલું જમ્પ બિંદુ નથી.</translation>
-<translation id="5417034931411865818">રૂટિંગ કી $1 હેઠળની આઇટમને ક્લિક કરો</translation>
 <translation id="5435274640623994081">ઇઅરકોન લૉગિંગ ચાલુ કરો</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{આના કરતાં ઓછું}one{# આના કરતાં ઓછાની નિશાની}other{# આના કરતાં ઓછાની નિશાની}}</translation>
 <translation id="5444587279251314700">(સક્રિય)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">જગ્યા</translation>
 <translation id="6132506484792346370">સૂચિબોક્સ અથવા કોમ્બો બોક્સ</translation>
-<translation id="6138576064440631958">$1 ચાપકર્ણ</translation>
 <translation id="6142308968191113180">મથાળું 4</translation>
 <translation id="6164829606128959761">મીટર</translation>
 <translation id="6169420925157477918">લાંબા વર્ણન સાથેની છબી</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">કોઈ પાછલી સૂચિ આઇટમ નથી.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">પાછલું શીર્ષક</translation>
-<translation id="6378565991815958969">$1 કૉપિ કરો.</translation>
 <translation id="6385591741672306837">કૉલમ</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">કોઈ પાછલું રેડિયો બટન નથી.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">આગળની પંક્તિ પર જાઓ</translation>
 <translation id="8215202828671303819">બહુ પસંદ</translation>
 <translation id="826825447994856889">પ્રસ્તાવના</translation>
-<translation id="826991282343985864">પંક્તિ$1કૉલમ$2</translation>
 <translation id="8276439074553447000">પાછલી ફોકસ કરવા યોગ્ય આઇટમ પર જમ્પ કરો</translation>
 <translation id="8278417001922463147">કોઈ પાછલો લેખ નથી.</translation>
 <translation id="8283603667300770666">આગલું ફોર્મ ફીલ્ડ</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">કોઈ પાછલું સ્લાઇડર નથી.</translation>
 <translation id="9087707351856729768">આપમેળે પૂર્ણ કરવા માટે ટાઇપ કરો.</translation>
 <translation id="9089864840575085222">લખાણ પડઘાનું આવર્તન</translation>
-<translation id="9105227991373418255">$1 કાપો.</translation>
 <translation id="9107530006868467849">કોઈ પાછલું મીડિયા વિજેટ નથી.</translation>
 <translation id="9108370397979208512">ગણિત</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
index 367a399..539d228 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, मेनू आइटम</translation>
 <translation id="3393605254399152980">जिसे आपने छुआ है उससे जुड़ी जानकारी सुनने के लिए एक उंगली से खींचें और छोड़ें</translation>
 <translation id="3406283310380167331">फ़ॉर्म सूची दिखाएं</translation>
-<translation id="3423495725743882470">पंक्ति $1 स्तंभ $2</translation>
 <translation id="3457000393508828486">आंशिक रूप से दबाया गया</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, बंद करें</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, बटन</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">स्वत: पूर्णता सूची</translation>
 <translation id="3810838688059735925">वीडियो</translation>
-<translation id="3812237531158591503">$1 चिपकाएं.</translation>
 <translation id="3816633764618089385">अगला मीडिया</translation>
 <translation id="3819376190738087562">कोई जंप नहीं.</translation>
 <translation id="385383972552776628">विकल्प पेज खोलें</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">मॉडल सूचना</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{अर्धविराम}one{# अर्धविराम}other{# अर्धविराम}}</translation>
 <translation id="5411891038905756502">कोई पिछला जंप बिंदु नहीं.</translation>
-<translation id="5417034931411865818">रूटिंग कुंजी $1 के अंतर्गत आइटम क्लिक करें</translation>
 <translation id="5435274640623994081">इयरकॉन में लॉग इन करना चालू करें</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{इससे कम}one{# इससे कम चिह्न}other{# इससे कम चिह्न}}</translation>
 <translation id="5444587279251314700">(सक्रिय)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Space</translation>
 <translation id="6132506484792346370">सूची बॉक्स या कॉम्‍बो बॉक्‍स</translation>
-<translation id="6138576064440631958">$1 कॉर्ड</translation>
 <translation id="6142308968191113180">शीर्षक 4</translation>
 <translation id="6164829606128959761">मीटर</translation>
 <translation id="6169420925157477918">बड़े विवरण वाला चित्र</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">कोई पिछला सूची आइटम नहीं.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">पिछला शीर्षक</translation>
-<translation id="6378565991815958969">$1 कॉपी करें.</translation>
 <translation id="6385591741672306837">स्तंभ</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">कोई पिछला रेडियो बटन नहीं.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">अगली पंक्ति पर जाएं</translation>
 <translation id="8215202828671303819">एकाधिक चयन</translation>
 <translation id="826825447994856889">परिचय</translation>
-<translation id="826991282343985864">पंक्ति$1स्तंभ$2</translation>
 <translation id="8276439074553447000">पिछले फ़ोकस करने योग्‍य आइटम पर जंप करें</translation>
 <translation id="8278417001922463147">कोई पिछला लेख नहीं.</translation>
 <translation id="8283603667300770666">अगला फ़ॉर्म फ़ील्‍ड</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">कोई पिछला स्लाइडर नहीं.</translation>
 <translation id="9087707351856729768">शब्दों को अपने आप पूरा करने के लिए लिखें.</translation>
 <translation id="9089864840575085222">टाइपिंग इको को चक्रित करें</translation>
-<translation id="9105227991373418255">$1 काटें.</translation>
 <translation id="9107530006868467849">कोई पिछला मीडिया विजेट नहीं.</translation>
 <translation id="9108370397979208512">गणित</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
index 00d9e46..addbcfe 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, stavka izbornika</translation>
 <translation id="3393605254399152980">Povucite jednim prstom da biste čuli što dodirujete</translation>
 <translation id="3406283310380167331">Prikaz popisa obrazaca</translation>
-<translation id="3423495725743882470">redak $1 stupac $2</translation>
 <translation id="3457000393508828486">Djelomično pritisnut</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, isključi</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, gumb</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}few{#}other{#}}</translation>
 <translation id="3801735343383419236">Popis automatskog dovršavanja</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">Zalijepi $1.</translation>
 <translation id="3816633764618089385">Sljedeći medij</translation>
 <translation id="3819376190738087562">Nema skokova.</translation>
 <translation id="385383972552776628">Otvaranje stranice s opcijama</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modalno upozorenje</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{točka sa zarezom}one{# točka sa zarezom}few{# točke sa zarezom}other{# točaka sa zarezom}}</translation>
 <translation id="5411891038905756502">Nema prethodne točke skoka.</translation>
-<translation id="5417034931411865818">Klikanje stavke ispod tipke za usmjeravanje $1</translation>
 <translation id="5435274640623994081">Omogući zapisnik zvučnih ikona</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{znak "manje od"}one{# znak "manje od"}few{# znaka "manje od"}other{# znakova "manje od"}}</translation>
 <translation id="5444587279251314700">(aktivno)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">gmb</translation>
 <translation id="6129953537138746214">Razmak</translation>
 <translation id="6132506484792346370">Okvir s popisom ili kombinirani okvir</translation>
-<translation id="6138576064440631958">Prečac $1</translation>
 <translation id="6142308968191113180">Naslov 4</translation>
 <translation id="6164829606128959761">mjerač</translation>
 <translation id="6169420925157477918">Slika s dugačkim opisom</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Nema prethodne stavke popisa.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Prethodni naslov</translation>
-<translation id="6378565991815958969">Kopiraj $1.</translation>
 <translation id="6385591741672306837">stupac</translation>
 <translation id="6387719785439924554">pored</translation>
 <translation id="6411426777058107714">Nema prethodnog izbornog gumba.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Idi na sljedeći redak</translation>
 <translation id="8215202828671303819">Višestruki odabir</translation>
 <translation id="826825447994856889">Uvod</translation>
-<translation id="826991282343985864">r$1s$2</translation>
 <translation id="8276439074553447000">Skok na prethodnu stavku s mogućnošću fokusiranja</translation>
 <translation id="8278417001922463147">Nema prethodnog članka.</translation>
 <translation id="8283603667300770666">Sljedeće polje obrasca</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Nema prethodnog klizača.</translation>
 <translation id="9087707351856729768">Počnite upisivati za automatsko dovršavanje.</translation>
 <translation id="9089864840575085222">Kružna izmjena odjeka tipkanja</translation>
-<translation id="9105227991373418255">Izreži $1.</translation>
 <translation id="9107530006868467849">Nema widgeta za prethodni medij.</translation>
 <translation id="9108370397979208512">mat</translation>
 <translation id="9108589040018540527">klzč</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
index 0d700bf..1601f80f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, menüelem</translation>
 <translation id="3393605254399152980">Ha hallani szeretné, mit érintett meg, csúsztasson egy ujjával</translation>
 <translation id="3406283310380167331">Űrlaplista megjelenítése</translation>
-<translation id="3423495725743882470">$1. sor $2. oszlop</translation>
 <translation id="3457000393508828486">Részben megnyomva</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, kikapcsolás</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, gomb</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Automatikus kiegészítés listaként</translation>
 <translation id="3810838688059735925">Videó</translation>
-<translation id="3812237531158591503">$1 beillesztése.</translation>
 <translation id="3816633764618089385">Következő médiaelem</translation>
 <translation id="3819376190738087562">Nincs ugrás.</translation>
 <translation id="385383972552776628">A beállítások oldalának megnyitása</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modális riasztás</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{pontosvessző}other{# pontosvessző}}</translation>
 <translation id="5411891038905756502">Nincs előző ugrópont.</translation>
-<translation id="5417034931411865818">Kattintson a(z) $1 átirányítási kulcs alatti elemre</translation>
 <translation id="5435274640623994081">Hangjelzés naplózásának engedélyezése</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{kisebb jel}other{# kisebb jel}}</translation>
 <translation id="5444587279251314700">(aktív)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">gmb</translation>
 <translation id="6129953537138746214">Szóköz</translation>
 <translation id="6132506484792346370">Listamező vagy kombinált mező</translation>
-<translation id="6138576064440631958">$1 akkord</translation>
 <translation id="6142308968191113180">4-es címsor</translation>
 <translation id="6164829606128959761">mérő</translation>
 <translation id="6169420925157477918">Kép hosszú leírással</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Nincs előző listaelem.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Előző fejléc</translation>
-<translation id="6378565991815958969">$1 másolása.</translation>
 <translation id="6385591741672306837">oszlop</translation>
 <translation id="6387719785439924554">oldaltartalom</translation>
 <translation id="6411426777058107714">Nincs előző választógomb.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Ugrás a következő sorra</translation>
 <translation id="8215202828671303819">Többszörös kiválasztás</translation>
 <translation id="826825447994856889">Bevezetés</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Ugrás következő fókuszálható elemre</translation>
 <translation id="8278417001922463147">Nincs előző cikk.</translation>
 <translation id="8283603667300770666">Következő űrlapmező</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Nincs előző dia.</translation>
 <translation id="9087707351856729768">Kezdjen el gépelni az automatikus kiegészítéshez.</translation>
 <translation id="9089864840575085222">Ciklikus gépelési visszaolvasás</translation>
-<translation id="9105227991373418255">$1 kivágása.</translation>
 <translation id="9107530006868467849">Nincs előző médiamodul.</translation>
 <translation id="9108370397979208512">matematika</translation>
 <translation id="9108589040018540527">görgetősáv</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
index fcd1b93..28c94601 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, item menu</translation>
 <translation id="3393605254399152980">Tarik satu jari untuk mendengarkan item yang Anda sentuh</translation>
 <translation id="3406283310380167331">Menampilkan daftar formulir</translation>
-<translation id="3423495725743882470">baris $1 kolom $2</translation>
 <translation id="3457000393508828486">Ditekan sebagian</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, dinonaktifkan</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, tombol</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Pelengkapan otomatis daftar</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">tempel $1.</translation>
 <translation id="3816633764618089385">Media berikutnya</translation>
 <translation id="3819376190738087562">Tidak ada lompatan.</translation>
 <translation id="385383972552776628">Membuka halaman opsi</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Notifikasi modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{titik koma}other{# titik koma}}</translation>
 <translation id="5411891038905756502">Tidak ada titik lompatan sebelumnya.</translation>
-<translation id="5417034931411865818">Klik item di bawah tombol perutean $1</translation>
 <translation id="5435274640623994081">Aktifkan pencatatan earcon</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{kurang dari}other{# tanda kurang dari}}</translation>
 <translation id="5444587279251314700">(aktif)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Spasi</translation>
 <translation id="6132506484792346370">Kotak daftar atau kotak kombo</translation>
-<translation id="6138576064440631958">Kombinasi tombol $1</translation>
 <translation id="6142308968191113180">Judul 4</translation>
 <translation id="6164829606128959761">pengukur</translation>
 <translation id="6169420925157477918">Gambar dengan deskripsi panjang</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Tidak ada item daftar sebelumnya.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Judul sebelumnya</translation>
-<translation id="6378565991815958969">salin $1.</translation>
 <translation id="6385591741672306837">kolom</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Tidak ada tombol radio sebelumnya.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Buka baris berikutnya</translation>
 <translation id="8215202828671303819">Multi-pilihan</translation>
 <translation id="826825447994856889">Pendahuluan</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Melompat ke item yang dapat difokuskan sebelumnya</translation>
 <translation id="8278417001922463147">Tidak ada artikel sebelumnya.</translation>
 <translation id="8283603667300770666">Bidang formulir berikutnya</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Tidak ada penggeser sebelumnya.</translation>
 <translation id="9087707351856729768">Ketik untuk menyelesaikan secara otomatis.</translation>
 <translation id="9089864840575085222">Siklus pengulangan pengetikan</translation>
-<translation id="9105227991373418255">potong $1.</translation>
 <translation id="9107530006868467849">Tidak ada widget media sebelumnya.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
index 3f7e6af..cda10e5b 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, voce di menu</translation>
 <translation id="3393605254399152980">Trascina un solo dito per ascoltare ciò che tocchi</translation>
 <translation id="3406283310380167331">Mostra elenco moduli</translation>
-<translation id="3423495725743882470">riga $1 colonna $2</translation>
 <translation id="3457000393508828486">Parzialmente premuto</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, opzione disattivata</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, pulsante</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Elenco di completamento automatico</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">incolla $1.</translation>
 <translation id="3816633764618089385">Elemento multimediale successivo</translation>
 <translation id="3819376190738087562">Nessun passaggio.</translation>
 <translation id="385383972552776628">Apri pagina di opzioni</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Un avviso modale</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{punto e virgola}other{# punti e virgola}}</translation>
 <translation id="5411891038905756502">Nessun passaggio precedente.</translation>
-<translation id="5417034931411865818">Fai clic sull'elemento sotto la chiave di routing $1</translation>
 <translation id="5435274640623994081">Abilita registrazione earcon</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{simbolo di minore}other{# simboli di minore}}</translation>
 <translation id="5444587279251314700">(attiva)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Spazio</translation>
 <translation id="6132506484792346370">Una casella di riepilogo o combinata</translation>
-<translation id="6138576064440631958">Accordo $1</translation>
 <translation id="6142308968191113180">Intestazione 4</translation>
 <translation id="6164829606128959761">indicatore</translation>
 <translation id="6169420925157477918">Immagine con descrizione lunga</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Nessuna voce elenco precedente.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Intestazione precedente</translation>
-<translation id="6378565991815958969">copia $1.</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">di lato</translation>
 <translation id="6411426777058107714">Nessun pulsante di opzione precedente.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Consente di andare alla riga successiva</translation>
 <translation id="8215202828671303819">Selezione multipla</translation>
 <translation id="826825447994856889">Introduzione</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Passa a elemento attivabile precedente</translation>
 <translation id="8278417001922463147">Nessun articolo precedente.</translation>
 <translation id="8283603667300770666">Campo modulo successivo</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Nessun dispositivo di scorrimento precedente.</translation>
 <translation id="9087707351856729768">Digita per attivare il completamento automatico.</translation>
 <translation id="9089864840575085222">Imposta eco digitazione a rotazione</translation>
-<translation id="9105227991373418255">taglia $1.</translation>
 <translation id="9107530006868467849">Nessun widget multimediale precedente.</translation>
 <translation id="9108370397979208512">elemento matematico</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
index 7fa730bc..cc50cde 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, פריט תפריט</translation>
 <translation id="3393605254399152980">גוררים עם אצבע אחת כדי לשמוע את שם הפריט שבו נוגעים</translation>
 <translation id="3406283310380167331">הצג את רשימת הטפסים</translation>
-<translation id="3423495725743882470">שורה $1 עמודה $2</translation>
 <translation id="3457000393508828486">לחוץ חלקית</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, כבה</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, לחצן</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}two{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">רשימת השלמה אוטומטית</translation>
 <translation id="3810838688059735925">וידאו</translation>
-<translation id="3812237531158591503">הדבק את $1.</translation>
 <translation id="3816633764618089385">המדיה הבאה</translation>
 <translation id="3819376190738087562">אין דילוגים.</translation>
 <translation id="385383972552776628">פתח את דף האפשרויות</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">התראה שמוצגת בחלון קופץ</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{נקודה ופסיק}two{# סימני נקודה ופסיק}many{# סימני נקודה ופסיק}other{# סימני נקודה ופסיק}}</translation>
 <translation id="5411891038905756502">אין נקודת דילוג קודמת.</translation>
-<translation id="5417034931411865818">לחץ על הפריט שמתחת למפתח הניתוב $1</translation>
 <translation id="5435274640623994081">הפעלת רישום ביומן של צלילי התראה</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{סימן ‘קטן מ‘}two{# סימני ‘קטן מ‘}many{# סימני ‘קטן מ‘}other{# סימני ‘קטן מ‘}}</translation>
 <translation id="5444587279251314700">(פעיל)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">רווח</translation>
 <translation id="6132506484792346370">תיבת רשימה או תיבה משולבת</translation>
-<translation id="6138576064440631958">אקורד $1</translation>
 <translation id="6142308968191113180">כותרת 4</translation>
 <translation id="6164829606128959761">מד</translation>
 <translation id="6169420925157477918">תמונה עם תיאור ארוך</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">אין פריט קודם ברשימה.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">הכותרת הקודמת</translation>
-<translation id="6378565991815958969">העתק את $1.</translation>
 <translation id="6385591741672306837">עמודה</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">אין לחצן בחירה קודם.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">מעבר לשורה הבאה</translation>
 <translation id="8215202828671303819">בחירה מרובה</translation>
 <translation id="826825447994856889">מבוא</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">דלג לפריט הקודם הניתן למיקוד</translation>
 <translation id="8278417001922463147">אין סעיף קודם.</translation>
 <translation id="8283603667300770666">השדה הבא בטופס</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">אין מחוון קודם.</translation>
 <translation id="9087707351856729768">יש להקליד כדי להשלים באופן אוטומטי.</translation>
 <translation id="9089864840575085222">הד הקלדה מחזורית</translation>
-<translation id="9105227991373418255">גזור את $1.</translation>
 <translation id="9107530006868467849">אין ווידג'ט למדיה הקודמת.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
index a866dd5..79e6159c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />、メニュー項目</translation>
 <translation id="3393605254399152980">テキストを読み上げるには 1 本の指でドラッグします</translation>
 <translation id="3406283310380167331">フォーム リストを表示</translation>
-<translation id="3423495725743882470">行 $1 列 $2</translation>
 <translation id="3457000393508828486">一部オン</translation>
 <translation id="3458865416877308321"><ph name="NAME" />、オフ</translation>
 <translation id="3462439746547587373"><ph name="NAME" />、ボタン</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">オートコンプリートはリスト形式</translation>
 <translation id="3810838688059735925">動画</translation>
-<translation id="3812237531158591503">$1 を貼り付けます。</translation>
 <translation id="3816633764618089385">次のメディア</translation>
 <translation id="3819376190738087562">ジャンプはありません。</translation>
 <translation id="385383972552776628">オプション ページを開く</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">モーダル アラート</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{セミコロン}other{# 個のセミコロン}}</translation>
 <translation id="5411891038905756502">前のジャンプ ポイントはありません。</translation>
-<translation id="5417034931411865818">ルーティング キー $1 の下のアイテムをクリックします</translation>
 <translation id="5435274640623994081">イアコンのログを有効にする</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{小なり}other{# 個の小なり記号}}</translation>
 <translation id="5444587279251314700">(有効)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">ボタン</translation>
 <translation id="6129953537138746214">Space</translation>
 <translation id="6132506484792346370">リストボックスまたはコンボボックス</translation>
-<translation id="6138576064440631958">$1 コード</translation>
 <translation id="6142308968191113180">見出し 4</translation>
 <translation id="6164829606128959761">メーター</translation>
 <translation id="6169420925157477918">長い説明付きの画像です</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">前のリスト項目はありません。</translation>
 <translation id="6364795331201459219">見出し 6</translation>
 <translation id="6368143427468974988">前の見出し</translation>
-<translation id="6378565991815958969">$1 をコピーします。</translation>
 <translation id="6385591741672306837">列</translation>
 <translation id="6387719785439924554">別記</translation>
 <translation id="6411426777058107714">前のラジオボタンはありません。</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">次の行に移動します</translation>
 <translation id="8215202828671303819">複数選択可</translation>
 <translation id="826825447994856889">序論</translation>
-<translation id="826991282343985864">行$1列$2</translation>
 <translation id="8276439074553447000">前のフォーカス可能項目にジャンプ</translation>
 <translation id="8278417001922463147">前の記事はありません。</translation>
 <translation id="8283603667300770666">次のフォーム フィールド</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">前のスライダはありません。</translation>
 <translation id="9087707351856729768">文字を入力すると、オート コンプリートの候補が表示されます。</translation>
 <translation id="9089864840575085222">入力読み上げを切り替えます</translation>
-<translation id="9105227991373418255">$1 を切り取ります。</translation>
 <translation id="9107530006868467849">前のメディア ウィジェットはありません。</translation>
 <translation id="9108370397979208512">数式</translation>
 <translation id="9108589040018540527">スクロールバー</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
index 54c084d..0b91bed1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, ಮೆನು ಐಟಂ</translation>
 <translation id="3393605254399152980">ನೀವು ಸ್ಪರ್ಶಿಸಿರುವುದನ್ನು ಆಲಿಸಲು ಒಂದು ಬೆರಳನ್ನು ಎಳೆಯಿರಿ</translation>
 <translation id="3406283310380167331">ಫಾರ್ಮ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ</translation>
-<translation id="3423495725743882470">ಸಾಲು $1 ಕಾಲಮ್ $2</translation>
 <translation id="3457000393508828486">ಭಾಗಶಃ ಒತ್ತಿದಾಗ</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, ಆಫ್ ಮಾಡಿ</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, ಬಟನ್</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಪಟ್ಟಿ</translation>
 <translation id="3810838688059735925">ವೀಡಿಯೊ</translation>
-<translation id="3812237531158591503">$1 ಅಂಟಿಸಿ.</translation>
 <translation id="3816633764618089385">ಮುಂದಿನ ಮಾಧ್ಯಮ</translation>
 <translation id="3819376190738087562">ಯಾವುದೇ ಜಂಪ್‌ಗಳಿಲ್ಲ.</translation>
 <translation id="385383972552776628">ಆಯ್ಕೆಗಳ ಪುಟವನ್ನು ತೆರೆಯಿರಿ</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">ಒಂದು ಮಾದರಿ ಎಚ್ಚರಿಕೆ</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{ಅಲ್ಪವಿರಾಮ ಚಿಹ್ನೆ}one{# ಅರ್ಧವಿರಾಮ ಚಿಹ್ನೆಗಳು}other{# ಅರ್ಧವಿರಾಮ ಚಿಹ್ನೆಗಳು}}</translation>
 <translation id="5411891038905756502">ಯಾವುದೇ ಹಿಂದಿನ ಅಂಶವಿಲ್ಲ.</translation>
-<translation id="5417034931411865818">ರೂಟಿಂಗ್ ಕೀ $1 ಅಡಿಯಲ್ಲಿ ಐಟಂ ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="5435274640623994081">ಇಯರ್‌ಕಾನ್‌ ಲಾಗ್ ಇನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ಕಡಿಮೆ ಸೂಚಕ}one{# ಕಡಿಮೆ ಸೂಚಕ ಚಿಹ್ನೆಗಳು}other{# ಕಡಿಮೆ ಸೂಚಕ ಚಿಹ್ನೆಗಳು}}</translation>
 <translation id="5444587279251314700">(ಸಕ್ರಿಯವಾಗಿದೆ)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">ಸ್ಪೇಸ್</translation>
 <translation id="6132506484792346370">ಪಟ್ಟಿ ಬಾಕ್ಸ್ ಅಥವಾ ಕಾಂಬೊ ಬಾಕ್ಸ್</translation>
-<translation id="6138576064440631958">$1 ವೃತ್ತದ ಭಾಗ</translation>
 <translation id="6142308968191113180">ಶೀರ್ಷಿಕೆ 4</translation>
 <translation id="6164829606128959761">ಮೀಟರ್</translation>
 <translation id="6169420925157477918">ದೀರ್ಘ ವಿವರಣೆಯೊಂದಿಗೆ ಚಿತ್ರ</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">ಮುಂದಿನ ಯಾವುದೇ ಪಟ್ಟಿ ಐಟಂಯಿಲ್ಲ.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">ಹಿಂದಿನ ಶಿರೋನಾಮೆ</translation>
-<translation id="6378565991815958969">$1 ನಕಲಿಸಿ.</translation>
 <translation id="6385591741672306837">ಕಾಲಮ್</translation>
 <translation id="6387719785439924554">ಪಕ್ಕದಲ್ಲಿ</translation>
 <translation id="6411426777058107714">ಹಿಂದಿನ ರೇಡಿಯೊ ಬಟನ್ ಇಲ್ಲ.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">ಮುಂದಿನ ಸಾಲಿಗೆ ಹೋಗಿ</translation>
 <translation id="8215202828671303819">ಬಹು ಆಯ್ಕೆ</translation>
 <translation id="826825447994856889">ಪರಿಚಯ</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">ಹಿಂದೆ ಗಮನಹರಿಸಿದಂತಹ ಐಟಂಗೆ ಹೋಗಿ</translation>
 <translation id="8278417001922463147">ಯಾವುದೇ ಹಿಂದಿನ ಲೇಖನವಿಲ್ಲ.</translation>
 <translation id="8283603667300770666">ಮುಂದಿನ ಫಾರ್ಮ್ ಕ್ಷೇತ್ರ</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">ಹಿಂದಿನ ಸ್ಲೈಡರ್ ಇಲ್ಲ.</translation>
 <translation id="9087707351856729768">ಸ್ವಯಂ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಆಯ್ಕೆಗಳನ್ನು ಪಡೆಯಲು ಟೈಪ್ ಮಾಡಿ.</translation>
 <translation id="9089864840575085222">ಸೈಕಲ್ ಟೈಪಿಂಗ್ ಇಕೋ</translation>
-<translation id="9105227991373418255">$1 ಕತ್ತರಿಸಿ.</translation>
 <translation id="9107530006868467849">ಯಾವುದೇ ಹಿಂದಿನ ಮಾಧ್ಯಮ ವಿಜೆಟ್ ಇಲ್ಲ.</translation>
 <translation id="9108370397979208512">ಮ್ಯಾಥ್</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
index bf168ee4..e72d2b4 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, 메뉴 항목</translation>
 <translation id="3393605254399152980">터치한 항목을 들으려면 한 손가락으로 드래그하세요.</translation>
 <translation id="3406283310380167331">양식 목록 표시</translation>
-<translation id="3423495725743882470">행 $1 열 $2</translation>
 <translation id="3457000393508828486">부분적으로 누름</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, 스위치 사용 중지</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, 버튼</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">자동완성 목록</translation>
 <translation id="3810838688059735925">동영상</translation>
-<translation id="3812237531158591503">$1 항목을 붙여넣습니다.</translation>
 <translation id="3816633764618089385">다음 미디어</translation>
 <translation id="3819376190738087562">점프가 없습니다.</translation>
 <translation id="385383972552776628">옵션 페이지 열기</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">모달 알림</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{세미콜론}other{세미콜론 #개}}</translation>
 <translation id="5411891038905756502">이전 점프 지점이 없습니다.</translation>
-<translation id="5417034931411865818">라우팅 키 $1 아래에서 항목을 클릭합니다.</translation>
 <translation id="5435274640623994081">이어콘 로깅 사용</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{작음 부호}other{작음 부호 #개}}</translation>
 <translation id="5444587279251314700">(활성)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">공백</translation>
 <translation id="6132506484792346370">목록 상자 또는 콤보 상자</translation>
-<translation id="6138576064440631958">$1 코드</translation>
 <translation id="6142308968191113180">제목 4</translation>
 <translation id="6164829606128959761">미터</translation>
 <translation id="6169420925157477918">자세한 설명이 있는 이미지</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">이전 목록 항목이 없습니다.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">이전 제목</translation>
-<translation id="6378565991815958969">$1 항목을 복사합니다.</translation>
 <translation id="6385591741672306837">열</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">이전 라디오 버튼이 없습니다.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">다음 행으로 이동</translation>
 <translation id="8215202828671303819">다중 선택</translation>
 <translation id="826825447994856889">소개</translation>
-<translation id="826991282343985864">행$1열$2</translation>
 <translation id="8276439074553447000">이전 초점 가능 항목으로 이동</translation>
 <translation id="8278417001922463147">이전 도움말이 없습니다.</translation>
 <translation id="8283603667300770666">다음 양식 입력란</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">이전 슬라이더가 없습니다.</translation>
 <translation id="9087707351856729768">자동 완성을 사용하려면 입력하세요.</translation>
 <translation id="9089864840575085222">순환 입력 에코</translation>
-<translation id="9105227991373418255">$1 항목을 잘라냅니다.</translation>
 <translation id="9107530006868467849">이전 미디어 위젯이 없습니다.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
index 3b6be1d..3b0412b 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, meniu elementas</translation>
 <translation id="3393605254399152980">Vilkite vienu pirštu, kad būtų pasakyta, ką liečiate</translation>
 <translation id="3406283310380167331">Rodyti formų sąrašą</translation>
-<translation id="3423495725743882470">$1 eilutė, $2 stulpelis</translation>
 <translation id="3457000393508828486">Iš dalies paspausta</translation>
 <translation id="3458865416877308321">„<ph name="NAME" />“, išjungti</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, mygtukas</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Sąrašo automatinis užbaigimas</translation>
 <translation id="3810838688059735925">Vaizdo</translation>
-<translation id="3812237531158591503">įklijuoti $1.</translation>
 <translation id="3816633764618089385">Kitas medijų raktas</translation>
 <translation id="3819376190738087562">Nėra perėjimų.</translation>
 <translation id="385383972552776628">Atidaryti parinkčių puslapį</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modalinis įspėjimas</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{kabliataškis}one{# kabliataškis}few{# kabliataškiai}many{# semicolons}other{# kabliataškių}}</translation>
 <translation id="5411891038905756502">Nėra ankstesnės perėjimo vietos.</translation>
-<translation id="5417034931411865818">Spustelėkite $1 maršruto parinkimo klavišo elementą</translation>
 <translation id="5435274640623994081">Įgalinti garsinio ženklelio įrašymą į žurnalą</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ženklas mažiau}one{# ženklas mažiau}few{# ženklai mažiau}many{# less than signs}other{# ženklų mažiau}}</translation>
 <translation id="5444587279251314700">(aktyvus)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Tarpas</translation>
 <translation id="6132506484792346370">Sąrašo laukelis arba jungtinis laukelis</translation>
-<translation id="6138576064440631958">Pokalbiai: $1</translation>
 <translation id="6142308968191113180">4 antraštė</translation>
 <translation id="6164829606128959761">matuoklis</translation>
 <translation id="6169420925157477918">Vaizdas su ilgu aprašu</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Nėra ankstesnio sąrašo elemento.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Ankstesnė antraštė</translation>
-<translation id="6378565991815958969">kopijuoti $1.</translation>
 <translation id="6385591741672306837">stulp.</translation>
 <translation id="6387719785439924554">šalia</translation>
 <translation id="6411426777058107714">Nėra ankstesnės akutės.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Pereiti prie kitos eilutės</translation>
 <translation id="8215202828671303819">Kelių elementų pasirinkimas</translation>
 <translation id="826825447994856889">Įžanga</translation>
-<translation id="826991282343985864">eil$1st$2</translation>
 <translation id="8276439074553447000">Pereiti prie ankstesni elemento, kurį galima fokusuoti</translation>
 <translation id="8278417001922463147">Nėra jokių ankstesnių straipsnių.</translation>
 <translation id="8283603667300770666">Kitas formos laukas</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Nėra ankstesnio šliaužiklio.</translation>
 <translation id="9087707351856729768">Veskite tekstą, kad būtų rodomas automatinis užbaigimas.</translation>
 <translation id="9089864840575085222">Ciklo įvedimo aidas</translation>
-<translation id="9105227991373418255">iškirpti $1.</translation>
 <translation id="9107530006868467849">Nėra ankstesnio medijų valdiklio.</translation>
 <translation id="9108370397979208512">matematika</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
index 7d6e349d..a2a5c5d 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, izvēlnes vienums</translation>
 <translation id="3393605254399152980">Velciet vienu pirkstu, lai tiktu nosaukts vienums, kam pieskaraties</translation>
 <translation id="3406283310380167331">Rādīt veidlapu sarakstu</translation>
-<translation id="3423495725743882470">$1. rinda, $2. sleja</translation>
 <translation id="3457000393508828486">Daļēji nospiests</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, izslēgt</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, poga</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}zero{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">Automātiskā pabeigšana: saraksts</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">ielīmēt $1.</translation>
 <translation id="3816633764618089385">Nākamais multivides vienums</translation>
 <translation id="3819376190738087562">Nav pārejas punktu.</translation>
 <translation id="385383972552776628">Atvērt opciju lapu</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modālie brīdinājumi</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semikols}zero{# semikolu}one{# semikols}other{# semikoli}}</translation>
 <translation id="5411891038905756502">Iepriekš nav neviena pārejas punkta.</translation>
-<translation id="5417034931411865818">Noklikšķiniet uz vienuma zem maršrutēšanas taustiņa $1</translation>
 <translation id="5435274640623994081">Iespējot audio ikonas reģistrēšanu</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{zīme “mazāks par”}zero{# zīmju “mazāks par”}one{# zīme “mazāks par”}other{# zīmes “mazāks par”}}</translation>
 <translation id="5444587279251314700">(aktīva)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">poga</translation>
 <translation id="6129953537138746214">Atstarpe</translation>
 <translation id="6132506484792346370">Saraksta lodziņš vai kombinētais lodziņš</translation>
-<translation id="6138576064440631958">Kombinācija: $1</translation>
 <translation id="6142308968191113180">4. līmeņa virsraksts</translation>
 <translation id="6164829606128959761">mērītājs</translation>
 <translation id="6169420925157477918">Attēls ar garu aprakstu</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Iepriekš nav neviena saraksta vienuma.</translation>
 <translation id="6364795331201459219">6. līmeņa virsraksts</translation>
 <translation id="6368143427468974988">Iepriekšējais virsraksts</translation>
-<translation id="6378565991815958969">kopēt $1.</translation>
 <translation id="6385591741672306837">sleja</translation>
 <translation id="6387719785439924554">malā novietots saturs</translation>
 <translation id="6411426777058107714">Iepriekš nav nevienas radiopogas.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Pāriet uz nākamo rindu</translation>
 <translation id="8215202828671303819">Vairāku elementu atlase</translation>
 <translation id="826825447994856889">Ievads</translation>
-<translation id="826991282343985864">r$1k$2</translation>
 <translation id="8276439074553447000">Pāriet uz iepriekšējo fokusējamo vienumu</translation>
 <translation id="8278417001922463147">Iepriekš nav neviena raksta.</translation>
 <translation id="8283603667300770666">Nākamais veidlapas lauks</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Iepriekš nav neviena slīdņa.</translation>
 <translation id="9087707351856729768">Lai skatītu automātiskās pabeigšanas vienumus, rakstiet tekstu.</translation>
 <translation id="9089864840575085222">Cikliska rakstīšanas atbalss</translation>
-<translation id="9105227991373418255">izgriezt $1.</translation>
 <translation id="9107530006868467849">Iepriekš nav neviena multivides logrīka.</translation>
 <translation id="9108370397979208512">matemātiska izteiksme</translation>
 <translation id="9108589040018540527">ritjosla</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
index fbc58821..11163241 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, മെനു ഇനം</translation>
 <translation id="3393605254399152980">നിങ്ങൾ സ്‌പർശിക്കുന്നത് എന്താണെന്ന് കേൾക്കാൻ വിരൽ ഉപയോഗിച്ച് വലിക്കുക</translation>
 <translation id="3406283310380167331">ഫോമുകളുടെ ലിസ്റ്റ് കാണിക്കുക</translation>
-<translation id="3423495725743882470">വരി $1 കോളം $2</translation>
 <translation id="3457000393508828486">ഭാഗികമായി അമർത്തിയത്</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, സ്വിച്ച് ഓഫാണ്</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, ബട്ടൺ</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">യാന്ത്രികപൂർത്തീകരണം ലിസ്റ്റ്</translation>
 <translation id="3810838688059735925">വീഡിയോ</translation>
-<translation id="3812237531158591503">$1 ഒട്ടിക്കുക.</translation>
 <translation id="3816633764618089385">അടുത്ത മീഡിയ</translation>
 <translation id="3819376190738087562">ജംപുകൾ ഒന്നുമില്ല.</translation>
 <translation id="385383972552776628">ഓപ്ഷനുകളുടെ പേജ് തുറക്കുക</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">ഒരു മോഡൽ അലേർട്ട്</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{അർദ്ധവിരാമം}other{# അർദ്ധവിരാമങ്ങൾ}}</translation>
 <translation id="5411891038905756502">മുൻ ജംപ് പോയിന്റ് ഒന്നുമില്ല.</translation>
-<translation id="5417034931411865818">$1 റൂട്ടിംഗ് കീയിലുള്ള ഇനം ക്ലിക്കുചെയ്യുക</translation>
 <translation id="5435274640623994081">ഇയർകോൺ ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ആരോഹണ ചിഹ്നം}other{# ആരോഹണ ചിഹ്നങ്ങൾ}}</translation>
 <translation id="5444587279251314700">(സജീവം)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">സ്പെയ്സ്</translation>
 <translation id="6132506484792346370">ഒരു ലിസ്‌റ്റ് ബോക്‌സ്‌ അല്ലെങ്കിൽ കോംബോ ബോക്‌സ്</translation>
-<translation id="6138576064440631958">$1 കോർഡ്</translation>
 <translation id="6142308968191113180">ശീർഷകം 4</translation>
 <translation id="6164829606128959761">മീറ്റർ</translation>
 <translation id="6169420925157477918">ദൈർഘ്യമേറിയ വിവരണമുള്ള ചിത്രം</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">മുൻ ലിസ്റ്റ് ഇനം ഒന്നുമില്ല.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">മുൻ ശീർഷകം</translation>
-<translation id="6378565991815958969">$1 പകർത്തുക.</translation>
 <translation id="6385591741672306837">കോളം</translation>
 <translation id="6387719785439924554">അരികിൽ</translation>
 <translation id="6411426777058107714">മുൻ റേഡിയോ ബട്ടൺ ഒന്നുമില്ല.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">അടുത്ത വരിയിലേക്ക് പോവുക</translation>
 <translation id="8215202828671303819">ഒന്നിലധികം തിരഞ്ഞെടുക്കൽ</translation>
 <translation id="826825447994856889">ആമുഖം</translation>
-<translation id="826991282343985864">വ$1നി$2</translation>
 <translation id="8276439074553447000">ഫോക്കസ് ചെയ്യാനാകുന്ന മുമ്പത്തെ ഇനത്തിലേക്ക് പോകുക</translation>
 <translation id="8278417001922463147">മുമ്പത്തെ ലേഖനമൊന്നുമില്ല.</translation>
 <translation id="8283603667300770666">അടുത്ത ഫോം ഫീൽഡ്</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">മുൻ സ്ലൈഡർ ഒന്നുമില്ല.</translation>
 <translation id="9087707351856729768">സ്വമേധയാ പൂർത്തിയാക്കാൻ ടൈപ്പ് ചെയ്യുക.</translation>
 <translation id="9089864840575085222">സൈക്കിൾ ടൈപ്പുചെയ്യൽ എക്കൊ</translation>
-<translation id="9105227991373418255">$1 മുറിക്കുക.</translation>
 <translation id="9107530006868467849">മുമ്പത്തെ മീഡിയ വിജറ്റൊന്നുമില്ല.</translation>
 <translation id="9108370397979208512">മാത്ത്</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
index c274676..1b2e3ce 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, मेनू आयटम</translation>
 <translation id="3393605254399152980">तुम्ही कोणत्या गोष्टीला स्पर्श करत आहात ते ऐकण्यासाठी एका बोटाने ड्रॅग करा</translation>
 <translation id="3406283310380167331">फॉर्म सूची दर्शवा</translation>
-<translation id="3423495725743882470">पंक्ती $1 स्तंभ $2</translation>
 <translation id="3457000393508828486">अंशत: दाबलेले</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, बंद करा</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, बटण</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">स्‍वयंपूर्ण सूची</translation>
 <translation id="3810838688059735925">व्हिडिओ</translation>
-<translation id="3812237531158591503">$1 पेस्ट करा.</translation>
 <translation id="3816633764618089385">पुढील माध्यम</translation>
 <translation id="3819376190738087562">जंप नाहीत.</translation>
 <translation id="385383972552776628">पर्याय पृष्‍ठ उघडा</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">एक मॉडेल सूचना</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{अर्धविराम}one{# अर्धविराम}other{# अर्धविराम}}</translation>
 <translation id="5411891038905756502">मागील जंप बिंदू नाही.</translation>
-<translation id="5417034931411865818">$1 रूटिंग की अंतर्गत आयटम क्लिक करा</translation>
 <translation id="5435274640623994081">इअरकॉन लॉगिंग सुरू करा</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{पेक्षा कमी}one{# पेक्षा कमी चिन्हे}other{# पेक्षा कमी चिन्हे}}</translation>
 <translation id="5444587279251314700">(सक्रिय)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">जागा</translation>
 <translation id="6132506484792346370">एक सूचीबॉक्स किंवा काँबो बॉक्स</translation>
-<translation id="6138576064440631958">$1 कॉर्ड</translation>
 <translation id="6142308968191113180">मथळा 4</translation>
 <translation id="6164829606128959761">मीटर</translation>
 <translation id="6169420925157477918">मोठ्या वर्णनासह इमेज</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">मागील सूची आयटम नाही.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">मागील मथळा</translation>
-<translation id="6378565991815958969">$1 कॉपी करा.</translation>
 <translation id="6385591741672306837">स्तंभ</translation>
 <translation id="6387719785439924554">बाजूस</translation>
 <translation id="6411426777058107714">मागील रेडिओ बटण नाही.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">पुढील ओळीवर जा</translation>
 <translation id="8215202828671303819">एकाधिक निवड</translation>
 <translation id="826825447994856889">परिचय</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">मागील फोकस करण्यायोग्य आयटमवर जा</translation>
 <translation id="8278417001922463147">मागील लेख नाही.</translation>
 <translation id="8283603667300770666">पुढील फॉर्म फील्‍ड</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">मागील स्‍लायडर नाही.</translation>
 <translation id="9087707351856729768">आपोआप पूर्ण करण्यासाठी टाइप करा.</translation>
 <translation id="9089864840575085222">टायपिंग प्रतिध्वनी आवर्तन</translation>
-<translation id="9105227991373418255">$1 कट करा.</translation>
 <translation id="9107530006868467849">मागील माध्यम विजेट नाही.</translation>
 <translation id="9108370397979208512">गणित</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
index 76fe38f..e4334c4d 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Item menu, <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Seret satu jari untuk mendengar item yang anda sentuh</translation>
 <translation id="3406283310380167331">Paparkan senarai borang</translation>
-<translation id="3423495725743882470">baris $1 lajur $2</translation>
 <translation id="3457000393508828486">Separuh ditekan</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, dimatikan</translation>
 <translation id="3462439746547587373">Butang, <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Senarai autolengkap</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">tampal $1.</translation>
 <translation id="3816633764618089385">Media seterusnya</translation>
 <translation id="3819376190738087562">Tiada langkauan.</translation>
 <translation id="385383972552776628">Buka halaman pilihan</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Makluman mod</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{koma bertitik}other{# koma bertitik}}</translation>
 <translation id="5411891038905756502">Tiada titik langkau terdahulu.</translation>
-<translation id="5417034931411865818">Klik item di bawah kekunci penghalaan $1</translation>
 <translation id="5435274640623994081">Dayakan pengelogan ikon audio</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{kurang daripada}other{# tanda kurang daripada}}</translation>
 <translation id="5444587279251314700">(aktif)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Ruang</translation>
 <translation id="6132506484792346370">Kotak senarai atau kotak kombo</translation>
-<translation id="6138576064440631958">$1 kord</translation>
 <translation id="6142308968191113180">Tajuk 4</translation>
 <translation id="6164829606128959761">meter</translation>
 <translation id="6169420925157477918">Imej dengan huraian panjang</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Tiada item senarai terdahulu.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Tajuk sebelumnya</translation>
-<translation id="6378565991815958969">salin $1.</translation>
 <translation id="6385591741672306837">lajur</translation>
 <translation id="6387719785439924554">ke sebelah</translation>
 <translation id="6411426777058107714">Tiada butang radio terdahulu.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Pergi ke baris seterusnya</translation>
 <translation id="8215202828671303819">Berbilang pilihan</translation>
 <translation id="826825447994856889">Pengenalan</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Langkau ke item boleh fokus sebelumnya</translation>
 <translation id="8278417001922463147">Tiada artikel sebelumnya.</translation>
 <translation id="8283603667300770666">Medan borang seterusnya</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Tiada peluncur terdahulu.</translation>
 <translation id="9087707351856729768">Taip untuk autolengkap.</translation>
 <translation id="9089864840575085222">Gema penaipan kitaran</translation>
-<translation id="9105227991373418255">potong $1.</translation>
 <translation id="9107530006868467849">Tiada widget media sebelumnya.</translation>
 <translation id="9108370397979208512">matematik</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
index c543b1f9..cf8f7b0 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" /> , menu-item</translation>
 <translation id="3393605254399152980">Sleep met één vinger om te horen wat je aanraakt</translation>
 <translation id="3406283310380167331">Lijst met formulieren weergeven</translation>
-<translation id="3423495725743882470">rij $1 kolom $2</translation>
 <translation id="3457000393508828486">Gedeeltelijk ingedrukt</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, uitschakelen</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, knop</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Automatisch lijst aanvullen</translation>
 <translation id="3810838688059735925">Videobestanden</translation>
-<translation id="3812237531158591503">$1 plakken.</translation>
 <translation id="3816633764618089385">Volgende media</translation>
 <translation id="3819376190738087562">Geen sprongen.</translation>
 <translation id="385383972552776628">Pagina met opties openen</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Een melding die in een modaal dialoogvenster wordt weergegeven</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{puntkomma}other{# puntkomma's}}</translation>
 <translation id="5411891038905756502">Geen vorig punt om naar te springen.</translation>
-<translation id="5417034931411865818">Klik op het item onder de routeringstoets $1</translation>
 <translation id="5435274640623994081">Earconregistratie inschakelen</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{kleiner-dan-teken}other{# kleiner-dan-tekens}}</translation>
 <translation id="5444587279251314700">(actief)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">knop</translation>
 <translation id="6129953537138746214">Spatie</translation>
 <translation id="6132506484792346370">Een keuzelijst of een keuzelijst met invoervak</translation>
-<translation id="6138576064440631958">Combinatie $1</translation>
 <translation id="6142308968191113180">Kop 4</translation>
 <translation id="6164829606128959761">meter</translation>
 <translation id="6169420925157477918">Afbeelding met lange beschrijving</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Geen vorig lijstitem.</translation>
 <translation id="6364795331201459219">k6</translation>
 <translation id="6368143427468974988">Vorige kop</translation>
-<translation id="6378565991815958969">$1 kopiëren.</translation>
 <translation id="6385591741672306837">kol</translation>
 <translation id="6387719785439924554">terzijde</translation>
 <translation id="6411426777058107714">Geen vorig keuzerondje.</translation>
@@ -896,7 +891,6 @@
 <translation id="820469951249669083">Naar volgende rij</translation>
 <translation id="8215202828671303819">Meervoudige selectie</translation>
 <translation id="826825447994856889">Inleiding</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Springen naar vorig actief item</translation>
 <translation id="8278417001922463147">Geen vorig artikel.</translation>
 <translation id="8283603667300770666">Volgend formulierveld</translation>
@@ -978,7 +972,6 @@
 <translation id="9082874451376019682">Geen vorige schuifregelaar.</translation>
 <translation id="9087707351856729768">Begin met typen voor automatisch aanvullen.</translation>
 <translation id="9089864840575085222">Typecho doorlopen</translation>
-<translation id="9105227991373418255">$1 knippen.</translation>
 <translation id="9107530006868467849">Geen vorige mediawidget.</translation>
 <translation id="9108370397979208512">wiskunde</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
index 5d1b034..2ec1e98a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, menyelement</translation>
 <translation id="3393605254399152980">Dra én finger for å høre hva du trykker på</translation>
 <translation id="3406283310380167331">Vis skjemalisten</translation>
-<translation id="3423495725743882470">rad $1 kolonne $2</translation>
 <translation id="3457000393508828486">Delvis trykket på</translation>
 <translation id="3458865416877308321"><ph name="NAME" />-bryteren er av</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, knapp</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Autofullføringsliste</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">lim inn $1.</translation>
 <translation id="3816633764618089385">Neste media</translation>
 <translation id="3819376190738087562">Det finnes ingenting å gå til.</translation>
 <translation id="385383972552776628">Åpne siden med alternativer</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Et modalt varsel</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semikolon}other{# semikolontegn}}</translation>
 <translation id="5411891038905756502">Det finnes ingen tidligere punkter å gå til.</translation>
-<translation id="5417034931411865818">Klikk på elementet under rutertasten $1</translation>
 <translation id="5435274640623994081">Slå på loggføring av lydikon</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{mindre enn}other{# mindre enn-tegn}}</translation>
 <translation id="5444587279251314700">(aktiv)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Mellomrom</translation>
 <translation id="6132506484792346370">En listeboks eller et kombinasjonsfelt</translation>
-<translation id="6138576064440631958">$1 akkord</translation>
 <translation id="6142308968191113180">Overskrift 4</translation>
 <translation id="6164829606128959761">måler</translation>
 <translation id="6169420925157477918">Bilde med lang beskrivelse</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Det finnes ingen tidligere listeelementer.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Forrige overskrift</translation>
-<translation id="6378565991815958969">kopiér $1.</translation>
 <translation id="6385591741672306837">kol.</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Det finnes ingen tidligere alternativknapper.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Gå til den neste raden</translation>
 <translation id="8215202828671303819">Flervalg</translation>
 <translation id="826825447994856889">Innledning</translation>
-<translation id="826991282343985864">r$1k$2</translation>
 <translation id="8276439074553447000">Gå til forrige fokuserbare element</translation>
 <translation id="8278417001922463147">Ingen tidligere artikler.</translation>
 <translation id="8283603667300770666">Neste skjemafelt</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Det fins ingen tidligere glidebrytere.</translation>
 <translation id="9087707351856729768">Skriv for å få automatiske fullføringer.</translation>
 <translation id="9089864840575085222">Slå av eller på innskrivingsekko</translation>
-<translation id="9105227991373418255">klipp ut $1.</translation>
 <translation id="9107530006868467849">Det finnes ingen tidligere mediemoduler.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
index 5bfa3567..6c53994f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, element menu</translation>
 <translation id="3393605254399152980">Przeciągnij jednym palcem, by usłyszeć, czego dotykasz</translation>
 <translation id="3406283310380167331">Pokaż listę formularzy</translation>
-<translation id="3423495725743882470">wiersz $1, kolumna $2</translation>
 <translation id="3457000393508828486">Częściowo naciśnięte</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, przełącznik wyłączony</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, przycisk</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Autouzupełnianie list</translation>
 <translation id="3810838688059735925">Wideo</translation>
-<translation id="3812237531158591503">wklej $1.</translation>
 <translation id="3816633764618089385">Następny plik multimedialny</translation>
 <translation id="3819376190738087562">Brak przejść.</translation>
 <translation id="385383972552776628">Otwórz stronę opcji</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Alert w oknie modalnym</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{średnik}few{# średniki}many{# średników}other{# semicolons}}</translation>
 <translation id="5411891038905756502">Brak poprzedniego punktu przejścia.</translation>
-<translation id="5417034931411865818">Kliknij element pod klawiszem sterującym $1</translation>
 <translation id="5435274640623994081">Włącz rejestrowanie ikony audio</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{mniejszy niż}few{# znaki mniejszości}many{# znaków mniejszości}other{# less than signs}}</translation>
 <translation id="5444587279251314700">(aktywna)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Spacja</translation>
 <translation id="6132506484792346370">Pole listy lub pole złożone</translation>
-<translation id="6138576064440631958">Akord: $1</translation>
 <translation id="6142308968191113180">Nagłówek 4</translation>
 <translation id="6164829606128959761">miernik</translation>
 <translation id="6169420925157477918">Obraz z długim opisem</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Brak poprzedniego elementu listy.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Poprzedni nagłówek</translation>
-<translation id="6378565991815958969">kopiuj $1.</translation>
 <translation id="6385591741672306837">kol.</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Brak poprzedniego przycisku radiowego.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Przejdź do następnego wiersza</translation>
 <translation id="8215202828671303819">Wybór wielokrotny</translation>
 <translation id="826825447994856889">Wprowadzenie</translation>
-<translation id="826991282343985864">w$1k$2</translation>
 <translation id="8276439074553447000">Przejdź do poprzedniego elementu, który można zaznaczyć</translation>
 <translation id="8278417001922463147">Nie ma poprzedniego artykułu.</translation>
 <translation id="8283603667300770666">Następne pole formularza</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Brak poprzedniego suwaka.</translation>
 <translation id="9087707351856729768">Gdy zaczniesz pisać, pojawi się podpowiedź.</translation>
 <translation id="9089864840575085222">Włącz/wyłącz odczytywanie podczas pisania</translation>
-<translation id="9105227991373418255">wytnij $1.</translation>
 <translation id="9107530006868467849">Brak widżetu poprzedniego pliku multimedialnego.</translation>
 <translation id="9108370397979208512">matematyczny</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
index 3d46959..01c1705 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Item de menu <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Arraste um dedo para ouvir o que você está tocando</translation>
 <translation id="3406283310380167331">Mostrar lista de formulários</translation>
-<translation id="3423495725743882470">linha $1 coluna $2</translation>
 <translation id="3457000393508828486">Parcialmente pressionado</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, desativado</translation>
 <translation id="3462439746547587373">Botão <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}other{#}}</translation>
 <translation id="3801735343383419236">Lista de preenchimento automático</translation>
 <translation id="3810838688059735925">Vídeo</translation>
-<translation id="3812237531158591503">colar $1.</translation>
 <translation id="3816633764618089385">Próxima mídia</translation>
 <translation id="3819376190738087562">Nenhum salto.</translation>
 <translation id="385383972552776628">Abrir página de opções</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Um alerta em uma janela modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{sinal de ponto-e-vírgula}one{# sinais de ponto-e-vírgula}other{# sinais de ponto-e-vírgula}}</translation>
 <translation id="5411891038905756502">No previous jump point.</translation>
-<translation id="5417034931411865818">Clique no item abaixo da chave de roteamento $1</translation>
 <translation id="5435274640623994081">Ativar registro de ícone auditivo</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{sinal de menor que}one{# sinais de menor que}other{# sinais de menor que}}</translation>
 <translation id="5444587279251314700">(ativo)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Espaço</translation>
 <translation id="6132506484792346370">Uma caixa de listagem ou uma caixa de combinação</translation>
-<translation id="6138576064440631958">$1 chord</translation>
 <translation id="6142308968191113180">Cabeçalho 4</translation>
 <translation id="6164829606128959761">medidor</translation>
 <translation id="6169420925157477918">Imagem com descrição longa</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Nenhum item a seguir na lista.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Cabeçalho anterior</translation>
-<translation id="6378565991815958969">copiar $1.</translation>
 <translation id="6385591741672306837">col</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Nenhum botão de opção anterior.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Ir para a próxima linha</translation>
 <translation id="8215202828671303819">Seleção múltipla</translation>
 <translation id="826825447994856889">Introdução</translation>
-<translation id="826991282343985864">l$1c$2</translation>
 <translation id="8276439074553447000">Ir para o item focalizável anterior</translation>
 <translation id="8278417001922463147">Não há artigos anteriores.</translation>
 <translation id="8283603667300770666">Próximo campo do formulário</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Nenhum controle deslizante anterior.</translation>
 <translation id="9087707351856729768">Digite para preencher automaticamente.</translation>
 <translation id="9089864840575085222">Percorrer eco de digitação</translation>
-<translation id="9105227991373418255">recortar $1.</translation>
 <translation id="9107530006868467849">Nenhum widget de mídia anterior.</translation>
 <translation id="9108370397979208512">matemática</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
index a5ff489..c9e35de1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, item de menu</translation>
 <translation id="3393605254399152980">Arraste um dedo para obter uma indicação sonora daquilo em que toca.</translation>
 <translation id="3406283310380167331">Mostrar lista de formulários</translation>
-<translation id="3423495725743882470">linha $1, coluna $2</translation>
 <translation id="3457000393508828486">Parcialmente premido</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, desligar</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, botão</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Lista de preenchimento automático</translation>
 <translation id="3810838688059735925">Vídeo</translation>
-<translation id="3812237531158591503">colar $1.</translation>
 <translation id="3816633764618089385">Multimédia seguinte</translation>
 <translation id="3819376190738087562">Não existem avanços.</translation>
 <translation id="385383972552776628">Abrir página de opções</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Um alerta modal</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{ponto e vírgula}other{# pontos e vírgulas}}</translation>
 <translation id="5411891038905756502">Não existe nenhum ponto de avanço anterior.</translation>
-<translation id="5417034931411865818">Clique no item sob a chave de encaminhamento $1</translation>
 <translation id="5435274640623994081">Ativar o registo do ícone sonoro</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{menor que}other{# sinais de menor que}}</translation>
 <translation id="5444587279251314700">(ativo)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Espaço</translation>
 <translation id="6132506484792346370">Uma caixa de lista ou uma caixa de combinação</translation>
-<translation id="6138576064440631958">Corda $1</translation>
 <translation id="6142308968191113180">Titulo 4</translation>
 <translation id="6164829606128959761">contador</translation>
 <translation id="6169420925157477918">Imagem com descrição longa</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Não existe nenhum item de lista anterior.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Título anterior</translation>
-<translation id="6378565991815958969">copiar $1.</translation>
 <translation id="6385591741672306837">coluna</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Não existe nenhum botão de opção anterior.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Ir para a linha seguinte</translation>
 <translation id="8215202828671303819">Seleção múltipla</translation>
 <translation id="826825447994856889">Introdução</translation>
-<translation id="826991282343985864">l$1c$2</translation>
 <translation id="8276439074553447000">Ir para o anterior item a focar</translation>
 <translation id="8278417001922463147">Nenhum artigo anterior.</translation>
 <translation id="8283603667300770666">Campo de formulário seguinte</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Não existe nenhum controlo de deslize anterior.</translation>
 <translation id="9087707351856729768">Escreva para preencher automaticamente.</translation>
 <translation id="9089864840575085222">Eco da digitação de ciclo</translation>
-<translation id="9105227991373418255">cortar $1.</translation>
 <translation id="9107530006868467849">Não existe nenhum widget multimédia anterior.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
index 9a6efde..cdc7cdc 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, element din meniu</translation>
 <translation id="3393605254399152980">Trageți cu degetul ca să auziți ce atingeți</translation>
 <translation id="3406283310380167331">Afișați lista de formulare</translation>
-<translation id="3423495725743882470">rândul $1 coloana $2</translation>
 <translation id="3457000393508828486">Apăsat parțial</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, dezactivează</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, buton</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}few{#}other{#}}</translation>
 <translation id="3801735343383419236">Completare automată listă</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">inserează $1.</translation>
 <translation id="3816633764618089385">Conținut media următor</translation>
 <translation id="3819376190738087562">Nu există puncte de accesare directă.</translation>
 <translation id="385383972552776628">Deschideți pagina de opțiuni</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">O alertă în fereastră modală</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semn punct și virgulă}few{# semne punct și virgulă}other{# de semne punct și virgulă}}</translation>
 <translation id="5411891038905756502">Nu există un punct de accesare directă anterior.</translation>
-<translation id="5417034931411865818">Dă clic pe elementul de sub tasta de deplasare $1</translation>
 <translation id="5435274640623994081">Activează înregistrarea audiogramei</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{semn mai mic}few{# semne mai mic}other{# de semne mai mic}}</translation>
 <translation id="5444587279251314700">(activă)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">buton</translation>
 <translation id="6129953537138746214">Spațiu</translation>
 <translation id="6132506484792346370">O casetă de tip listă sau combo</translation>
-<translation id="6138576064440631958">Grupul $1</translation>
 <translation id="6142308968191113180">Titlu 4</translation>
 <translation id="6164829606128959761">instrument de măsurare</translation>
 <translation id="6169420925157477918">Imagine cu descriere lungă</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Nu există un element de listă anterior.</translation>
 <translation id="6364795331201459219">titlu 6</translation>
 <translation id="6368143427468974988">Titlul anterior</translation>
-<translation id="6378565991815958969">copiază $1.</translation>
 <translation id="6385591741672306837">coloană</translation>
 <translation id="6387719785439924554">separat</translation>
 <translation id="6411426777058107714">Nu există un buton radio anterior.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Accesează rândul următor</translation>
 <translation id="8215202828671303819">Selectare multiplă</translation>
 <translation id="826825447994856889">Introducere</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Salt la elementul focalizabil anterior</translation>
 <translation id="8278417001922463147">Nu există niciun articol anterior.</translation>
 <translation id="8283603667300770666">Câmpul următor din formular</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Nu există un glisor anterior.</translation>
 <translation id="9087707351856729768">Tastează pentru completare automată.</translation>
 <translation id="9089864840575085222">Repetă ecoul la tastare</translation>
-<translation id="9105227991373418255">decupează $1.</translation>
 <translation id="9107530006868467849">Niciun widget media anterior.</translation>
 <translation id="9108370397979208512">matematică</translation>
 <translation id="9108589040018540527">bară de derulare</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
index b7edd15..139fb94 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Пункт меню <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Проведите пальцем по экрану, чтобы включить озвучивание текста.</translation>
 <translation id="3406283310380167331">Показать список форм</translation>
-<translation id="3423495725743882470">строка $1, столбец $2</translation>
 <translation id="3457000393508828486">Частично нажато</translation>
 <translation id="3458865416877308321"><ph name="NAME" />: отключено</translation>
 <translation id="3462439746547587373">Кнопка "<ph name="NAME" />"</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Список автозаполнения</translation>
 <translation id="3810838688059735925">Видео</translation>
-<translation id="3812237531158591503">вставить $1.</translation>
 <translation id="3816633764618089385">Перейти к следующему файлу мультимедиа</translation>
 <translation id="3819376190738087562">Переходов нет.</translation>
 <translation id="385383972552776628">Открыть страницу параметров</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Модальное оповещение</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{точка с запятой}one{# точка с запятой}few{# точки с запятой}many{# точек с запятой}other{# semicolons}}</translation>
 <translation id="5411891038905756502">Предыдущей точки перехода нет.</translation>
-<translation id="5417034931411865818">Нажать на элемент под ключом маршрутизации $1</translation>
 <translation id="5435274640623994081">Включить ведение журнала для звуковых сигналов</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{знак "меньше"}one{# знак "меньше"}few{# знака "меньше"}many{# знаков "меньше"}other{# less than signs}}</translation>
 <translation id="5444587279251314700">(активна)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Пробел</translation>
 <translation id="6132506484792346370">Обычный или комбинированный список</translation>
-<translation id="6138576064440631958">комбинация: $1</translation>
 <translation id="6142308968191113180">Заголовок четвертого уровня</translation>
 <translation id="6164829606128959761">счетчик</translation>
 <translation id="6169420925157477918">Изображение с подробным описанием</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Предыдущего пункта списка нет.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Перейти к предыдущему заголовку</translation>
-<translation id="6378565991815958969">копировать $1.</translation>
 <translation id="6385591741672306837">стлбц</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Предыдущего переключателя нет.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Перейти к следующей строке</translation>
 <translation id="8215202828671303819">Множественный выбор</translation>
 <translation id="826825447994856889">Введение</translation>
-<translation id="826991282343985864">стр$1стлб$2</translation>
 <translation id="8276439074553447000">Перейти к предыдущему активируемому элементу</translation>
 <translation id="8278417001922463147">Предыдущей статьи нет.</translation>
 <translation id="8283603667300770666">Перейти к следующему полю формы</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Предыдущего ползунка нет.</translation>
 <translation id="9087707351856729768">Чтобы сработало автозаполнение, начните вводить текст.</translation>
 <translation id="9089864840575085222">Повторно озвучивать вводимый текст</translation>
-<translation id="9105227991373418255">вырезать $1.</translation>
 <translation id="9107530006868467849">Предыдущего виджета мультимедиа нет.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
index 1105c4a..e9b8d25 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, položka ponuky</translation>
 <translation id="3393605254399152980">Ak chcete, aby sa vyslovila položka, na ktorú ste klepli, presuňte po nej jeden prst</translation>
 <translation id="3406283310380167331">Zobraziť zoznam formulárov</translation>
-<translation id="3423495725743882470">riadok $1 stĺpec $2</translation>
 <translation id="3457000393508828486">Čiastočne stlačené</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, vypnuté</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, tlačidlo</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Zoznam automatického dopĺňania</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">prilepiť $1.</translation>
 <translation id="3816633764618089385">Ďalšie médiá</translation>
 <translation id="3819376190738087562">Žiadne preskočenia</translation>
 <translation id="385383972552776628">Otvoriť stránku možností</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Upozornenie týkajúce sa režimu</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{bodkočiarka}few{# bodkočiarky}many{# semicolons}other{# bodkočiarok}}</translation>
 <translation id="5411891038905756502">Žiadny predchádzajúci bod preskočenia</translation>
-<translation id="5417034931411865818">Kliknite na položku pod navigačným klávesom $1</translation>
 <translation id="5435274640623994081">Povoliť zápis zvukovej ikony do denníka</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{znak je menšie ako}few{# znaky je menšie ako}many{# less than signs}other{# znakov je menšie ako}}</translation>
 <translation id="5444587279251314700">(aktívne)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">tlačidlo</translation>
 <translation id="6129953537138746214">Medzera</translation>
 <translation id="6132506484792346370">Rozbaľovací zoznam alebo pole</translation>
-<translation id="6138576064440631958">$1 akord</translation>
 <translation id="6142308968191113180">Nadpis 4</translation>
 <translation id="6164829606128959761">meter</translation>
 <translation id="6169420925157477918">Obrázok s dlhým popisom</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Žiadna predchádzajúca položka zoznamu</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Predchádzajúci nadpis</translation>
-<translation id="6378565991815958969">kopírovať $1.</translation>
 <translation id="6385591741672306837">stĺpec</translation>
 <translation id="6387719785439924554">odsadený text</translation>
 <translation id="6411426777058107714">Žiadny predchádzajúci prepínač</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Prechod na ďalší riadok</translation>
 <translation id="8215202828671303819">Hromadný výber</translation>
 <translation id="826825447994856889">Úvod</translation>
-<translation id="826991282343985864">r$1s$2</translation>
 <translation id="8276439074553447000">Prejsť na predchádzajúcu zamerateľnú položku</translation>
 <translation id="8278417001922463147">Žiadny predchádzajúci článok</translation>
 <translation id="8283603667300770666">Ďalšie pole formulára</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Žiadny predchádzajúci posúvač</translation>
 <translation id="9087707351856729768">Automatické dopĺňanie spustíte zadaním textu.</translation>
 <translation id="9089864840575085222">Cyklicky striedať zvukovú odozvu na zadávanie textu</translation>
-<translation id="9105227991373418255">vystrihnúť $1.</translation>
 <translation id="9107530006868467849">Žiadna predchádzajúca miniaplikácia pre médiá</translation>
 <translation id="9108370397979208512">matematika</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
index 6254fcea..5c1c7e45 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Menijski element <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Povlecite z enim prstom, če želite slišati, česa se dotaknete</translation>
 <translation id="3406283310380167331">Prikaz seznama obrazcev</translation>
-<translation id="3423495725743882470">vrstica $1 stolpec $2</translation>
 <translation id="3457000393508828486">Delno pritisnjeno</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, izklopljeno</translation>
 <translation id="3462439746547587373">Gumb <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}two{#}few{#}other{#}}</translation>
 <translation id="3801735343383419236">Samodokončanje seznama</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">prilepi $1.</translation>
 <translation id="3816633764618089385">Naslednja predstavnost</translation>
 <translation id="3819376190738087562">Ni skokov.</translation>
 <translation id="385383972552776628">Odpiranje strani z možnostmi</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Modalno opozorilo</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{podpičje}one{# podpičje}two{# podpičji}few{# podpičja}other{# podpičij}}</translation>
 <translation id="5411891038905756502">Ni prejšnje točke skoka.</translation>
-<translation id="5417034931411865818">Kliknite element pod tipko za usmerjanje $1</translation>
 <translation id="5435274640623994081">Omogočanje beleženja zvočnih ikon</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{znak za manj}one{# znak za manj}two{# znaka za manj}few{# znaki za manj}other{# znakov za manj}}</translation>
 <translation id="5444587279251314700">(aktivno)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">bgmb</translation>
 <translation id="6129953537138746214">Presledek</translation>
 <translation id="6132506484792346370">Polje s seznamom ali kombinirano polje</translation>
-<translation id="6138576064440631958">Akord $1</translation>
 <translation id="6142308968191113180">Naslov 4</translation>
 <translation id="6164829606128959761">merilnik</translation>
 <translation id="6169420925157477918">Slika z dolgim opisom</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Ni prejšnjega elementa seznama.</translation>
 <translation id="6364795331201459219">n6</translation>
 <translation id="6368143427468974988">Prejšnji naslov</translation>
-<translation id="6378565991815958969">kopiraj $1.</translation>
 <translation id="6385591741672306837">stol.</translation>
 <translation id="6387719785439924554">poleg</translation>
 <translation id="6411426777058107714">Ni prejšnjega izbirnega gumba.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Na naslednjo vrstico</translation>
 <translation id="8215202828671303819">Sočasna izbira več elementov</translation>
 <translation id="826825447994856889">Uvod</translation>
-<translation id="826991282343985864">v$1s$2</translation>
 <translation id="8276439074553447000">Pomik na prejšnji element, ki ga je mogoče izbrati</translation>
 <translation id="8278417001922463147">Ni prejšnjega članka.</translation>
 <translation id="8283603667300770666">Naslednje polje obrazca</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Ni prejšnjega drsnika.</translation>
 <translation id="9087707351856729768">Vnašajte, če želite sprožiti samodokončanje.</translation>
 <translation id="9089864840575085222">Kroženje med možnostmi izgovarjanja tipkanja</translation>
-<translation id="9105227991373418255">izreži $1.</translation>
 <translation id="9107530006868467849">Ni pripomočka za prejšnjo predstavnost</translation>
 <translation id="9108370397979208512">matematika</translation>
 <translation id="9108589040018540527">drsn</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
index 1637383f..e4221ad4 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549">Ставка менија <ph name="NAME" /></translation>
 <translation id="3393605254399152980">Превуците један прст да бисте чули шта додирујете</translation>
 <translation id="3406283310380167331">Приказивање листе образаца</translation>
-<translation id="3423495725743882470">ред $1 колона $2</translation>
 <translation id="3457000393508828486">Делимично притиснуто</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, искључено</translation>
 <translation id="3462439746547587373">Дугме <ph name="NAME" /></translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}few{#}other{#}}</translation>
 <translation id="3801735343383419236">Аутоматско довршавање листе</translation>
 <translation id="3810838688059735925">Видео</translation>
-<translation id="3812237531158591503">налепи $1.</translation>
 <translation id="3816633764618089385">Следећа медијска датотека</translation>
 <translation id="3819376190738087562">Нема прелазака.</translation>
 <translation id="385383972552776628">Отварање странице опција</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Модално обавештење</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{тачка и зарез}one{# тачка и зарез}few{# тачке и зареза}other{# тачака и зареза}}</translation>
 <translation id="5411891038905756502">Нема претходне тачке преласка.</translation>
-<translation id="5417034931411865818">Кликните на ставку испод тастера за усмеравање $1</translation>
 <translation id="5435274640623994081">Омогући евидентирање аудио икона</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{знак „мање од“}one{# знак „мање од“}few{# знака „мање од“}other{# знакова „мање од“}}</translation>
 <translation id="5444587279251314700">(активна)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">дугме</translation>
 <translation id="6129953537138746214">Размак</translation>
 <translation id="6132506484792346370">Оквир са листом или комбиновани оквир</translation>
-<translation id="6138576064440631958">$1 акорд</translation>
 <translation id="6142308968191113180">Заглавље 4</translation>
 <translation id="6164829606128959761">мерач</translation>
 <translation id="6169420925157477918">Слика са дугим описом</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Нема претходне ставке листе.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Претходно заглавље</translation>
-<translation id="6378565991815958969">копирај $1.</translation>
 <translation id="6385591741672306837">кол.</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Нема претходног дугмета за избор.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Идите на следећи ред</translation>
 <translation id="8215202828671303819">Вишеструки избор</translation>
 <translation id="826825447994856889">Увод</translation>
-<translation id="826991282343985864">р$1к$2</translation>
 <translation id="8276439074553447000">Прелазак на претходну ставку која може да се фокусира</translation>
 <translation id="8278417001922463147">Нема претходног чланка.</translation>
 <translation id="8283603667300770666">Следеће поље обрасца</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Нема претходног клизача.</translation>
 <translation id="9087707351856729768">Почните да куцате за аутоматско довршавање.</translation>
 <translation id="9089864840575085222">Циклични одјек уноса</translation>
-<translation id="9105227991373418255">исеци $1.</translation>
 <translation id="9107530006868467849">Не постоји виџет за претходну медијску датотеку.</translation>
 <translation id="9108370397979208512">математички</translation>
 <translation id="9108589040018540527">трака за померање</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
index 5733030..2d82a9c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, menyalternativ</translation>
 <translation id="3393605254399152980">Dra med fingret och få det du rör vid uppläst</translation>
 <translation id="3406283310380167331">Visa formulärlistan</translation>
-<translation id="3423495725743882470">rad $1 kolumn $2</translation>
 <translation id="3457000393508828486">Delvis nedtryckt</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, inaktivera</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, knapp</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Autoslutför med lista</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">klistra in $1.</translation>
 <translation id="3816633764618089385">Nästa media</translation>
 <translation id="3819376190738087562">Det finns inga hopp.</translation>
 <translation id="385383972552776628">Öppna alternativsidan</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">En modal avisering</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{semikolon}other{# semikolon}}</translation>
 <translation id="5411891038905756502">Det finns inga tidigare punkter att hoppa till.</translation>
-<translation id="5417034931411865818">Klicka på objektet under markörhämtaren $1</translation>
 <translation id="5435274640623994081">Aktivera loggning av ljudikoner</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{mindre än-tecken}other{# mindre än-tecken}}</translation>
 <translation id="5444587279251314700">(aktiv)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">knapp</translation>
 <translation id="6129953537138746214">Blanksteg</translation>
 <translation id="6132506484792346370">En listruta eller kombinationsruta</translation>
-<translation id="6138576064440631958">Ackordet $1</translation>
 <translation id="6142308968191113180">Rubrik 4</translation>
 <translation id="6164829606128959761">mätare</translation>
 <translation id="6169420925157477918">Bild med lång beskrivning</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Det finns ingen föregående post i listan.</translation>
 <translation id="6364795331201459219">rubr6</translation>
 <translation id="6368143427468974988">Föregående rubrik</translation>
-<translation id="6378565991815958969">kopiera $1.</translation>
 <translation id="6385591741672306837">kolumn</translation>
 <translation id="6387719785439924554">sidoruta</translation>
 <translation id="6411426777058107714">Det finns ingen föregående alternativknapp.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Fortsätt till nästa rad</translation>
 <translation id="8215202828671303819">Flerval</translation>
 <translation id="826825447994856889">Inledning</translation>
-<translation id="826991282343985864">r$1 k$2</translation>
 <translation id="8276439074553447000">Hoppa till föregående fokuserbara objekt</translation>
 <translation id="8278417001922463147">Det finns ingen föregående artikel.</translation>
 <translation id="8283603667300770666">Nästa formulärfält</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Det finns inget föregående skjutreglage.</translation>
 <translation id="9087707351856729768">Autoslutföranden visas när du skriver.</translation>
 <translation id="9089864840575085222">eko för inmatning</translation>
-<translation id="9105227991373418255">klipp ut $1.</translation>
 <translation id="9107530006868467849">Det finns ingen föregående mediewidget.</translation>
 <translation id="9108370397979208512">matte</translation>
 <translation id="9108589040018540527">rullningslist</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
index 49ec479..82ee177 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, kipengee cha menyu</translation>
 <translation id="3393605254399152980">Buruta kidole kimoja ili usikie unachogusa</translation>
 <translation id="3406283310380167331">Onyesha orodha ya fomu</translation>
-<translation id="3423495725743882470">safu mlalo $1 safu wima $2</translation>
 <translation id="3457000393508828486">Imebonyezwa kiasi</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, zima</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, kitufe</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Orodha inayojijaza kiotomatiki</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">bandika $1.</translation>
 <translation id="3816633764618089385">Maudhui yanayofuata</translation>
 <translation id="3819376190738087562">Hakuna kuruka.</translation>
 <translation id="385383972552776628">Fungua ukurasa wa chaguo</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Arifa ya hali inayogeuzika</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{nuktamkato}other{nuktamikato #}}</translation>
 <translation id="5411891038905756502">Hakuna mahali pa kuruka palipotangulia.</translation>
-<translation id="5417034931411865818">Bofya kipengee kilicho chini ya ufunguo wa ruta cha $1</translation>
 <translation id="5435274640623994081">Washa kumbukumbu za sehemu ya kiashiria cha sauti</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{ndogo kuliko}other{alama # za ndogo kuliko}}</translation>
 <translation id="5444587279251314700">(inatumika)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">kitufe</translation>
 <translation id="6129953537138746214">Nafasi</translation>
 <translation id="6132506484792346370">Kikasha orodha au kikasha mseto</translation>
-<translation id="6138576064440631958">Nukta nundu $1</translation>
 <translation id="6142308968191113180">Kichwa cha 4</translation>
 <translation id="6164829606128959761">mita</translation>
 <translation id="6169420925157477918">Picha yenye maelezo marefu</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Hakuna kipengee cha orodha kilichotangulia.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Kichwa kilichotangulia</translation>
-<translation id="6378565991815958969">nakili $1.</translation>
 <translation id="6385591741672306837">safu wima</translation>
 <translation id="6387719785439924554">kando</translation>
 <translation id="6411426777058107714">Hakuna kitufe kilichotangulia.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Nenda kwenye safu mlalo inayofuata</translation>
 <translation id="8215202828671303819">Chaguo nyingi</translation>
 <translation id="826825447994856889">Utangulizi</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">Ruka hadi kipengee kinachoweza kulengwa kilichotangulia</translation>
 <translation id="8278417001922463147">Hakuna makala yaliyotangulia.</translation>
 <translation id="8283603667300770666">Sehemu ya fomu inayofuata</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Hakuna kitelezi kilichotangulia.</translation>
 <translation id="9087707351856729768">Andika ili ukamilishe kiotomatiki.</translation>
 <translation id="9089864840575085222">Mwangwi wa mduara wa kuchapa</translation>
-<translation id="9105227991373418255">kata $1.</translation>
 <translation id="9107530006868467849">Hakuna wijeti ya maudhui.</translation>
 <translation id="9108370397979208512">hisabati</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
index e5c55ef..6c41893 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, மெனு உருப்படி</translation>
 <translation id="3393605254399152980">நீங்கள் தொடுவதைப் பேச்சுவடிவில் கேட்க, ஒரு விரலை இழுக்கவும்</translation>
 <translation id="3406283310380167331">படிவங்கள் பட்டியலைக் காட்டு</translation>
-<translation id="3423495725743882470">வரிசை $1 நெடுவரிசை $2</translation>
 <translation id="3457000393508828486">பகுதியளவு அழுத்தப்பட்டது</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, ஸ்விட்ச் ஆஃப்</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, பொத்தான்</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">தானே நிரப்புதல் பட்டியல்</translation>
 <translation id="3810838688059735925">வீடியோ</translation>
-<translation id="3812237531158591503">$1ஐ ஒட்டு.</translation>
 <translation id="3816633764618089385">அடுத்த ஊடகம்</translation>
 <translation id="3819376190738087562">தாவல்கள் இல்லை.</translation>
 <translation id="385383972552776628">விருப்பங்கள் பக்கத்தைத் திற</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">கட்டாய விழிப்பூட்டல்</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{அரைப்புள்ளி}other{# அரைப்புள்ளிகள்}}</translation>
 <translation id="5411891038905756502">முந்தைய தாவல் புள்ளி இல்லை.</translation>
-<translation id="5417034931411865818">ரூட்டிங் விசை $1க்குக் கீழுள்ள உருப்படியைக் கிளிக் செய்யவும்</translation>
 <translation id="5435274640623994081">ஆடியோ செய்திகள் பதிவிடலை இயக்கு</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{குறைவிற்கான குறி}other{# குறைவிற்கான குறிகள்}}</translation>
 <translation id="5444587279251314700">(செயலில்)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">இடைவெளி</translation>
 <translation id="6132506484792346370">பட்டியல்பெட்டி அல்லது சேர்க்கைப் பெட்டி</translation>
-<translation id="6138576064440631958">$1 விசைச் சேர்க்கை</translation>
 <translation id="6142308968191113180">தலைப்பு 4</translation>
 <translation id="6164829606128959761">மீட்டர்</translation>
 <translation id="6169420925157477918">நீண்ட விளக்கத்துடன் உள்ள படம்</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">முந்தைய பட்டியல் உருப்படி இல்லை.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">முந்தைய தலைப்பு</translation>
-<translation id="6378565991815958969">$1ஐ நகலெடு.</translation>
 <translation id="6385591741672306837">நெடுவரிசை</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">முந்தைய ரேடியோ பட்டன் இல்லை.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">அடுத்த வரிசைக்குச் செல்லும்</translation>
 <translation id="8215202828671303819">பலவற்றைத் தேர்ந்தெடுத்தல்</translation>
 <translation id="826825447994856889">அறிமுகம்</translation>
-<translation id="826991282343985864">வ$1நெ$2</translation>
 <translation id="8276439074553447000">முன்பு கவனிக்கப்பட்ட உருப்படிக்குத் தாவு</translation>
 <translation id="8278417001922463147">முந்தைய உறுப்பு இல்லை.</translation>
 <translation id="8283603667300770666">அடுத்தப் படிவப் புலம்</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">முந்தைய ஸ்லைடர் இல்லை.</translation>
 <translation id="9087707351856729768">தானாக நிரப்ப, உள்ளிடவும்.</translation>
 <translation id="9089864840575085222">தொடர் தட்டச்சிடும் எதிரொலி</translation>
-<translation id="9105227991373418255">$1ஐ வெட்டு.</translation>
 <translation id="9107530006868467849">முந்தைய ஊடக விட்ஜெட் இல்லை.</translation>
 <translation id="9108370397979208512">கணிதம்</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
index 7bbf487..f9ad5176 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
@@ -11,7 +11,7 @@
 <translation id="1025074108959230262">స్టిక్కీ మోడ్ నిలిపివేయబడింది</translation>
 <translation id="1031961866430398710">తర్వాత</translation>
 <translation id="1038643060055067718">పంక్తులు:</translation>
-<translation id="1038795173450935438">పేజీలోని అంశాల మధ్య ముందుకు వెళ్లడానికి, శోధన + కుడివైపు బాణాన్ని లేదా వెనుకకు వెళ్లడానికి శోధన + ఎడమవైపు బాణాన్ని నొక్కండి. తదుపరి పంక్తికి వెళ్లడానికి, శోధన + క్రిందివైపు బాణాన్ని నొక్కండి. మునుపటి పంక్తికి వెళ్లడానికి, శోధన + ఎగువవైపు బాణాన్ని ఉపయోగించండి. మీరు క్లిక్ చేయాలనుకునే అంశానికి చేరుకున్నప్పుడు, శోధన + స్పేస్‌ను క్లిక్ చేయండి.</translation>
+<translation id="1038795173450935438">పేజీలోని అంశాల మధ్య ముందుకు వెళ్లడానికి, శోధన + కుడి వైపు బాణాన్ని లేదా వెనుకకు వెళ్లడానికి శోధన + ఎడమ వైపు బాణాన్ని నొక్కండి. త‌ర్వాత‌ లైనుకు వెళ్లడానికి, శోధన + కింది వైపు బాణాన్ని నొక్కండి. మునుపటి లైనుకు వెళ్లడానికి, శోధన + ఎగువ వైపు బాణాన్ని ఉపయోగించండి. మీరు క్లిక్ చేయాలనుకునే అంశానికి చేరుకున్నప్పుడు, శోధన + స్పేస్‌ను క్లిక్ చేయండి.</translation>
 <translation id="1044777062731150180">ముఖ్య శీర్షికలు లేవు</translation>
 <translation id="106222400312645156">rwhdr</translation>
 <translation id="1065552602950927991">ఇన్‌పుట్ చెల్లదు</translation>
@@ -35,8 +35,8 @@
 <translation id="1201402288615127009">తదుపరి</translation>
 <translation id="1206619573307042055">marquee</translation>
 <translation id="1213216066620407844">ChromeVox - Chromeకు వాయిస్‌ను ఇస్తోంది</translation>
-<translation id="1225437811932752266">అభినందనలు! మీరు ChromeVoxను ఉపయోగించడం కోసం ముఖ్యమైన వాటి గురించి తెలుసుకున్నారు. మీరు శోధన+పూర్ణ విరామం నొక్కడం ద్వారా ఎప్పుడైనా ChromeVox ఆదేశం మెనుని తెరవవచ్చని గుర్తుంచుకోండి. ChromeVox మరియు Chrome OS గురించి మరింత తెలుసుకోవడానికి, కింది కథనాలను సందర్శించండి.
-మీరు ట్యుటోరియల్‌ను ముగించి ఉంటే, ChromeVoxను ఉపయోగించి మూసివేయి బటన్‌కి నావిగేట్ చేసి, దానిని క్లిక్ చేయండి.</translation>
+<translation id="1225437811932752266">అభినందనలు! మీరు ChromeVoxను ఉపయోగించడం కోసం ముఖ్యమైన వాటి గురించి తెలుసుకున్నారు. మీరు శోధన+పుల్ స్టాప్‌ నొక్కడం ద్వారా ఎప్పుడైనా ChromeVox ఆదేశం మెనూను తెరవవచ్చని గుర్తుంచుకోండి. ChromeVox మరియు Chrome OS గురించి మరింత తెలుసుకోవాలంటే, కింది వ్యాసాల‌ను చూడండి.
+మీరు ట్యుటోరియల్‌ను ముగించి ఉంటే, ChromeVoxను ఉపయోగించి మూసివేయి బటన్‌కు నావిగేట్ చేసి, దాన్ని క్లిక్ చేయండి.</translation>
 <translation id="1229276918471378188">మునుపటి జంప్</translation>
 <translation id="1236794971743289975">ఎండ్‌నోట్</translation>
 <translation id="1237866625126425153">rdgrp</translation>
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, మెను అంశం</translation>
 <translation id="3393605254399152980">మీరు తాకిన దానిని వినడం కోసం ఒక వేలితో లాగండి</translation>
 <translation id="3406283310380167331">ఫారమ్‌ల జాబితాను చూపండి</translation>
-<translation id="3423495725743882470">అడ్డువరుస $1 నిలువు వరుస $2</translation>
 <translation id="3457000393508828486">పాక్షికంగా నొక్కబడింది</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, ఆఫ్‌లో ఉంది</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, బటన్</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">స్వీయపూర్తి జాబితా</translation>
 <translation id="3810838688059735925">వీడియో</translation>
-<translation id="3812237531158591503">$1ని అతికించండి.</translation>
 <translation id="3816633764618089385">తదుపరి మీడియా</translation>
 <translation id="3819376190738087562">జంప్‌లు లేవు.</translation>
 <translation id="385383972552776628">ఎంపికల పేజీని తెరవండి</translation>
@@ -401,7 +399,7 @@
 <translation id="404803211695627272"><ph name="V1" />-<ph name="V2" /></translation>
 <translation id="4054936709456751127">sts</translation>
 <translation id="4058278702844053247">పేజీ లోడ్ కావడం ప్రోగ్రెస్‌లో ఉంది</translation>
-<translation id="4065205963140826639">ఇప్పుడు తదుపరి బటన్‌ను కనుగొనడానికి శోధన + కుడివైపు బాణాన్ని ఉపయోగించి, ఆపై దాన్ని క్లిక్ చేయడానికి శోధన + Space నొక్కడం ప్రయత్నించండి.</translation>
+<translation id="4065205963140826639">ఇప్పుడు తదుపరి బటన్‌ను కనుగొనడానికి శోధన + కుడివైపు బాణాన్ని ఉపయోగించి, ఆపై దాన్ని క్లిక్ చేయడానికి శోధన + Space నొక్కడాన్ని ప్రయత్నించండి.</translation>
 <translation id="4081085052247739398">{COUNT,plural, =1{టిల్డ్ గుర్తు}other{# టిల్డ్ గుర్తులు}}</translation>
 <translation id="4086311032171418648">తెలుసుకునే మోడ్ ఆపివేయబడుతోంది.</translation>
 <translation id="409334809956508737">మునుపటి ఆబ్జెక్ట్</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">నమూనా హెచ్చరిక</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{సెమీకోలన్ గుర్తు}other{# సెమీకోలన్ గుర్తులు}}</translation>
 <translation id="5411891038905756502">మునుపటి జంప్ పాయింట్ లేదు.</translation>
-<translation id="5417034931411865818">రూటింగ్ కీ $1 క్రింద ఉన్న అంశాన్ని క్లిక్ చేయండి</translation>
 <translation id="5435274640623994081">ఇయర్‌కాన్ లాగింగ్‌ను ప్రారంభించు</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{న్యూన గుర్తు}other{# న్యూన గుర్తులు}}</translation>
 <translation id="5444587279251314700">(సక్రియంగా ఉంది)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">ఖాళీ</translation>
 <translation id="6132506484792346370">జాబితాపెట్టె లేదా కాంబో పెట్టె</translation>
-<translation id="6138576064440631958">$1 చాపకర్ణం</translation>
 <translation id="6142308968191113180">శీర్షిక 4</translation>
 <translation id="6164829606128959761">మీటర్</translation>
 <translation id="6169420925157477918">పెద్ద వివరణ గల చిత్రం</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">మునుపటి జాబితా అంశం లేదు.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">మునుపటి శీర్షిక</translation>
-<translation id="6378565991815958969">$1ని కాపీ చేయండి.</translation>
 <translation id="6385591741672306837">నిలువు</translation>
 <translation id="6387719785439924554">ప్రక్కన</translation>
 <translation id="6411426777058107714">మునుపటి రేడియో బటన్ లేదు.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">తర్వాతి అడ్డు వరుసకు వెళ్లండి</translation>
 <translation id="8215202828671303819">బహుళ ఎంపిక</translation>
 <translation id="826825447994856889">పరిచయం</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">మునుపటి ఫోకస్ చేయగల అంశానికి వెళ్లండి</translation>
 <translation id="8278417001922463147">మునుపటి కథనం లేదు.</translation>
 <translation id="8283603667300770666">తదుపరి ఫారమ్ ఫీల్డ్</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">మునుపటి స్లయిడర్ లేదు.</translation>
 <translation id="9087707351856729768">ఆటోమేటిక్‌గా పూర్తి చేయడం కోసం టైప్ చేయండి.</translation>
 <translation id="9089864840575085222">సైకిల్ టైపింగ్ అనుకరణ</translation>
-<translation id="9105227991373418255">$1ని కత్తిరించండి.</translation>
 <translation id="9107530006868467849">మునుపటి మీడియా విడ్జెట్ లేదు.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
index 8f1fd11..8dee72f3 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549">รายการเมนู <ph name="NAME" /></translation>
 <translation id="3393605254399152980">ใช้นิ้วเดียวลากเพื่อฟังสิ่งที่แตะอยู่</translation>
 <translation id="3406283310380167331">แสดงรายการฟอร์ม</translation>
-<translation id="3423495725743882470">แถว $1 คอลัมน์ $2</translation>
 <translation id="3457000393508828486">กดบางส่วน</translation>
 <translation id="3458865416877308321"><ph name="NAME" /> ปิดอยู่</translation>
 <translation id="3462439746547587373">ปุ่ม <ph name="NAME" /></translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">รายการเติมข้อความอัตโนมัติ</translation>
 <translation id="3810838688059735925">วิดีโอ</translation>
-<translation id="3812237531158591503">วาง $1</translation>
 <translation id="3816633764618089385">สื่อถัดไป</translation>
 <translation id="3819376190738087562">ไม่มีการข้าม</translation>
 <translation id="385383972552776628">เปิดหน้าตัวเลือก</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">การแจ้งเตือนแบบโมดัล</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{เครื่องหมายอัฒภาค}other{# เครื่องหมายอัฒภาค}}</translation>
 <translation id="5411891038905756502">ไม่มีจุดสำหรับข้ามก่อนหน้า</translation>
-<translation id="5417034931411865818">คลิกรายการใต้แป้นกำหนดเส้นทาง $1</translation>
 <translation id="5435274640623994081">เปิดใช้การบันทึกเอียร์คอน</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{เครื่องหมายน้อยกว่า}other{# เครื่องหมายน้อยกว่า}}</translation>
 <translation id="5444587279251314700">(ใช้งานอยู่)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">ปุ่ม</translation>
 <translation id="6129953537138746214">ช่องว่าง</translation>
 <translation id="6132506484792346370">ช่องรายการหรือช่องตัวเลือกรวม</translation>
-<translation id="6138576064440631958">$1 คอร์ด</translation>
 <translation id="6142308968191113180">ส่วนหัวระดับ 4</translation>
 <translation id="6164829606128959761">เมตร</translation>
 <translation id="6169420925157477918">ภาพมีคำอธิบายยาว</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">ไม่มีรายการก่อนหน้า</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">ส่วนหัวก่อนหน้า</translation>
-<translation id="6378565991815958969">คัดลอก $1</translation>
 <translation id="6385591741672306837">คอลัมน์</translation>
 <translation id="6387719785439924554">ส่วนที่ไม่เกี่ยวข้อง</translation>
 <translation id="6411426777058107714">ไม่มีปุ่มตัวเลือกก่อนหน้า</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">ไปที่แถวถัดไป</translation>
 <translation id="8215202828671303819">เลือกหลายรายการ</translation>
 <translation id="826825447994856889">บทนำ</translation>
-<translation id="826991282343985864">r$1c$2</translation>
 <translation id="8276439074553447000">ข้ามไปยังรายการที่สามารถโฟกัสก่อนหน้า</translation>
 <translation id="8278417001922463147">ไม่มีบทความก่อนหน้า</translation>
 <translation id="8283603667300770666">ช่องฟอร์มถัดไป</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">ไม่มีแถบเลื่อนก่อนหน้า</translation>
 <translation id="9087707351856729768">พิมพ์เพื่อเติมคำอัตโนมัติ</translation>
 <translation id="9089864840575085222">พูดรอบการพิมพ์</translation>
-<translation id="9105227991373418255">ตัด $1</translation>
 <translation id="9107530006868467849">ไม่มีวิดเจ็ตสื่อก่อนหน้า</translation>
 <translation id="9108370397979208512">คณิตศาสตร์</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
index d8c375e..ba64946 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, menü öğesi</translation>
 <translation id="3393605254399152980">Dokunduğunuz öğenin açıklamasını duymak için bir parmağınızı sürükleyin</translation>
 <translation id="3406283310380167331">Form listesini göster</translation>
-<translation id="3423495725743882470">$1. satır, $2. sütun</translation>
 <translation id="3457000393508828486">Kısmen basıldı</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, kapat</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, düğme</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Otomatik tamamlama listesi</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">yapıştır: $1.</translation>
 <translation id="3816633764618089385">Sonraki medya tuşu</translation>
 <translation id="3819376190738087562">Atlama yok.</translation>
 <translation id="385383972552776628">Seçenekler sayfasını aç</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Modal uyarı</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{noktalı virgül}other{# noktalı virgül}}</translation>
 <translation id="5411891038905756502">Önceki atlama noktası yok.</translation>
-<translation id="5417034931411865818">$1 yönlendirme tuşunun altındaki öğeyi tıklayın</translation>
 <translation id="5435274640623994081">Ses sinyali günlük kaydını etkinleştir</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{küçüktür işareti}other{# küçüktür işareti}}</translation>
 <translation id="5444587279251314700">(etkin)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Boşluk</translation>
 <translation id="6132506484792346370">Liste kutusu veya birleşik kutu</translation>
-<translation id="6138576064440631958">$1 grubu</translation>
 <translation id="6142308968191113180">Başlık 4</translation>
 <translation id="6164829606128959761">ölçüm aracı</translation>
 <translation id="6169420925157477918">Uzun açıklamalı resim</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Önceki liste öğesi yok.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Önceki başlık</translation>
-<translation id="6378565991815958969">kopyala: $1.</translation>
 <translation id="6385591741672306837">sütun</translation>
 <translation id="6387719785439924554">aside</translation>
 <translation id="6411426777058107714">Önceki radyo düğmesi yok.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Sonraki satıra git</translation>
 <translation id="8215202828671303819">Çoklu seçim</translation>
 <translation id="826825447994856889">Giriş</translation>
-<translation id="826991282343985864">sa$1sü$2</translation>
 <translation id="8276439074553447000">Odaklanabilir önceki öğeye atla</translation>
 <translation id="8278417001922463147">Önceki makale yok.</translation>
 <translation id="8283603667300770666">Sonraki form alanı</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Önceki kaydırma çubuğu yok.</translation>
 <translation id="9087707351856729768">Otomatik tamamlama için yazmaya başlayın.</translation>
 <translation id="9089864840575085222">Yazma yansıtmayı döngüsel yap</translation>
-<translation id="9105227991373418255">kes: $1.</translation>
 <translation id="9107530006868467849">Önceki media widget'ı yok.</translation>
 <translation id="9108370397979208512">math</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
index dc33d96..51ebc1ee 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, пункт меню</translation>
 <translation id="3393605254399152980">Проводьте пальцем, щоб озвучувати елементи, яких ви торкаєтеся</translation>
 <translation id="3406283310380167331">Показати список форм</translation>
-<translation id="3423495725743882470">рядок $1 стовпець $2</translation>
 <translation id="3457000393508828486">Частково натиснуто</translation>
 <translation id="3458865416877308321"><ph name="NAME" />, вимкнено</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, кнопка</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}one{#}few{#}many{#}other{#}}</translation>
 <translation id="3801735343383419236">Список автозавершення</translation>
 <translation id="3810838688059735925">Відео</translation>
-<translation id="3812237531158591503">вставити $1.</translation>
 <translation id="3816633764618089385">Медіа – далі</translation>
 <translation id="3819376190738087562">Немає переходів.</translation>
 <translation id="385383972552776628">Відкрити сторінку параметрів</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">Сповіщення в модальному вікні</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{крапка з комою}one{# крапка з комою}few{# крапки з комою}many{# крапок із комою}other{# semicolons}}</translation>
 <translation id="5411891038905756502">Немає попередньої точки переходу.</translation>
-<translation id="5417034931411865818">Натиснути елемент під клавішею напрямку $1</translation>
 <translation id="5435274640623994081">Увімкнути реєстрацію звукових ефектів</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{знак "менше"}one{# знак "менше"}few{# знаки "менше"}many{# знаків "менше"}other{# less than signs}}</translation>
 <translation id="5444587279251314700">(активна)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">кнопка</translation>
 <translation id="6129953537138746214">Пробіл</translation>
 <translation id="6132506484792346370">Вікно зі списком або комбіноване вікно</translation>
-<translation id="6138576064440631958">Хорда $1</translation>
 <translation id="6142308968191113180">Заголовок 4</translation>
 <translation id="6164829606128959761">вимірювач</translation>
 <translation id="6169420925157477918">Зображення з докладним описом</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">Немає попереднього пункту списку.</translation>
 <translation id="6364795331201459219">заголовок 6</translation>
 <translation id="6368143427468974988">Попередній заголовок</translation>
-<translation id="6378565991815958969">скопіювати $1.</translation>
 <translation id="6385591741672306837">стовп.</translation>
 <translation id="6387719785439924554">бічний колонтитул</translation>
 <translation id="6411426777058107714">Немає попереднього перемикача.</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">Перейти до наступного рядка</translation>
 <translation id="8215202828671303819">Вибір кількох елементів</translation>
 <translation id="826825447994856889">Вступ</translation>
-<translation id="826991282343985864">р$1с$2</translation>
 <translation id="8276439074553447000">Перейти до попереднього інтерактивного елемента</translation>
 <translation id="8278417001922463147">Немає попередньої статті.</translation>
 <translation id="8283603667300770666">Наступне поле форми</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">Немає попереднього повзунка.</translation>
 <translation id="9087707351856729768">Почніть вводити текст для автозаповнення.</translation>
 <translation id="9089864840575085222">Ще раз озвучити введення тексту</translation>
-<translation id="9105227991373418255">вирізати $1.</translation>
 <translation id="9107530006868467849">Немає попереднього медіа-віджета.</translation>
 <translation id="9108370397979208512">математика</translation>
 <translation id="9108589040018540527">панель прокручування</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
index 54f6290..59cdf38 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />, mục menu</translation>
 <translation id="3393605254399152980">Kéo một ngón tay để nghe nội dung mà bạn chạm vào</translation>
 <translation id="3406283310380167331">Hiển thị danh sách biểu mẫu</translation>
-<translation id="3423495725743882470">hàng $1 cột $2</translation>
 <translation id="3457000393508828486">Được nhấn một phần</translation>
 <translation id="3458865416877308321">Nút gạt, <ph name="NAME" />, bị tắt</translation>
 <translation id="3462439746547587373"><ph name="NAME" />, nút</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">Tự động hoàn thành danh sách</translation>
 <translation id="3810838688059735925">Video</translation>
-<translation id="3812237531158591503">dán $1.</translation>
 <translation id="3816633764618089385">Phương tiện tiếp theo</translation>
 <translation id="3819376190738087562">Không có điểm nhảy nào.</translation>
 <translation id="385383972552776628">Mở trang tùy chọn</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">Thông báo theo thể thức</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{dấu chấm phẩy}other{# dấu chấm phẩy}}</translation>
 <translation id="5411891038905756502">Không có điểm nhảy trước nào.</translation>
-<translation id="5417034931411865818">Nhấp vào mục bên dưới phím định tuyến $1</translation>
 <translation id="5435274640623994081">Bật ghi nhật ký âm báo</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{dấu nhỏ hơn}other{# dấu nhỏ hơn}}</translation>
 <translation id="5444587279251314700">(hiện hoạt)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">btn</translation>
 <translation id="6129953537138746214">Dấu cách</translation>
 <translation id="6132506484792346370">Hộp danh sách hoặc hộp kết hợp</translation>
-<translation id="6138576064440631958">$1 dây cung</translation>
 <translation id="6142308968191113180">Tiêu đề 4</translation>
 <translation id="6164829606128959761">thước đo</translation>
 <translation id="6169420925157477918">Hình ảnh có mô tả dài</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">Không có mục danh sách trước nào.</translation>
 <translation id="6364795331201459219">h6</translation>
 <translation id="6368143427468974988">Tiêu đề trước</translation>
-<translation id="6378565991815958969">sao chép $1.</translation>
 <translation id="6385591741672306837">cột</translation>
 <translation id="6387719785439924554">loại trừ</translation>
 <translation id="6411426777058107714">Không có nút radio trước nào.</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">Chuyển đến hàng tiếp theo</translation>
 <translation id="8215202828671303819">Đa chọn</translation>
 <translation id="826825447994856889">Giới thiệu</translation>
-<translation id="826991282343985864">h$1c$2</translation>
 <translation id="8276439074553447000">Nhảy tới mục có thể đặt tiêu điểm trước</translation>
 <translation id="8278417001922463147">Không có bài viết trước nào.</translation>
 <translation id="8283603667300770666">Trường biểu mẫu tiếp theo</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">Không có thanh trượt trước nào.</translation>
 <translation id="9087707351856729768">Nhập để tự động hoàn tất.</translation>
 <translation id="9089864840575085222">Nói khi nhập theo chu trình</translation>
-<translation id="9105227991373418255">cắt $1.</translation>
 <translation id="9107530006868467849">Không có tiện ích phương tiện trước nào.</translation>
 <translation id="9108370397979208512">toán học</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
index b6b424e..bf4be3f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
@@ -336,7 +336,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />,菜单项</translation>
 <translation id="3393605254399152980">拖动 1 根手指即可听取您所触摸的内容</translation>
 <translation id="3406283310380167331">显示表单列表</translation>
-<translation id="3423495725743882470">第 $1 行,第 $2 列</translation>
 <translation id="3457000393508828486">部分已按下</translation>
 <translation id="3458865416877308321">“<ph name="NAME" />”已关闭</translation>
 <translation id="3462439746547587373"><ph name="NAME" />,按钮</translation>
@@ -375,7 +374,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">自动填充列表</translation>
 <translation id="3810838688059735925">视频</translation>
-<translation id="3812237531158591503">粘贴 $1。</translation>
 <translation id="3816633764618089385">下一个媒体内容</translation>
 <translation id="3819376190738087562">无跳转内容。</translation>
 <translation id="385383972552776628">打开选项页面</translation>
@@ -577,7 +575,6 @@
 <translation id="5402791055281059602">模态提醒</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{1个分号}other{#个分号}}</translation>
 <translation id="5411891038905756502">不存在上一个跳转点。</translation>
-<translation id="5417034931411865818">点击路由键 $1 下的项</translation>
 <translation id="5435274640623994081">启用耳标记录功能</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{1个小于号}other{#个小于号}}</translation>
 <translation id="5444587279251314700">(有效)</translation>
@@ -675,7 +672,6 @@
 <translation id="6122013438240733403">按钮</translation>
 <translation id="6129953537138746214">空格</translation>
 <translation id="6132506484792346370">列表框或组合框</translation>
-<translation id="6138576064440631958">$1 和弦</translation>
 <translation id="6142308968191113180">4级标题标记</translation>
 <translation id="6164829606128959761">计量条</translation>
 <translation id="6169420925157477918">图片含有详细说明</translation>
@@ -697,7 +693,6 @@
 <translation id="6355910664415701303">不存在上一个列表项。</translation>
 <translation id="6364795331201459219">6级标题标记</translation>
 <translation id="6368143427468974988">上一个标题</translation>
-<translation id="6378565991815958969">复制 $1。</translation>
 <translation id="6385591741672306837">列</translation>
 <translation id="6387719785439924554">边栏内容标记</translation>
 <translation id="6411426777058107714">不存在上一个单选按钮。</translation>
@@ -897,7 +892,6 @@
 <translation id="820469951249669083">转到下一行</translation>
 <translation id="8215202828671303819">多选</translation>
 <translation id="826825447994856889">简介</translation>
-<translation id="826991282343985864">行 $1 列 $2</translation>
 <translation id="8276439074553447000">跳转到上一个可设置为焦点的项</translation>
 <translation id="8278417001922463147">不存在上一篇文章。</translation>
 <translation id="8283603667300770666">下一个表单字段</translation>
@@ -979,7 +973,6 @@
 <translation id="9082874451376019682">不存在上一个滑块。</translation>
 <translation id="9087707351856729768">输入即可自动填写。</translation>
 <translation id="9089864840575085222">循环输入回显</translation>
-<translation id="9105227991373418255">剪切 $1。</translation>
 <translation id="9107530006868467849">不存在上一个媒体微件。</translation>
 <translation id="9108370397979208512">数学</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
index 7c39c3d..fbb575a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
@@ -337,7 +337,6 @@
 <translation id="3392045790598181549"><ph name="NAME" />,選單項目</translation>
 <translation id="3393605254399152980">用單指拖曳即可聽取你輕觸到的內容</translation>
 <translation id="3406283310380167331">顯示表單清單</translation>
-<translation id="3423495725743882470">第 $1 列,第 $2 欄</translation>
 <translation id="3457000393508828486">部分已按下</translation>
 <translation id="3458865416877308321"><ph name="NAME" />,已關閉</translation>
 <translation id="3462439746547587373"><ph name="NAME" />,按鈕</translation>
@@ -376,7 +375,6 @@
 <translation id="3795836767122514678">+{COUNT,plural, =1{#}other{#}}</translation>
 <translation id="3801735343383419236">自動即時查詢清單</translation>
 <translation id="3810838688059735925">影片</translation>
-<translation id="3812237531158591503">貼上 $1。</translation>
 <translation id="3816633764618089385">下一個媒體元素</translation>
 <translation id="3819376190738087562">沒有跳躍點。</translation>
 <translation id="385383972552776628">開啟選項頁面</translation>
@@ -578,7 +576,6 @@
 <translation id="5402791055281059602">強制回應警示</translation>
 <translation id="5407530583102765689">{COUNT,plural, =1{分號}other{# 個分號}}</translation>
 <translation id="5411891038905756502">沒有上一個跳躍點。</translation>
-<translation id="5417034931411865818">按一下路由機碼 $1 下方的項目</translation>
 <translation id="5435274640623994081">啟用語音記錄功能</translation>
 <translation id="5436105723448703439">{COUNT,plural, =1{小於符號}other{# 個小於符號}}</translation>
 <translation id="5444587279251314700">(運作中)</translation>
@@ -676,7 +673,6 @@
 <translation id="6122013438240733403">按鈕</translation>
 <translation id="6129953537138746214">空格</translation>
 <translation id="6132506484792346370">清單方塊或下拉式方塊</translation>
-<translation id="6138576064440631958">$1 同步選取</translation>
 <translation id="6142308968191113180">標題 4</translation>
 <translation id="6164829606128959761">計量器</translation>
 <translation id="6169420925157477918">圖片具有詳細說明</translation>
@@ -698,7 +694,6 @@
 <translation id="6355910664415701303">沒有上一個清單項目。</translation>
 <translation id="6364795331201459219">第 6 階</translation>
 <translation id="6368143427468974988">上一個標題</translation>
-<translation id="6378565991815958969">複製 $1。</translation>
 <translation id="6385591741672306837">欄</translation>
 <translation id="6387719785439924554">獨立元素</translation>
 <translation id="6411426777058107714">沒有上一個圓形按鈕。</translation>
@@ -898,7 +893,6 @@
 <translation id="820469951249669083">前往下一列</translation>
 <translation id="8215202828671303819">多重選取</translation>
 <translation id="826825447994856889">簡介</translation>
-<translation id="826991282343985864">第 $1 列,第 $2 欄</translation>
 <translation id="8276439074553447000">跳至上一個可選擇的項目</translation>
 <translation id="8278417001922463147">沒有上一篇文章。</translation>
 <translation id="8283603667300770666">下一個表單欄位</translation>
@@ -980,7 +974,6 @@
 <translation id="9082874451376019682">沒有上一個滑桿。</translation>
 <translation id="9087707351856729768">輸入文字即可自動完成。</translation>
 <translation id="9089864840575085222">循環輸入語音回應</translation>
-<translation id="9105227991373418255">剪下 $1。</translation>
 <translation id="9107530006868467849">沒有上一個媒體小工具。</translation>
 <translation id="9108370397979208512">數學</translation>
 <translation id="9108589040018540527">scbr</translation>
diff --git a/chrome/browser/resources/md_extensions/BUILD.gn b/chrome/browser/resources/md_extensions/BUILD.gn
index b6dad005..be90cd8 100644
--- a/chrome/browser/resources/md_extensions/BUILD.gn
+++ b/chrome/browser/resources/md_extensions/BUILD.gn
@@ -317,6 +317,8 @@
   deps = [
     ":item",
     ":runtime_hosts_dialog",
+    "//ui/webui/resources/cr_elements/cr_radio_button:cr_radio_button",
+    "//ui/webui/resources/cr_elements/cr_radio_group:cr_radio_group",
   ]
   externs_list = [ "$externs_path/developer_private.js" ]
 }
diff --git a/chrome/browser/resources/md_extensions/runtime_host_permissions.html b/chrome/browser/resources/md_extensions/runtime_host_permissions.html
index ca5b79f9..74e1bdd 100644
--- a/chrome/browser/resources/md_extensions/runtime_host_permissions.html
+++ b/chrome/browser/resources/md_extensions/runtime_host_permissions.html
@@ -1,9 +1,13 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
 
 <link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
+<link rel="import" href="chrome://resources/cr_elements/cr_radio_group/cr_radio_group.html">
+<link rel="import" href="chrome://resources/cr_elements/cr_radio_button/cr_radio_button.html">
 <link rel="import" href="chrome://resources/cr_elements/paper_button_style_css.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
+<link rel="import" href="chrome://resources/html/action_link.html">
+<link rel="import" href="chrome://resources/html/action_link_css.html">
 <link rel="import" href="chrome://resources/html/cr.html">
 <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
 <link rel="import" href="chrome://resources/html/md_select_css.html">
@@ -13,33 +17,41 @@
 
 <dom-module id="extensions-runtime-host-permissions">
   <template>
-    <style include="cr-shared-style md-select paper-button-style">
-      #add-hosts-section {
-        align-items: center;
-        display: flex;
-        justify-content: space-between;
-        margin-top: 10px;
+    <style include="cr-shared-style action-link md-select paper-button-style">
+      #host-access {
+        margin-inline-start: 20px;
+        width: 100%;
+      }
+
+      #hosts {
+        margin-bottom: 0;
+        padding: 0;
       }
 
       #hosts li {
         align-items: center;
+        border-bottom: var(--cr-separator-line);
         display: flex;
+        height: var(--cr-section-min-height);
         justify-content: space-between;
       }
 
-      .mid-section-header {
+      #hosts li:last-child {
+        border-bottom: none;
+      }
+
+      #add-host {
+        font-weight: 500;
+        width: 100%;
+      }
+
+      #permissions-mode {
         color: var(--cr-primary-text-color);
         margin-top: 12px;
       }
 
-      #permissions-mode {
-        align-items: center;
-        display: flex;
-        justify-content: space-between;
-      }
-
-      #host-access {
-        margin-inline-start: 20px;
+      cr-radio-button.multi-row {
+        align-items: normal;
       }
 
       a[href] {
@@ -47,7 +59,7 @@
         text-decoration: none;
       }
     </style>
-    <div id="permissions-mode" class="mid-section-header">
+    <div id="permissions-mode">
       <div>
         <div>
           $i18n{hostPermissionsHeading}
@@ -56,44 +68,43 @@
           $i18nRaw{hostPermissionsLearnMoreLink}
         </div>
       </div>
-      <select id="host-access" class="md-select"
-          value="[[permissions.hostAccess]]"
-          on-change="onHostAccessChange_">
-        <option value$="[[HostAccess_.ON_CLICK]]">
+      <cr-radio-group id="host-access" selected="[[permissions.hostAccess]]"
+          on-selected-changed="onHostAccessChange_">
+        <cr-radio-button name="[[HostAccess_.ON_CLICK]]">
           $i18n{hostAccessOnClick}
-        </option>
-        <option value$="[[HostAccess_.ON_SPECIFIC_SITES]]">
-          $i18n{hostAccessOnSpecificSites}
-        </option>
-        <option value$="[[HostAccess_.ON_ALL_SITES]]">
+        </cr-radio-button>
+        <cr-radio-button name="[[HostAccess_.ON_SPECIFIC_SITES]]"
+            class="multi-row">
+          <div>
+            $i18n{hostAccessOnSpecificSites}
+          </div>
+          <template is="dom-if" if="[[showSpecificSites_(permissions.*)]]">
+            <ul id="hosts">
+              <template is="dom-repeat"
+                  items="[[getRuntimeHosts_(permissions.hosts)]]">
+                <li>
+                  <div>[[item]]</div>
+                  <paper-icon-button-light class="icon-more-vert">
+                    <button class="edit-host"
+                        on-click="onEditHostClick_"
+                        title="$i18n{hostPermissionsEdit}">
+                    </button>
+                  </paper-icon-button-light>
+                </li>
+              </template>
+              <li>
+                <a id="add-host" is="action-link" on-click="onAddHostClick_">
+                  $i18n{itemSiteAccessAddHost}
+                </a>
+              </li>
+            </ul>
+          </template>
+        </cr-radio-button>
+        <cr-radio-button name="[[HostAccess_.ON_ALL_SITES]]">
           $i18n{hostAccessOnAllSites}
-        </option>
-      </select>
+        </cr-radio-button>
+      </cr-radio-group>
     </div>
-    <template is="dom-if" if="[[showSpecificSites_(permissions.*)]]">
-      <div id="add-hosts-section">
-        <div class="mid-section-header">
-          $i18n{hostAllowedHosts}
-        </div>
-        <paper-button id="add-host" on-click="onAddHostClick_">
-          $i18n{add}
-        </paper-button>
-      </div>
-      <ul id="hosts">
-        <template is="dom-repeat"
-            items="[[getRuntimeHosts_(permissions.hosts)]]">
-          <li>
-            <div>[[item]]</div>
-            <paper-icon-button-light class="icon-more-vert">
-              <button class="edit-host"
-                  on-click="onEditHostClick_"
-                  title="$i18n{hostPermissionsEdit}">
-              </button>
-            </paper-icon-button-light>
-          </li>
-        </template>
-      </ul>
-    </template>
     <cr-action-menu id="hostActionMenu"
         on-close="onActionMenuClose_">
       <button class="dropdown-item" id="action-menu-edit"
diff --git a/chrome/browser/resources/md_extensions/runtime_host_permissions.js b/chrome/browser/resources/md_extensions/runtime_host_permissions.js
index 3a88d7d..d2b1d6cc 100644
--- a/chrome/browser/resources/md_extensions/runtime_host_permissions.js
+++ b/chrome/browser/resources/md_extensions/runtime_host_permissions.js
@@ -96,9 +96,8 @@
      * @private
      */
     onHostAccessChange_: function(event) {
-      const select = /** @type {!HTMLSelectElement} */ (event.target);
-      const access =
-          /** @type {chrome.developerPrivate.HostAccess} */ (select.value);
+      const group = this.$['host-access'];
+      const access = group.selected;
 
       if (access == chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES &&
           this.permissions.hostAccess !=
@@ -112,7 +111,7 @@
         //   This ensures there will be at least one, so that the host access
         //   is properly calculated.
         this.oldHostAccess_ = this.permissions.hostAccess;
-        this.doShowHostDialog_(select, null);
+        this.doShowHostDialog_(group, null);
       } else {
         this.delegate.setItemHostAccess(this.itemId, access);
       }
@@ -182,7 +181,7 @@
       // if the dialog was shown when just transitioning to a new state.
       if (this.oldHostAccess_) {
         assert(this.permissions.hostAccess == this.oldHostAccess_);
-        this.$['host-access'].value = this.oldHostAccess_;
+        this.$['host-access'].selected = this.oldHostAccess_;
         this.oldHostAccess_ = null;
       }
     },
diff --git a/chrome/browser/resources/omnibox/omnibox.css b/chrome/browser/resources/omnibox/omnibox.css
index c84fbc9..b72f3f5 100644
--- a/chrome/browser/resources/omnibox/omnibox.css
+++ b/chrome/browser/resources/omnibox/omnibox.css
@@ -27,38 +27,35 @@
   background-image: url(../../../../ui/webui/resources/images/cancel_red.svg);
 }
 
-p,
-pre {
-  margin: 0;
-}
-
-.section {
-  margin-bottom: 10px;
-  margin-top: 10px;
-}
-
 body {
   background-color: #fcfcfc;
+  overflow-y: scroll;
+}
+
+* {
+  transition-duration: 300ms;
 }
 
 table {
+  --border-color: #ccc;
+  --header-bg-color: #f8f8f8;
+  --header-color: #555;
+  --row-hover-color: #f6f6f6;
+
   background-color: white;
-  border: 2px solid #ccc;
+  border: 2px solid var(--border-color);
   border-spacing: 0;
   font-size: 12px;
   min-width: 900px;
   table-layout: fixed;
-  text-align: left;
   width: 100%;
 }
 
 thead tr {
-  background-color: #f8f8f8;
-  color: #555;
+  background-color: var(--header-bg-color);
+  color: var(--header-color);
   font-size: 15px;
-  font-weight: bold;
-  letter-spacing: 0;
-  vertical-align: bottom;
+  text-align: left;
 }
 
 tbody tr {
@@ -84,12 +81,13 @@
   overflow-y: auto;
 }
 
-tbody pre.json * {
-  white-space: pre-line;
+tbody tr td pre.json,
+tbody tr td pre.json * {
+  white-space: pre-wrap;
 }
 
-tbody tr:hover * {
-  background-color: #f8f8f8;
+tbody tr:hover td {
+  background-color: var(--row-hover-color);
 }
 
 th,
@@ -115,32 +113,11 @@
 }
 
 .filtered-highlighted {
-  background-color: lightskyblue;
-  /* TODO(manukh) This is a placholder color until other ui changes occur. */
+  background-color: rgb(208, 240, 255);
 }
 
 .filtered-highlighted-nested {
-  background-color: #d0ffd0;
-}
-
-.toggle input,
-.toggle input:not(:checked) ~ .toggle-on,
-.toggle input:checked ~ .toggle-off {
-  display: none;
-}
-
-.toggle span {
-  user-select: none;
-  display: inline-block;
-  padding: 3px 5px;
-  min-width: 60px;
-  text-align: center;
-  cursor: pointer;
-  border: 1px solid;
-}
-
-.toggle span:hover {
-  background-color: #f0f0f0;
+  background-color: rgb(208, 255, 208);
 }
 
 pre.json .key {
@@ -229,3 +206,168 @@
 .header-fill-and-inline .header-container :nth-child(2) {
   border: 1px solid;
 }
+
+omnibox-inputs {
+  --action-color: rgb(66, 133, 244);
+  --hover-color: #f2f2f2;
+  --input-alignment-indentation: 9px;
+  --text-active-color: #fff;
+  --text-hover-color: #eee;
+  --text-inactive-color: #f5f5f5;
+}
+
+/* :hover, :focus, & :active */
+
+input[type=text]:hover,
+select:hover {
+  background-color: var(--text-hover-color);
+}
+
+.checkbox-container:hover input ~ .checkbox-mark,
+.button:hover {
+  background-color: var(--hover-color);
+}
+
+input[type=text]:focus,
+select:focus,
+.button:active {
+  background-color: var(--text-active-color);
+  border-color: var(--action-color);
+  outline: none;
+}
+
+.button:active {
+  transition-duration: 0ms;
+}
+
+/* text input */
+
+input[type=text],
+select {
+  background-color: var(--text-inactive-color);
+  border: 2px solid var(--text-inactive-color);
+  border-radius: 5px;
+}
+
+input[type=text] {
+  box-sizing: border-box;
+  padding: 3px 7px;
+  width: 100%;
+}
+
+input[type=text].input-icon-container {
+  background-position-x: 5px;
+  background-position-y: center;
+  background-repeat: no-repeat;
+  background-size: 20px;
+  padding-left: 30px;
+}
+
+/* select */
+
+select {
+  cursor: pointer;
+  max-width: 250px;
+  /* padded so that its text aligns with other elements and its height is the
+  same as input elements' height */
+  padding: 2px 0 2px 3px;
+  width: 100%;
+}
+
+/* stylized checkbox */
+
+.checkbox-container {
+  cursor: pointer;
+  display: flex;
+  position: relative;
+  user-select: none;
+}
+
+input[type=checkbox] {
+  margin-left: 0;
+}
+
+/* icon buttons */
+
+.icon-button * {
+  vertical-align: middle;
+}
+
+/* button */
+
+.button {
+  border-radius: 5px;
+  color: var(--action-color);
+  cursor: pointer;
+  display: inline-block;
+  padding: 3px var(--input-alignment-indentation);
+  user-select: none;
+}
+
+/* icons */
+
+.icon {
+  background-position: -2px center;
+  background-size: 20px;
+  display: inline-block;
+  height: 20px;
+  width: 20px;
+}
+
+.search-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_search.svg);
+}
+
+.filter-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_search.svg);
+}
+
+.reset-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_refresh.svg);
+}
+
+.copy-white-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
+}
+
+.copy-black-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
+}
+
+.copy-red-icon {
+  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
+}
+
+/* layout */
+
+.top {
+  display: flex;
+  padding: 5px 0;
+}
+
+.top-column {
+  display: flex;
+  flex-basis: 0;
+  flex-direction: column;
+  flex-grow: 1;
+  padding: 0 15px;
+}
+
+.text,
+.text-input {
+  font-size: 14px;
+}
+
+.row {
+  margin-bottom: 3px;
+  margin-top: 3px;
+}
+
+.unindented {
+  margin-left: calc(-1 * var(--input-alignment-indentation));
+}
+
+.section-header {
+  color: gray;
+  font-size: 12px;
+}
diff --git a/chrome/browser/resources/omnibox/omnibox.html b/chrome/browser/resources/omnibox/omnibox.html
index 75dce9dd..67695ece 100644
--- a/chrome/browser/resources/omnibox/omnibox.html
+++ b/chrome/browser/resources/omnibox/omnibox.html
@@ -14,77 +14,121 @@
   <script src="omnibox_output.js"></script>
   <script src="omnibox.js"></script>
 </head>
+
 <body>
   <template id="omnibox-inputs-template">
     <link rel="stylesheet" href="omnibox.css">
-    <p>
-      <input id="input-text" type="text" size="60" placeholder="Enter omnibox input text [Alt+L]" accesskey="l" autocomplete="off" autofocus>
-    </p>
-    <p>Input parameters:</p>
-    <p>
-      <label>
-        <input id="reset-autocomplete-controller" type="checkbox" accesskey="r">
-        <span class="accesskey">R</span>eset autocomplete controller
-      </label>
-    </p>
-    <p>
-      <label>
-        <input id="lock-cursor-position" type="checkbox" accesskey="c">
-        Lock <span class="accesskey">c</span>ursor position to end of input
-      </label>
-    </p>
-    <p>
-      <label>
-        <input id="prevent-inline-autocomplete" type="checkbox" accesskey="a">
-        Prevent inline <span class="accesskey">a</span>utocomplete
-      </label>
-    </p>
-    <p>
-      <label>
-        <input id="prefer-keyword" type="checkbox" accesskey="k">
-        In <span class="accesskey">k</span>eyword mode
-      </label>
-    </p>
-    <p>
-      C<span class="accesskey">u</span>rrent page context:
-      <select id="page-classification" accesskey="u">
-        <option value="0">Invalid spec</option>
-        <option value="2">about:blank</option>
-        <option value="3">user's home page</option>
-        <option value="4" selected>arbitrary URL</option>
-        <option value="9">search result page not doing search term replacement</option>
-        <option value="7">new tab page omnibox</option>
-        <option value="8">new tab page fakebox</option>
-        <option value="1">(OBSOLETE) new tab page</option>
-        <option value="6">(OBSOLETE) search result page doing search term replacement</option>
-      </select>
-    </p>
-    <p>Display parameters:</p>
-    <p>
-      <label>
-        <input id="show-incomplete-results" type="checkbox" accesskey="i">
-        Show <span class="accesskey">i</span>ncomplete results
-      </label>
-    </p>
-    <p>
-      <label>
-        <input id="show-details" type="checkbox" accesskey="t">
-        Show all de<span class="accesskey">t</span>ails
-      </label>
-    </p>
-    <p>
-      <label>
-        <input id="show-all-providers" type="checkbox" accesskey="p">
-        Show results per <span class="accesskey">p</span>rovider, not just merged results
-      </label>
-    </p>
-    <div class="section">
-      <button id="copy-text" title="Copy visible table in text format. This is affected by the visibility of ouput; i.e. toggling 'Show all details' affects what will be copied.">Copy as text</button>
-      <button id="copy-json" title="Copy responses in JSON format. This is not affected by the visibility of output and will copy responses in their entirety.">Copy as JSON</button>
-    </div>
 
-    <div class="section">
-      <input id="filter-text" type="text" size="60" placeholder="Enter filter text (e.g. 'google', 'is:star', 'not:del') [Alt+G]" accesskey="g" autocomplete="off" title="Checks each cell individually; i.e. filter text should not span multiple columns. Supports fuzzyness; each character of filter text must be present in the cell, either adjacent to the previous matched character, or at the start of a new word. Words are defined as being delimited by either capital letters, groups of digits, or non alpha characters. E.g. 'abc' matches 'abc', 'a big cat', 'a-bigCat', 'a very big cat', and 'an amBer cat'; but does not match 'abigcat' or 'an amber cat'. 'green rainbow' is matched by 'gre rain', but not by 'gre bow'. One exception is the first character, which may be matched mid-word. E.g. 'een rain' can also match 'green rainbow'. Boolean properties can be searched for via the property name prefixed by 'is:' or 'not:'. Boolean property names are: 'Can Be Default', 'Starred', 'Has Tab Match', 'Del', 'Prev', and 'Done'.">
+    <div class="top text">
+      <div class="top-column">
+        <input id="input-text" type="text" class="row unindented input-icon-container search-icon" accesskey="l" autofocus autocomplete="off" placeholder="Enter omnibox input [Alt+L]">
+      </div>
+
+      <div class="top-column">
+        <p class="row section-header">Input parameters</p>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="reset-autocomplete-controller" type="checkbox" accesskey="r">
+            <span>
+              <span class="accesskey">R</span>eset autocomplete controller
+            </span>
+          </label>
+        </div>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="lock-cursor-position" type="checkbox" accesskey="c">
+            <span>
+              Lock <span class="accesskey">c</span>ursor position to end of input
+            </span>
+          </label>
+        </div>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="zero-suggest" type="checkbox" accesskey="z">
+            <span>
+              <span class="accesskey">Z</span>ero suggest
+            </span>
+          </label>
+        </div>
+        <div class="row indented">
+          <label class="checkbox-container">
+            <input id="prevent-inline-autocomplete" type="checkbox" accesskey="a">
+            <span>
+              Prevent inline <span class="accesskey">a</span>utocomplete
+            </span>
+          </label>
+        </div>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="prefer-keyword" type="checkbox" accesskey="k">
+            <span>
+              In <span class="accesskey">k</span>eyword mode
+            </span>
+          </label>
+        </div>
+      </div>
+
+      <div class="top-column">
+        <p class="row section-header">Current page c<span class="accesskey">o</span>ntext:</p>
+        <input id="current-url" type="text" class="row unindented" accesskey="u" placeholder="Enter current url (e.g. 'https://www.google.com') [Alt+U]" title="Mostly useful when zero-suggest is enabled, but may also affect clipboard and search providers.">
+        <select id="page-classification" class="row unindented" accesskey="o">
+          <option value="0">Invalid spec</option>
+          <option value="2">about:blank</option>
+          <option value="3">user's home page</option>
+          <option value="4" selected>arbitrary URL</option>
+          <option value="9">search result page not doing search term replacement</option>
+          <option value="7">new tab page omnibox</option>
+          <option value="8">new tab page fakebox</option>
+          <option value="1">(OBSOLETE) new tab page</option>
+          <option value="6">(OBSOLETE) search result page doing search term replacement</option>
+        </select>
+      </div>
+
+      <div class="top-column">
+        <p class="row section-header">Display paramters</p>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="show-incomplete-results" type="checkbox" accesskey="i">
+            <span>
+              Show <span class="accesskey">i</span>ncomplete results
+            </span>
+          </label>
+        </div>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="show-details" type="checkbox" accesskey="t">
+            <span>
+              Show all de<span class="accesskey">t</span>ails
+            </span>
+          </label>
+        </div>
+        <div class="row">
+          <label class="checkbox-container">
+            <input id="show-all-providers" type="checkbox" accesskey="p">
+            <span>
+              Show results per <span class="accesskey">p</span>rovider
+            </span>
+          </label>
+        </div>
+      </div>
+
+      <div class="top-column">
+        <p class="row section-header">Output controls</p>
+        <input id="filter-text" type="text" class="row unindented input-icon-container filter-icon" accesskey="g" autocomplete="off" placeholder="Enter filter (e.g. 'google', 'is:star', 'not:del') [Alt+G]" title="Checks each cell individually; i.e. filter text should not span multiple columns. Supports fuzzyness; each character of filter text must be present in the cell, either adjacent to the previous matched character, or at the start of a new word. Words are defined as being delimited by either capital letters, groups of digits, or non alpha characters. E.g. 'abc' matches 'abc', 'a big cat', 'a-bigCat', 'a very big cat', and 'an amBer cat'; but does not match 'abigcat' or 'an amber cat'. 'green rainbow' is matched by 'gre rain', but not by 'gre bow'. One exception is the first character, which may be matched mid-word. E.g. 'een rain' can also match 'green rainbow'. Boolean properties can be searched for via the property name prefixed by 'is:' or 'not:'. Boolean property names are: 'Can Be Default', 'Starred', 'Has Tab Match', 'Del', 'Prev', and 'Done'.">
+        <div class="row unindented">
+          <span id="copy-text" class="icon-button button" title="Copy visible table in text format. This is affected by the visibility of ouput; i.e. toggling 'Show all details' affects what will be copied.">
+            <i class="icon copy-white-icon"></i>
+            <span>Copy as text</span>
+          </span>
+        </div>
+        <div class="row unindented">
+          <span id="copy-json" class="icon-button button" title="Copy responses in JSON format. This is not affected by the visibility of output and will copy responses in their entirety.">
+            <i class="icon copy-black-icon"></i>
+            <span>Copy as JSON</span>
+          </span>
+        </div>
+        <!--TODO(manukh): import button-->
+      </div>
     </div>
   </template>
 
@@ -106,11 +150,7 @@
     <p>host = <span class="host"></span>, has isTypedHost = <span class="is-typed-host"></span></p>
   </template>
 
-  <div class="section">
-    <omnibox-inputs id="omnibox-inputs"></omnibox-inputs>
-  </div>
-  <div class="section">
-    <omnibox-output id="omnibox-output"></omnibox-output>
-  </div>
+  <omnibox-inputs id="omnibox-inputs"></omnibox-inputs>
+  <omnibox-output id="omnibox-output"></omnibox-output>
 </body>
 </html>
diff --git a/chrome/browser/resources/omnibox/omnibox.js b/chrome/browser/resources/omnibox/omnibox.js
index a878a2be..817f7d8 100644
--- a/chrome/browser/resources/omnibox/omnibox.js
+++ b/chrome/browser/resources/omnibox/omnibox.js
@@ -34,7 +34,10 @@
       this.handler_ = mojom.OmniboxPageHandler.getProxy();
       this.handler_.setClientPage(this.callbackRouter_.createProxy());
 
-      /** @type {function(string, boolean, number, boolean, boolean, number)} */
+      /**
+       * @type {function(string, boolean, number, boolean, boolean, boolean,
+       *     string, number)}
+       */
       this.makeRequest = this.handler_.startOmniboxQuery.bind(this.handler_);
     }
   }
@@ -58,8 +61,10 @@
           event.detail.inputText,
           event.detail.resetAutocompleteController,
           event.detail.cursorPosition,
+          event.detail.zeroSuggest,
           event.detail.preventInlineAutocomplete,
           event.detail.preferKeyword,
+          event.detail.currentUrl,
           event.detail.pageClassification);
     });
     omniboxInputs.addEventListener(
diff --git a/chrome/browser/resources/omnibox/omnibox_inputs.js b/chrome/browser/resources/omnibox/omnibox_inputs.js
index 04d5395..95eebd00 100644
--- a/chrome/browser/resources/omnibox/omnibox_inputs.js
+++ b/chrome/browser/resources/omnibox/omnibox_inputs.js
@@ -41,21 +41,26 @@
 
   /** @private */
   setupElementListeners_() {
-    const onQueryInputsChanged = this.onQueryInputsChanged_.bind(this);
-    const onDisplayInputsChanged = this.onDisplayInputsChanged_.bind(this);
+    ['input-text',
+     'reset-autocomplete-controller',
+     'lock-cursor-position',
+     'zero-suggest',
+     'prevent-inline-autocomplete',
+     'prefer-keyword',
+     'current-url',
+     'page-classification',
+    ]
+        .forEach(
+            id => this.$$(id).addEventListener(
+                'input', this.onQueryInputsChanged_.bind(this)));
 
-    [this.$$('input-text'),
-     this.$$('reset-autocomplete-controller'),
-     this.$$('lock-cursor-position'),
-     this.$$('prevent-inline-autocomplete'),
-     this.$$('prefer-keyword'),
-     this.$$('page-classification'),
-    ].forEach(elem => elem.addEventListener('input', onQueryInputsChanged));
-
-    [this.$$('show-incomplete-results'),
-     this.$$('show-details'),
-     this.$$('show-all-providers'),
-    ].forEach(elem => elem.addEventListener('input', onDisplayInputsChanged));
+    ['show-incomplete-results',
+     'show-details',
+     'show-all-providers',
+    ]
+        .forEach(
+            id => this.$$(id).addEventListener(
+                'input', this.onDisplayInputsChanged_.bind(this)));
 
     this.$$('copy-text')
         .addEventListener('click', () => this.onCopyOutput_('text'));
@@ -68,14 +73,21 @@
 
   /** @private */
   onQueryInputsChanged_() {
+    const zeroSuggest = this.$$('zero-suggest').checked;
+    this.$$('current-url').disabled = zeroSuggest;
+    if (zeroSuggest)
+      this.$$('current-url').value = this.$$('input-text').value;
+
     /** @type {!QueryInputs} */
     const queryInputs = {
       inputText: this.$$('input-text').value,
       resetAutocompleteController:
           this.$$('reset-autocomplete-controller').checked,
       cursorPosition: this.cursorPosition_,
+      zeroSuggest: zeroSuggest,
       preventInlineAutocomplete: this.$$('prevent-inline-autocomplete').checked,
       preferKeyword: this.$$('prefer-keyword').checked,
+      currentUrl: this.$$('current-url').value,
       pageClassification: this.$$('page-classification').value,
     };
     this.dispatchEvent(
diff --git a/chrome/browser/resources/omnibox/omnibox_output.js b/chrome/browser/resources/omnibox/omnibox_output.js
index 71a17be..15bb3ed9 100644
--- a/chrome/browser/resources/omnibox/omnibox_output.js
+++ b/chrome/browser/resources/omnibox/omnibox_output.js
@@ -451,7 +451,7 @@
      */
     static create(column, values) {
       const outputProperty = new column.outputClass();
-      outputProperty.className = column.cellClassName;
+      outputProperty.classList.add(column.cellClassName);
       outputProperty.name = column.headerText.join('.');
       outputProperty.values = values;
       return outputProperty;
diff --git a/chrome/browser/resources/print_preview/new/model.js b/chrome/browser/resources/print_preview/new/model.js
index 2b4fd66a..fb978a5 100644
--- a/chrome/browser/resources/print_preview/new/model.js
+++ b/chrome/browser/resources/print_preview/new/model.js
@@ -790,6 +790,8 @@
       previewModifiable: this.documentInfo.isModifiable,
       printToPDF: destination.id ==
           print_preview.Destination.GooglePromotedId.SAVE_AS_PDF,
+      printToGoogleDrive:
+          destination.id == print_preview.Destination.GooglePromotedId.DOCS,
       printWithCloudPrint: !destination.isLocal,
       printWithPrivet: destination.isPrivet,
       printWithExtension: destination.isExtension,
diff --git a/chrome/browser/secure_origin_whitelist_browsertest.cc b/chrome/browser/secure_origin_whitelist_browsertest.cc
index 8d06a06..dcf24e1 100644
--- a/chrome/browser/secure_origin_whitelist_browsertest.cc
+++ b/chrome/browser/secure_origin_whitelist_browsertest.cc
@@ -166,7 +166,7 @@
 }
 
 // Tests that whitelisted insecure origins are correctly set as security level
-// NONE instead of the default level HTTPS_SHOW_WARNING.
+// NONE instead of the default level DANGEROUS.
 IN_PROC_BROWSER_TEST_P(SecureOriginWhitelistBrowsertest, SecurityIndicators) {
   ui_test_utils::NavigateToURL(
       browser(),
@@ -180,7 +180,7 @@
 
   if (GetParam() == TestVariant::kPolicyOldAndNew) {
     // When both policies are set, the new policy overrides the old policy.
-    EXPECT_EQ(security_state::HTTP_SHOW_WARNING, security_info.security_level);
+    EXPECT_EQ(security_state::DANGEROUS, security_info.security_level);
     ui_test_utils::NavigateToURL(
         browser(),
         embedded_test_server()->GetURL(
@@ -189,7 +189,7 @@
     EXPECT_EQ(security_state::NONE, security_info.security_level);
   } else {
     EXPECT_EQ(ExpectSecureContext() ? security_state::NONE
-                                    : security_state::HTTP_SHOW_WARNING,
+                                    : security_state::DANGEROUS,
               security_info.security_level);
   }
 }
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
index b13d4f9..fdf7a0f 100644
--- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -522,7 +522,7 @@
     ASSERT_TRUE(entry);
 
     EXPECT_EQ(use_secure_inner_origin ? security_state::NONE
-                                      : security_state::HTTP_SHOW_WARNING,
+                                      : security_state::DANGEROUS,
               security_info.security_level);
   }
 
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index 9ae3b36..a1182848 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -124,6 +124,7 @@
 #include "chrome/browser/chromeos/printing/synced_printers_manager_factory.h"
 #include "chrome/browser/ui/app_list/arc/arc_package_sync_data_type_controller.h"
 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h"
+#include "components/arc/arc_util.h"
 #endif  // defined(OS_CHROMEOS)
 
 using content::BrowserThread;
@@ -444,7 +445,8 @@
 #endif  // defined(OS_LINUX) || defined(OS_WIN)
 
 #if defined(OS_CHROMEOS)
-  if (arc::IsArcAllowedForProfile(profile_)) {
+  if (arc::IsArcAllowedForProfile(profile_) &&
+      !arc::IsArcAppSyncFlowDisabled()) {
     controllers.push_back(std::make_unique<ArcPackageSyncDataTypeController>(
         syncer::ARC_PACKAGE, dump_stack, sync_service, this, profile_));
   }
diff --git a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
index f4a8813c..ab84260e 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
@@ -30,6 +30,7 @@
 #include "chrome/browser/extensions/extension_service_test_base.h"
 #include "chrome/browser/policy/profile_policy_connector.h"
 #include "chrome/browser/policy/profile_policy_connector_factory.h"
+#include "chrome/browser/sync/profile_sync_service_factory.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_item.h"
@@ -55,6 +56,7 @@
 #include "components/arc/arc_util.h"
 #include "components/arc/metrics/arc_metrics_constants.h"
 #include "components/arc/test/fake_app_instance.h"
+#include "components/browser_sync/profile_sync_service.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/test/test_utils.h"
@@ -1604,6 +1606,25 @@
   EXPECT_FALSE(pai_starter);
 }
 
+// Validates that PAI is not started in case it is explicitly disabled.
+TEST_P(ArcPlayStoreAppTest, StartPaiDisabled) {
+  if (GetParam() == ArcState::ARC_WITHOUT_PLAY_STORE)
+    return;
+
+  base::test::ScopedCommandLine command_line;
+  command_line.GetProcessCommandLine()->AppendSwitch(
+      chromeos::switches::kArcDisablePlayAutoInstall);
+
+  arc::ArcSessionManager* session_manager = arc::ArcSessionManager::Get();
+  ASSERT_TRUE(session_manager);
+
+  arc::ArcPaiStarter* pai_starter = session_manager->pai_starter();
+  ASSERT_TRUE(pai_starter);
+  EXPECT_FALSE(pai_starter->started());
+  SendPlayStoreApp();
+  EXPECT_FALSE(pai_starter->started());
+}
+
 TEST_P(ArcVoiceInteractionTest, PaiStarterVoiceInteractionNormalFlow) {
   voice_service()->OnAssistantAppRequested();
 
@@ -2318,6 +2339,21 @@
   prefs->RemoveObserver(&observer);
 }
 
+TEST_P(ArcAppModelBuilderTest, PackageSyncableServiceEnabled) {
+  EXPECT_TRUE(ProfileSyncServiceFactory::GetForProfile(profile_.get())
+                  ->GetRegisteredDataTypes()
+                  .Has(syncer::ARC_PACKAGE));
+}
+
+TEST_P(ArcAppModelBuilderTest, PackageSyncableServiceDisabled) {
+  base::test::ScopedCommandLine command_line;
+  command_line.GetProcessCommandLine()->AppendSwitch(
+      chromeos::switches::kArcDisableAppSync);
+  EXPECT_FALSE(ProfileSyncServiceFactory::GetForProfile(profile_.get())
+                   ->GetRegisteredDataTypes()
+                   .Has(syncer::ARC_PACKAGE));
+}
+
 TEST_P(ArcDefaulAppTest, DefaultApps) {
   ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get());
   ASSERT_NE(nullptr, prefs);
diff --git a/chrome/browser/ui/app_list/arc/arc_app_utils.cc b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
index 804554e1..b5469d3 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_utils.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
@@ -405,6 +405,7 @@
 }
 
 void StartPaiFlow() {
+  DCHECK(!IsArcPlayAutoInstallDisabled());
   arc::mojom::AppInstance* app_instance = GET_APP_INSTANCE(StartPaiFlow);
   if (!app_instance)
     return;
diff --git a/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc b/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc
index 0d3d051..c6e06634 100644
--- a/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc
+++ b/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service_factory.h"
 #include "chrome/common/pref_names.h"
+#include "components/arc/arc_util.h"
 #include "components/arc/connection_holder.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/sync/model/sync_change_processor.h"
@@ -128,6 +129,8 @@
   DCHECK(error_handler.get());
   DCHECK_EQ(type, syncer::ARC_PACKAGE);
   DCHECK(!sync_processor_.get());
+  DCHECK(!IsArcAppSyncFlowDisabled());
+
   sync_processor_ = std::move(sync_processor);
   sync_error_handler_ = std::move(error_handler);
 
diff --git a/chrome/browser/ui/app_list/arc/arc_pai_starter.cc b/chrome/browser/ui/app_list/arc/arc_pai_starter.cc
index 06251d82..fc21ded1 100644
--- a/chrome/browser/ui/app_list/arc/arc_pai_starter.cc
+++ b/chrome/browser/ui/app_list/arc/arc_pai_starter.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
 #include "components/arc/arc_prefs.h"
+#include "components/arc/arc_util.h"
 #include "components/prefs/pref_service.h"
 #include "ui/events/event_constants.h"
 
@@ -62,7 +63,7 @@
 }
 
 void ArcPaiStarter::MaybeStartPai() {
-  if (started_ || locked_)
+  if (started_ || locked_ || IsArcPlayAutoInstallDisabled())
     return;
 
   ArcAppListPrefs* prefs = ArcAppListPrefs::Get(context_);
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
index 6b79db02..d53caaa 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
@@ -66,7 +66,6 @@
 #include "ui/aura/mus/window_tree_client.h"
 #include "ui/aura/test/env_test_helper.h"
 #include "ui/aura/test/mus/change_completion_waiter.h"
-#include "ui/aura/test/mus/window_tree_client_test_api.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
 #include "ui/base/ui_base_features.h"
@@ -88,13 +87,6 @@
 const char kArrowBAccountIdString[] =
     "->{\"account_type\":\"unknown\",\"email\":\"B\"}";
 
-void FlushWindowTreeClientMessages() {
-  if (!views::MusClient::Exists())
-    return;
-  aura::WindowTreeClientTestApi(views::MusClient::Get()->window_tree_client())
-      .FlushForTesting();
-}
-
 const content::BrowserContext* GetActiveContext() {
   const user_manager::UserManager* user_manager =
       user_manager::UserManager::Get();
@@ -150,10 +142,10 @@
     // WaitForAllChangesToComplete() is called before and after to ensure all
     // changes have been pushed to ash before a switch, and similarly after a
     // switch.
-    FlushWindowTreeClientMessages();
+    aura::test::WaitForAllChangesToComplete();
     fake_user_manager_->SwitchActiveUser(id);
     ash::MultiUserWindowManager::Get()->OnActiveUserSessionChanged(id);
-    FlushWindowTreeClientMessages();
+    aura::test::WaitForAllChangesToComplete();
     MultiUserWindowManagerClientImplTestHelper::FlushBindings();
   }
 
diff --git a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer.cc b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer.cc
index de06952..a9f6a96 100644
--- a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer.cc
+++ b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer.cc
@@ -85,6 +85,9 @@
                                       blink::mojom::EngagementLevel::MEDIUM))
       continue;
 
+    // Site engagement service should only return HTTP or HTTPS domains.
+    DCHECK(detail.origin.SchemeIsHTTPOrHTTPS());
+
     // If the user has engaged with eTLD+1 of this site, don't show any
     // lookalike navigation suggestions.
     const std::string engaged_domain_and_registry =
@@ -147,6 +150,8 @@
     return;
 
   const GURL url = navigation_handle->GetURL();
+  if (!url.SchemeIsHTTPOrHTTPS())
+    return;
 
   // If the user has engaged with this site, don't show any lookalike
   // navigation suggestions.
diff --git a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc
index d5087e3a..47e2e37 100644
--- a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc
+++ b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc
@@ -39,22 +39,25 @@
 // An engagement score below MEDIUM.
 const int kLowEngagement = 1;
 
+// The domains here should not private domains (e.g. site.test), otherwise they
+// might test the wrong thing. Also note that site5.com is in the top domain
+// list, so it shouldn't be used here.
 struct SiteEngagementTestCase {
   const char* const navigated;
   const char* const suggested;
 } kSiteEngagementTestCases[] = {
-    {"sité1.test", "site1.test"},
-    {"mail.www.sité1.test", "site1.test"},
+    {"sité1.com", "site1.com"},
+    {"mail.www.sité1.com", "site1.com"},
 
     // These should match since the comparison uses eTLD+1s.
-    {"sité2.test", "www.site2.test"},
-    {"mail.sité2.test", "www.site2.test"},
+    {"sité2.com", "www.site2.com"},
+    {"mail.sité2.com", "www.site2.com"},
 
-    {"síté3.test", "sité3.test"},
-    {"mail.síté3.test", "sité3.test"},
+    {"síté3.com", "sité3.com"},
+    {"mail.síté3.com", "sité3.com"},
 
-    {"síté4.test", "www.sité4.test"},
-    {"mail.síté4.test", "www.sité4.test"},
+    {"síté4.com", "www.sité4.com"},
+    {"mail.síté4.com", "www.sité4.com"},
 };
 
 }  // namespace
@@ -276,6 +279,13 @@
   CheckNoUkm();
 }
 
+// Schemes other than HTTP and HTTPS should be ignored.
+IN_PROC_BROWSER_TEST_P(LookalikeUrlNavigationObserverBrowserTest,
+                       TopDomainChromeUrl_NoInfobar) {
+  TestInfobarNotShown(GURL("chrome://googlé.com"));
+  CheckNoUkm();
+}
+
 // Navigate to a domain within an edit distance of 1 to a top domain.
 // This should record metrics. It should also show a "Did you mean to go to ..."
 // infobar if configured via a feature param.
@@ -333,10 +343,10 @@
 // a feature param.
 IN_PROC_BROWSER_TEST_P(LookalikeUrlNavigationObserverBrowserTest,
                        Idn_SiteEngagement_Match) {
-  SetSiteEngagementScore(GURL("http://site1.test"), kHighEngagement);
-  SetSiteEngagementScore(GURL("http://www.site2.test"), kHighEngagement);
-  SetSiteEngagementScore(GURL("http://sité3.test"), kHighEngagement);
-  SetSiteEngagementScore(GURL("http://www.sité4.test"), kHighEngagement);
+  SetSiteEngagementScore(GURL("http://site1.com"), kHighEngagement);
+  SetSiteEngagementScore(GURL("http://www.site2.com"), kHighEngagement);
+  SetSiteEngagementScore(GURL("http://sité3.com"), kHighEngagement);
+  SetSiteEngagementScore(GURL("http://www.sité4.com"), kHighEngagement);
 
   std::vector<GURL> ukm_urls;
   for (const auto& test_case : kSiteEngagementTestCases) {
@@ -391,15 +401,30 @@
   // Test that navigations to a site with a high engagement score shouldn't
   // record metrics or show infobar.
   base::HistogramTester histograms;
-  SetSiteEngagementScore(GURL("http://site5.test"), kHighEngagement);
-  const GURL high_engagement_url =
-      embedded_test_server()->GetURL("síte5.test", "/title1.html");
+  SetSiteEngagementScore(GURL("http://site-not-in-top-domain-list.com"),
+                         kHighEngagement);
+  const GURL high_engagement_url = embedded_test_server()->GetURL(
+      "síte-not-ín-top-domaín-líst.com", "/title1.html");
   SetSiteEngagementScore(high_engagement_url, kHighEngagement);
   TestInfobarNotShown(high_engagement_url);
   histograms.ExpectTotalCount(LookalikeUrlNavigationObserver::kHistogramName,
                               0);
 }
 
+IN_PROC_BROWSER_TEST_P(LookalikeUrlNavigationObserverBrowserTest,
+                       Idn_SiteEngagement_ChromeUrl_Ignored) {
+  // Test that an engaged site with a scheme other than HTTP or HTTPS should be
+  // ignored.
+  base::HistogramTester histograms;
+  SetSiteEngagementScore(GURL("chrome://site-not-in-top-domain-list.com"),
+                         kHighEngagement);
+  const GURL low_engagement_url("http://síte-not-ín-top-domaín-líst.com");
+  SetSiteEngagementScore(low_engagement_url, kLowEngagement);
+  TestInfobarNotShown(low_engagement_url);
+  histograms.ExpectTotalCount(LookalikeUrlNavigationObserver::kHistogramName,
+                              0);
+}
+
 // IDNs with a single label should be properly handled. There are two cases
 // where this might occur:
 // 1. The navigated URL is an IDN with a single label.
diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
index 9794617..2957a1e 100644
--- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
+++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
@@ -1604,138 +1604,6 @@
   // TODO(msw): Test that AltGr+V does not paste.
 }
 
-IN_PROC_BROWSER_TEST_F(OmniboxViewTest, CopyURLToClipboard) {
-  // Set permanent text thus making sure that omnibox treats 'google.com'
-  // as URL (not as ordinary user input).
-  OmniboxView* omnibox_view = NULL;
-  ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
-  SetTestToolbarPermanentText(ASCIIToUTF16("http://www.google.com"));
-
-  const char* target_url = "http://www.google.com/calendar";
-  omnibox_view->SetUserText(ASCIIToUTF16(target_url));
-
-  // Location bar must have focus.
-  chrome::FocusLocationBar(browser());
-  ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
-
-  // Select full URL and copy it to clipboard. General text and html should
-  // be available.
-  omnibox_view->SelectAll(true);
-  EXPECT_TRUE(omnibox_view->IsSelectAll());
-  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
-  clipboard->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE);
-  EXPECT_TRUE(chrome::ExecuteCommand(browser(), IDC_COPY));
-  EXPECT_EQ(ASCIIToUTF16(target_url), omnibox_view->GetText());
-  EXPECT_TRUE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetPlainTextFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-
-  // Make sure HTML format isn't written. See
-  // BookmarkNodeData::WriteToClipboard() for details.
-  EXPECT_FALSE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetHtmlFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-
-// Windows clipboard only supports text URLs.
-// Mac clipboard not reporting URL format available for some reason.
-// crbug.com/751031
-#if defined(OS_LINUX)
-  EXPECT_TRUE(clipboard->IsFormatAvailable(ui::Clipboard::GetUrlFormatType(),
-                                           ui::CLIPBOARD_TYPE_COPY_PASTE));
-#endif
-
-  std::string url;
-  clipboard->ReadAsciiText(ui::CLIPBOARD_TYPE_COPY_PASTE, &url);
-  EXPECT_EQ(target_url, url);
-}
-
-IN_PROC_BROWSER_TEST_F(OmniboxViewTest, CutURLToClipboard) {
-  // Set permanent text thus making sure that omnibox treats 'google.com'
-  // as URL (not as ordinary user input).
-  OmniboxView* omnibox_view = NULL;
-  ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
-  SetTestToolbarPermanentText(ASCIIToUTF16("http://www.google.com"));
-
-  const char* target_url = "http://www.google.com/calendar";
-  omnibox_view->SetUserText(ASCIIToUTF16(target_url));
-
-  // Location bar must have focus.
-  chrome::FocusLocationBar(browser());
-  ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
-
-  // Select full URL and cut it. General text and html should be available
-  // in the clipboard.
-  omnibox_view->SelectAll(true);
-  EXPECT_TRUE(omnibox_view->IsSelectAll());
-  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
-  clipboard->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE);
-  EXPECT_TRUE(chrome::ExecuteCommand(browser(), IDC_CUT));
-  EXPECT_EQ(base::string16(), omnibox_view->GetText());
-  EXPECT_TRUE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetPlainTextFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-
-  // Make sure HTML format isn't written. See
-  // BookmarkNodeData::WriteToClipboard() for details.
-  EXPECT_FALSE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetHtmlFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-
-// Windows clipboard only supports text URLs.
-// Mac clipboard not reporting URL format available for some reason.
-// crbug.com/751031
-#if defined(OS_LINUX)
-  EXPECT_TRUE(clipboard->IsFormatAvailable(ui::Clipboard::GetUrlFormatType(),
-                                           ui::CLIPBOARD_TYPE_COPY_PASTE));
-#endif
-
-  std::string url;
-  clipboard->ReadAsciiText(ui::CLIPBOARD_TYPE_COPY_PASTE, &url);
-  EXPECT_EQ(target_url, url);
-}
-
-IN_PROC_BROWSER_TEST_F(OmniboxViewTest, CopyTextToClipboard) {
-  OmniboxView* omnibox_view = NULL;
-  ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
-  const char* target_text = "foo";
-  omnibox_view->SetUserText(ASCIIToUTF16(target_text));
-
-  // Location bar must have focus.
-  chrome::FocusLocationBar(browser());
-  ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
-
-  // Select full text and copy it to the clipboard.
-  omnibox_view->SelectAll(true);
-  EXPECT_TRUE(omnibox_view->IsSelectAll());
-  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
-  clipboard->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE);
-  EXPECT_TRUE(chrome::ExecuteCommand(browser(), IDC_COPY));
-  EXPECT_TRUE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetPlainTextFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-  EXPECT_FALSE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetHtmlFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-  EXPECT_EQ(ASCIIToUTF16(target_text), omnibox_view->GetText());
-}
-
-IN_PROC_BROWSER_TEST_F(OmniboxViewTest, CutTextToClipboard) {
-  OmniboxView* omnibox_view = NULL;
-  ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
-  const char* target_text = "foo";
-  omnibox_view->SetUserText(ASCIIToUTF16(target_text));
-
-  // Location bar must have focus.
-  chrome::FocusLocationBar(browser());
-  ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
-
-  // Select full text and cut it to the clipboard.
-  omnibox_view->SelectAll(true);
-  EXPECT_TRUE(omnibox_view->IsSelectAll());
-  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
-  clipboard->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE);
-  EXPECT_TRUE(chrome::ExecuteCommand(browser(), IDC_CUT));
-  EXPECT_TRUE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetPlainTextFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-  EXPECT_FALSE(clipboard->IsFormatAvailable(
-      ui::Clipboard::GetHtmlFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE));
-  EXPECT_EQ(base::string16(), omnibox_view->GetText());
-}
-
 IN_PROC_BROWSER_TEST_F(OmniboxViewTest, EditSearchEngines) {
   OmniboxView* omnibox_view = nullptr;
   ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
diff --git a/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.cc b/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.cc
index b7dd8f8..0196f9c 100644
--- a/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.cc
+++ b/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.cc
@@ -4,7 +4,10 @@
 
 #include "chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.h"
 
+#include <windows.h>
+
 #include <dwmapi.h>
+#include <uxtheme.h>
 
 #include "base/win/windows_version.h"
 #include "chrome/browser/ui/views/apps/chrome_native_app_window_views_win.h"
@@ -39,43 +42,29 @@
   return true;
 }
 
+bool AppWindowDesktopWindowTreeHostWin::GetDwmFrameInsetsInPixels(
+    gfx::Insets* insets) const {
+  // If there's no glass view we never need to change DWM frame insets.
+  if (!GetWidget()->client_view() || !app_window_->glass_frame_view() ||
+      !DesktopWindowTreeHostWin::ShouldUseNativeFrame())
+    return false;
+
+  if (GetWidget()->IsFullscreen()) {
+    *insets = gfx::Insets();
+  } else {
+    // If the opaque frame is visible, we use the default (zero) margins.
+    // Otherwise, we need to figure out how to extend the glass in.
+    *insets = app_window_->glass_frame_view()->GetGlassInsets();
+    // The DWM API's expect values in pixels. We need to convert from DIP to
+    // pixels here.
+    *insets = insets->Scale(display::win::GetDPIScale());
+  }
+  return true;
+}
+
 void AppWindowDesktopWindowTreeHostWin::HandleFrameChanged() {
   // We need to update the glass region on or off before the base class adjusts
   // the window region.
   app_window_->OnCanHaveAlphaEnabledChanged();
-  UpdateDWMFrame();
   DesktopWindowTreeHostWin::HandleFrameChanged();
 }
-
-void AppWindowDesktopWindowTreeHostWin::PostHandleMSG(UINT message,
-                                                      WPARAM w_param,
-                                                      LPARAM l_param) {
-  switch (message) {
-    case WM_WINDOWPOSCHANGED: {
-      UpdateDWMFrame();
-      break;
-    }
-  }
-}
-
-void AppWindowDesktopWindowTreeHostWin::UpdateDWMFrame() {
-  if (!GetWidget()->client_view() || !app_window_->glass_frame_view())
-    return;
-
-  MARGINS margins = {0};
-
-  // If the opaque frame is visible, we use the default (zero) margins.
-  // Otherwise, we need to figure out how to extend the glass in.
-  if (app_window_->glass_frame_view()) {
-    gfx::Insets insets = app_window_->glass_frame_view()->GetGlassInsets();
-    // The DWM API's expect values in pixels. We need to convert from DIP to
-    // pixels here.
-    insets = insets.Scale(display::win::GetDPIScale());
-    margins.cxLeftWidth = insets.left();
-    margins.cxRightWidth = insets.right();
-    margins.cyBottomHeight = insets.bottom();
-    margins.cyTopHeight = insets.top();
-  }
-
-  DwmExtendFrameIntoClientArea(GetHWND(), &margins);
-}
diff --git a/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.h b/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.h
index eccd7a1..c3ece185 100644
--- a/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.h
+++ b/chrome/browser/ui/views/apps/app_window_desktop_window_tree_host_win.h
@@ -29,12 +29,8 @@
   // Overridden from DesktopWindowTreeHostWin:
   bool GetClientAreaInsets(gfx::Insets* insets,
                            HMONITOR monitor) const override;
+  bool GetDwmFrameInsetsInPixels(gfx::Insets* insets) const override;
   void HandleFrameChanged() override;
-  void PostHandleMSG(UINT message, WPARAM w_param, LPARAM l_param) override;
-
-  // Updates the glass frame area by calling the DwmExtendFrameIntoClientArea
-  // Windows function.
-  void UpdateDWMFrame();
 
   ChromeNativeAppWindowViewsWin* app_window_;
 
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc
index e713957d..7d537b1 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc
@@ -17,6 +17,7 @@
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/ui/app_list/app_list_util.h"
 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view_test_helper.h"
+#include "chrome/browser/ui/views/native_widget_factory.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/testing_browser_process.h"
@@ -377,13 +378,13 @@
   views::Widget widget;
   views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-#if !defined(OS_CHROMEOS)
+#if !defined(OS_CHROMEOS) && !defined(OS_MACOSX)
   // On Chrome OS, this always creates a NativeWidgetAura, but it should create
   // a DesktopNativeWidgetAura for Mash. We can get by without manually creating
   // it because AshTestViewsDelegate and MusClient will do the right thing
   // automatically.
-  params.native_widget = views::test::CreatePlatformDesktopNativeWidgetImpl(
-      params, &widget, nullptr);
+  params.native_widget = CreateNativeWidget(
+      NativeWidgetType::DESKTOP_NATIVE_WIDGET_AURA, &params, &widget);
 #endif
   widget.Init(params);
   widget.Show();
diff --git a/chrome/browser/ui/views/extensions/chooser_dialog_view_unittest.cc b/chrome/browser/ui/views/extensions/chooser_dialog_view_unittest.cc
index 88f14fee..3c88dff8 100644
--- a/chrome/browser/ui/views/extensions/chooser_dialog_view_unittest.cc
+++ b/chrome/browser/ui/views/extensions/chooser_dialog_view_unittest.cc
@@ -14,7 +14,6 @@
 #include "ui/events/base_event_utils.h"
 #include "ui/views/controls/button/label_button.h"
 #include "ui/views/controls/table/table_view.h"
-#include "ui/views/test/native_widget_factory.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/window/dialog_client_view.h"
 
@@ -35,8 +34,6 @@
         CreateParams(views::Widget::InitParams::TYPE_WINDOW);
     params.bounds = gfx::Rect(10, 11, 200, 200);
     params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    params.native_widget = views::test::CreatePlatformDesktopNativeWidgetImpl(
-        params, &parent_widget_, nullptr);
     parent_widget_.Init(params);
 
     widget_ = views::DialogDelegate::CreateDialogWidget(
diff --git a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.cc b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.cc
index d2fe310..9b8866b0 100644
--- a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.cc
+++ b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.cc
@@ -4,7 +4,10 @@
 
 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h"
 
+#include <windows.h>
+
 #include <dwmapi.h>
+#include <uxtheme.h>
 
 #include "base/macros.h"
 #include "base/process/process_handle.h"
@@ -36,9 +39,7 @@
     : DesktopWindowTreeHostWin(native_widget_delegate,
                                desktop_native_widget_aura),
       browser_view_(browser_view),
-      browser_frame_(browser_frame),
-      did_gdi_clear_(false) {
-}
+      browser_frame_(browser_frame) {}
 
 BrowserDesktopWindowTreeHostWin::~BrowserDesktopWindowTreeHostWin() {
 }
@@ -107,6 +108,44 @@
   return true;
 }
 
+bool BrowserDesktopWindowTreeHostWin::GetDwmFrameInsetsInPixels(
+    gfx::Insets* insets) const {
+  // For "normal" windows on Aero, we always need to reset the glass area
+  // correctly, even if we're not currently showing the native frame (e.g.
+  // because a theme is showing), so we explicitly check for that case rather
+  // than checking ShouldUseNativeFrame() here.  Using that here would mean we
+  // wouldn't reset the glass area to zero when moving from the native frame to
+  // an opaque frame, leading to graphical glitches behind the opaque frame.
+  // Instead, we use that function below to tell us whether the frame is
+  // currently native or opaque.
+  if (!GetWidget()->client_view() || !browser_view_->IsBrowserTypeNormal() ||
+      !DesktopWindowTreeHostWin::ShouldUseNativeFrame())
+    return false;
+
+  // Don't extend the glass in at all if it won't be visible.
+  if (!ShouldUseNativeFrame() || GetWidget()->IsFullscreen() ||
+      ShouldCustomDrawSystemTitlebar()) {
+    *insets = gfx::Insets();
+  } else {
+    // The glass should extend to the bottom of the tabstrip.
+    HWND hwnd = GetHWND();
+    gfx::Rect tabstrip_bounds(
+        browser_frame_->GetBoundsForTabStrip(browser_view_->tabstrip()));
+    tabstrip_bounds =
+        display::win::ScreenWin::DIPToClientRect(hwnd, tabstrip_bounds);
+
+    // The 2 px (not DIP) at the inner edges of Win 7 glass are a light and dark
+    // line, so we must inset further to account for those.
+    constexpr int kWin7GlassInset = 2;
+    const int inset = (base::win::GetVersion() < base::win::VERSION_WIN8)
+                          ? kWin7GlassInset
+                          : 0;
+    *insets =
+        gfx::Insets(tabstrip_bounds.bottom() + inset, inset, inset, inset);
+  }
+  return true;
+}
+
 void BrowserDesktopWindowTreeHostWin::HandleCreate() {
   DesktopWindowTreeHostWin::HandleCreate();
   browser_window_property_manager_ =
@@ -123,10 +162,6 @@
   // Reinitialize the status bubble, since it needs to be initialized
   // differently depending on whether or not DWM composition is enabled
   browser_view_->InitStatusBubble();
-
-  // We need to update the glass region on or off before the base class adjusts
-  // the window region.
-  UpdateDWMFrame();
   DesktopWindowTreeHostWin::HandleFrameChanged();
 }
 
@@ -159,14 +194,11 @@
 void BrowserDesktopWindowTreeHostWin::PostHandleMSG(UINT message,
                                                     WPARAM w_param,
                                                     LPARAM l_param) {
-  HWND hwnd = GetHWND();
   switch (message) {
     case WM_CREATE:
-      minimize_button_metrics_.Init(hwnd);
+      minimize_button_metrics_.Init(GetHWND());
       break;
     case WM_WINDOWPOSCHANGED: {
-      UpdateDWMFrame();
-
       // Windows lies to us about the position of the minimize button before a
       // window is visible. We use this position to place the incognito avatar
       // in RTL mode, so when the window is shown, we need to re-layout and
@@ -185,27 +217,6 @@
       }
       break;
     }
-    case WM_ERASEBKGND: {
-      gfx::Insets insets;
-      if (!did_gdi_clear_ &&
-          GetClientAreaInsets(
-              &insets, MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST))) {
-        // This is necessary to avoid white flashing in the titlebar area around
-        // the minimize/maximize/close buttons.
-        DCHECK_EQ(0, insets.top());
-        HDC dc = GetDC(hwnd);
-        MARGINS margins = GetDWMFrameMargins();
-        RECT client_rect;
-        GetClientRect(hwnd, &client_rect);
-        HBRUSH brush = CreateSolidBrush(0);
-        RECT rect = {0, 0, client_rect.right, margins.cyTopHeight};
-        FillRect(dc, &rect, brush);
-        DeleteObject(brush);
-        ReleaseDC(hwnd, dc);
-        did_gdi_clear_ = true;
-      }
-      break;
-    }
     case WM_DWMCOLORIZATIONCOLORCHANGED: {
       // The activation border may have changed color.
       views::NonClientView* non_client_view = GetWidget()->non_client_view();
@@ -268,53 +279,8 @@
          views::DesktopWindowTreeHostWin::ShouldWindowContentsBeTransparent();
 }
 
-void BrowserDesktopWindowTreeHostWin::FrameTypeChanged() {
-  views::DesktopWindowTreeHostWin::FrameTypeChanged();
-  did_gdi_clear_ = false;
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 // BrowserDesktopWindowTreeHostWin, private:
-
-void BrowserDesktopWindowTreeHostWin::UpdateDWMFrame() {
-  // For "normal" windows on Aero, we always need to reset the glass area
-  // correctly, even if we're not currently showing the native frame (e.g.
-  // because a theme is showing), so we explicitly check for that case rather
-  // than checking browser_frame_->ShouldUseNativeFrame() here.  Using that here
-  // would mean we wouldn't reset the glass area to zero when moving from the
-  // native frame to an opaque frame, leading to graphical glitches behind the
-  // opaque frame.  Instead, we use that function below to tell us whether the
-  // frame is currently native or opaque.
-  if (!GetWidget()->client_view() || !browser_view_->IsBrowserTypeNormal() ||
-      !DesktopWindowTreeHostWin::ShouldUseNativeFrame())
-    return;
-
-  MARGINS margins = GetDWMFrameMargins();
-
-  DwmExtendFrameIntoClientArea(GetHWND(), &margins);
-}
-
-MARGINS BrowserDesktopWindowTreeHostWin::GetDWMFrameMargins() const {
-  // Don't extend the glass in at all if it won't be visible.
-  if (!ShouldUseNativeFrame() || GetWidget()->IsFullscreen() ||
-      ShouldCustomDrawSystemTitlebar())
-    return MARGINS{0};
-
-  // The glass should extend to the bottom of the tabstrip.
-  HWND hwnd = GetHWND();
-  gfx::Rect tabstrip_bounds(
-      browser_frame_->GetBoundsForTabStrip(browser_view_->tabstrip()));
-  tabstrip_bounds =
-      display::win::ScreenWin::DIPToClientRect(hwnd, tabstrip_bounds);
-
-  // The 2 px (not DIP) at the inner edges of Win 7 glass are a light and dark
-  // line, so we must inset further to account for those.
-  constexpr int kWin7GlassInset = 2;
-  const int inset =
-      (base::win::GetVersion() < base::win::VERSION_WIN8) ? kWin7GlassInset : 0;
-  return MARGINS{inset, inset, tabstrip_bounds.bottom() + inset, inset};
-}
-
 bool BrowserDesktopWindowTreeHostWin::IsOpaqueHostedAppFrame() const {
   // TODO(https://crbug.com/868239): Support Windows 7 Aero glass for hosted app
   // window titlebar controls.
diff --git a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h
index 8289045..d547eaf 100644
--- a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h
+++ b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h
@@ -5,9 +5,6 @@
 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_
 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_
 
-#include <windows.h>
-#include <uxtheme.h>
-
 #include "base/macros.h"
 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h"
 #include "chrome/browser/ui/views/frame/minimize_button_metrics_win.h"
@@ -44,6 +41,7 @@
   int GetInitialShowState() const override;
   bool GetClientAreaInsets(gfx::Insets* insets,
                            HMONITOR monitor) const override;
+  bool GetDwmFrameInsetsInPixels(gfx::Insets* insets) const override;
   void HandleCreate() override;
   void HandleDestroying() override;
   void HandleFrameChanged() override;
@@ -56,10 +54,6 @@
   views::FrameMode GetFrameMode() const override;
   bool ShouldUseNativeFrame() const override;
   bool ShouldWindowContentsBeTransparent() const override;
-  void FrameTypeChanged() override;
-
-  void UpdateDWMFrame();
-  MARGINS GetDWMFrameMargins() const;
 
   bool IsOpaqueHostedAppFrame() const;
 
@@ -74,9 +68,6 @@
   // The wrapped system menu itself.
   std::unique_ptr<views::NativeMenuWin> system_menu_;
 
-  // Necessary to avoid corruption on NC paint in Aero mode.
-  bool did_gdi_clear_;
-
   DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostWin);
 };
 
diff --git a/chrome/browser/ui/views/frame/browser_frame_mac.h b/chrome/browser/ui/views/frame/browser_frame_mac.h
index 6d4fc09..26dccf4 100644
--- a/chrome/browser/ui/views/frame/browser_frame_mac.h
+++ b/chrome/browser/ui/views/frame/browser_frame_mac.h
@@ -34,7 +34,6 @@
                                     float* titlebar_height) override;
   void OnFocusWindowToolbar() override;
   void OnWindowFullscreenStateChange() override;
-  void InitNativeWidget(const views::Widget::InitParams& params) override;
 
   // Overridden from NativeBrowserFrame:
   views::Widget::InitParams GetWidgetParams() override;
diff --git a/chrome/browser/ui/views/frame/browser_frame_mac.mm b/chrome/browser/ui/views/frame/browser_frame_mac.mm
index 4855004..9fc237d 100644
--- a/chrome/browser/ui/views/frame/browser_frame_mac.mm
+++ b/chrome/browser/ui/views/frame/browser_frame_mac.mm
@@ -293,13 +293,6 @@
   return true;
 }
 
-void BrowserFrameMac::InitNativeWidget(
-    const views::Widget::InitParams& params) {
-  views::NativeWidgetMac::InitNativeWidget(params);
-
-  [[GetNativeWindow().GetNativeNSWindow() contentView] setWantsLayer:YES];
-}
-
 void BrowserFrameMac::PopulateCreateWindowParams(
     const views::Widget::InitParams& widget_params,
     views_bridge_mac::mojom::CreateWindowParams* params) {
diff --git a/chrome/browser/ui/views/infobars/infobar_view_unittest.cc b/chrome/browser/ui/views/infobars/infobar_view_unittest.cc
index 5e0fac3..15b1b91 100644
--- a/chrome/browser/ui/views/infobars/infobar_view_unittest.cc
+++ b/chrome/browser/ui/views/infobars/infobar_view_unittest.cc
@@ -6,9 +6,7 @@
 
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/browser/ui/views/infobars/infobar_container_view.h"
-#include "chrome/test/base/testing_profile.h"
-#include "chrome/test/views/chrome_views_test_base.h"
-#include "content/public/test/test_web_contents_factory.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
 
 class TestInfoBarDelegate : public infobars::InfoBarDelegate {
  public:
@@ -22,17 +20,27 @@
   InfoBarIdentifier GetIdentifier() const override { return TEST_INFOBAR; }
 };
 
-class InfoBarViewTest : public ChromeViewsTestBase {
+class InfoBarViewTest : public BrowserWithTestWindowTest {
  public:
-  InfoBarViewTest()
-      : web_contents_(web_contents_factory_.CreateWebContents(&profile_)),
-        infobar_container_view_(nullptr) {
-    InfoBarService::CreateForWebContents(web_contents_);
+  InfoBarViewTest() : infobar_container_view_(nullptr) {}
+  ~InfoBarViewTest() override = default;
+
+  // ChromeViewsTestBase:
+  void SetUp() override {
+    BrowserWithTestWindowTest::SetUp();
+
+    AddTab(browser(), GURL("about:blank"));
     infobar_container_view_.ChangeInfoBarManager(infobar_service());
   }
 
+  void TearDown() override {
+    DetachContainer();
+    BrowserWithTestWindowTest::TearDown();
+  }
+
   InfoBarService* infobar_service() {
-    return InfoBarService::FromWebContents(web_contents_);
+    return InfoBarService::FromWebContents(
+        browser()->tab_strip_model()->GetWebContentsAt(0));
   }
 
   // Detaches |infobar_container_view_| from infobar_service(), so that newly-
@@ -43,10 +51,9 @@
   }
 
  private:
-  TestingProfile profile_;
-  content::TestWebContentsFactory web_contents_factory_;
-  content::WebContents* web_contents_;
   InfoBarContainerView infobar_container_view_;
+
+  DISALLOW_COPY_AND_ASSIGN(InfoBarViewTest);
 };
 
 TEST_F(InfoBarViewTest, ShouldDrawSeparator) {
diff --git a/chrome/browser/ui/views/media_router/cast_toolbar_button_unittest.cc b/chrome/browser/ui/views/media_router/cast_toolbar_button_unittest.cc
index 5f0ed1b2..396181c 100644
--- a/chrome/browser/ui/views/media_router/cast_toolbar_button_unittest.cc
+++ b/chrome/browser/ui/views/media_router/cast_toolbar_button_unittest.cc
@@ -68,17 +68,20 @@
 
   void SetUp() override {
     ChromeViewsTestBase::SetUp();
+
+    profile_ = std::make_unique<TestingProfile>();
+
     MediaRouterFactory::GetInstance()->SetTestingFactory(
-        &profile_, base::BindRepeating(&MockMediaRouter::Create));
+        profile_.get(), base::BindRepeating(&MockMediaRouter::Create));
     MediaRouterUIServiceFactory::GetInstance()->SetTestingFactory(
-        &profile_, base::BindRepeating(&BuildUIService));
+        profile_.get(), base::BindRepeating(&BuildUIService));
 
     window_ = std::make_unique<TestBrowserWindow>();
-    Browser::CreateParams browser_params(&profile_, true);
+    Browser::CreateParams browser_params(profile_.get(), true);
     browser_params.window = window_.get();
     browser_ = std::make_unique<Browser>(browser_params);
     MediaRouter* media_router =
-        MediaRouterFactory::GetApiForBrowserContext(&profile_);
+        MediaRouterFactory::GetApiForBrowserContext(profile_.get());
     auto context_menu = std::make_unique<MediaRouterContextualMenu>(
         browser_.get(), true, false, &context_menu_observer_);
     button_ = std::make_unique<CastToolbarButton>(browser_.get(), media_router,
@@ -89,6 +92,7 @@
     button_.reset();
     browser_.reset();
     window_.reset();
+    profile_.reset();
     ChromeViewsTestBase::TearDown();
   }
 
@@ -101,7 +105,7 @@
   std::unique_ptr<Browser> browser_;
   std::unique_ptr<CastToolbarButton> button_;
   MockContextMenuObserver context_menu_observer_;
-  TestingProfile profile_;
+  std::unique_ptr<TestingProfile> profile_;
 
   const gfx::Image idle_icon_ =
       gfx::Image(gfx::CreateVectorIcon(vector_icons::kMediaRouterIdleIcon,
diff --git a/chrome/browser/ui/views/media_router/cloud_services_dialog_view_unittest.cc b/chrome/browser/ui/views/media_router/cloud_services_dialog_view_unittest.cc
index 29255df..3c82977 100644
--- a/chrome/browser/ui/views/media_router/cloud_services_dialog_view_unittest.cc
+++ b/chrome/browser/ui/views/media_router/cloud_services_dialog_view_unittest.cc
@@ -23,8 +23,9 @@
   void SetUp() override {
     ChromeViewsTestBase::SetUp();
 
+    profile_ = std::make_unique<TestingProfile>();
     window_ = std::make_unique<TestBrowserWindow>();
-    Browser::CreateParams browser_params(&profile_, true);
+    Browser::CreateParams browser_params(profile_.get(), true);
     browser_params.window = window_.get();
     browser_ = std::make_unique<Browser>(browser_params);
 
@@ -41,6 +42,7 @@
     anchor_widget_.reset();
     browser_.reset();
     window_.reset();
+    profile_.reset();
 
     ChromeViewsTestBase::TearDown();
   }
@@ -67,7 +69,7 @@
   std::unique_ptr<BrowserWindow> window_;
   std::unique_ptr<Browser> browser_;
   std::unique_ptr<views::Widget> anchor_widget_;
-  TestingProfile profile_;
+  std::unique_ptr<TestingProfile> profile_;
 };
 
 TEST_F(CloudServicesDialogViewTest, Enable) {
diff --git a/chrome/browser/ui/views/menu_interactive_uitest.cc b/chrome/browser/ui/views/menu_interactive_uitest.cc
index ff777d2..1ed4e47 100644
--- a/chrome/browser/ui/views/menu_interactive_uitest.cc
+++ b/chrome/browser/ui/views/menu_interactive_uitest.cc
@@ -6,7 +6,9 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "chrome/browser/ui/browser_commands.h"
+#include "chrome/browser/ui/views/native_widget_factory.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/test_browser_window.h"
@@ -17,10 +19,6 @@
 #include "ui/views/test/platform_test_helper.h"
 #include "ui/views/widget/widget.h"
 
-#if !defined(OS_CHROMEOS)
-#include "ui/views/test/native_widget_factory.h"
-#endif
-
 namespace views {
 namespace test {
 
@@ -78,11 +76,11 @@
   // Create a parent widget.
   Widget* widget = new views::Widget;
   Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
-#if !defined(OS_CHROMEOS)
-  params.native_widget = ::views::test::CreatePlatformDesktopNativeWidgetImpl(
-      params, widget, nullptr);
-#endif
   params.bounds = {0, 0, 200, 200};
+#if !defined(OS_CHROMEOS) && !defined(OS_MACOSX)
+  params.native_widget = CreateNativeWidget(
+      NativeWidgetType::DESKTOP_NATIVE_WIDGET_AURA, &params, widget);
+#endif
   widget->Init(params);
   widget->Show();
   widget->Activate();
diff --git a/chrome/browser/ui/views/message_center/popups_only_ui_delegate_unittest.cc b/chrome/browser/ui/views/message_center/popups_only_ui_delegate_unittest.cc
index 95ce00b0..60393db 100644
--- a/chrome/browser/ui/views/message_center/popups_only_ui_delegate_unittest.cc
+++ b/chrome/browser/ui/views/message_center/popups_only_ui_delegate_unittest.cc
@@ -33,12 +33,12 @@
 
 class PopupsOnlyUiDelegateTest : public views::test::WidgetTest {
  public:
-  PopupsOnlyUiDelegateTest() {}
-  ~PopupsOnlyUiDelegateTest() override {}
+  PopupsOnlyUiDelegateTest() = default;
+  ~PopupsOnlyUiDelegateTest() override = default;
 
   void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
     views::test::WidgetTest::SetUp();
-    test_views_delegate()->set_use_desktop_native_widgets(true);
     MessageCenter::Initialize();
   }
 
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
index 28844f6..c444adb 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
@@ -29,6 +29,7 @@
 #include "components/omnibox/browser/test_location_bar_model.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/metrics_proto/omnibox_event.pb.h"
+#include "ui/base/clipboard/clipboard.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/base/ime/text_edit_commands.h"
 #include "ui/base/ui_base_features.h"
@@ -146,6 +147,13 @@
   ++update_popup_call_count_;
   update_popup_text_ = text();
   update_popup_selection_range_ = GetSelectedRange();
+
+  // The real view calls OmniboxEditModel::UpdateInput(), which sets input in
+  // progress and starts autocomplete.  Triggering autocomplete and the popup is
+  // beyond the scope of this test, but setting input in progress is important
+  // for making some sequences (e.g. uneliding on taking an action) behave
+  // correctly.
+  model()->SetInputInProgress(true);
 }
 
 void TestingOmniboxView::SetEmphasis(bool emphasize, const Range& range) {
@@ -217,9 +225,7 @@
   views::Textfield* omnibox_textfield() const { return omnibox_view(); }
   views::View* omnibox_textfield_view() const { return omnibox_view(); }
 
-  ui::TextEditCommand scheduled_text_edit_command() const {
-    return test_api_->scheduled_text_edit_command();
-  }
+  views::TextfieldTestApi* textfield_test_api() { return test_api_.get(); }
 
   // Sets |new_text| as the omnibox text, and emphasizes it appropriately.  If
   // |accept_input| is true, pretends that the user has accepted this input
@@ -241,8 +247,8 @@
   }
 
  private:
-  TestingProfile profile_;
-  TemplateURLServiceFactoryTestUtil util_;
+  std::unique_ptr<TestingProfile> profile_;
+  std::unique_ptr<TemplateURLServiceFactoryTestUtil> util_;
   CommandUpdaterImpl command_updater_;
   TestLocationBarModel location_bar_model_;
   TestingOmniboxEditController omnibox_edit_controller_;
@@ -260,7 +266,6 @@
 OmniboxViewViewsTest::OmniboxViewViewsTest(
     const std::vector<base::Feature>& enabled_features)
     : OmniboxViewViewsTestBase(enabled_features),
-      util_(&profile_),
       command_updater_(nullptr),
       omnibox_edit_controller_(&command_updater_, &location_bar_model_) {}
 
@@ -280,6 +285,9 @@
 void OmniboxViewViewsTest::SetUp() {
   ChromeViewsTestBase::SetUp();
 
+  profile_ = std::make_unique<TestingProfile>();
+  util_ = std::make_unique<TemplateURLServiceFactoryTestUtil>(profile_.get());
+
   // We need a widget so OmniboxView can be correctly focused and unfocused.
   widget_ = std::make_unique<views::Widget>();
   views::Widget::InitParams params =
@@ -294,11 +302,12 @@
       new chromeos::input_method::MockInputMethodManagerImpl);
 #endif
   AutocompleteClassifierFactory::GetInstance()->SetTestingFactoryAndUse(
-      &profile_,
+      profile_.get(),
       base::BindRepeating(&AutocompleteClassifierFactory::BuildInstanceFor));
-  omnibox_view_ = new TestingOmniboxView(
-      &omnibox_edit_controller_, std::make_unique<ChromeOmniboxClient>(
-                                     &omnibox_edit_controller_, &profile_));
+  omnibox_view_ =
+      new TestingOmniboxView(&omnibox_edit_controller_,
+                             std::make_unique<ChromeOmniboxClient>(
+                                 &omnibox_edit_controller_, profile_.get()));
   test_api_ = std::make_unique<views::TextfieldTestApi>(omnibox_view_);
   omnibox_view_->Init();
 
@@ -311,6 +320,8 @@
     omnibox_view_->GetInputMethod()->DetachTextInputClient(omnibox_view_);
 
   widget_.reset();
+  util_.reset();
+  profile_.reset();
 
 #if defined(OS_CHROMEOS)
   chromeos::input_method::Shutdown();
@@ -360,12 +371,13 @@
 TEST_F(OmniboxViewViewsTest, ScheduledTextEditCommand) {
   omnibox_textfield()->SetTextEditCommandForNextKeyEvent(
       ui::TextEditCommand::MOVE_UP);
-  EXPECT_EQ(ui::TextEditCommand::MOVE_UP, scheduled_text_edit_command());
+  EXPECT_EQ(ui::TextEditCommand::MOVE_UP,
+            textfield_test_api()->scheduled_text_edit_command());
 
   ui::KeyEvent up_pressed(ui::ET_KEY_PRESSED, ui::VKEY_UP, 0);
   omnibox_textfield()->OnKeyEvent(&up_pressed);
   EXPECT_EQ(ui::TextEditCommand::INVALID_COMMAND,
-            scheduled_text_edit_command());
+            textfield_test_api()->scheduled_text_edit_command());
 }
 
 // Test that Shift+Up and Shift+Down are not captured and let selection mode
@@ -535,6 +547,87 @@
   EXPECT_TRUE(omnibox_view()->model()->keyword().empty());
 }
 
+class OmniboxViewViewsClipboardTest
+    : public OmniboxViewViewsTest,
+      public ::testing::WithParamInterface<ui::TextEditCommand> {
+ public:
+  void SetUp() override {
+    OmniboxViewViewsTest::SetUp();
+
+    location_bar_model()->set_url(GURL("https://test.com/"));
+    omnibox_view()->model()->ResetDisplayTexts();
+    omnibox_view()->RevertAll();
+  }
+};
+
+TEST_P(OmniboxViewViewsClipboardTest, ClipboardCopyOrCutURL) {
+  omnibox_view()->SelectAll(false);
+  ASSERT_TRUE(omnibox_view()->IsSelectAll());
+
+  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
+  ui::ClipboardType clipboard_type = ui::CLIPBOARD_TYPE_COPY_PASTE;
+
+  clipboard->Clear(clipboard_type);
+  ui::TextEditCommand clipboard_command = GetParam();
+  textfield_test_api()->ExecuteTextEditCommand(clipboard_command);
+
+  base::string16 expected_text;
+  if (clipboard_command == ui::TextEditCommand::COPY)
+    expected_text = base::ASCIIToUTF16("https://test.com/");
+  EXPECT_EQ(expected_text, omnibox_view()->GetText());
+
+  // Make sure HTML format isn't written. See
+  // BookmarkNodeData::WriteToClipboard() for details.
+  EXPECT_TRUE(clipboard->IsFormatAvailable(
+      ui::Clipboard::GetPlainTextFormatType(), clipboard_type));
+  EXPECT_FALSE(clipboard->IsFormatAvailable(ui::Clipboard::GetHtmlFormatType(),
+                                            clipboard_type));
+
+  // Windows clipboard only supports text URLs.
+  // Mac clipboard not reporting URL format available for some reason.
+  // crbug.com/751031
+#if defined(OS_LINUX)
+  EXPECT_TRUE(clipboard->IsFormatAvailable(ui::Clipboard::GetUrlFormatType(),
+                                           clipboard_type));
+#endif
+
+  std::string read_from_clipboard;
+  clipboard->ReadAsciiText(clipboard_type, &read_from_clipboard);
+  EXPECT_EQ("https://test.com/", read_from_clipboard);
+}
+
+TEST_P(OmniboxViewViewsClipboardTest, ClipboardCopyOrCutUserText) {
+  omnibox_view()->SetUserText(base::ASCIIToUTF16("user text"));
+  omnibox_view()->SelectAll(false);
+  ASSERT_TRUE(omnibox_view()->IsSelectAll());
+
+  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
+  ui::ClipboardType clipboard_type = ui::CLIPBOARD_TYPE_COPY_PASTE;
+
+  clipboard->Clear(clipboard_type);
+  ui::TextEditCommand clipboard_command = GetParam();
+  textfield_test_api()->ExecuteTextEditCommand(clipboard_command);
+
+  if (clipboard_command == ui::TextEditCommand::CUT)
+    EXPECT_EQ(base::string16(), omnibox_view()->GetText());
+
+  // Make sure HTML format isn't written. See
+  // BookmarkNodeData::WriteToClipboard() for details.
+  EXPECT_TRUE(clipboard->IsFormatAvailable(
+      ui::Clipboard::GetPlainTextFormatType(), clipboard_type));
+  EXPECT_FALSE(clipboard->IsFormatAvailable(ui::Clipboard::GetHtmlFormatType(),
+                                            clipboard_type));
+
+  std::string read_from_clipboard;
+  clipboard->ReadAsciiText(clipboard_type, &read_from_clipboard);
+  EXPECT_EQ("user text", read_from_clipboard);
+}
+
+INSTANTIATE_TEST_CASE_P(OmniboxViewViewsClipboardTest,
+                        OmniboxViewViewsClipboardTest,
+                        ::testing::Values(ui::TextEditCommand::COPY,
+                                          ui::TextEditCommand::CUT));
+
 class OmniboxViewViewsSteadyStateElisionsTest : public OmniboxViewViewsTest {
  public:
   OmniboxViewViewsSteadyStateElisionsTest()
diff --git a/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc
index 97b14877..50895ba 100644
--- a/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc
+++ b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc
@@ -147,6 +147,20 @@
     event_waiter_->OnEvent(DialogEvent::CAN_MAKE_PAYMENT_RETURNED);
 }
 
+void PaymentRequestBrowserTestBase::OnHasEnrolledInstrumentCalled() {
+  // TODO(https://crbug.com/915907): rename enum to HAS_ENROLLED_INSTRUMENT
+  // version when new CanMakePayment behavior is implemented.
+  if (event_waiter_)
+    event_waiter_->OnEvent(DialogEvent::CAN_MAKE_PAYMENT_CALLED);
+}
+
+void PaymentRequestBrowserTestBase::OnHasEnrolledInstrumentReturned() {
+  // TODO(https://crbug.com/915907): rename enum to HAS_ENROLLED_INSTRUMENT
+  // version when new CanMakePayment behavior is implemented.
+  if (event_waiter_)
+    event_waiter_->OnEvent(DialogEvent::CAN_MAKE_PAYMENT_RETURNED);
+}
+
 void PaymentRequestBrowserTestBase::OnNotSupportedError() {
   if (event_waiter_)
     event_waiter_->OnEvent(DialogEvent::NOT_SUPPORTED_ERROR);
@@ -870,6 +884,12 @@
     case DialogEvent::CAN_MAKE_PAYMENT_RETURNED:
       out << "CAN_MAKE_PAYMENT_RETURNED";
       break;
+    case DialogEvent::HAS_ENROLLED_INSTRUMENT_CALLED:
+      out << "HAS_ENROLLED_INSTRUMENT_CALLED";
+      break;
+    case DialogEvent::HAS_ENROLLED_INSTRUMENT_RETURNED:
+      out << "HAS_ENROLLED_INSTRUMENT_RETURNED";
+      break;
     case DialogEvent::ERROR_MESSAGE_SHOWN:
       out << "ERROR_MESSAGE_SHOWN";
       break;
diff --git a/chrome/browser/ui/views/payments/payment_request_browsertest_base.h b/chrome/browser/ui/views/payments/payment_request_browsertest_base.h
index e4aa356..e9ad8447 100644
--- a/chrome/browser/ui/views/payments/payment_request_browsertest_base.h
+++ b/chrome/browser/ui/views/payments/payment_request_browsertest_base.h
@@ -82,6 +82,8 @@
     EDITOR_VIEW_UPDATED,
     CAN_MAKE_PAYMENT_CALLED,
     CAN_MAKE_PAYMENT_RETURNED,
+    HAS_ENROLLED_INSTRUMENT_CALLED,
+    HAS_ENROLLED_INSTRUMENT_RETURNED,
     ERROR_MESSAGE_SHOWN,
     SPEC_DONE_UPDATING,
     CVC_PROMPT_SHOWN,
@@ -109,6 +111,8 @@
   // PaymentRequest::ObserverForTest:
   void OnCanMakePaymentCalled() override;
   void OnCanMakePaymentReturned() override;
+  void OnHasEnrolledInstrumentCalled() override;
+  void OnHasEnrolledInstrumentReturned() override;
   void OnNotSupportedError() override;
   void OnConnectionTerminated() override;
   void OnAbortCalled() override;
diff --git a/chrome/browser/ui/views/tabs/tab_style.cc b/chrome/browser/ui/views/tabs/tab_style.cc
index 8f21aa7..c7cd4a68 100644
--- a/chrome/browser/ui/views/tabs/tab_style.cc
+++ b/chrome/browser/ui/views/tabs/tab_style.cc
@@ -80,13 +80,19 @@
       float scale,
       bool force_active = false,
       RenderUnits render_units = RenderUnits::kPixels) const override;
-  SeparatorBounds GetSeparatorBounds(float scale) const override;
   gfx::Insets GetContentsInsets() const override;
   int GetStrokeThickness(bool should_paint_as_active = false) const override;
-  SeparatorOpacities GetSeparatorOpacities(bool for_layout) const override;
   void PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) const override;
 
  private:
+  // Gets the bounds for the leading and trailing separators for a tab.
+  SeparatorBounds GetSeparatorBounds(float scale) const;
+
+  // Returns the opacities of the separators. If |for_layout| is true, returns
+  // the "layout" opacities, which ignore the effects of surrounding tabs' hover
+  // effects and consider only the current tab's state.
+  SeparatorOpacities GetSeparatorOpacities(bool for_layout) const;
+
   // Returns whether we shoould extend the hit test region for Fitts' Law.
   bool ShouldExtendHitTest() const;
 
@@ -371,6 +377,46 @@
   return path;
 }
 
+gfx::Insets GM2TabStyle::GetContentsInsets() const {
+  const int stroke_thickness = GetStrokeThickness();
+  const int horizontal_inset = GetContentsHorizontalInsetSize();
+  return gfx::Insets(
+      stroke_thickness, horizontal_inset,
+      stroke_thickness + GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP),
+      horizontal_inset);
+}
+
+int GM2TabStyle::GetStrokeThickness(bool should_paint_as_active) const {
+  return (tab_->IsActive() || should_paint_as_active)
+             ? tab_->controller()->GetStrokeThickness()
+             : 0;
+}
+
+void GM2TabStyle::PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) const {
+  int active_tab_fill_id = 0;
+  int active_tab_y_inset = 0;
+  if (tab_->GetThemeProvider()->HasCustomImage(IDR_THEME_TOOLBAR)) {
+    active_tab_fill_id = IDR_THEME_TOOLBAR;
+    active_tab_y_inset = GetStrokeThickness(true);
+  }
+
+  if (tab_->IsActive()) {
+    PaintTabBackground(canvas, true /* active */, active_tab_fill_id,
+                       active_tab_y_inset, nullptr /* clip */);
+  } else {
+    PaintInactiveTabBackground(canvas, clip);
+
+    const float throb_value = tab_->GetThrobValue();
+    if (throb_value > 0) {
+      canvas->SaveLayerAlpha(gfx::ToRoundedInt(throb_value * 0xff),
+                             tab_->GetLocalBounds());
+      PaintTabBackground(canvas, true /* active */, active_tab_fill_id,
+                         active_tab_y_inset, nullptr /* clip */);
+      canvas->Restore();
+    }
+  }
+}
+
 TabStyle::SeparatorBounds GM2TabStyle::GetSeparatorBounds(float scale) const {
   const gfx::RectF aligned_bounds =
       ScaleAndAlignBounds(tab_->bounds(), scale, GetStrokeThickness());
@@ -398,21 +444,6 @@
   return separator_bounds;
 }
 
-gfx::Insets GM2TabStyle::GetContentsInsets() const {
-  const int stroke_thickness = GetStrokeThickness();
-  const int horizontal_inset = GetContentsHorizontalInsetSize();
-  return gfx::Insets(
-      stroke_thickness, horizontal_inset,
-      stroke_thickness + GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP),
-      horizontal_inset);
-}
-
-int GM2TabStyle::GetStrokeThickness(bool should_paint_as_active) const {
-  return (tab_->IsActive() || should_paint_as_active)
-             ? tab_->controller()->GetStrokeThickness()
-             : 0;
-}
-
 TabStyle::SeparatorOpacities GM2TabStyle::GetSeparatorOpacities(
     bool for_layout) const {
   // Something should visually separate tabs from each other and any adjacent
@@ -497,31 +528,6 @@
   return {leading_opacity, trailing_opacity};
 }
 
-void GM2TabStyle::PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) const {
-  int active_tab_fill_id = 0;
-  int active_tab_y_inset = 0;
-  if (tab_->GetThemeProvider()->HasCustomImage(IDR_THEME_TOOLBAR)) {
-    active_tab_fill_id = IDR_THEME_TOOLBAR;
-    active_tab_y_inset = GetStrokeThickness(true);
-  }
-
-  if (tab_->IsActive()) {
-    PaintTabBackground(canvas, true /* active */, active_tab_fill_id,
-                       active_tab_y_inset, nullptr /* clip */);
-  } else {
-    PaintInactiveTabBackground(canvas, clip);
-
-    const float throb_value = tab_->GetThrobValue();
-    if (throb_value > 0) {
-      canvas->SaveLayerAlpha(gfx::ToRoundedInt(throb_value * 0xff),
-                             tab_->GetLocalBounds());
-      PaintTabBackground(canvas, true /* active */, active_tab_fill_id,
-                         active_tab_y_inset, nullptr /* clip */);
-      canvas->Restore();
-    }
-  }
-}
-
 bool GM2TabStyle::ShouldExtendHitTest() const {
   const views::Widget* widget = tab_->GetWidget();
   return widget->IsMaximized() || widget->IsFullscreen();
diff --git a/chrome/browser/ui/views/tabs/tab_style.h b/chrome/browser/ui/views/tabs/tab_style.h
index 032ec90..a2a13c2 100644
--- a/chrome/browser/ui/views/tabs/tab_style.h
+++ b/chrome/browser/ui/views/tabs/tab_style.h
@@ -86,9 +86,6 @@
       bool force_active = false,
       RenderUnits render_units = RenderUnits::kPixels) const = 0;
 
-  // Gets the bounds for the leading and trailing separators for a tab.
-  virtual SeparatorBounds GetSeparatorBounds(float scale) const = 0;
-
   // Returns the thickness of the stroke drawn around the top and sides of the
   // tab.  Only active tabs may have a stroke, and not in all cases.  If there
   // is no stroke, returns 0.  If |should_paint_as_active| is true, the tab is
@@ -98,11 +95,6 @@
   // Paint the tab.
   virtual void PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) const = 0;
 
-  // Returns the opacities of the separators.  If |for_layout| is true, returns
-  // the "layout" opacities, which ignore the effects of surrounding tabs' hover
-  // effects and consider only the current tab's state.
-  virtual SeparatorOpacities GetSeparatorOpacities(bool for_layout) const = 0;
-
   // Returns the insets to use for laying out tab contents.
   virtual gfx::Insets GetContentsInsets() const = 0;
 
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
index c5e41e6d..d144d00c 100644
--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
+++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
@@ -200,6 +200,7 @@
     {"itemPermissionsEmpty", IDS_MD_EXTENSIONS_ITEM_PERMISSIONS_EMPTY},
     {"itemRemoveExtension", IDS_MD_EXTENSIONS_ITEM_REMOVE_EXTENSION},
     {"itemSiteAccess", IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS},
+    {"itemSiteAccessAddHost", IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS_ADD_HOST},
     {"itemSiteAccessEmpty", IDS_MD_EXTENSIONS_ITEM_SITE_ACCESS_EMPTY},
     {"itemSource", IDS_MD_EXTENSIONS_ITEM_SOURCE},
     {"itemSourcePolicy", IDS_MD_EXTENSIONS_ITEM_SOURCE_POLICY},
diff --git a/chrome/browser/ui/webui/omnibox/omnibox.mojom b/chrome/browser/ui/webui/omnibox/omnibox.mojom
index 4f5c26039..2a1f4bc 100644
--- a/chrome/browser/ui/webui/omnibox/omnibox.mojom
+++ b/chrome/browser/ui/webui/omnibox/omnibox.mojom
@@ -57,8 +57,10 @@
   StartOmniboxQuery(string input_string,
                     bool reset_autocomplete_controller,
                     int32 cursor_position,
+                    bool zero_suggest,
                     bool prevent_inline_autocomplete,
                     bool prefer_keyword,
+                    string current_url,
                     int32 page_classification);
 };
 
diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc
index ca20ae7..f5414e3 100644
--- a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc
+++ b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc
@@ -191,8 +191,10 @@
 void OmniboxPageHandler::StartOmniboxQuery(const std::string& input_string,
                                            bool reset_autocomplete_controller,
                                            int32_t cursor_position,
+                                           bool zero_suggest,
                                            bool prevent_inline_autocomplete,
                                            bool prefer_keyword,
+                                           const std::string& current_url,
                                            int32_t page_classification) {
   // Reset the controller.  If we don't do this, then the
   // AutocompleteController might inappropriately set its |minimal_changes|
@@ -207,8 +209,14 @@
       static_cast<metrics::OmniboxEventProto::PageClassification>(
           page_classification),
       ChromeAutocompleteSchemeClassifier(profile_));
+  GURL current_url_gurl{current_url};
+  if (current_url_gurl.is_valid())
+    input_.set_current_url(current_url_gurl);
+  input_.set_current_title(base::UTF8ToUTF16(current_url));
   input_.set_prevent_inline_autocomplete(prevent_inline_autocomplete);
   input_.set_prefer_keyword(prefer_keyword);
+  input_.set_from_omnibox_focus(zero_suggest);
+
   controller_->Start(input_);
 }
 
diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.h b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.h
index f8c8c5c..1d10226 100644
--- a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.h
+++ b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.h
@@ -38,11 +38,15 @@
 
   // mojom::OmniboxPageHandler overrides:
   void SetClientPage(mojom::OmniboxPagePtr page) override;
+  // current_url may be invalid, in which case, autocomplete input's url won't
+  // be set.
   void StartOmniboxQuery(const std::string& input_string,
                          bool reset_autocomplete_controller,
                          int32_t cursor_position,
+                         bool zero_suggest,
                          bool prevent_inline_autocomplete,
                          bool prefer_keyword,
+                         const std::string& current_url,
                          int32_t page_classification) override;
 
  private:
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index cbbd2e8..4b7e70a 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -114,6 +114,7 @@
   PRINT_WITH_PRIVET,
   PRINT_WITH_EXTENSION,
   OPEN_IN_MAC_PREVIEW,
+  PRINT_TO_GOOGLE_DRIVE,
   USERACTION_BUCKET_BOUNDARY
 };
 
@@ -213,6 +214,10 @@
       UMA_HISTOGRAM_COUNTS_1M("PrintPreview.PageCount.OpenInMacPreview",
                               page_count);
       return true;
+    case PRINT_TO_GOOGLE_DRIVE:
+      UMA_HISTOGRAM_COUNTS_1M("PrintPreview.PageCount.PrintToGoogleDrive",
+                              page_count);
+      return true;
     default:
       return false;
   }
@@ -434,6 +439,11 @@
 #endif
   if (value)
     return OPEN_IN_MAC_PREVIEW;
+  // This needs to be checked before checking for a cloud print ID, since a
+  // print ticket for printing to Drive will also contain a cloud print ID.
+  settings.GetBoolean(printing::kSettingPrintToGoogleDrive, &value);
+  if (value)
+    return PRINT_TO_GOOGLE_DRIVE;
   if (settings.HasKey(printing::kSettingCloudPrintId))
     return PRINT_WITH_CLOUD_PRINT;
   settings.GetBoolean(printing::kSettingPrintWithPrivet, &value);
@@ -884,7 +894,8 @@
     return;
   }
 
-  if (user_action == PRINT_WITH_CLOUD_PRINT) {
+  if (user_action == PRINT_WITH_CLOUD_PRINT ||
+      user_action == PRINT_TO_GOOGLE_DRIVE) {
     // Does not send the title like the other printer handler types below,
     // because JS already has the document title from the initial settings.
     SendCloudPrintJob(callback_id, data.get());
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.h b/chrome/browser/ui/webui/print_preview/print_preview_handler.h
index dcf4d46..e340c350 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.h
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.h
@@ -155,6 +155,10 @@
   FRIEND_TEST_ALL_PREFIXES(PrintPreviewHandlerTest, Print);
   FRIEND_TEST_ALL_PREFIXES(PrintPreviewHandlerTest, GetPreview);
   FRIEND_TEST_ALL_PREFIXES(PrintPreviewHandlerTest, SendPreviewUpdates);
+  friend class PrintPreviewHandlerFailingTest;
+  FRIEND_TEST_ALL_PREFIXES(PrintPreviewHandlerFailingTest,
+                           GetPrinterCapabilities);
+
   class AccessTokenService;
 
   content::WebContents* preview_web_contents() const;
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
index e114fe86..26ebe83 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -245,7 +245,10 @@
 
 class PrintPreviewHandlerTest : public testing::Test {
  public:
-  PrintPreviewHandlerTest() {
+  PrintPreviewHandlerTest() = default;
+  ~PrintPreviewHandlerTest() override = default;
+
+  void SetUp() override {
     TestingProfile::Builder builder;
     profile_ = builder.Build();
     initiator_web_contents_ = content::WebContents::Create(
@@ -261,8 +264,7 @@
 
     printers_.push_back(
         printing::GetSimplePrinterInfo(printing::kDummyPrinterName, true));
-    auto printer_handler =
-        std::make_unique<printing::TestPrinterHandler>(printers_);
+    auto printer_handler = CreatePrinterHandler(printers_);
     printer_handler_ = printer_handler.get();
 
     auto preview_handler = std::make_unique<printing::TestPrintPreviewHandler>(
@@ -277,11 +279,16 @@
     web_ui()->SetController(std::move(preview_ui));
   }
 
-  ~PrintPreviewHandlerTest() override {
+  void TearDown() override {
     printing::PrintViewManager::FromWebContents(initiator_web_contents_.get())
         ->PrintPreviewDone();
   }
 
+  virtual std::unique_ptr<printing::TestPrinterHandler> CreatePrinterHandler(
+      const std::vector<printing::PrinterInfo>& printers) {
+    return std::make_unique<printing::TestPrinterHandler>(printers);
+  }
+
   void Initialize() {
     // Set locale since the delimeters we check in VerifyInitialSettings()
     // depend on it.
@@ -695,3 +702,75 @@
   // Handler should have tried to kill the renderer for each of these.
   EXPECT_EQ(handler()->bad_messages(), 3);
 }
+
+class FailingTestPrinterHandler : public printing::TestPrinterHandler {
+ public:
+  explicit FailingTestPrinterHandler(
+      const std::vector<printing::PrinterInfo>& printers)
+      : TestPrinterHandler(printers) {}
+
+  ~FailingTestPrinterHandler() override = default;
+
+  void StartGetCapability(const std::string& destination_id,
+                          GetCapabilityCallback callback) override {
+    std::move(callback).Run(base::Value());
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(FailingTestPrinterHandler);
+};
+
+class PrintPreviewHandlerFailingTest : public PrintPreviewHandlerTest {
+ public:
+  PrintPreviewHandlerFailingTest() = default;
+  ~PrintPreviewHandlerFailingTest() override = default;
+
+  std::unique_ptr<printing::TestPrinterHandler> CreatePrinterHandler(
+      const std::vector<printing::PrinterInfo>& printers) override {
+    return std::make_unique<FailingTestPrinterHandler>(printers);
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(PrintPreviewHandlerFailingTest);
+};
+
+// This test is similar to PrintPreviewHandlerTest.GetPrinterCapabilities, but
+// uses FailingTestPrinterHandler instead of TestPrinterHandler. As a result,
+// StartGetCapability() always fails, to exercise its callback's failure
+// handling path. Failure is different from getting no capabilities.
+TEST_F(PrintPreviewHandlerFailingTest, GetPrinterCapabilities) {
+  // Add an empty printer to the handler.
+  printers().push_back(printing::GetEmptyPrinterInfo());
+  printer_handler()->SetPrinters(printers());
+
+  // Initial settings first to enable javascript.
+  Initialize();
+
+  // Check all four printer types that implement
+  // PrinterHandler::StartGetCapability().
+  for (size_t i = 0; i < base::size(printing::kAllTypes); i++) {
+    printing::PrinterType type = printing::kAllTypes[i];
+    handler()->reset_calls();
+    base::Value args(base::Value::Type::LIST);
+    std::string callback_id_in =
+        "test-callback-id-" + base::UintToString(i + 1);
+    args.GetList().emplace_back(callback_id_in);
+    args.GetList().emplace_back(printing::kDummyPrinterName);
+    args.GetList().emplace_back(type);
+    std::unique_ptr<base::ListValue> list_args =
+        base::ListValue::From(base::Value::ToUniquePtrValue(std::move(args)));
+    handler()->HandleGetPrinterCapabilities(list_args.get());
+    EXPECT_TRUE(handler()->CalledOnlyForType(type));
+
+    // Start with 2 calls from initial settings, then add 1 more for each loop
+    // iteration.
+    ASSERT_EQ(2u + (i + 1), web_ui()->call_data().size());
+
+    // Verify printer capabilities promise was rejected.
+    const content::TestWebUI::CallData& data = *web_ui()->call_data().back();
+    CheckWebUIResponse(data, callback_id_in, false);
+    const base::Value* settings = data.arg3();
+    ASSERT_TRUE(settings);
+    EXPECT_TRUE(settings->is_none());
+  }
+}
diff --git a/chrome/common/channel_info.cc b/chrome/common/channel_info.cc
index 7345984..3e08de4 100644
--- a/chrome/common/channel_info.cc
+++ b/chrome/common/channel_info.cc
@@ -13,4 +13,10 @@
   return version_info::GetVersionStringWithModifier(GetChannelName());
 }
 
+version_info::Channel GetChannel() {
+  if (!version_info::IsChannelSet())
+    version_info::SetChannel(channel_info_internal::InitChannel());
+  return version_info::GetChannel();
+}
+
 }  // namespace chrome
diff --git a/chrome/common/channel_info.h b/chrome/common/channel_info.h
index 881a255..48e0f6af 100644
--- a/chrome/common/channel_info.h
+++ b/chrome/common/channel_info.h
@@ -51,6 +51,14 @@
 std::string GetChannelSuffixForDataDir();
 #endif
 
+namespace channel_info_internal {
+
+// Internal platform-specific implementation to initialize the GetChannel()
+// return value.
+version_info::Channel InitChannel();
+
+}  // namespace channel_info_internal
+
 }  // namespace chrome
 
 #endif  // CHROME_COMMON_CHANNEL_INFO_H_
diff --git a/chrome/common/channel_info_android.cc b/chrome/common/channel_info_android.cc
index d73a946..64e74334 100644
--- a/chrome/common/channel_info_android.cc
+++ b/chrome/common/channel_info_android.cc
@@ -24,8 +24,12 @@
   return std::string();
 }
 
-version_info::Channel GetChannel() {
+namespace channel_info_internal {
+
+version_info::Channel InitChannel() {
   return version_info::android::GetChannel();
 }
 
+}  // namespace channel_info_internal
+
 }  // namespace chrome
diff --git a/chrome/common/channel_info_chromeos.cc b/chrome/common/channel_info_chromeos.cc
index 29d1dca2c..4afe0ce7 100644
--- a/chrome/common/channel_info_chromeos.cc
+++ b/chrome/common/channel_info_chromeos.cc
@@ -8,23 +8,20 @@
 #include "components/version_info/version_info.h"
 
 namespace chrome {
+
 namespace {
 
-version_info::Channel g_chromeos_channel = version_info::Channel::UNKNOWN;
-
 #if defined(GOOGLE_CHROME_BUILD)
-// Sets the |g_chromeos_channel|.
-void SetChannel(const std::string& channel) {
+version_info::Channel ChannelStringToChannel(const std::string& channel) {
   if (channel == "stable-channel")
-    g_chromeos_channel = version_info::Channel::STABLE;
-  else if (channel == "beta-channel")
-    g_chromeos_channel = version_info::Channel::BETA;
-  else if (channel == "dev-channel")
-    g_chromeos_channel = version_info::Channel::DEV;
-  else if (channel == "canary-channel")
-    g_chromeos_channel = version_info::Channel::CANARY;
-  else
-    g_chromeos_channel = version_info::Channel::UNKNOWN;
+    return version_info::Channel::STABLE;
+  if (channel == "beta-channel")
+    return version_info::Channel::BETA;
+  if (channel == "dev-channel")
+    return version_info::Channel::DEV;
+  if (channel == "canary-channel")
+    return version_info::Channel::CANARY;
+  return version_info::Channel::UNKNOWN;
 }
 #endif
 
@@ -32,7 +29,7 @@
 
 std::string GetChannelName() {
 #if defined(GOOGLE_CHROME_BUILD)
-  switch (g_chromeos_channel) {
+  switch (GetChannel()) {
     case version_info::Channel::STABLE:
       return std::string();
     case version_info::Channel::BETA:
@@ -48,22 +45,6 @@
   return std::string();
 }
 
-version_info::Channel GetChannel() {
-  static bool is_channel_set = false;
-  if (is_channel_set)
-    return g_chromeos_channel;
-
-#if defined(GOOGLE_CHROME_BUILD)
-  static const char kChromeOSReleaseTrack[] = "CHROMEOS_RELEASE_TRACK";
-  std::string channel;
-  if (base::SysInfo::GetLsbReleaseValue(kChromeOSReleaseTrack, &channel)) {
-    SetChannel(channel);
-    is_channel_set = true;
-  }
-#endif
-  return g_chromeos_channel;
-}
-
 #if defined(GOOGLE_CHROME_BUILD)
 std::string GetChannelSuffixForDataDir() {
   // ChromeOS doesn't support side-by-side installations.
@@ -71,4 +52,18 @@
 }
 #endif  // defined(GOOGLE_CHROME_BUILD)
 
+namespace channel_info_internal {
+
+version_info::Channel InitChannel() {
+#if defined(GOOGLE_CHROME_BUILD)
+  static const char kChromeOSReleaseTrack[] = "CHROMEOS_RELEASE_TRACK";
+  std::string channel;
+  if (base::SysInfo::GetLsbReleaseValue(kChromeOSReleaseTrack, &channel))
+    return ChannelStringToChannel(channel);
+#endif
+  return version_info::Channel::UNKNOWN;
+}
+
+}  // namespace channel_info_internal
+
 }  // namespace chrome
diff --git a/chrome/common/channel_info_mac.mm b/chrome/common/channel_info_mac.mm
index 08ffef5c..f3fc0ad 100644
--- a/chrome/common/channel_info_mac.mm
+++ b/chrome/common/channel_info_mac.mm
@@ -55,8 +55,12 @@
   return version_info::Channel::UNKNOWN;
 }
 
-version_info::Channel GetChannel() {
+namespace channel_info_internal {
+
+version_info::Channel InitChannel() {
   return GetChannelByName(GetChannelName());
 }
 
+}  // namespace channel_info_internal
+
 }  // namespace chrome
diff --git a/chrome/common/channel_info_posix.cc b/chrome/common/channel_info_posix.cc
index 7978d18..a538c6d3 100644
--- a/chrome/common/channel_info_posix.cc
+++ b/chrome/common/channel_info_posix.cc
@@ -67,8 +67,12 @@
 }
 #endif  // defined(GOOGLE_CHROME_BUILD)
 
-version_info::Channel GetChannel() {
+namespace channel_info_internal {
+
+version_info::Channel InitChannel() {
   return GetChannelImpl(nullptr, nullptr);
 }
 
+}  // namespace channel_info_internal
+
 }  // namespace chrome
diff --git a/chrome/common/channel_info_win.cc b/chrome/common/channel_info_win.cc
index b40e2ef0..323dc007 100644
--- a/chrome/common/channel_info_win.cc
+++ b/chrome/common/channel_info_win.cc
@@ -25,8 +25,12 @@
 #endif
 }
 
-version_info::Channel GetChannel() {
+namespace channel_info_internal {
+
+version_info::Channel InitChannel() {
   return install_static::GetChromeChannel();
 }
 
+}  // namespace channel_info_internal
+
 }  // namespace chrome
diff --git a/chrome/common/extensions/api/autotest_private.idl b/chrome/common/extensions/api/autotest_private.idl
index 5b9bde1..fda5528 100644
--- a/chrome/common/extensions/api/autotest_private.idl
+++ b/chrome/common/extensions/api/autotest_private.idl
@@ -102,6 +102,13 @@
   };
   callback HistogramCallback = void (Histogram histogram);
 
+  dictionary AssistantQueryResponse {
+    DOMString? text;
+    DOMString? htmlResponse;
+    DOMString? htmlFallback;
+  };
+  callback AssistantQueryResponseCallback = void (AssistantQueryResponse response);
+
   callback IsAppShownCallback = void (boolean appShown);
 
   callback IsArcProvisionedCallback = void (boolean arcProvisioned);
@@ -272,5 +279,10 @@
     // Enable/disable the Google Assistant
     // |callback|: Called when the operation has completed.
     static void setAssistantEnabled(boolean enabled, long timeout_ms, VoidCallback callback);
+
+    // Send a text query via Google Assistant.
+    // |callback|: Called when response has been received.
+    static void sendAssistantTextQuery(DOMString query, long timeout_ms,
+                                       AssistantQueryResponseCallback callback);
   };
 };
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
index 0f11533..3301129 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
@@ -4,10 +4,13 @@
 <translation id="1296843352074373664">Google user</translation>
 <translation id="1383286653814676580">Used to run Google Credential Provider sign-in page.</translation>
 <translation id="195232392645680541">Sign in using your Google account.</translation>
+<translation id="2595469428674600431">Sorry, your Windows password couldn't be verified. Please try again.</translation>
+<translation id="2620296592151848576">Your password has changed on Google. Please enter your current Windows password in order to sync your Windows Account with your Google Account.</translation>
 <translation id="4057329986137569701">An internal error occurred.</translation>
 <translation id="4128734677223009352">Signing in to your Google account failed. Make sure that the computer has an Internet connection, then try again.</translation>
 <translation id="6613125771987245372">Signing in with this Google account is not allowed. Try a different account.</translation>
 <translation id="7357241217513796177">Make sure that you have a network connection and try again.</translation>
+<translation id="7447167742844823007">Sign in using your Google Account</translation>
 <translation id="7463006580194749499">Add person</translation>
 <translation id="8474372283141585908">Google Credential Provider</translation>
 <translation id="866458870819756755">A user could not be created.</translation>
diff --git a/chrome/renderer/safe_browsing/phishing_classifier.cc b/chrome/renderer/safe_browsing/phishing_classifier.cc
index f89f034..cce30e7 100644
--- a/chrome/renderer/safe_browsing/phishing_classifier.cc
+++ b/chrome/renderer/safe_browsing/phishing_classifier.cc
@@ -136,8 +136,7 @@
   }
 
   blink::WebDocumentLoader* document_loader = frame->GetDocumentLoader();
-  if (!document_loader ||
-      document_loader->GetRequest().HttpMethod().Ascii() != "GET") {
+  if (!document_loader || document_loader->HttpMethod().Ascii() != "GET") {
     if (document_loader)
       RecordReasonForSkippingClassificationToUMA(SKIP_NONE_GET);
     RunFailureCallback();
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 366f8bb..f86af4e 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1348,6 +1348,7 @@
         "../browser/extensions/bookmark_app_navigation_browsertest.h",
         "../browser/extensions/bookmark_app_navigation_throttle_browsertest.cc",
         "../browser/extensions/chrome_app_api_browsertest.cc",
+        "../browser/extensions/chrome_test_extension_loader_browsertest.cc",
         "../browser/extensions/chrome_theme_url_browsertest.cc",
         "../browser/extensions/chrome_ui_overrides_browsertest.cc",
         "../browser/extensions/content_capabilities_browsertest.cc",
diff --git a/chrome/test/data/extensions/api_test/autotest_private/test.js b/chrome/test/data/extensions/api_test/autotest_private/test.js
index 272eaee..70ff9707 100644
--- a/chrome/test/data/extensions/api_test/autotest_private/test.js
+++ b/chrome/test/data/extensions/api_test/autotest_private/test.js
@@ -217,6 +217,13 @@
         chrome.test.callbackFail(
             'Assistant is not available for the current user'));
   },
+  function sendAssistantTextQuery() {
+    chrome.autotestPrivate.sendAssistantTextQuery(
+        'what time is it?' /* query */,
+        1000 /* timeout_ms */,
+        chrome.test.callbackFail(
+          'Assistant is not available for the current user'));
+  },
   // This test verifies that ARC is not provisioned by default.
   function isArcProvisioned() {
     chrome.autotestPrivate.isArcProvisioned(
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 4604057a..d16f3e2 100644
--- a/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
+++ b/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
@@ -37,17 +37,15 @@
     expectTrue(testIsVisible('#host-access'));
 
     const selectHostAccess = element.$$('#host-access');
-    expectEquals(HostAccess.ON_CLICK, selectHostAccess.value);
+    expectEquals(HostAccess.ON_CLICK, selectHostAccess.selected);
     // For on-click mode, there should be no runtime hosts listed.
     expectFalse(testIsVisible('#hosts'));
-    expectFalse(testIsVisible('#add-hosts-section'));
 
     // Changing the data's access should change the UI appropriately.
     element.set('permissions.hostAccess', HostAccess.ON_ALL_SITES);
     Polymer.dom.flush();
-    expectEquals(HostAccess.ON_ALL_SITES, selectHostAccess.value);
+    expectEquals(HostAccess.ON_ALL_SITES, selectHostAccess.selected);
     expectFalse(testIsVisible('#hosts'));
-    expectFalse(testIsVisible('#add-hosts-section'));
 
     // Setting the mode to on specific sites should display the runtime hosts
     // list.
@@ -57,10 +55,11 @@
       {host: 'https://chromium.org', granted: true}
     ]);
     Polymer.dom.flush();
-    expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.value);
+    expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.selected);
     expectTrue(testIsVisible('#hosts'));
-    expectTrue(testIsVisible('#add-hosts-section'));
-    expectEquals(2, element.$$('#hosts').getElementsByTagName('li').length);
+    // Expect three entries in the list: the two hosts + the add-host button.
+    expectEquals(3, element.$$('#hosts').getElementsByTagName('li').length);
+    expectTrue(testIsVisible('#add-host'));
   });
 
   test('permissions selection', function() {
@@ -80,9 +79,7 @@
     // event, then verifies that the delegate was called with the correct
     // value.
     function expectDelegateCallOnAccessChange(newValue) {
-      selectHostAccess.value = newValue;
-      selectHostAccess.dispatchEvent(
-          new CustomEvent('change', {target: selectHostAccess}));
+      selectHostAccess.selected = newValue;
       return delegate.whenCalled('setItemHostAccess').then((args) => {
         expectEquals(ITEM_ID, args[0] /* id */);
         expectEquals(newValue, args[1] /* access */);
@@ -110,8 +107,7 @@
     const selectHostAccess = element.$$('#host-access');
     assertTrue(!!selectHostAccess);
 
-    selectHostAccess.value = HostAccess.ON_SPECIFIC_SITES;
-    selectHostAccess.dispatchEvent(new CustomEvent('change'));
+    selectHostAccess.selected = HostAccess.ON_SPECIFIC_SITES;
 
     Polymer.dom.flush();
     const dialog = element.$$('extensions-runtime-hosts-dialog');
@@ -126,7 +122,7 @@
     dialog.$$('.cancel-button').click();
     return whenClosed.then(() => {
       Polymer.dom.flush();
-      expectEquals(HostAccess.ON_CLICK, selectHostAccess.value);
+      expectEquals(HostAccess.ON_CLICK, selectHostAccess.selected);
     });
   });
 
@@ -143,9 +139,7 @@
     const selectHostAccess = element.$$('#host-access');
     assertTrue(!!selectHostAccess);
 
-    selectHostAccess.value = HostAccess.ON_SPECIFIC_SITES;
-    selectHostAccess.dispatchEvent(
-        new CustomEvent('change', {target: selectHostAccess}));
+    selectHostAccess.selected = HostAccess.ON_SPECIFIC_SITES;
 
     Polymer.dom.flush();
     const dialog = element.$$('extensions-runtime-hosts-dialog');
@@ -165,7 +159,7 @@
     dialog.$$('.action-button').click();
     return whenClosed.then(() => {
       Polymer.dom.flush();
-      expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.value);
+      expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.selected);
 
       // Simulate the new host being added.
       const updatedPermissions = {
diff --git a/chrome/test/data/webui/print_preview/model_test.js b/chrome/test/data/webui/print_preview/model_test.js
index d840dffd..6bb58810 100644
--- a/chrome/test/data/webui/print_preview/model_test.js
+++ b/chrome/test/data/webui/print_preview/model_test.js
@@ -234,6 +234,7 @@
         shouldPrintSelectionOnly: false,
         previewModifiable: true,
         printToPDF: false,
+        printToGoogleDrive: false,
         printWithCloudPrint: false,
         printWithPrivet: false,
         printWithExtension: false,
@@ -268,6 +269,7 @@
         shouldPrintSelectionOnly: false,  // Only for Print Preview.
         previewModifiable: true,
         printToPDF: false,
+        printToGoogleDrive: false,
         printWithCloudPrint: false,
         printWithPrivet: false,
         printWithExtension: false,
diff --git a/chrome/test/views/chrome_views_test_base.cc b/chrome/test/views/chrome_views_test_base.cc
index e378e6b..0460f612 100644
--- a/chrome/test/views/chrome_views_test_base.cc
+++ b/chrome/test/views/chrome_views_test_base.cc
@@ -7,13 +7,12 @@
 #include "chrome/test/views/chrome_test_views_delegate.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 
-ChromeViewsTestBase::ChromeViewsTestBase()
-    : views::ViewsTestBase(
-          std::make_unique<content::TestBrowserThreadBundle>()) {}
-
-ChromeViewsTestBase::~ChromeViewsTestBase() {}
+ChromeViewsTestBase::ChromeViewsTestBase() = default;
+ChromeViewsTestBase::~ChromeViewsTestBase() = default;
 
 void ChromeViewsTestBase::SetUp() {
+  set_scoped_task_environment(
+      std::make_unique<content::TestBrowserThreadBundle>());
   set_views_delegate(std::make_unique<ChromeTestViewsDelegate>());
   views::ViewsTestBase::SetUp();
 }
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index 08b7e59..6510bff9 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -753,7 +753,7 @@
 #endif
 }
 
-std::unique_ptr<base::Value>
+base::Optional<service_manager::Manifest>
 CastContentBrowserClient::GetServiceManifestOverlay(
     base::StringPiece service_name) {
   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
@@ -765,11 +765,12 @@
   } else if (service_name == content::mojom::kRendererServiceName) {
     id = IDR_CAST_CONTENT_RENDERER_MANIFEST_OVERLAY;
   } else {
-    return nullptr;
+    return base::nullopt;
   }
   base::StringPiece manifest_contents =
       rb.GetRawDataResourceForScale(id, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 void CastContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h
index 30fe3ff7..a1fb844e 100644
--- a/chromecast/browser/cast_content_browser_client.h
+++ b/chromecast/browser/cast_content_browser_client.h
@@ -185,7 +185,7 @@
   void HandleServiceRequest(
       const std::string& service_name,
       service_manager::mojom::ServiceRequest request) override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece service_name) override;
   void GetAdditionalMappedFilesForChildProcess(
       const base::CommandLine& command_line,
diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc
index 5efcad8..ab0ecf78 100644
--- a/chromecast/renderer/cast_content_renderer_client.cc
+++ b/chromecast/renderer/cast_content_renderer_client.cc
@@ -133,10 +133,8 @@
     content::RenderView* render_view) {
   blink::WebView* webview = render_view->GetWebView();
   if (webview) {
-    if (auto* web_frame_widget = render_view->GetWebFrameWidget())
-      web_frame_widget->SetBaseBackgroundColor(chromecast::GetSwitchValueColor(
-          switches::kCastAppBackgroundColor, SK_ColorBLACK));
-
+    webview->SetBaseBackgroundColor(chromecast::GetSwitchValueColor(
+        switches::kCastAppBackgroundColor, SK_ColorBLACK));
     // Disable application cache as Chromecast doesn't support off-line
     // application running.
     webview->GetSettings()->SetOfflineWebApplicationCacheEnabled(false);
diff --git a/chromeos/chromeos_switches.cc b/chromeos/chromeos_switches.cc
index e7c6b6a..a5ca6165 100644
--- a/chromeos/chromeos_switches.cc
+++ b/chromeos/chromeos_switches.cc
@@ -102,6 +102,14 @@
 // Flag that forces ARC data be cleaned on each start.
 const char kArcDataCleanupOnStart[] = "arc-data-cleanup-on-start";
 
+// Flag that disables ARC app sync flow that installs some apps silently. Used
+// in autotests to resolve racy conditions.
+const char kArcDisableAppSync[] = "arc-disable-app-sync";
+
+// Flag that disables ARC Play Auto Install flow that installs set of predefined
+// apps silently. Used in autotests to resolve racy conditions.
+const char kArcDisablePlayAutoInstall[] = "arc-disable-play-auto-install";
+
 // Flag that forces ARC to cache icons for apps.
 const char kArcForceCacheAppIcons[] = "arc-force-cache-app-icons";
 
diff --git a/chromeos/chromeos_switches.h b/chromeos/chromeos_switches.h
index ac1c2a2c..4b4cb60 100644
--- a/chromeos/chromeos_switches.h
+++ b/chromeos/chromeos_switches.h
@@ -33,6 +33,8 @@
 CHROMEOS_EXPORT extern const char kArcAvailability[];
 CHROMEOS_EXPORT extern const char kArcAvailable[];
 CHROMEOS_EXPORT extern const char kArcDataCleanupOnStart[];
+CHROMEOS_EXPORT extern const char kArcDisableAppSync[];
+CHROMEOS_EXPORT extern const char kArcDisablePlayAutoInstall[];
 CHROMEOS_EXPORT extern const char kArcForceCacheAppIcons[];
 CHROMEOS_EXPORT extern const char kArcForceShowOptInUi[];
 CHROMEOS_EXPORT extern const char kArcPackagesCacheMode[];
diff --git a/components/arc/arc_util.cc b/components/arc/arc_util.cc
index 014bab74..5612183 100644
--- a/components/arc/arc_util.cc
+++ b/components/arc/arc_util.cc
@@ -201,6 +201,16 @@
       chromeos::switches::kArcDataCleanupOnStart);
 }
 
+bool IsArcAppSyncFlowDisabled() {
+  return base::CommandLine::ForCurrentProcess()->HasSwitch(
+      chromeos::switches::kArcDisableAppSync);
+}
+
+bool IsArcPlayAutoInstallDisabled() {
+  return base::CommandLine::ForCurrentProcess()->HasSwitch(
+      chromeos::switches::kArcDisablePlayAutoInstall);
+}
+
 // static
 int32_t GetLcdDensityForDeviceScaleFactor(float device_scale_factor) {
   // Keep this consistent with wayland_client.cpp on Android side.
diff --git a/components/arc/arc_util.h b/components/arc/arc_util.h
index 19f16b8..11e96f6 100644
--- a/components/arc/arc_util.h
+++ b/components/arc/arc_util.h
@@ -111,6 +111,12 @@
 // Returns true if data clean up is requested for each ARC start.
 bool IsArcDataCleanupOnStartRequested();
 
+// Returns true in case ARC app sync flow is disabled.
+bool IsArcAppSyncFlowDisabled();
+
+// Returns true in case ARC Play Auto Install flow is disabled.
+bool IsArcPlayAutoInstallDisabled();
+
 // Adjusts the amount of CPU the ARC instance is allowed to use. When
 // |do_restrict| is true, the limit is adjusted so ARC can only use tightly
 // restricted CPU resources.
diff --git a/components/autofill/core/browser/credit_card_save_manager.cc b/components/autofill/core/browser/credit_card_save_manager.cc
index 9d62395..e06cc153 100644
--- a/components/autofill/core/browser/credit_card_save_manager.cc
+++ b/components/autofill/core/browser/credit_card_save_manager.cc
@@ -364,14 +364,14 @@
 void CreditCardSaveManager::OnDidGetUploadDetails(
     AutofillClient::PaymentsRpcResult result,
     const base::string16& context_token,
-    std::unique_ptr<base::DictionaryValue> legal_message) {
+    std::unique_ptr<base::Value> legal_message) {
   if (observer_for_testing_)
     observer_for_testing_->OnReceivedGetUploadDetailsResponse();
   if (result == AutofillClient::SUCCESS) {
     // Do *not* call payments_client_->Prepare() here. We shouldn't send
     // credentials until the user has explicitly accepted a prompt to upload.
     upload_request_.context_token = context_token;
-    legal_message_ = std::move(legal_message);
+    legal_message_ = base::DictionaryValue::From(std::move(legal_message));
 
     // Only offer upload once both Payments and the Autofill
     // LegacyStrikeDatabase have returned their decisions. Use presence of
diff --git a/components/autofill/core/browser/credit_card_save_manager.h b/components/autofill/core/browser/credit_card_save_manager.h
index e7eb1a7..6f02e1c9 100644
--- a/components/autofill/core/browser/credit_card_save_manager.h
+++ b/components/autofill/core/browser/credit_card_save_manager.h
@@ -136,10 +136,9 @@
   // Returns the legal message retrieved from Payments. On failure or not
   // meeting Payments's conditions for upload, |legal_message| will contain
   // nullptr.
-  void OnDidGetUploadDetails(
-      AutofillClient::PaymentsRpcResult result,
-      const base::string16& context_token,
-      std::unique_ptr<base::DictionaryValue> legal_message);
+  void OnDidGetUploadDetails(AutofillClient::PaymentsRpcResult result,
+                             const base::string16& context_token,
+                             std::unique_ptr<base::Value> legal_message);
 
   // Logs the number of strikes that a card had when save succeeded.
   void LogStrikesPresentWhenCardSaved(bool is_local, const int num_strikes);
diff --git a/components/autofill/core/browser/local_card_migration_manager.cc b/components/autofill/core/browser/local_card_migration_manager.cc
index de0b525..2b1c5ae 100644
--- a/components/autofill/core/browser/local_card_migration_manager.cc
+++ b/components/autofill/core/browser/local_card_migration_manager.cc
@@ -162,10 +162,10 @@
     bool is_from_settings_page,
     AutofillClient::PaymentsRpcResult result,
     const base::string16& context_token,
-    std::unique_ptr<base::DictionaryValue> legal_message) {
+    std::unique_ptr<base::Value> legal_message) {
   if (result == AutofillClient::SUCCESS) {
     migration_request_.context_token = context_token;
-    legal_message_ = std::move(legal_message);
+    legal_message_ = base::DictionaryValue::From(std::move(legal_message));
     migration_request_.risk_data.clear();
     // If we successfully received the legal docs, trigger the offer-to-migrate
     // dialog. If triggered from settings page, we pop-up the main prompt
diff --git a/components/autofill/core/browser/local_card_migration_manager.h b/components/autofill/core/browser/local_card_migration_manager.h
index b2a5f9cb..06e5ce5 100644
--- a/components/autofill/core/browser/local_card_migration_manager.h
+++ b/components/autofill/core/browser/local_card_migration_manager.h
@@ -123,7 +123,7 @@
       bool is_from_settings_page,
       AutofillClient::PaymentsRpcResult result,
       const base::string16& context_token,
-      std::unique_ptr<base::DictionaryValue> legal_message);
+      std::unique_ptr<base::Value> legal_message);
 
   // Callback after successfully getting the migration save results. Map
   // migration save result to each card depending on the |save_result|. Will
diff --git a/components/autofill/core/browser/payments/payments_client.cc b/components/autofill/core/browser/payments/payments_client.cc
index dcc082a..ac4803ae4 100644
--- a/components/autofill/core/browser/payments/payments_client.cc
+++ b/components/autofill/core/browser/payments/payments_client.cc
@@ -90,28 +90,53 @@
   return GetBaseSecureUrl().Resolve(path);
 }
 
-base::DictionaryValue BuildCustomerContextDictionary(
-    int64_t external_customer_id) {
-  base::DictionaryValue customer_context;
-  customer_context.SetString("external_customer_id",
-                             std::to_string(external_customer_id));
+// Tries to get the string |out_value| from the |dictionary| with the given
+// |key|.
+// Returns true if the string value was found, false otherwise.
+bool TryGetString(std::string key,
+                  base::Value& dictionary,
+                  std::string* out_value) {
+  base::Value* str_ptr = dictionary.FindKey(key);
+  if (str_ptr) {
+    *out_value = str_ptr->GetString();
+  }
+  return str_ptr;
+}
+
+// Tries to get the string |out_value| from the |dictionary| with the given
+// |path|.
+// Returns true if the string value was found, false otherwise.
+bool TryGetStringByPath(std::initializer_list<base::StringPiece> path,
+                        base::Value& dictionary,
+                        std::string* out_value) {
+  base::Value* str_ptr = dictionary.FindPath(path);
+  if (str_ptr) {
+    *out_value = str_ptr->GetString();
+  }
+  return str_ptr;
+}
+
+base::Value BuildCustomerContextDictionary(int64_t external_customer_id) {
+  base::Value customer_context(base::Value::Type::DICTIONARY);
+  customer_context.SetKey("external_customer_id",
+                          base::Value(std::to_string(external_customer_id)));
   return customer_context;
 }
 
-base::DictionaryValue BuildRiskDictionary(
-    const std::string& encoded_risk_data) {
-  base::DictionaryValue risk_data;
+base::Value BuildRiskDictionary(const std::string& encoded_risk_data) {
+  base::Value risk_data(base::Value::Type::DICTIONARY);
 #if defined(OS_IOS)
   // Browser fingerprinting is not available on iOS. Instead, we generate
   // RiskAdvisoryData.
-  risk_data.SetString("message_type", "RISK_ADVISORY_DATA");
-  risk_data.SetString("encoding_type", "BASE_64_URL");
+  risk_data.SetKey("message_type", base::Value("RISK_ADVISORY_DATA"));
+  risk_data.SetKey("encoding_type", base::Value("BASE_64_URL"));
 #else
-  risk_data.SetString("message_type", "BROWSER_NATIVE_FINGERPRINTING");
-  risk_data.SetString("encoding_type", "BASE_64");
+  risk_data.SetKey("message_type",
+                   base::Value("BROWSER_NATIVE_FINGERPRINTING"));
+  risk_data.SetKey("encoding_type", base::Value("BASE_64"));
 #endif
 
-  risk_data.SetString("value", encoded_risk_data);
+  risk_data.SetKey("value", base::Value(encoded_risk_data));
 
   return risk_data;
 }
@@ -120,65 +145,63 @@
                          const ServerFieldType& type,
                          const std::string& app_locale,
                          const std::string& path,
-                         base::DictionaryValue* dictionary) {
+                         base::Value& dictionary) {
   const base::string16 value = profile.GetInfo(AutofillType(type), app_locale);
   if (!value.empty())
-    dictionary->SetString(path, value);
+    dictionary.SetKey(path, base::Value(value));
 }
 
 void AppendStringIfNotEmpty(const AutofillProfile& profile,
                             const ServerFieldType& type,
                             const std::string& app_locale,
-                            base::ListValue* list) {
+                            base::Value& list) {
   const base::string16 value = profile.GetInfo(type, app_locale);
   if (!value.empty())
-    list->AppendString(value);
+    list.GetList().emplace_back(value);
 }
 
 // Returns a dictionary with the structure expected by Payments RPCs, containing
 // each of the fields in |profile|, formatted according to |app_locale|. If
 // |include_non_location_data| is false, the name and phone number in |profile|
 // are not included.
-std::unique_ptr<base::DictionaryValue> BuildAddressDictionary(
-    const AutofillProfile& profile,
-    const std::string& app_locale,
-    bool include_non_location_data) {
-  std::unique_ptr<base::DictionaryValue> postal_address(
-      new base::DictionaryValue());
+base::Value BuildAddressDictionary(const AutofillProfile& profile,
+                                   const std::string& app_locale,
+                                   bool include_non_location_data) {
+  base::Value postal_address(base::Value::Type::DICTIONARY);
 
   if (include_non_location_data) {
     SetStringIfNotEmpty(profile, NAME_FULL, app_locale,
-                        PaymentsClient::kRecipientName, postal_address.get());
+                        PaymentsClient::kRecipientName, postal_address);
   }
 
-  std::unique_ptr<base::ListValue> address_lines(new base::ListValue());
+  base::Value address_lines(base::Value::Type::LIST);
   AppendStringIfNotEmpty(profile, ADDRESS_HOME_LINE1, app_locale,
-                         address_lines.get());
+                         address_lines);
   AppendStringIfNotEmpty(profile, ADDRESS_HOME_LINE2, app_locale,
-                         address_lines.get());
+                         address_lines);
   AppendStringIfNotEmpty(profile, ADDRESS_HOME_LINE3, app_locale,
-                         address_lines.get());
-  if (!address_lines->empty())
-    postal_address->Set("address_line", std::move(address_lines));
+                         address_lines);
+  if (!address_lines.GetList().empty())
+    postal_address.SetKey("address_line", std::move(address_lines));
 
   SetStringIfNotEmpty(profile, ADDRESS_HOME_CITY, app_locale, "locality_name",
-                      postal_address.get());
+                      postal_address);
   SetStringIfNotEmpty(profile, ADDRESS_HOME_STATE, app_locale,
-                      "administrative_area_name", postal_address.get());
+                      "administrative_area_name", postal_address);
   SetStringIfNotEmpty(profile, ADDRESS_HOME_ZIP, app_locale,
-                      "postal_code_number", postal_address.get());
+                      "postal_code_number", postal_address);
 
   // Use GetRawInfo to get a country code instead of the country name:
   const base::string16 country_code = profile.GetRawInfo(ADDRESS_HOME_COUNTRY);
   if (!country_code.empty())
-    postal_address->SetString("country_name_code", country_code);
+    postal_address.SetKey("country_name_code", base::Value(country_code));
 
-  std::unique_ptr<base::DictionaryValue> address(new base::DictionaryValue());
-  address->Set("postal_address", std::move(postal_address));
+  base::Value address(base::Value::Type::DICTIONARY);
+  address.SetKey("postal_address", std::move(postal_address));
 
   if (include_non_location_data) {
     SetStringIfNotEmpty(profile, PHONE_HOME_WHOLE_NUMBER, app_locale,
-                        PaymentsClient::kPhoneNumber, address.get());
+                        PaymentsClient::kPhoneNumber, address);
   }
 
   return address;
@@ -189,12 +212,11 @@
 // name (if any) fields in |credit_card|, formatted according to |app_locale|.
 // |pan_field_name| is the field name for the encrypted pan. We use each credit
 // card's guid as the unique id.
-std::unique_ptr<base::DictionaryValue> BuildCreditCardDictionary(
-    const CreditCard& credit_card,
-    const std::string& app_locale,
-    const std::string& pan_field_name) {
-  std::unique_ptr<base::DictionaryValue> card(new base::DictionaryValue());
-  card->SetString("unique_id", credit_card.guid());
+base::Value BuildCreditCardDictionary(const CreditCard& credit_card,
+                                      const std::string& app_locale,
+                                      const std::string& pan_field_name) {
+  base::Value card(base::Value::Type::DICTIONARY);
+  card.SetKey("unique_id", base::Value(credit_card.guid()));
 
   const base::string16 exp_month =
       credit_card.GetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), app_locale);
@@ -202,30 +224,29 @@
       AutofillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), app_locale);
   int value = 0;
   if (base::StringToInt(exp_month, &value))
-    card->SetInteger("expiration_month", value);
+    card.SetKey("expiration_month", base::Value(value));
   if (base::StringToInt(exp_year, &value))
-    card->SetInteger("expiration_year", value);
+    card.SetKey("expiration_year", base::Value(value));
   SetStringIfNotEmpty(credit_card, CREDIT_CARD_NAME_FULL, app_locale,
-                      "cardholder_name", card.get());
+                      "cardholder_name", card);
 
-  card->SetString("encrypted_pan", "__param:" + pan_field_name);
+  card.SetKey("encrypted_pan", base::Value("__param:" + pan_field_name));
   return card;
 }
 
 // Populates the list of active experiments that affect either the data sent in
 // payments RPCs or whether the RPCs are sent or not.
 void SetActiveExperiments(const std::vector<const char*>& active_experiments,
-                          base::DictionaryValue* request_dict) {
+                          base::Value& request_dict) {
   if (active_experiments.empty())
     return;
 
-  std::unique_ptr<base::ListValue> active_chrome_experiments(
-      std::make_unique<base::ListValue>());
+  base::Value active_chrome_experiments(base::Value::Type::LIST);
   for (const char* it : active_experiments)
-    active_chrome_experiments->AppendString(it);
+    active_chrome_experiments.GetList().emplace_back(it);
 
-  request_dict->Set("active_chrome_experiments",
-                    std::move(active_chrome_experiments));
+  request_dict.SetKey("active_chrome_experiments",
+                      std::move(active_chrome_experiments));
 }
 
 class UnmaskCardRequest : public PaymentsRequest {
@@ -250,32 +271,35 @@
   }
 
   std::string GetRequestContent() override {
-    base::DictionaryValue request_dict;
-    request_dict.SetString("encrypted_cvc", "__param:s7e_13_cvc");
-    request_dict.SetString("credit_card_id", request_details_.card.server_id());
+    base::Value request_dict(base::Value::Type::DICTIONARY);
+    request_dict.SetKey("encrypted_cvc", base::Value("__param:s7e_13_cvc"));
+    request_dict.SetKey("credit_card_id",
+                        base::Value(request_details_.card.server_id()));
     request_dict.SetKey("risk_data_encoded",
                         BuildRiskDictionary(request_details_.risk_data));
-    std::unique_ptr<base::DictionaryValue> context(new base::DictionaryValue());
-    context->SetInteger("billable_service", kUnmaskCardBillableServiceNumber);
+    base::Value context(base::Value::Type::DICTIONARY);
+    context.SetKey("billable_service",
+                   base::Value(kUnmaskCardBillableServiceNumber));
     if (request_details_.billing_customer_number != 0) {
-      context->SetKey("customer_context",
-                      BuildCustomerContextDictionary(
-                          request_details_.billing_customer_number));
+      context.SetKey("customer_context",
+                     BuildCustomerContextDictionary(
+                         request_details_.billing_customer_number));
     }
-    request_dict.Set("context", std::move(context));
+    request_dict.SetKey("context", std::move(context));
 
     if (ShouldUseActiveSignedInAccount()) {
-      std::unique_ptr<base::DictionaryValue> chrome_user_context(
-          new base::DictionaryValue());
-      chrome_user_context->SetBoolean("full_sync_enabled", full_sync_enabled_);
-      request_dict.Set("chrome_user_context", std::move(chrome_user_context));
+      base::Value chrome_user_context(base::Value::Type::DICTIONARY);
+      chrome_user_context.SetKey("full_sync_enabled",
+                                 base::Value(full_sync_enabled_));
+      request_dict.SetKey("chrome_user_context",
+                          std::move(chrome_user_context));
     }
 
     int value = 0;
     if (base::StringToInt(request_details_.user_response.exp_month, &value))
-      request_dict.SetInteger("expiration_month", value);
+      request_dict.SetKey("expiration_month", base::Value(value));
     if (base::StringToInt(request_details_.user_response.exp_year, &value))
-      request_dict.SetInteger("expiration_year", value);
+      request_dict.SetKey("expiration_year", base::Value(value));
 
     std::string json_request;
     base::JSONWriter::Write(request_dict, &json_request);
@@ -289,8 +313,8 @@
     return request_content;
   }
 
-  void ParseResponse(std::unique_ptr<base::DictionaryValue> response) override {
-    response->GetString("pan", &real_pan_);
+  void ParseResponse(base::Value response) override {
+    TryGetString("pan", response, &real_pan_);
   }
 
   bool IsResponseComplete() override { return !real_pan_.empty(); }
@@ -318,7 +342,7 @@
       const std::string& app_locale,
       base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                               const base::string16&,
-                              std::unique_ptr<base::DictionaryValue>)> callback,
+                              std::unique_ptr<base::Value>)> callback,
       const int billable_service_number,
       PaymentsClient::UploadCardSource upload_card_source)
       : addresses_(addresses),
@@ -338,20 +362,21 @@
   std::string GetRequestContentType() override { return "application/json"; }
 
   std::string GetRequestContent() override {
-    base::DictionaryValue request_dict;
-    std::unique_ptr<base::DictionaryValue> context(new base::DictionaryValue());
-    context->SetString("language_code", app_locale_);
-    context->SetInteger("billable_service", billable_service_number_);
-    request_dict.Set("context", std::move(context));
+    base::Value request_dict(base::Value::Type::DICTIONARY);
+    base::Value context(base::Value::Type::DICTIONARY);
+    context.SetKey("language_code", base::Value(app_locale_));
+    context.SetKey("billable_service", base::Value(billable_service_number_));
+    request_dict.SetKey("context", std::move(context));
 
     if (ShouldUseActiveSignedInAccount()) {
-      std::unique_ptr<base::DictionaryValue> chrome_user_context(
-          new base::DictionaryValue());
-      chrome_user_context->SetBoolean("full_sync_enabled", full_sync_enabled_);
-      request_dict.Set("chrome_user_context", std::move(chrome_user_context));
+      base::Value chrome_user_context(base::Value::Type::DICTIONARY);
+      chrome_user_context.SetKey("full_sync_enabled",
+                                 base::Value(full_sync_enabled_));
+      request_dict.SetKey("chrome_user_context",
+                          std::move(chrome_user_context));
     }
 
-    std::unique_ptr<base::ListValue> addresses(new base::ListValue());
+    base::Value addresses(base::Value::Type::LIST);
     for (const AutofillProfile& profile : addresses_) {
       // These addresses are used by Payments to (1) accurately determine the
       // user's country in order to show the correct legal documents and (2) to
@@ -360,38 +385,42 @@
       // min address is not possible). The final parameter directs
       // BuildAddressDictionary to omit names and phone numbers, which aren't
       // useful for these purposes.
-      addresses->Append(BuildAddressDictionary(profile, app_locale_, false));
+      addresses.GetList().push_back(
+          BuildAddressDictionary(profile, app_locale_, false));
     }
-    request_dict.Set("address", std::move(addresses));
+    request_dict.SetKey("address", std::move(addresses));
 
     // It's possible we may not have found name/address/CVC in the checkout
     // flow. The detected_values_ bitmask tells Payments what *was* found, and
     // Payments will decide if the provided data is enough to offer upload save.
-    request_dict.SetInteger("detected_values", detected_values_);
+    request_dict.SetKey("detected_values", base::Value(detected_values_));
 
-    SetActiveExperiments(active_experiments_, &request_dict);
+    SetActiveExperiments(active_experiments_, request_dict);
 
     switch (upload_card_source_) {
       case PaymentsClient::UploadCardSource::UNKNOWN_UPLOAD_CARD_SOURCE:
-        request_dict.SetString("upload_card_source",
-                               "UNKNOWN_UPLOAD_CARD_SOURCE");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("UNKNOWN_UPLOAD_CARD_SOURCE"));
         break;
       case PaymentsClient::UploadCardSource::UPSTREAM_CHECKOUT_FLOW:
-        request_dict.SetString("upload_card_source", "UPSTREAM_CHECKOUT_FLOW");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("UPSTREAM_CHECKOUT_FLOW"));
         break;
       case PaymentsClient::UploadCardSource::UPSTREAM_SETTINGS_PAGE:
-        request_dict.SetString("upload_card_source", "UPSTREAM_SETTINGS_PAGE");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("UPSTREAM_SETTINGS_PAGE"));
         break;
       case PaymentsClient::UploadCardSource::UPSTREAM_CARD_OCR:
-        request_dict.SetString("upload_card_source", "UPSTREAM_CARD_OCR");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("UPSTREAM_CARD_OCR"));
         break;
       case PaymentsClient::UploadCardSource::LOCAL_CARD_MIGRATION_CHECKOUT_FLOW:
-        request_dict.SetString("upload_card_source",
-                               "LOCAL_CARD_MIGRATION_CHECKOUT_FLOW");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("LOCAL_CARD_MIGRATION_CHECKOUT_FLOW"));
         break;
       case PaymentsClient::UploadCardSource::LOCAL_CARD_MIGRATION_SETTINGS_PAGE:
-        request_dict.SetString("upload_card_source",
-                               "LOCAL_CARD_MIGRATION_SETTINGS_PAGE");
+        request_dict.SetKey("upload_card_source",
+                            base::Value("LOCAL_CARD_MIGRATION_SETTINGS_PAGE"));
         break;
       default:
         NOTREACHED();
@@ -403,11 +432,15 @@
     return request_content;
   }
 
-  void ParseResponse(std::unique_ptr<base::DictionaryValue> response) override {
-    response->GetString("context_token", &context_token_);
-    base::DictionaryValue* unowned_legal_message;
-    if (response->GetDictionary("legal_message", &unowned_legal_message))
-      legal_message_ = unowned_legal_message->CreateDeepCopy();
+  void ParseResponse(base::Value response) override {
+    std::string context_token_utf8;
+    if (TryGetString("context_token", response, &context_token_utf8)) {
+      context_token_ = base::UTF8ToUTF16(context_token_utf8);
+    }
+
+    base::Value* dictionary_value = response.FindKey("legal_message");
+    if (dictionary_value)
+      legal_message_ = std::make_unique<base::Value>(dictionary_value->Clone());
   }
 
   bool IsResponseComplete() override {
@@ -426,10 +459,10 @@
   std::string app_locale_;
   base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                           const base::string16&,
-                          std::unique_ptr<base::DictionaryValue>)>
+                          std::unique_ptr<base::Value>)>
       callback_;
   base::string16 context_token_;
-  std::unique_ptr<base::DictionaryValue> legal_message_;
+  std::unique_ptr<base::Value> legal_message_;
   const int billable_service_number_;
   PaymentsClient::UploadCardSource upload_card_source_;
 };
@@ -452,41 +485,45 @@
   }
 
   std::string GetRequestContent() override {
-    base::DictionaryValue request_dict;
-    request_dict.SetString("encrypted_pan", "__param:s7e_1_pan");
+    base::Value request_dict(base::Value::Type::DICTIONARY);
+    request_dict.SetKey("encrypted_pan", base::Value("__param:s7e_1_pan"));
     if (!request_details_.cvc.empty())
-      request_dict.SetString("encrypted_cvc", "__param:s7e_13_cvc");
+      request_dict.SetKey("encrypted_cvc", base::Value("__param:s7e_13_cvc"));
     request_dict.SetKey("risk_data_encoded",
                         BuildRiskDictionary(request_details_.risk_data));
 
     const std::string& app_locale = request_details_.app_locale;
-    std::unique_ptr<base::DictionaryValue> context(new base::DictionaryValue());
-    context->SetString("language_code", app_locale);
-    context->SetInteger("billable_service", kUploadCardBillableServiceNumber);
+    base::Value context(base::Value::Type::DICTIONARY);
+    context.SetKey("language_code", base::Value(app_locale));
+    context.SetKey("billable_service",
+                   base::Value(kUploadCardBillableServiceNumber));
     if (request_details_.billing_customer_number != 0) {
-      context->SetKey("customer_context",
-                      BuildCustomerContextDictionary(
-                          request_details_.billing_customer_number));
+      context.SetKey("customer_context",
+                     BuildCustomerContextDictionary(
+                         request_details_.billing_customer_number));
     }
-    request_dict.Set("context", std::move(context));
+    request_dict.SetKey("context", std::move(context));
 
     if (ShouldUseActiveSignedInAccount()) {
-      std::unique_ptr<base::DictionaryValue> chrome_user_context(
-          new base::DictionaryValue());
-      chrome_user_context->SetBoolean("full_sync_enabled", full_sync_enabled_);
-      request_dict.Set("chrome_user_context", std::move(chrome_user_context));
+      base::Value chrome_user_context(base::Value::Type::DICTIONARY);
+      chrome_user_context.SetKey("full_sync_enabled",
+                                 base::Value(full_sync_enabled_));
+      request_dict.SetKey("chrome_user_context",
+                          std::move(chrome_user_context));
     }
 
     SetStringIfNotEmpty(request_details_.card, CREDIT_CARD_NAME_FULL,
-                        app_locale, "cardholder_name", &request_dict);
+                        app_locale, "cardholder_name", request_dict);
 
-    std::unique_ptr<base::ListValue> addresses(new base::ListValue());
+    base::Value addresses(base::Value::Type::LIST);
     for (const AutofillProfile& profile : request_details_.profiles) {
-      addresses->Append(BuildAddressDictionary(profile, app_locale, true));
+      addresses.GetList().push_back(
+          BuildAddressDictionary(profile, app_locale, true));
     }
-    request_dict.Set("address", std::move(addresses));
+    request_dict.SetKey("address", std::move(addresses));
 
-    request_dict.SetString("context_token", request_details_.context_token);
+    request_dict.SetKey("context_token",
+                        base::Value(request_details_.context_token));
 
     int value = 0;
     const base::string16 exp_month = request_details_.card.GetInfo(
@@ -494,11 +531,11 @@
     const base::string16 exp_year = request_details_.card.GetInfo(
         AutofillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), app_locale);
     if (base::StringToInt(exp_month, &value))
-      request_dict.SetInteger("expiration_month", value);
+      request_dict.SetKey("expiration_month", base::Value(value));
     if (base::StringToInt(exp_year, &value))
-      request_dict.SetInteger("expiration_year", value);
+      request_dict.SetKey("expiration_year", base::Value(value));
 
-    SetActiveExperiments(request_details_.active_experiments, &request_dict);
+    SetActiveExperiments(request_details_.active_experiments, request_dict);
 
     const base::string16 pan = request_details_.card.GetInfo(
         AutofillType(CREDIT_CARD_NUMBER), app_locale);
@@ -523,8 +560,8 @@
     return request_content;
   }
 
-  void ParseResponse(std::unique_ptr<base::DictionaryValue> response) override {
-    response->GetString("credit_card_id", &server_id_);
+  void ParseResponse(base::Value response) override {
+    TryGetString("credit_card_id", response, &server_id_);
   }
 
   bool IsResponseComplete() override { return true; }
@@ -561,39 +598,41 @@
     return "application/x-www-form-urlencoded";
   }
 
-  // TODO(crbug.com/877281):Refactor DictionaryValue to base::Value
   std::string GetRequestContent() override {
-    base::DictionaryValue request_dict;
+    base::Value request_dict(base::Value::Type::DICTIONARY);
 
     request_dict.SetKey("risk_data_encoded",
                         BuildRiskDictionary(request_details_.risk_data));
 
     const std::string& app_locale = request_details_.app_locale;
-    std::unique_ptr<base::DictionaryValue> context(new base::DictionaryValue());
-    context->SetString("language_code", app_locale);
-    context->SetInteger("billable_service", kMigrateCardsBillableServiceNumber);
+    base::Value context(base::Value::Type::DICTIONARY);
+    context.SetKey("language_code", base::Value(app_locale));
+    context.SetKey("billable_service",
+                   base::Value(kMigrateCardsBillableServiceNumber));
     if (request_details_.billing_customer_number != 0) {
-      context->SetKey("customer_context",
-                      BuildCustomerContextDictionary(
-                          request_details_.billing_customer_number));
+      context.SetKey("customer_context",
+                     BuildCustomerContextDictionary(
+                         request_details_.billing_customer_number));
     }
-    request_dict.Set("context", std::move(context));
+    request_dict.SetKey("context", std::move(context));
 
     if (ShouldUseActiveSignedInAccount()) {
-      std::unique_ptr<base::DictionaryValue> chrome_user_context(
-          new base::DictionaryValue());
-      chrome_user_context->SetBoolean("full_sync_enabled", full_sync_enabled_);
-      request_dict.Set("chrome_user_context", std::move(chrome_user_context));
+      base::Value chrome_user_context(base::Value::Type::DICTIONARY);
+      chrome_user_context.SetKey("full_sync_enabled",
+                                 base::Value(full_sync_enabled_));
+      request_dict.SetKey("chrome_user_context",
+                          std::move(chrome_user_context));
     }
 
-    request_dict.SetString("context_token", request_details_.context_token);
+    request_dict.SetKey("context_token",
+                        base::Value(request_details_.context_token));
 
     std::string all_pans_data = std::string();
-    std::unique_ptr<base::ListValue> migrate_cards(new base::ListValue());
+    base::Value migrate_cards(base::Value::Type::LIST);
     for (size_t index = 0; index < migratable_credit_cards_.size(); ++index) {
       std::string pan_field_name = GetPanFieldName(index);
       // Generate credit card dictionary.
-      migrate_cards->Append(BuildCreditCardDictionary(
+      migrate_cards.GetList().push_back(BuildCreditCardDictionary(
           migratable_credit_cards_[index].credit_card(), app_locale,
           pan_field_name));
       // Append pan data to the |all_pans_data|.
@@ -601,7 +640,7 @@
           GetAppendPan(migratable_credit_cards_[index].credit_card(),
                        app_locale, pan_field_name);
     }
-    request_dict.Set("local_card", std::move(migrate_cards));
+    request_dict.SetKey("local_card", std::move(migrate_cards));
 
     std::string json_request;
     base::JSONWriter::Write(request_dict, &json_request);
@@ -612,23 +651,26 @@
     return request_content;
   }
 
-  void ParseResponse(std::unique_ptr<base::DictionaryValue> response) override {
-    const base::ListValue* save_result_list = nullptr;
-    if (!response->GetList("save_result", &save_result_list))
+  void ParseResponse(base::Value response) override {
+    base::Value* list_ptr = response.FindKey("save_result");
+    if (!list_ptr || !list_ptr->is_list())
       return;
     save_result_ =
         std::make_unique<std::unordered_map<std::string, std::string>>();
-    for (size_t i = 0; i < save_result_list->GetSize(); ++i) {
-      const base::DictionaryValue* single_card_save_result;
-      if (save_result_list->GetDictionary(i, &single_card_save_result)) {
+
+    for (base::Value& result : list_ptr->GetList()) {
+      if (result.is_dict()) {
         std::string unique_id;
-        single_card_save_result->GetString("unique_id", &unique_id);
+        TryGetString("unique_id", result, &unique_id);
+
         std::string save_result;
-        single_card_save_result->GetString("status", &save_result);
+        TryGetString("status", result, &save_result);
+
         save_result_->insert(std::make_pair(unique_id, save_result));
       }
     }
-    response->GetString("value_prop_display_text", &display_text_);
+
+    TryGetString("value_prop_display_text", response, &display_text_);
   }
 
   bool IsResponseComplete() override {
@@ -728,7 +770,7 @@
     const std::string& app_locale,
     base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                             const base::string16&,
-                            std::unique_ptr<base::DictionaryValue>)> callback,
+                            std::unique_ptr<base::Value>)> callback,
     const int billable_service_number,
     UploadCardSource upload_card_source) {
   IssueRequest(
@@ -827,7 +869,7 @@
 
 void PaymentsClient::OnSimpleLoaderCompleteInternal(int response_code,
                                                     const std::string& data) {
-  std::unique_ptr<base::DictionaryValue> response_dict;
+  base::Value response_dict(base::Value::Type::DICTIONARY);
   VLOG(2) << "Got data: " << data;
 
   AutofillClient::PaymentsRpcResult result = AutofillClient::SUCCESS;
@@ -838,9 +880,9 @@
       std::string error_code;
       std::unique_ptr<base::Value> message_value = base::JSONReader::Read(data);
       if (message_value.get() && message_value->is_dict()) {
-        response_dict.reset(
-            static_cast<base::DictionaryValue*>(message_value.release()));
-        response_dict->GetString("error.code", &error_code);
+        response_dict =
+            base::Value::FromUniquePtrValue(std::move(message_value));
+        TryGetStringByPath({"error", "code"}, response_dict, &error_code);
         request_->ParseResponse(std::move(response_dict));
       }
 
diff --git a/components/autofill/core/browser/payments/payments_client.h b/components/autofill/core/browser/payments/payments_client.h
index 212ef0a..5403e04 100644
--- a/components/autofill/core/browser/payments/payments_client.h
+++ b/components/autofill/core/browser/payments/payments_client.h
@@ -178,7 +178,7 @@
       const std::string& app_locale,
       base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                               const base::string16&,
-                              std::unique_ptr<base::DictionaryValue>)> callback,
+                              std::unique_ptr<base::Value>)> callback,
       const int billable_service_number,
       UploadCardSource upload_card_source =
           UploadCardSource::UNKNOWN_UPLOAD_CARD_SOURCE);
diff --git a/components/autofill/core/browser/payments/payments_client_unittest.cc b/components/autofill/core/browser/payments/payments_client_unittest.cc
index 8e42bff2..1b733047 100644
--- a/components/autofill/core/browser/payments/payments_client_unittest.cc
+++ b/components/autofill/core/browser/payments/payments_client_unittest.cc
@@ -115,10 +115,9 @@
     real_pan_ = real_pan;
   }
 
-  void OnDidGetUploadDetails(
-      AutofillClient::PaymentsRpcResult result,
-      const base::string16& context_token,
-      std::unique_ptr<base::DictionaryValue> legal_message) {
+  void OnDidGetUploadDetails(AutofillClient::PaymentsRpcResult result,
+                             const base::string16& context_token,
+                             std::unique_ptr<base::Value> legal_message) {
     result_ = result;
     legal_message_ = std::move(legal_message);
   }
@@ -233,7 +232,7 @@
   AutofillClient::PaymentsRpcResult result_;
   std::string server_id_;
   std::string real_pan_;
-  std::unique_ptr<base::DictionaryValue> legal_message_;
+  std::unique_ptr<base::Value> legal_message_;
   std::vector<MigratableCreditCard> migratable_credit_cards_;
   std::unique_ptr<std::unordered_map<std::string, std::string>> save_result_;
   std::string display_text_;
diff --git a/components/autofill/core/browser/payments/payments_request.h b/components/autofill/core/browser/payments/payments_request.h
index 184c9275..e71d554 100644
--- a/components/autofill/core/browser/payments/payments_request.h
+++ b/components/autofill/core/browser/payments/payments_request.h
@@ -28,8 +28,7 @@
   virtual std::string GetRequestContent() = 0;
 
   // Parses the required elements of the HTTP response.
-  virtual void ParseResponse(
-      std::unique_ptr<base::DictionaryValue> response) = 0;
+  virtual void ParseResponse(base::Value response) = 0;
 
   // Returns true if all of the required elements were successfully retrieved by
   // a call to ParseResponse.
diff --git a/components/autofill/core/browser/payments/test_payments_client.cc b/components/autofill/core/browser/payments/test_payments_client.cc
index fb83165f..8bf0f86a 100644
--- a/components/autofill/core/browser/payments/test_payments_client.cc
+++ b/components/autofill/core/browser/payments/test_payments_client.cc
@@ -30,7 +30,7 @@
     const std::string& app_locale,
     base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                             const base::string16&,
-                            std::unique_ptr<base::DictionaryValue>)> callback,
+                            std::unique_ptr<base::Value>)> callback,
     const int billable_service_number,
     PaymentsClient::UploadCardSource upload_card_source) {
   upload_details_addresses_ = addresses;
@@ -42,7 +42,7 @@
                               ? AutofillClient::SUCCESS
                               : AutofillClient::PERMANENT_FAILURE,
                           base::ASCIIToUTF16("this is a context token"),
-                          std::unique_ptr<base::DictionaryValue>(nullptr));
+                          std::unique_ptr<base::Value>(nullptr));
 }
 
 void TestPaymentsClient::UploadCard(
diff --git a/components/autofill/core/browser/payments/test_payments_client.h b/components/autofill/core/browser/payments/test_payments_client.h
index 1d2aae07..01e9d00 100644
--- a/components/autofill/core/browser/payments/test_payments_client.h
+++ b/components/autofill/core/browser/payments/test_payments_client.h
@@ -34,7 +34,7 @@
       const std::string& app_locale,
       base::OnceCallback<void(AutofillClient::PaymentsRpcResult,
                               const base::string16&,
-                              std::unique_ptr<base::DictionaryValue>)> callback,
+                              std::unique_ptr<base::Value>)> callback,
       const int billable_service_number,
       UploadCardSource upload_card_source =
           UploadCardSource::UNKNOWN_UPLOAD_CARD_SOURCE) override;
diff --git a/components/autofill/core/browser/test_local_card_migration_manager.cc b/components/autofill/core/browser/test_local_card_migration_manager.cc
index ef295c96..cc72aed 100644
--- a/components/autofill/core/browser/test_local_card_migration_manager.cc
+++ b/components/autofill/core/browser/test_local_card_migration_manager.cc
@@ -62,7 +62,7 @@
     bool is_from_settings_page,
     AutofillClient::PaymentsRpcResult result,
     const base::string16& context_token,
-    std::unique_ptr<base::DictionaryValue> legal_message) {
+    std::unique_ptr<base::Value> legal_message) {
   if (result == AutofillClient::SUCCESS) {
     local_card_migration_was_triggered_ = true;
     LocalCardMigrationManager::OnDidGetUploadDetails(
diff --git a/components/autofill/core/browser/test_local_card_migration_manager.h b/components/autofill/core/browser/test_local_card_migration_manager.h
index 7daa8c6..97e4518 100644
--- a/components/autofill/core/browser/test_local_card_migration_manager.h
+++ b/components/autofill/core/browser/test_local_card_migration_manager.h
@@ -55,7 +55,7 @@
       bool is_from_settings_page,
       AutofillClient::PaymentsRpcResult result,
       const base::string16& context_token,
-      std::unique_ptr<base::DictionaryValue> legal_message) override;
+      std::unique_ptr<base::Value> legal_message) override;
 
   bool local_card_migration_was_triggered_ = false;
 
diff --git a/components/constrained_window/BUILD.gn b/components/constrained_window/BUILD.gn
index 33ae96c..346cf11 100644
--- a/components/constrained_window/BUILD.gn
+++ b/components/constrained_window/BUILD.gn
@@ -47,6 +47,7 @@
   deps = [
     ":constrained_window",
     "//components/web_modal:test_support",
+    "//ui/views",
     "//ui/views:test_support",
   ]
 }
diff --git a/components/crash/core/common/crash_key.h b/components/crash/core/common/crash_key.h
index c96108a..f27b6eb 100644
--- a/components/crash/core/common/crash_key.h
+++ b/components/crash/core/common/crash_key.h
@@ -217,6 +217,8 @@
 #if defined(UNIT_TEST) || defined(CRASH_CORE_COMMON_IMPLEMENTATION)
 // Returns a value for the crash key named |key_name|. For Crashpad-based
 // clients, this returns the first instance found of the name.
+// Note: In a component build, this will only retrieve crash keys for the
+// current component.
 CRASH_KEY_EXPORT std::string GetCrashKeyValue(const std::string& key_name);
 
 // Resets crash key state and, depending on the platform, de-initializes
diff --git a/components/crash/core/common/crash_key_crashpad.cc b/components/crash/core/common/crash_key_crashpad.cc
index 929392e..c6b07489 100644
--- a/components/crash/core/common/crash_key_crashpad.cc
+++ b/components/crash/core/common/crash_key_crashpad.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 // NOTE: This file is only compiled when Crashpad is used as the crash
-// reproter.
+// reporter.
 
 #include "components/crash/core/common/crash_key.h"
 
diff --git a/components/gwp_asan/client/guarded_page_allocator.cc b/components/gwp_asan/client/guarded_page_allocator.cc
index d67d8848..221beb7c 100644
--- a/components/gwp_asan/client/guarded_page_allocator.cc
+++ b/components/gwp_asan/client/guarded_page_allocator.cc
@@ -101,10 +101,10 @@
     __builtin_trap();
   }
 
-  MarkPageInaccessible(reinterpret_cast<void*>(state_.GetPageAddr(addr)));
-
-  // Record deallocation stack trace/thread id.
+  // Record deallocation stack trace/thread id before marking the page
+  // inaccessible in case a use-after-free occurs immediately.
   RecordDeallocationInSlot(slot);
+  MarkPageInaccessible(reinterpret_cast<void*>(state_.GetPageAddr(addr)));
 
   FreeSlot(slot);
 }
diff --git a/components/gwp_asan/client/gwp_asan.cc b/components/gwp_asan/client/gwp_asan.cc
index d870422a..c7f38cc 100644
--- a/components/gwp_asan/client/gwp_asan.cc
+++ b/components/gwp_asan/client/gwp_asan.cc
@@ -29,7 +29,7 @@
 const base::FeatureParam<int> kTotalPagesParam{&kGwpAsan, "TotalPages", 128};
 
 const base::FeatureParam<int> kAllocationSamplingParam{
-    &kGwpAsan, "AllocationSamplingFrequency", 128};
+    &kGwpAsan, "AllocationSamplingFrequency", 1000};
 
 const base::FeatureParam<double> kProcessSamplingParam{
     &kGwpAsan, "ProcessSamplingProbability", 1.0};
diff --git a/components/history/core/browser/history_types.cc b/components/history/core/browser/history_types.cc
index b300307..a7cc78b 100644
--- a/components/history/core/browser/history_types.cc
+++ b/components/history/core/browser/history_types.cc
@@ -177,10 +177,8 @@
 
 MostVisitedURL::MostVisitedURL() {}
 
-MostVisitedURL::MostVisitedURL(const GURL& url,
-                               const base::string16& title,
-                               base::Time last_forced_time)
-    : url(url), title(title), last_forced_time(last_forced_time) {}
+MostVisitedURL::MostVisitedURL(const GURL& url, const base::string16& title)
+    : url(url), title(title) {}
 
 MostVisitedURL::MostVisitedURL(const GURL& url,
                                const base::string16& title,
diff --git a/components/history/core/browser/history_types.h b/components/history/core/browser/history_types.h
index 9e6a6583..325dee1 100644
--- a/components/history/core/browser/history_types.h
+++ b/components/history/core/browser/history_types.h
@@ -299,9 +299,7 @@
 // Holds the per-URL information of the most visited query.
 struct MostVisitedURL {
   MostVisitedURL();
-  MostVisitedURL(const GURL& url,
-                 const base::string16& title,
-                 base::Time last_forced_time = base::Time());
+  MostVisitedURL(const GURL& url, const base::string16& title);
   MostVisitedURL(const GURL& url,
                  const base::string16& title,
                  const RedirectList& preceding_redirects);
@@ -316,11 +314,6 @@
   GURL url;
   base::string16 title;
 
-  // If this is a URL for which we want to force a thumbnail, records the last
-  // time it was forced so we can evict it when more recent URLs are requested.
-  // If it's not a forced thumbnail, keep a time of 0.
-  base::Time last_forced_time;
-
   RedirectList redirects;
 
   MostVisitedURL& operator=(const MostVisitedURL&);
diff --git a/components/payments/content/payment_request.cc b/components/payments/content/payment_request.cc
index 9488ea6..4210ef3e 100644
--- a/components/payments/content/payment_request.cc
+++ b/components/payments/content/payment_request.cc
@@ -29,6 +29,12 @@
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_features.h"
 
+namespace {
+
+using ::payments::mojom::HasEnrolledInstrumentQueryResult;
+
+}  // namespace
+
 namespace payments {
 
 PaymentRequest::PaymentRequest(
@@ -372,6 +378,28 @@
   }
 }
 
+void PaymentRequest::HasEnrolledInstrument() {
+  if (!IsInitialized()) {
+    log_.Error("Attempted hasEnrolledInstrument without initialization");
+    OnConnectionTerminated();
+    return;
+  }
+
+  // It's valid to call hasEnrolledInstrument() without calling show() first.
+
+  if (observer_for_testing_)
+    observer_for_testing_->OnHasEnrolledInstrumentCalled();
+
+  if (!delegate_->GetPrefService()->GetBoolean(kCanMakePaymentEnabled) ||
+      !state_) {
+    HasEnrolledInstrumentCallback(/*has_enrolled_instrument=*/false);
+  } else {
+    state_->HasEnrolledInstrument(
+        base::BindOnce(&PaymentRequest::HasEnrolledInstrumentCallback,
+                       weak_ptr_factory_.GetWeakPtr()));
+  }
+}
+
 void PaymentRequest::AreRequestedMethodsSupportedCallback(
     bool methods_supported) {
   if (methods_supported) {
@@ -543,6 +571,26 @@
     observer_for_testing_->OnCanMakePaymentReturned();
 }
 
+void PaymentRequest::HasEnrolledInstrumentCallback(
+    bool has_enrolled_instrument) {
+  if (!spec_ || CanMakePaymentQueryFactory::GetInstance()
+                    ->GetForContext(web_contents_->GetBrowserContext())
+                    ->CanQuery(top_level_origin_, frame_origin_,
+                               spec_->stringified_method_data())) {
+    RespondToHasEnrolledInstrumentQuery(has_enrolled_instrument,
+                                        /*warn_localhost_or_file=*/false);
+  } else if (OriginSecurityChecker::IsOriginLocalhostOrFile(frame_origin_)) {
+    RespondToHasEnrolledInstrumentQuery(has_enrolled_instrument,
+                                        /*warn_localhost_or_file=*/true);
+  } else {
+    client_->OnHasEnrolledInstrument(
+        HasEnrolledInstrumentQueryResult::QUERY_QUOTA_EXCEEDED);
+  }
+
+  if (observer_for_testing_)
+    observer_for_testing_->OnHasEnrolledInstrumentReturned();
+}
+
 void PaymentRequest::RespondToCanMakePaymentQuery(bool can_make_payment,
                                                   bool warn_localhost_or_file) {
   mojom::CanMakePaymentQueryResult positive =
@@ -558,4 +606,21 @@
   journey_logger_.SetCanMakePaymentValue(can_make_payment);
 }
 
+void PaymentRequest::RespondToHasEnrolledInstrumentQuery(
+    bool has_enrolled_instrument,
+    bool warn_localhost_or_file) {
+  HasEnrolledInstrumentQueryResult positive =
+      warn_localhost_or_file
+          ? HasEnrolledInstrumentQueryResult::WARNING_HAS_ENROLLED_INSTRUMENT
+          : HasEnrolledInstrumentQueryResult::HAS_ENROLLED_INSTRUMENT;
+  HasEnrolledInstrumentQueryResult negative =
+      warn_localhost_or_file
+          ? HasEnrolledInstrumentQueryResult::WARNING_HAS_NO_ENROLLED_INSTRUMENT
+          : HasEnrolledInstrumentQueryResult::HAS_NO_ENROLLED_INSTRUMENT;
+
+  client_->OnHasEnrolledInstrument(has_enrolled_instrument ? positive
+                                                           : negative);
+  journey_logger_.SetCanMakePaymentValue(has_enrolled_instrument);
+}
+
 }  // namespace payments
diff --git a/components/payments/content/payment_request.h b/components/payments/content/payment_request.h
index d2c4174..671b0ca 100644
--- a/components/payments/content/payment_request.h
+++ b/components/payments/content/payment_request.h
@@ -44,6 +44,8 @@
    public:
     virtual void OnCanMakePaymentCalled() = 0;
     virtual void OnCanMakePaymentReturned() = 0;
+    virtual void OnHasEnrolledInstrumentCalled() = 0;
+    virtual void OnHasEnrolledInstrumentReturned() = 0;
     virtual void OnNotSupportedError() = 0;
     virtual void OnConnectionTerminated() = 0;
     virtual void OnAbortCalled() = 0;
@@ -73,6 +75,7 @@
   void Abort() override;
   void Complete(mojom::PaymentComplete result) override;
   void CanMakePayment() override;
+  void HasEnrolledInstrument() override;
 
   // PaymentRequestSpec::Observer:
   void OnSpecUpdated() override {}
@@ -143,6 +146,10 @@
   // quota and may send QUERY_QUOTA_EXCEEDED.
   void CanMakePaymentCallback(bool can_make_payment);
 
+  // The callback for PaymentRequestState::HasEnrolledInstrument. Checks for
+  // query quota and may send QUERY_QUOTA_EXCEEDED.
+  void HasEnrolledInstrumentCallback(bool has_enrolled_instrument);
+
   // The callback for PaymentRequestState::AreRequestedMethodsSupported.
   void AreRequestedMethodsSupportedCallback(bool methods_supported);
 
@@ -154,6 +161,15 @@
   void RespondToCanMakePaymentQuery(bool can_make_payment,
                                     bool warn_localhost_or_file);
 
+  // Sends either HAS_ENROLLED_INSTRUMENT or HAS_NO_ENROLLED_INSTRUMENT to the
+  // renderer, depending on |has_enrolled_instrument| value. Never sends
+  // QUERY_QUOTA_EXCEEDED. Does not check query quota, but does check for
+  // incognito mode. If |warn_localhost_or_file| is true, then sends
+  // WARNING_HAS_ENROLLED_INSTRUMENT or WARNING_HAS_NO_ENROLLED_INSTRUMENT
+  // version of the values instead.
+  void RespondToHasEnrolledInstrumentQuery(bool has_enrolled_instrument,
+                                           bool warn_localhost_or_file);
+
   content::WebContents* web_contents_;
   DeveloperConsoleLogger log_;
   std::unique_ptr<ContentPaymentRequestDelegate> delegate_;
diff --git a/components/payments/content/payment_request_state.cc b/components/payments/content/payment_request_state.cc
index faad11f..dcf43b6 100644
--- a/components/payments/content/payment_request_state.cc
+++ b/components/payments/content/payment_request_state.cc
@@ -147,11 +147,11 @@
   are_requested_methods_supported_ |= !available_instruments_.empty();
   NotifyOnGetAllPaymentInstrumentsFinished();
 
-  // Fullfill the pending CanMakePayment call.
-  if (can_make_payment_callback_)
-    CheckCanMakePayment(std::move(can_make_payment_callback_));
+  // Fulfill the pending HasEnrolledInstrument call.
+  if (has_enrolled_instrument_callback_)
+    CheckHasEnrolledInstrument(std::move(has_enrolled_instrument_callback_));
 
-  // Fullfill the pending AreRequestedMethodsSupported call.
+  // Fulfill the pending AreRequestedMethodsSupported call.
   if (are_requested_methods_supported_callback_)
     CheckRequestedMethodsSupported(
         std::move(are_requested_methods_supported_callback_));
@@ -196,26 +196,36 @@
 }
 
 void PaymentRequestState::CanMakePayment(StatusCallback callback) {
+  // TODO(https://crbug.com/915907): Implement new CanMakePayment.
+  NOTREACHED();
+}
+
+void PaymentRequestState::CheckCanMakePayment(StatusCallback callback) {
+  // TODO(https://crbug.com/915907): Implement new CanMakePayment.
+  NOTREACHED();
+}
+
+void PaymentRequestState::HasEnrolledInstrument(StatusCallback callback) {
   if (!get_all_instruments_finished_) {
-    can_make_payment_callback_ = std::move(callback);
+    has_enrolled_instrument_callback_ = std::move(callback);
     return;
   }
 
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
-      base::BindOnce(&PaymentRequestState::CheckCanMakePayment,
+      base::BindOnce(&PaymentRequestState::CheckHasEnrolledInstrument,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
-void PaymentRequestState::CheckCanMakePayment(StatusCallback callback) {
-  bool can_make_payment_value = false;
+void PaymentRequestState::CheckHasEnrolledInstrument(StatusCallback callback) {
+  bool has_enrolled_instrument_value = false;
   for (const auto& instrument : available_instruments_) {
     if (instrument->IsValidForCanMakePayment()) {
-      can_make_payment_value = true;
+      has_enrolled_instrument_value = true;
       break;
     }
   }
-  std::move(callback).Run(can_make_payment_value);
+  std::move(callback).Run(has_enrolled_instrument_value);
 }
 
 void PaymentRequestState::AreRequestedMethodsSupported(
diff --git a/components/payments/content/payment_request_state.h b/components/payments/content/payment_request_state.h
index 618bf9d..ef77a369 100644
--- a/components/payments/content/payment_request_state.h
+++ b/components/payments/content/payment_request_state.h
@@ -96,9 +96,14 @@
   void OnStartUpdating(PaymentRequestSpec::UpdateReason reason) override {}
   void OnSpecUpdated() override;
 
+  // Checks whether support for the specified payment methods exist, either
+  // because the user has a registered payment handler or because the browser
+  // can do just-in-time registration for a suitable payment handler.
+  void CanMakePayment(StatusCallback callback);
+
   // Checks whether the user has at least one instrument that satisfies the
   // specified supported payment methods asynchronously.
-  void CanMakePayment(StatusCallback callback);
+  void HasEnrolledInstrument(StatusCallback callback);
 
   // Checks if the payment methods that the merchant website have
   // requested are supported asynchronously. For example, may return true for
@@ -256,10 +261,14 @@
       bool result);
   void FinishedGetAllSWPaymentInstruments();
 
+  // Checks whether support for the specified payment methods exists and call
+  // the |callback| to return the result.
+  void CheckCanMakePayment(StatusCallback callback);
+
   // Checks whether the user has at least one instrument that satisfies the
   // specified supported payment methods and call the |callback| to return the
   // result.
-  void CheckCanMakePayment(StatusCallback callback);
+  void CheckHasEnrolledInstrument(StatusCallback callback);
 
   // Checks if the payment methods that the merchant website have
   // requested are supported and call the |callback| to return the result.
@@ -283,7 +292,7 @@
   autofill::PersonalDataManager* personal_data_manager_;
   JourneyLogger* journey_logger_;
 
-  StatusCallback can_make_payment_callback_;
+  StatusCallback has_enrolled_instrument_callback_;
   StatusCallback are_requested_methods_supported_callback_;
   bool are_requested_methods_supported_;
 
diff --git a/components/payments/content/payment_request_state_unittest.cc b/components/payments/content/payment_request_state_unittest.cc
index b16df7e..e39d0e29 100644
--- a/components/payments/content/payment_request_state_unittest.cc
+++ b/components/payments/content/payment_request_state_unittest.cc
@@ -139,17 +139,19 @@
   autofill::CreditCard credit_card_visa_;
 };
 
-TEST_F(PaymentRequestStateTest, CanMakePayment) {
+TEST_F(PaymentRequestStateTest, HasEnrolledInstrument) {
   // Default options.
   RecreateStateWithOptions(mojom::PaymentOptions::New());
 
-  // CanMakePayment returns true because the method data requires Visa, and the
-  // user has a Visa card on file.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_TRUE(can_make_payment); }));
+  // HasEnrolledInstrument returns true because the method data requires Visa,
+  // and the user has a Visa card on file.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_TRUE(has_enrolled_instrument);
+      }));
 }
 
-TEST_F(PaymentRequestStateTest, CanMakePayment_CannotMakePayment) {
+TEST_F(PaymentRequestStateTest, HasEnrolledInstrument_CannotMakePayment) {
   // The method data requires MasterCard.
   std::vector<mojom::PaymentMethodDataPtr> method_data;
   mojom::PaymentMethodDataPtr entry = mojom::PaymentMethodData::New();
@@ -159,13 +161,15 @@
                                      mojom::PaymentDetails::New(),
                                      std::move(method_data));
 
-  // CanMakePayment returns false because the method data requires MasterCard,
-  // and the user doesn't have such an instrument.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_FALSE(can_make_payment); }));
+  // HasEnrolledInstrument returns false because the method data requires
+  // MasterCard, and the user doesn't have such an instrument.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_FALSE(has_enrolled_instrument);
+      }));
 }
 
-TEST_F(PaymentRequestStateTest, CanMakePayment_OnlyBasicCard) {
+TEST_F(PaymentRequestStateTest, HasEnrolledInstrument_OnlyBasicCard) {
   // The method data supports everything in basic-card.
   mojom::PaymentMethodDataPtr entry = mojom::PaymentMethodData::New();
   entry->supported_method = "basic-card";
@@ -175,13 +179,16 @@
                                      mojom::PaymentDetails::New(),
                                      std::move(method_data));
 
-  // CanMakePayment returns true because the method data supports everything,
-  // and the user has at least one instrument.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_TRUE(can_make_payment); }));
+  // HasEnrolledInstrument returns true because the method data supports
+  // everything, and the user has at least one instrument.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_TRUE(has_enrolled_instrument);
+      }));
 }
 
-TEST_F(PaymentRequestStateTest, CanMakePayment_BasicCard_SpecificAvailable) {
+TEST_F(PaymentRequestStateTest,
+       HasEnrolledInstrument_BasicCard_SpecificAvailable) {
   // The method data supports visa through basic-card.
   mojom::PaymentMethodDataPtr entry = mojom::PaymentMethodData::New();
   entry->supported_method = "basic-card";
@@ -192,14 +199,16 @@
                                      mojom::PaymentDetails::New(),
                                      std::move(method_data));
 
-  // CanMakePayment returns true because the method data supports visa, and the
-  // user has a Visa instrument.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_TRUE(can_make_payment); }));
+  // HasEnrolledInstrument returns true because the method data supports visa,
+  // and the user has a Visa instrument.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_TRUE(has_enrolled_instrument);
+      }));
 }
 
 TEST_F(PaymentRequestStateTest,
-       CanMakePayment_BasicCard_SpecificAvailableButInvalid) {
+       HasEnrolledInstrument_BasicCard_SpecificAvailableButInvalid) {
   // The method data supports jcb through basic-card.
   mojom::PaymentMethodDataPtr entry = mojom::PaymentMethodData::New();
   entry->supported_method = "basic-card";
@@ -210,13 +219,16 @@
                                      mojom::PaymentDetails::New(),
                                      std::move(method_data));
 
-  // CanMakePayment returns false because the method data supports jcb, and the
-  // user has a JCB instrument, but it's invalid.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_FALSE(can_make_payment); }));
+  // HasEnrolledInstrument returns false because the method data supports jcb,
+  // and the user has a JCB instrument, but it's invalid.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_FALSE(has_enrolled_instrument);
+      }));
 }
 
-TEST_F(PaymentRequestStateTest, CanMakePayment_BasicCard_SpecificUnavailable) {
+TEST_F(PaymentRequestStateTest,
+       HasEnrolledInstrument_BasicCard_SpecificUnavailable) {
   // The method data supports mastercard through basic-card.
   mojom::PaymentMethodDataPtr entry = mojom::PaymentMethodData::New();
   entry->supported_method = "basic-card";
@@ -227,10 +239,12 @@
                                      mojom::PaymentDetails::New(),
                                      std::move(method_data));
 
-  // CanMakePayment returns false because the method data supports mastercard,
-  // and the user doesn't have such an instrument.
-  state()->CanMakePayment(base::BindOnce(
-      [](bool can_make_payment) { EXPECT_FALSE(can_make_payment); }));
+  // HasEnrolledInstrument returns false because the method data supports
+  // mastercard, and the user doesn't have such an instrument.
+  state()->HasEnrolledInstrument(
+      base::BindOnce([](bool has_enrolled_instrument) {
+        EXPECT_FALSE(has_enrolled_instrument);
+      }));
 }
 
 TEST_F(PaymentRequestStateTest, ReadyToPay_DefaultSelections) {
diff --git a/components/payments_strings.grdp b/components/payments_strings.grdp
index 9e6f3afb..d545b2d 100644
--- a/components/payments_strings.grdp
+++ b/components/payments_strings.grdp
@@ -384,7 +384,7 @@
   <message name="IDS_PAYMENTS_CARD_AND_ADDRESS_SETTINGS_SIGNED_OUT" desc="Label of the section containing the origin description and the link to go to the settings page for card and address options. This label is used when the user is not signed in." formatter_data="android_java">
     Cards and addresses are from Chrome. You can manage them in <ph name="BEGIN_LINK">BEGIN_LINK</ph>Settings<ph name="END_LINK">END_LINK</ph>.
   </message>
-  <message name="IDS_SETTINGS_CAN_MAKE_PAYMENT_TOGGLE_LABEL" desc="Label of the toggle which disables canMakePayment" formatter_data="android_java">
+  <message name="IDS_SETTINGS_CAN_MAKE_PAYMENT_TOGGLE_LABEL" desc="Label of the toggle which disables canMakePayment and hasEnrolledInstrument" formatter_data="android_java">
     Allow sites to check if you have payment methods saved
   </message>
 
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 29992842..add4947 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -24,6 +24,16 @@
       When this policy is set to false or unset, cookies set by the IdP are transferred to the user's profile during their first login on a device only.
 
       This policy affects users whose domain matches the device's enrolment domain only. For all other users, cookies set by the IdP are transferred to the user's profile during their first login on the device only.</translation>
+<translation id="1030120600562044329">Enables anonymous reporting of usage and crash-related data about <ph name="PRODUCT_NAME" /> to Google, and prevents users from changing this setting.
+
+      If this setting is enabled, anonymous reporting of usage and crash-related
+      data is sent to Google.  If it is disabled, this information is not sent
+      to Google.  In both cases, users cannot change or override the setting.
+      If this policy is left not set, the setting will be what the user chose
+      upon installation/first run.
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.
+      (For Chrome OS, see DeviceMetricsReportingEnabled.)</translation>
 <translation id="1035385378988781231">This policy controls whether the Network File Shares feature for <ph name="PRODUCT_NAME" /> will use NTLM for authentication.
 
       When this policy is set to True, NTLM will be used for authentication to SMB shares if necessary.
@@ -70,6 +80,11 @@
       For more information on secure contexts, see
       https://www.w3.org/TR/secure-contexts/.
       </translation>
+<translation id="1107764601871839136">Specifies the lifetime (in hours) of the Group Policy Object (GPO) cache. Instead of re-downloading GPOs on every policy fetch, the system may reuse cached GPOs as long as their version does not change. This policy specifies the maximum duration for which cached GPOs may be reused before they are re-downloaded. Rebooting and logging out clears the cache.
+
+      If the policy is unset, cached GPOs may be reused for up to 25 hours.
+
+      If the policy is set to 0, GPO caching is turned off. Note that this increases server load since GPOs are re-downloaded on every policy fetch, even if they did not change.</translation>
 <translation id="1117535567637097036">The protocol handlers set via this policy are not used when handling Android intents.</translation>
 <translation id="1118093128235245168">Allow sites to ask the user to grant access to a connected USB device</translation>
 <translation id="1128903365609589950">Configures the directory that <ph name="PRODUCT_NAME" /> will use for storing cached files on the disk.
@@ -167,6 +182,19 @@
 <translation id="142346659686073702">Allow unaffiliated users to use Crostini</translation>
 <translation id="1426410128494586442">Yes</translation>
 <translation id="1427655258943162134">Address or URL of proxy server</translation>
+<translation id="1431272318313028342">Enables <ph name="PRODUCT_NAME" />'s Safe Browsing feature and prevents users from changing this setting.
+
+      If you enable this setting, Safe Browsing is always active.
+
+      If you disable this setting, Safe Browsing is never active.
+
+      If you enable or disable this setting, users cannot change or override the 'Enable phishing and malware protection' setting in <ph name="PRODUCT_NAME" />.
+
+      If this policy is left not set, this will be enabled but the user will be able to change it.
+
+      See https://developers.google.com/safe-browsing for more info on Safe Browsing.
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="1435659902881071157">Device-level network configuration</translation>
 <translation id="1438739959477268107">Default key generation setting</translation>
 <translation id="1454846751303307294">Allows you to set a list of url patterns that specify sites which are not allowed to run JavaScript.
@@ -274,9 +302,25 @@
 <translation id="1675002386741412210">Supported on:</translation>
 <translation id="1689963000958717134">Allows pushing network configuration to be applied for all users of a <ph name="PRODUCT_OS_NAME" /> device. The network configuration is a JSON-formatted string as defined by the Open Network Configuration format described at <ph name="ONC_SPEC_URL" /></translation>
 <translation id="1708496595873025510">Set the restriction on the fetching of the Variations seed</translation>
+<translation id="1717817358640580294">If unset, should Chrome Clean-Up detect unwanted software, it may report metadata about the scan to Google, in accordance with policy set by SafeBrowsingExtendedReportingEnabled. Chrome Clean-Up will then ask the user if they wish to clean up the unwanted software. The user can choose to share results of the clean up with Google to assist with future unwanted software detection. These results contain file metadata, automatically installed extensions and registry keys as described by the Chrome Privacy Whitepaper.
+
+      If disabled, should Chrome Clean-Up detect unwanted software, it will not report metadata about the scan to Google, overriding any policy set by SafeBrowsingExtendedReportingEnabled. Chrome Clean-Up will ask the user if they wish to clean up the unwanted software.  Results of the clean up will not be reported to Google and the user will not have the option to do so.
+
+      If enabled, should Chrome Clean-Up detect unwanted software, it may report metadata about the scan to Google, in accordance with policy set by SafeBrowsingExtendedReportingEnabled. Chrome Clean-Up will ask the user if they wish to clean up the unwanted software.  Results of the clean up will be reported to Google and the user will not have the option to prevent it.
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="172374442286684480">Allow all sites to set local data.</translation>
 <translation id="1734716591049455502">Configure remote access options</translation>
 <translation id="1736269219679256369">Allow proceeding from the SSL warning page</translation>
+<translation id="1745780278307622857">Identify if <ph name="PRODUCT_NAME" /> can allow download without Safe Browsing checks when it's from a trusted source.
+
+      When False, downloaded files will not be sent to be analysed by Safe Browsing when it's from a trusted source.
+
+      When not set (or set to True), downloaded files are sent to be analysed by Safe Browsing, even when it's from a trusted source.
+
+      Note that these restrictions apply to downloads triggered from web page content, as well as the 'download link…' context menu option. These restrictions do not apply to the save/download of the currently displayed page, nor does it apply to saving as PDF from the printing options.
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="1749815929501097806">Sets the Terms of Service that the user must accept before starting a device-local account session.
 
       If this policy is set, <ph name="PRODUCT_OS_NAME" /> will download the Terms of Service and present them to the user whenever a device-local account session is starting. The user will only be allowed into the session after accepting the Terms of Service.
@@ -287,6 +331,7 @@
 <translation id="1750315445671978749">Block all downloads</translation>
 <translation id="1781356041596378058">This policy also controls access to Android Developer Options. If you set this policy to true, users cannot access Developer Options. If you set this policy to false or leave it unset, users can access Developer Options by tapping seven times on the build number in the Android settings app.</translation>
 <translation id="1797233582739332495">Show a recurring prompt to the user indicating that a relaunch is required</translation>
+<translation id="1798559516913615713">GPO cache lifetime</translation>
 <translation id="1803646570632580723">List of pinned apps to show in the launcher</translation>
 <translation id="1808715480127969042">Block cookies on these sites</translation>
 <translation id="1810261428246410396">Allow Instant Tethering to be used.</translation>
@@ -294,6 +339,13 @@
 
       The policy should be specified as a string that expresses the URL and hash in the JSON format.</translation>
 <translation id="1827523283178827583">Use fixed proxy servers</translation>
+<translation id="1831495419375964631">This policy is a URL that points to an XML file in the same format as Internet Explorer's <ph name="IEEM_SITELIST_POLICY" /> policy. This loads rules from an XML file, without sharing those rules with Internet Explorer.
+
+      When this policy is left unset, or not set to a valid URL, <ph name="PRODUCT_NAME" /> does not use it as a source of rules for switching browsers.
+
+      When this policy is set to a valid URL, <ph name="PRODUCT_NAME" /> downloads the site list from that URL, and applies the rules as if they had been configured with the <ph name="SITELIST_POLICY_NAME" /> policy.
+
+      For more information on Internet Explorer's <ph name="IEEM_SITELIST_POLICY" /> policy: https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode</translation>
 <translation id="1843117931376765605">Refresh rate for user policy</translation>
 <translation id="1844620919405873871">Configures quick unlock related policies.</translation>
 <translation id="1847960418907100918">Specifies the parameters used when doing instant search with POST. It consists of comma-separated name/value pairs. If a value is a template parameter, like {searchTerms} in above example, it will be replaced with real search terms data.
@@ -346,6 +398,12 @@
       If set to false, metrics and diagnostic data reporting will be disabled.
 
       If not configured, metrics and diagnostic data reporting will be disabled on unmanaged devices, and enabled on managed devices.</translation>
+<translation id="1907431809333268751">Configure the list of enterprise login URLs (HTTP and HTTPS schemes only). Fingerprint of password will be captured on these URLs and used for password reuse detection.
+      In order for <ph name="PRODUCT_NAME" /> to correctly capture password fingerprints, please make sure that your login pages follow the guidelines on https://www.chromium.org/developers/design-documents/create-amazing-password-forms.
+
+      If this setting is enabled, then password protection service will capture fingerprint of password on these URLs for password reuse detection purpose.
+      If this setting is disabled or not set, then password protection service will only capture password fingerprint on https://accounts.google.com.
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="1920046221095339924">Allow managed session on device</translation>
 <translation id="1929709556673267855">Provides configurations for enterprise printers bound to devices.
 
@@ -419,6 +477,9 @@
 <translation id="209586405398070749">Stable channel</translation>
 <translation id="2098658257603918882">Enable reporting of usage and crash-related data</translation>
 <translation id="2104418465060359056">Report Extensions and Plug-in information</translation>
+<translation id="2107601598727098402">
+        This policy is deprecated in M72. Please use CloudManagementEnrollmentToken instead.
+        </translation>
 <translation id="2111016292707172233">Enables the availability of Tap to Search in <ph name="PRODUCT_NAME" />'s content view.
 
       If you enable this setting, Tap to Search will be available to the user and they can choose to turn the feature on or off.
@@ -614,6 +675,20 @@
       If this setting is disabled, users cannot print from <ph name="PRODUCT_NAME" />. Printing is disabled in the wrench menu, extensions, JavaScript applications etc. It is still possible to print from plugins that bypass <ph name="PRODUCT_NAME" /> while printing. For example, certain Flash applications have the print option in their context menu, which is not covered by this policy.</translation>
 <translation id="2518231489509538392">Allow playing audio</translation>
 <translation id="2521581787935130926">Show the apps shortcut in the bookmark bar</translation>
+<translation id="2529659024053332711">Allows you to specify the behaviour on start-up.
+
+          If you choose 'Open new tab page' the new tab page will always be opened when you start <ph name="PRODUCT_NAME" />.
+
+          If you choose 'Restore the last session', the URLs that were open last time <ph name="PRODUCT_NAME" /> was closed will be re-opened and the browsing session will be restored as it was left.
+          Choosing this option disables some settings that rely on sessions or that perform actions on exit (such as Clear browsing data on exit or session-only cookies).
+
+          If you choose 'Open a list of URLs', the list of 'URLs to open on start-up' will be opened when a user starts <ph name="PRODUCT_NAME" />.
+
+          If you enable this setting, users cannot change or override it in <ph name="PRODUCT_NAME" />.
+
+          Disabling this setting is equivalent to leaving it not configured. The user will still be able to change it in <ph name="PRODUCT_NAME" />.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="2529880111512635313">Configure the list of force-installed apps and extensions</translation>
 <translation id="253135976343875019">Idle warning delay when running on AC power</translation>
 <translation id="2536525645274582300">User decides whether to enable Google Location services</translation>
@@ -781,6 +856,7 @@
           |created_time_millis| is the UTC timestamp for the override creation; it is sent as a String because the timestamp wouldn't fit in an integer. It is used to determine whether this override should still be applied. If the current active time limit feature (time usage limit or time window limit) started after the override was created, it should not take action. Also, if the override was created before the last change of the active time_window_limit or time_usage_window, it should not be applied.
 
           Multiple overrides may be sent; the newest valid entry is the one that is going to be applied.</translation>
+<translation id="2905984450136807296">Authentication data cache lifetime</translation>
 <translation id="2906874737073861391">List of AppPack extensions</translation>
 <translation id="2907992746861405243">Controls which printers from the <ph name="BULK_PRINTERS_POLICY" /> are available to users.
 
@@ -813,6 +889,7 @@
 <translation id="2987227569419001736">Control use of the Web Bluetooth API</translation>
 <translation id="3016255526521614822">Whitelist note-taking apps allowed on the <ph name="PRODUCT_OS_NAME" /> lock screen</translation>
 <translation id="3021562480854470924">Number of milestones roll-back is allowed</translation>
+<translation id="3023572080620427845">URL of an XML file that contains URLs to load in an alternative browser.</translation>
 <translation id="3030000825273123558">Enable metrics reporting</translation>
 <translation id="3034580675120919256">Allows you to set whether websites are allowed to run JavaScript. Running JavaScript can be either allowed for all websites or denied for all websites.
 
@@ -866,6 +943,12 @@
       If the policy is not set, or is set to false, then DHE cipher suites in TLS will not be enabled. Otherwise it may be set to true to enable DHE cipher suites and retain compatibility with an outdated server. This is a stopgap measure and the server should be reconfigured.
 
       Servers are encouraged to migrate to ECDHE cipher suites. If these are unavailable, ensure a cipher suite using RSA key exchange is enabled.</translation>
+<translation id="3117706142826400449">If disabled, prevents Chrome Clean-Up from scanning the system for unwanted software and performing clean ups. Manually triggering Chrome Clean-Up from chrome://settings/cleanup is disabled.
+
+      If enabled or unset, Chrome Clean-Up periodically scans the system for unwanted software and should any be found, will ask the user if they wish to remove it. Manually triggering Chrome Clean-Up from chrome://settings is enabled.
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
+<translation id="3165808775394012744">These policies are included here to make them easy to remove.</translation>
 <translation id="316778957754360075">This setting has been retired as of <ph name="PRODUCT_NAME" /> version 29. The recommended way to set up organisation-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.</translation>
 <translation id="3171369832001535378">Device network hostname template</translation>
 <translation id="3185009703220253572">since version <ph name="SINCE_VERSION" /></translation>
@@ -1570,6 +1653,19 @@
 <translation id="5058573563327660283">Select the strategy used to free up disk space during automatic clean-up (deprecated)</translation>
 <translation id="5067143124345820993">Login user white list</translation>
 <translation id="5068140065960598044"><ph name="PRODUCT_NAME" /> cloud policy overrides Machine policy.</translation>
+<translation id="5076274878326940940">Enables the use of a default search provider.
+
+          If you enable this setting, a default search is performed when the user types text in to the omnibox that is not a URL.
+
+          You can specify the default search provider to be used by setting the rest of the default search policies. If these are left empty, the user can choose the default provider.
+
+          If you disable this setting, no search is performed when the user enters non-URL text in to the omnibox.
+
+          If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME" />.
+
+          If this policy is left not set, the default search provider is enabled, and the user will be able to set the search provider list.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="5085647276663819155">Disable Print Preview</translation>
 <translation id="5090209345759901501">Extend Flash content setting to all content</translation>
 <translation id="5093540029655764852">Specifies the rate (in days) at which a client changes their machine account password. The password is randomly generated by the client and not visible to the user.
@@ -1583,6 +1679,15 @@
       Note that passwords might get older than the specified number of days if the client has been offline for a longer period of time.</translation>
 <translation id="5105313908130842249">Screen lock delay when running on battery power</translation>
 <translation id="5108031557082757679">Disabled enterprise device printers</translation>
+<translation id="5113732180192599620">This policy controls the list of websites that will never cause a browser switch.
+
+      Note that elements can also be added to this list through the <ph name="USE_IE_SITELIST_POLICY_NAME" /> and <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME" /> policies.
+
+      When this policy is left unset, no websites are added to the list.
+
+      When this policy is set, each item is treated as a rule, similar to the <ph name="URL_LIST_POLICY_NAME" /> policy. However, the logic is reversed: rules that match will not open an alternative browser.
+
+      Unlike <ph name="URL_LIST_POLICY_NAME" />, rules apply to both directions. That is, when the Internet Explorer add-in is present and enabled, it also controls whether <ph name="IE_PRODUCT_NAME" /> should open these URLs in <ph name="PRODUCT_NAME" />.</translation>
 <translation id="5130288486815037971">Whether RC4 cipher suites in TLS are enabled</translation>
 <translation id="5141670636904227950">Set the default screen magnifier type enabled on the login screen</translation>
 <translation id="5142301680741828703">Always render the following URL patterns in <ph name="PRODUCT_FRAME_NAME" /></translation>
@@ -1621,6 +1726,15 @@
       If the policy is set to false then tab lifecycles are disabled, and all tabs will be left running normally.
 
       If the policy is set to true or left unspecified then tab life cycles are enabled.</translation>
+<translation id="5207823059027350538">Configures the default new tab page URL and prevents users from changing it.
+
+          The new tab page is the page opened when new tabs are created (including the one opened in new windows).
+
+          This policy does not decide which pages are to be opened on start up. Those are controlled by the <ph name="RESTORE_ON_STARTUP_POLICY_NAME" /> policies. Yet this policy does affect the homepage if that is set to open the new tab page, as well as the start-up page if that is set to open the new tab page.
+
+          If the policy is not set or left empty the default new tab page is used.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="5208240613060747912">Allows you to set a list of url patterns that specify sites which are not allowed to display notifications.
 
           If this policy is left unset the global default value will be used for all sites either from the 'DefaultNotificationsSetting' policy, if it is set, or the user's personal configuration otherwise.</translation>
@@ -1741,6 +1855,17 @@
 <translation id="546726650689747237">Screen dim delay when running on AC power</translation>
 <translation id="5469143988693423708">User is enabled to run Crostini</translation>
 <translation id="5469825884154817306">Block images on these sites</translation>
+<translation id="5472668698895343595">This policy controls the list of websites to open in an alternative browser.
+
+      Note that elements can also be added to this list through the <ph name="USE_IE_SITELIST_POLICY_NAME" /> and <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME" /> policies.
+
+      When this policy is left unset, no websites are added to the list.
+
+      When this policy is set, each item is treated as a rule for something to open in an alternative browser. <ph name="PRODUCT_NAME" /> uses those rules when choosing if a URL should open in an alternative browser.
+
+      When the Internet Explorer add-in is present and enabled, Internet Explorer switches back to <ph name="PRODUCT_NAME" /> when the rules do not match.
+
+      If rules contradict each other, <ph name="PRODUCT_NAME" /> uses the most specific rule.</translation>
 <translation id="5475361623548884387">Enable printing</translation>
 <translation id="547601067149622666">Do not allow ads on sites with intrusive ads</translation>
 <translation id="5499375345075963939">This policy is active in retail mode only.
@@ -1819,6 +1944,13 @@
 
       If this setting is disabled or not configured then users can use all supported types of external storage on their device.</translation>
 <translation id="5697306356229823047">Report device users</translation>
+<translation id="5699487516670033016">Specifies the lifetime (in hours) of the authentication data cache. The cache is used to speed up sign-in. It contains general data (workgroup name etc.) about affiliated realms, i.e. realms trusted by the machine realm. No user-specific data and no data for unaffiliated realms is cached. Rebooting the device clears the cache.
+
+      If the policy is unset, cached authentication data may be reused for up to 73 hours.
+
+      If the policy is set to 0, authentication data caching is turned off. This can significantly slow down sign-in of affiliated users since realm-specific data has to be fetched on every sign-in.
+
+      Note that realm data is cached even for ephemeral users. The cache should be turned off if tracing the realm of ephemeral users is to be prevented.</translation>
 <translation id="570062449808736508">When this policy is set to a non-empty string, the WebView will read URL restrictions from the content provider with the given authority name.</translation>
 <translation id="5701714006401683963">If this policy is set to false, managed guest session will behave as documented in https://support.google.com/chrome/a/answer/3017014 – the standard 'Public Session'.
 
@@ -1870,6 +2002,7 @@
       If the policy is disabled, downloads will start immediately, and the user will not be asked where to save the file.
       If the policy is not configured, the user will be able to change this setting.
       </translation>
+<translation id="5832274826894536455">Deprecated policies</translation>
 <translation id="5835124959204887277">Specifies URLs and domains for which no prompt will be shown when attestation certificates from Security Keys are requested. Additionally, a signal will be sent to the Security Key indicating that individual attestation may be used. Without this, users will be prompted in Chrome 65+ when sites request attestation of Security Keys.
 
       URLs (like https://example.com/some/path) will only match as U2F appIDs. Domains (like example.com) only match as webauthn RP IDs. Thus, to cover both U2F and webauthn APIs for a given site, both the appID URL and domain would need to be listed.</translation>
@@ -2119,6 +2252,11 @@
       If the policy is set to false, the users will not be reported.</translation>
 <translation id="6394350458541421998">This policy has been retired as of <ph name="PRODUCT_OS_NAME" /> version 29. Please use the PresentationScreenDimDelayScale policy instead.</translation>
 <translation id="6401669939808766804">Log the user out</translation>
+<translation id="6406448383934634215">If 'Open a list of URLs' is selected as the start-up action, this allows you to specify the list of URLs that are opened. If left not set, no URL will be opened on start up.
+
+          This policy only works if the 'RestoreOnStartup' policy is set to 'RestoreOnStartupIsURLs'.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="6426205278746959912">You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honour:
 
           If you choose to never use a proxy server, Android apps are informed that no proxy is configured.
@@ -2134,7 +2272,26 @@
 <translation id="645425387487868471">Enable force sign-in for <ph name="PRODUCT_NAME" /></translation>
 <translation id="6464074037294098618">Enable AutoFill for addresses</translation>
 <translation id="6473623140202114570">Configure the list of domains on which Safe Browsing will not trigger warnings.</translation>
+<translation id="6488627892044759800">Configures the type of the default homepage in <ph name="PRODUCT_NAME" /> and prevents users from changing homepage preferences. The homepage can either be set to a URL that you specify, or set to the new tab page.
+
+          If you enable this setting, the new tab page is always used for the homepage, and the homepage URL location is ignored.
+
+          If you disable this setting, the user's homepage will never be the new tab page, unless its URL is set to 'chrome://newtab'.
+
+          If you enable or disable this setting, users cannot change their homepage type in <ph name="PRODUCT_NAME" />.
+
+          Leaving this policy not set will allow the user to choose whether the new tab page is their homepage on their own.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="6491139795995924304">Allow bluetooth on device</translation>
+<translation id="6495328383950074966">Configure the list of domains which Safe Browsing will trust. This means:
+      Safe Browsing will not check for dangerous resources (e.g. phishing, malware or unwanted software) if their URLs match these domains.
+      Safe Browsing's download protection service will not check downloads hosted on these domains.
+      Safe Browsing's password protection service will not check for password reuse if the page URL matches these domains.
+
+      If this setting is enabled, then Safe Browsing will trust these domains.
+      If this setting is disabled or not set, then default Safe Browsing protection is applied to all resources.
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="6520802717075138474">Import search engines from default browser on first run</translation>
 <translation id="6525955212636890608">If you enable this setting, all Flash content embedded on websites that have been set to allow Flash in content settings – either by the user or by enterprise policy – will be run, including content from other origins or small content.
 
@@ -2248,6 +2405,13 @@
 
       If this policy is not set, or the value after substitution is not a valid hostname, no hostname will be set in DHCP request. </translation>
 <translation id="6835883744948188639">Show a recurring prompt to the user indicating that a relaunch is recommended</translation>
+<translation id="6837480141980366278">Controls whether the built-in DNS client is used in <ph name="PRODUCT_NAME" />.
+
+      If this policy is set to true, the built-in DNS client will be used, if available.
+
+      If this policy is set to false, the built-in DNS client will never be used.
+
+      If this policy is left not set, the built-in DNS client will be enabled by default on MacOS, Android (when neither Private DNS nor VPN are enabled) and ChromeOS, and the users will be able to change whether the built-in DNS client is used by editing chrome://flags or specifying a command-line flag.</translation>
 <translation id="6838056959556423778">Overrides <ph name="PRODUCT_NAME" /> default printer selection rules.
 
       This policy determines the rules for selecting the default printer in <ph name="PRODUCT_NAME" /> which happens the first time that the print function is used with a profile.
@@ -2279,6 +2443,7 @@
       Printers connected to <ph name="CLOUD_PRINT_NAME" /> are considered <ph name="PRINTER_TYPE_CLOUD" />; the rest of the printers are classified as <ph name="PRINTER_TYPE_LOCAL" />.
       Omitting a field means all values match. For example, not specifying connectivity will cause Print Preview to initiate the discovery of all kinds of printers: local and cloud.
       Regular expression patterns must follow the JavaScript RegExp syntax and matches are case sensitive.</translation>
+<translation id="6843296367238757293">This policy is deprecated. Its usage is discouraged. Read more at https://support.google.com/chrome/a/answer/7643500</translation>
 <translation id="684856667300805181">This policy was removed in <ph name="PRODUCT_NAME" /> 68 and replaced by <ph name="ARC_GLS_POLICY_NAME" />.</translation>
 <translation id="6856743875250214792">This policy is deprecated and removed in M66, because it was used only for internal testing and it is a security liability.
 
@@ -2464,6 +2629,17 @@
           Automatic playback is only allowed for domains explicitly listed in the <ph name="PLUGINS_ALLOWED_FOR_URLS_POLICY_NAME" /> policy. If you want to enabled automatic playback for all sites, consider adding http://* and https://* to this list.
 
           If this policy is left not set, the user will be able to change this setting manually.</translation>
+<translation id="7229876938563670511">Configures the default homepage URL in <ph name="PRODUCT_NAME" /> and prevents users from changing it.
+
+          The homepage is the page opened by the Home button. The pages that open on start-up are controlled by the RestoreOnStartup policies.
+
+          The homepage type can either be set to a URL that you specify here or set to the new tab page. If you select the new tab page, then this policy does not take effect.
+
+          If you enable this setting, users cannot change their homepage URL in <ph name="PRODUCT_NAME" />, but they can still choose the new tab page as their home page.
+
+          Leaving this policy not set will also allow the user to choose their own homepage if HomepageIsNewTabPage is not set.
+
+          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="7229975860249300121">Contains a regular expression which is used to determine which Google accounts can be set as browser primary accounts in <ph name="PRODUCT_NAME" /> (i.e. the account that is chosen during the Sync opt-in flow).
 
       An appropriate error is displayed if a user tries to set a browser primary account with a username that does not match this pattern.
@@ -2804,6 +2980,17 @@
 <translation id="793473937901685727">Set certificate availability for ARC-apps</translation>
 <translation id="7937766917976512374">Allow or deny video capture</translation>
 <translation id="7941975817681987555">Do not predict network actions on any network connection</translation>
+<translation id="7952002811557367112">This policy prevents the user from loading web pages from blacklisted URLs. The blacklist provides a list of URL patterns that specify which URLs will be blacklisted.
+
+      A URL pattern has to be formatted according to https://www.chromium.org/administrators/url-blacklist-filter-format.
+
+      Exceptions can be defined in the URL whitelist policy. These policies are limited to 1,000 entries; subsequent entries will be ignored.
+
+      Note that it is not recommended to block internal 'chrome://*' URLs after this may lead to unexpected errors.
+
+      Note that this policy does not prevent the page updating dynamically through JavaScript. For example, if you block 'example.com/abc', users might still be able to visit 'example.com' and click on a link to visit 'example.com/abc', as long as the page does not refresh.
+
+      If this policy is not set, no URL will be blacklisted in the browser.</translation>
 <translation id="7953256619080733119">Managed user manual exception hosts</translation>
 <translation id="7961779417826583251">Disable Certificate Transparency enforcement for a list of Legacy Certificate Authorities</translation>
 <translation id="7974114691960514888">This policy is no longer supported.
@@ -2983,6 +3170,12 @@
 <translation id="8367209241899435947">Enable Chrome Cleanup on Windows</translation>
 <translation id="8369602308428138533">Screen off delay when running on AC power</translation>
 <translation id="8371178326720637170">Enables managed extensions to use the Enterprise Hardware Platform API</translation>
+<translation id="8377433219608936819">
+      If the policy is set to true, cloud  policy takes precedence if it conflicts with machine policy.
+      If the policy is set to false or not configured, machine policy takes precedence if it conflicts with cloud policy.
+      For more details about policy priority, please visit: https://support.google.com/chrome?p=set_chrome_policies_for_devices
+
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="8382184662529825177">Enable the use of remote attestation for content protection for the device</translation>
 <translation id="838870586332499308">Enable data roaming</translation>
 <translation id="8390049129576938611">Disables the internal PDF viewer in <ph name="PRODUCT_NAME" />. Instead, it treats it as download and allows the user to open PDF files with the default application.
@@ -3155,6 +3348,12 @@
           If you enable this setting, CNAME lookup will be skipped and the server name will be used as entered.
 
           If you disable this setting or leave it unset, the canonical name of the server will be determined via CNAME lookup.</translation>
+<translation id="8765776988041674792">Configure the change password URL (HTTP and HTTPS schemes only). Password protection service will send users to this URL to change their password after seeing a warning in the browser.
+      In order for <ph name="PRODUCT_NAME" /> to correctly capture the new password fingerprint on this change password page, please make sure that your change password page follows the guidelines on https://www.chromium.org/developers/design-documents/create-amazing-password-forms.
+
+      If this setting is enabled, then password protection service will send users to this URL to change their password after seeing a warning in the browser.
+      If this setting is disabled or not set, then password protection service will send users to https://myaccounts.google.com to change their password.
+      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME" /> domain. It also applies to Windows 10 Pro or Enterprise instances that enrolled for device management.</translation>
 <translation id="8782750230688364867">Specifies the percentage by which the screen dim delay is scaled when the device is in presentation mode.
 
           If this policy is set, it specifies the percentage by which the screen dim delay is scaled when the device is in presentation mode. When the screen dim delay is scaled, the screen off, screen lock and idle delays get adjusted to maintain the same distances from the screen dim delay as originally configured.
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index 905ead19..3634632b 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -205,13 +205,13 @@
           <ph name="PROXY_HELP_URL" />.</translation>
 <translation id="1502843533062797703">הפעלת חסימה של החדרת תוכנות צד שלישי</translation>
 <translation id="1504431521196476721">הזדהות מרחוק</translation>
-<translation id="1507957856411744193">‏אם המדיניות מקבלת את הערך true, <ph name="PRODUCT_NAME" /> יתחבר למכשירי CAST בכל כתובת IP, ולא רק בכתובות פרטיות מסוג RFC1918/RFC4193.
+<translation id="1507957856411744193">‏אם המדיניות מקבלת את הערך true, ‏<ph name="PRODUCT_NAME" /> יתחבר למכשירי העברה בכל כתובת IP, ולא רק בכתובות פרטיות מסוג RFC1918/RFC4193.
 
-          אם המדיניות הזו מקבלת את הערך false, <ph name="PRODUCT_NAME" /> יתחבר למכשירי CAST בכתובות פרטיות בלבד מסוג RFC1918/RFC4193.
+אם המדיניות הזו מקבלת את הערך false, ‏<ph name="PRODUCT_NAME" /> יתחבר למכשירי העברה בכתובות פרטיות בלבד מסוג RFC1918/RFC4193.
 
-          אם המדיניות הזו לא מוגדרת, <ph name="PRODUCT_NAME" /> יתחבר למכשירי CAST רק בכתובות פרטיות מסוג RFC1918/RFC4193, אלא אם התכונה CastAllowAllIPs מופעלת.
+אם המדיניות הזו לא מוגדרת, <ph name="PRODUCT_NAME" /> יתחבר למכשירי העברה רק בכתובות פרטיות מסוג RFC1918/RFC4193, אלא אם התכונה CastAllowAllIPs מופעלת.
 
-          אם המדיניות EnableMediaRouter מקבלת את הערך false, לערך של המדיניות הזו לא תהיה השפעה.</translation>
+אם המדיניות EnableMediaRouter מקבלת את הערך false, לערך של המדיניות הזו לא תהיה השפעה.</translation>
 <translation id="1509692106376861764">מדיניות זו הופסקה החל מגרסה 29 של <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1514888685242892912">הפעלת <ph name="PRODUCT_NAME" /></translation>
 <translation id="1522425503138261032">אפשר לאתרים לעקוב אחר המיקום הפיזי של המשתמשים</translation>
@@ -665,11 +665,11 @@
 <translation id="2693108589792503178">הגדרת כתובת האתר לשינוי סיסמה.</translation>
 <translation id="2696531058295423290">מכשירים יכולים להשתמש ב-<ph name="PLUGIN_VM_NAME" /> ב-<ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="2731627323327011390">‏השבת את השימוש באישורי <ph name="PRODUCT_OS_NAME" /> ביישומי ARC</translation>
-<translation id="2742843273354638707">‏הסתר את יישום חנות האינטרנט של Chrome ואת הקישור בכותרת התחתונה בדף הכרטיסייה החדשה ובמפעיל היישומים של <ph name="PRODUCT_OS_NAME" />.
+<translation id="2742843273354638707">‏הסתרת האפליקציה של חנות האינטרנט של Chrome ואת הקישור בכותרת התחתונה בדף הכרטיסייה החדשה ובמרכז האפליקציות של <ph name="PRODUCT_OS_NAME" />.
 
-      כשמדיניות זו מוגדרת כ-true, הסמלים מוסתרים.
+כשמדיניות זו מוגדרת כ-true, הסמלים מוסתרים.
 
-      כשמדיניות זו מוגדרת כ-false או אינה מוגדרת, הסמלים מוצגים.</translation>
+כשמדיניות זו מוגדרת כ-false או אינה מוגדרת, הסמלים מוצגים.</translation>
 <translation id="2744751866269053547">רשום מטפלים של פרוטוקול</translation>
 <translation id="2746016768603629042">‏מדיניות זו הוצאה משימוש, השתמש ב-DefaultJavaScriptSetting במקומה.
 
@@ -817,7 +817,7 @@
 <translation id="3072045631333522102">שומר מסך שמשמש במסך הכניסה של מצב קמעונאי</translation>
 <translation id="3072847235228302527">הגדר את התנאים וההגבלות עבור חשבון מקומי של מכשיר</translation>
 <translation id="3077183141551274418">מפעילה או משביתה מחזורי חיים של כרטיסיות</translation>
-<translation id="3086995894968271156">‏הגדרת Cast Receiver ב-<ph name="PRODUCT_NAME" />.</translation>
+<translation id="3086995894968271156">הגדרת מקלט העברה ב-<ph name="PRODUCT_NAME" />.</translation>
 <translation id="3088796212846734853">‏מאפשרת לך להגדיר רשימה של דפוסי כתובות אתר המפרטת אתרים שיכולים להציג תמונות. 
           
            אם המדיניות הזו לא מוגדרת, ייעשה שימוש בערך ברירת המחדל הכללי לכל האתרים. הערך הזה ייקבע על-פי המדיניות 'DefaultImagesSetting' אם הוגדרה, או לחלופין, מהתצורה האישית של המשתמש.
@@ -1040,11 +1040,11 @@
 <translation id="3765260570442823273">משך הודעת האזהרה להתנתקות משתמש לא פעיל.</translation>
 <translation id="377044054160169374">אכיפת התערבות במקרה של חוויית שימוש מטעה</translation>
 <translation id="3780152581321609624">‏כלול יציאה שאינה סטנדרטית ב-SPN של Kerberos</translation>
-<translation id="3780319008680229708">‏אם המדיניות הוגדרה כ-true, סמל סרגל הכלים של Cast יוצג תמיד בסרגל הכלים או באפשרויות הנוספות, ולמשתמשים לא תהיה אפשרות להסיר אותו.
+<translation id="3780319008680229708">‏אם המדיניות הוגדרה כ-true, סמל סרגל הכלים של העברה יוצג תמיד בסרגל הכלים או באפשרויות הנוספות, ולמשתמשים לא תהיה אפשרות להסיר אותו.
 
-          אם המדיניות הוגדרה כ-false או שלא הוגדרה כלל, המשתמשים יוכלו להצמיד או להסיר את הסמל באמצעות האפשרויות הנוספות.
+אם המדיניות הוגדרה כ-false או שלא הוגדרה כלל, המשתמשים יוכלו להצמיד או להסיר את הסמל באמצעות האפשרויות הנוספות.
 
-          אם המדיניות "EnableMediaRouter" הוגדרה כ-false, לערך שבו הוגדרה המדיניות לא תהיה כל השפעה וסמל סרגל הכלים לא יוצג.</translation>
+אם המדיניות "EnableMediaRouter" הוגדרה כ-false, לערך שבו הוגדרה המדיניות לא תהיה כל השפעה וסמל סרגל הכלים לא יוצג.</translation>
 <translation id="3788662722837364290">הגדרות של ניהול צריכת חשמל כשהמשתמש אינו פעיל</translation>
 <translation id="3790085888761753785">‏אם ההגדרה הזו מופעלת, משתמשים יורשו להיכנס אל החשבון שלהם בעזרת Smart Lock. הגדרה זו פחות מחמירה מהתנהגות רגילה של Smart Lock, שדרכה משתמשים יכולים רק לבטל את נעילת המסך.
 
@@ -1344,9 +1344,9 @@
       אם הערך של המדיניות הזו הוא 0, יעשה שימוש בגודל ברירת המחדל של המטמון, אך המשתמש לא יוכל לשנות זאת.
 
       אם המדיניות הזו לא מוגדרת, יעשה שימוש בגודל ברירת המחדל והמשתמש יוכל לעקוף אותה באמצעות הסימון ‎--media-cache-size.</translation>
-<translation id="4508686775017063528">‏אם המדיניות מוגדרת ל-true או לא מוגדרת, <ph name="PRODUCT_NAME" /> יופעל והמשתמשים יוכלו להפעילו דרך תפריטי האפליקציות, תפריטי הקשר של דפים, בקרות מדיה באתרים ש- Cast פועל בהם וסמל סרגל הכלים של Cast (אם הוא מוצג).
+<translation id="4508686775017063528">‏אם המדיניות מוגדרת ל-true או לא מוגדרת, <ph name="PRODUCT_NAME" /> יופעל והמשתמשים יוכלו להפעילו דרך תפריטי האפליקציות, תפריטי הקשר של דפים, לחצני בקרת מדיה באתרים שהעברה פועלת בהם וסמל ההעברה בסרגל הכלים (אם הוא מוצג).
 
-         אם המדיניות מוגדרת ל-false, <ph name="PRODUCT_NAME" /> יושבת.</translation>
+אם המדיניות מוגדרת ל-false, ‏<ph name="PRODUCT_NAME" /> יושבת.</translation>
 <translation id="4515404363392014383">הפעלת גלישה בטוחה בשביל מקורות מהימנים</translation>
 <translation id="4518251772179446575">שאל בכל פעם שאתר כלשהו רוצה לעקוב אחר המיקום הפיזי של המשתמשים</translation>
 <translation id="4519046672992331730">מאפשרת הצעות חיפוש בסרגל הכתובות של <ph name="PRODUCT_NAME" /> ומונעת ממשתמשים לשנות את ההגדרה הזו. 
@@ -1495,7 +1495,7 @@
 <translation id="4906194810004762807">קצב רענון עבור מדיניות מכשיר</translation>
 <translation id="4917385247580444890">חזק</translation>
 <translation id="4923806312383904642">‏מתן הרשאה לתכונת WebDriver לעקוף סעיפי מדיניות שאינם תואמים לה</translation>
-<translation id="494613465159630803">Cast Receiver</translation>
+<translation id="494613465159630803">מקלט העברה</translation>
 <translation id="4962262530309732070">‏אם המדיניות מוגדרת כ-true או שהיא לא מוגדרת, <ph name="PRODUCT_NAME" /> יאפשר הוספה של משתמש ממנהל המשתמשים.
 
       אם המדיניות מוגדרת כ-‎‏‎false‎‏, <ph name="PRODUCT_NAME" /> לא יאפשר יצירה של פרופילים חדשים ממנהל המשתמשים.</translation>
@@ -1607,7 +1607,7 @@
 <translation id="5318185076587284965">הפעל את השימוש בשרתי שידור על ידי מארח הגישה המרוחקת</translation>
 <translation id="5323128137188992869">‏התרה של העברת תוכן אל המכשיר באמצעות <ph name="PRODUCT_NAME" />.
 
-          אם המדיניות הזו מוגדרת כ-False, המשתמשים לא יוכלו להעביר תוכן למכשיר שלהם. אם המדיניות מוגדרת כ-True, המשתמשים יוכלו להעביר תוכן. אם המדיניות לא מוגדרת, המשתמשים לא יוכלו להעביר תוכן למכשירי Chrome OS רשומים, אבל הם יוכלו להעביר תוכן למכשירים שאינם רשומים.</translation>
+אם המדיניות הזו מוגדרת כ-False, המשתמשים לא יוכלו להעביר תוכן למכשיר שלהם. אם המדיניות מוגדרת כ-True, המשתמשים יוכלו להעביר תוכן. אם המדיניות לא מוגדרת, המשתמשים לא יוכלו להעביר תוכן למכשירי Chrome OS רשומים, אבל הם יוכלו להעביר תוכן למכשירים שאינם רשומים.</translation>
 <translation id="5329007337159326804">‏אזהרה: המדיניות של גרסת TLS המקסימלית תוסר לחלוטין מ-<ph name="PRODUCT_NAME" /> בערך בגרסה 75 (בסביבות יוני 2019).
 
       אם המדיניות הזו לא מוגדרת, <ph name="PRODUCT_NAME" /> ישתמש בגרסה המקסימלית שהוגדרה כברירת מחדל.
@@ -2210,7 +2210,7 @@
 
       היא קובעת קבוצה של כתובות אתר שיטענו כאשר הפעלת ההדגמה מתחילה. המדיניות תדרוס מנגנונים אחרים להגדרת כתובות האתר ההתחלתיות ולכן ניתן ליישם אותה רק בהפעלה שאינה מקושרת למשתמש מסוים.</translation>
 <translation id="6908640907898649429">המדיניות מגדירה את ספק החיפוש המוגדר כברירת מחדל. ניתן לציין את ספק החיפוש המוגדר כברירת מחדל שבו ישתמש המשתמש או לבחור להשבית את חיפוש ברירת המחדל.</translation>
-<translation id="6913068954484253496">‏<ph name="PRODUCT_NAME" /> רשאי להתחבר למכשירי Cast בכל כתובות ה-IP.</translation>
+<translation id="6913068954484253496">‏<ph name="PRODUCT_NAME" /> רשאי להתחבר למכשירי העברה בכל כתובות ה-IP.</translation>
 <translation id="6915442654606973733">‏הפעל את תכונת הנגישות של משוב קולי.
 
           אם מדיניות זו מוגדרת ל-True, המשוב הקולי יהיה מופעל תמיד.
@@ -2935,7 +2935,7 @@
 <translation id="8544465954173828789">‏התרה של סנכרון הודעות SMS בין הטלפון לבין ה-Chromebook.</translation>
 <translation id="8548832052135586762">מגדירה אפשרות להדפיס בצבע בלבד, בשחור-לבן בלבד או ללא הגבלה של מצב הצבע. אם המדיניות לא מוגדרת, ההדפסה תבוצע ללא הגבלה.</translation>
 <translation id="8549772397068118889">הצג אזהרה בעת ביקור באתרים שמחוץ לחבילות תוכן</translation>
-<translation id="8566842294717252664">הסתר את חנות האינטרנט בדף הכרטיסייה החדשה ובמפעיל היישומים</translation>
+<translation id="8566842294717252664">הסתרת חנות האינטרנט בדף הכרטיסייה החדשה ובמרכז האפליקציות</translation>
 <translation id="857369585509260201">‏המדיניות הזו הוצאה משימוש. אפשר להשתמש ב-BrowserSignin.
 
       אם המדיניות הזו מוגדרת כ-true, המשתמש צריך להיכנס אל <ph name="PRODUCT_NAME" /> דרך הפרופיל שלו כדי להשתמש בדפדפן. ערך ברירת המחדל של BrowserGuestModeEnabled יוגדר כ-false. לתשומת ליבך, פרופילים קיימים שאינם חתומים יינעלו ולא יתאפשר לגשת אליהם לאחר הפעלת המדיניות הזו. מידע נוסף זמין במאמר מרכז העזרה.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index 000ec4bd..6fe6df2 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -1799,7 +1799,7 @@
 
       Adresele URL (cum ar fi https://example.com/some/path) vor putea fi folosite numai drept coduri ale aplicației U2F. Domeniile (cum ar fi example.com) vor putea fi folosite numai ca ID-uri webauthn RP. Prin urmare, pentru a acoperi atât API-urile U2F, cât și API-urile webauthn pentru un anumit site, trebuie listate atât adresa URL, cât și domeniul cu codul aplicației.</translation>
 <translation id="5836064773277134605">Limitați intervalul pentru portul UDP folosit de gazda de acces la distanță</translation>
-<translation id="5861856285460256766">Configurare cod de acces parental</translation>
+<translation id="5861856285460256766">Configurarea codului de acces parental</translation>
 <translation id="5862253018042179045">Setați funcția de accesibilitate pentru feedback vocal ca stare prestabilită pe ecranul de conectare.
 
           Dacă această politică este activată, feedbackul vocal va fi activat când este afișat ecranul de conectare.
@@ -2557,9 +2557,9 @@
           Se acceptă în versiunea 70 și versiunile ulterioare de <ph name="PRODUCT_OS_NAME" />. Pentru clienții mai vechi, această valoare înseamnă că revenirea este dezactivată.</translation>
 <translation id="7620869951155758729">Această politică specifică ce configurație este utilizată pentru generarea și verificarea codului de acces parental.
 
-      |current_config| este folosită întotdeauna pentru generarea codului de acces și trebuie folosită pentru validarea codului de acces numai atunci când nu poate fi validată cu |future_config|.
+      |current_config| este folosită întotdeauna pentru generarea codului de acces și trebuie folosită pentru validarea codului de acces numai atunci când nu poate fi validat cu |future_config|.
       |future_config| este configurația principală folosită pentru validarea codului de acces.
-      |old_configs| trebuie folosită pentru validarea codului de acces numai atunci când nu poate fi validată nici cu |future_config|, nici cu |current_config|.
+      |old_configs| trebuie folosită pentru validarea codului de acces numai atunci când nu poate fi validat nici cu |future_config|, nici cu |current_config|.
 
       Modul așteptat de a folosi această politică este de a schimba prin rotație treptat configurația codului de acces. Configurația nouă este întotdeauna introdusă în |future_config| și, în același timp, valoarea existentă este mutată în |current_config|. Valorile anterioare ale |current_config| sunt mutate în |old_configs| și eliminate după ciclul de rotație.
 
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index 650a03c..ceb5d35 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -373,16 +373,16 @@
 <translation id="1885782360784839335">పూర్తి-ట్యాబ్ ప్రచార కంటెంట్‌ను ప్రదర్శించడాన్ని ప్రారంభించండి</translation>
 <translation id="1888871729456797026">డెస్క్‌టాప్‌లో క్లౌడ్ విధానం యొక్క నమోదు టోకెన్</translation>
 <translation id="1897365952389968758">JavaScriptని అమలు చేయ్డడానికి అన్ని సైట్‌లని అనుమతించు</translation>
-<translation id="1906888171268104594">Googleకు వినియోగ ప్రమాణాలు మరియు క్రాష్ నివేదికలతో సహా విశ్లేషణ డేటాను తిరిగి నివేదించాలో లేదో నియంత్రిస్తుంది.
+<translation id="1906888171268104594">Googleకు వినియోగ ప్రమాణాలు, క్రాష్ నివేదికలతో సహా స‌మ‌స్య విశ్లేషణ డేటాను తిరిగి నివేదించాలో లేదో నియంత్రిస్తుంది.
 
-      ఒప్పుకు సెట్ చేసినట్లయితే, <ph name="PRODUCT_OS_NAME" /> వినియోగ ప్రమాణాలు మరియు విశ్లేషణ డేటాను నివేదిస్తుంది.
+      ఒప్పునకు సెట్ చేసినట్లయితే, <ph name="PRODUCT_OS_NAME" /> వినియోగ ప్రమాణాలు, స‌మ‌స్య విశ్లేషణ డేటాను నివేదిస్తుంది.
 
-      తప్పుకు సెట్ చేసినట్లయితే, ప్రమాణాలు మరియు విశ్లేషణ డేటా నివేదన నిలిపివేయబడుతుంది.
+      తప్పునకు సెట్ చేసినట్లయితే, ప్రమాణాలు, స‌మ‌స్య విశ్లేషణ డేటా నివేదన నిలిపివేయబడుతుంది.
 
-      కాన్ఫిగర్ చేయనట్లయితే, ప్రమాణాలు మరియు విశ్లేషణ డేటాను నివేదించడం నిర్వహించబడని పరికరాల్లో నిలిపివేయబడుతుంది మరియు నిర్వహించబడే పరికరాల్లో ప్రారంభించబడుతుంది.</translation>
-<translation id="1914840757300882918">ఈ విధానాన్ని సెట్ చేస్తే, హోస్ట్ RemoteAccessHostTokenValidationUrlకు ప్రామాణీకరించడానికి ఇచ్చిన జారీదారు CNతో క్లయింట్ ప్రమాణపత్రాన్ని ఉపయోగిస్తుంది. ఏదైనా అందుబాటులో ఉన్న క్లయింట్ ప్రమాణపత్రాన్ని ఉపయోగించడానికి దాన్ని "*"కి సెట్ చేయండి.
+      కాన్ఫిగర్ చేయనట్లయితే, ప్రమాణాలు, స‌మ‌స్య విశ్లేషణ డేటాను నివేదించడం నిర్వహించబడని పరికరాల్లో నిలిపివేయబడుతుంది. నిర్వహించబడే పరికరాల్లో ప్రారంభించబడుతుంది.</translation>
+<translation id="1914840757300882918">ఈ విధానాన్ని సెట్ చేస్తే, హోస్ట్ RemoteAccessHostTokenValidationUrlకు ప్రామాణీకరించడానికి ఇచ్చిన జారీదారు CNతో క్లయింట్ స‌ర్టిఫికెట్‌ను ఉపయోగిస్తుంది. ఏదైనా అందుబాటులో ఉన్న క్లయింట్ స‌ర్టిఫికెట్‌ను ఉపయోగించడానికి దాన్ని "*"కి సెట్ చేయండి.
 
-ఈ లక్షణం ప్రస్తుతం సర్వర్ తరపున నిలిపివేయబడింది.</translation>
+ఈ ఫీచ‌ర్‌ ప్రస్తుతం సర్వర్ తరఫున నిలిపివేయబడింది.</translation>
 <translation id="1920046221095339924">పరికరంలో నిర్వహించబడిన సెషన్‌ను అనుమతించండి</translation>
 <translation id="1929709556673267855">పరికరాలకు అనుకూలంగా ఉండే ఎంటర్‌ప్రైజ్ ప్రింటర్‌ల కోసం కాన్ఫిగరేషన్‌లను అందిస్తుంది.
 
@@ -462,7 +462,7 @@
 <translation id="2077273864382355561">బ్యాటరీ శక్తితో అమలవుతున్నప్పుడు స్క్రీన్ ఆపివేత ఆలస్యం</translation>
 <translation id="2082205219176343977">పరికరం కోసం అనుమతించబడిన కనిష్ట Chrome వెర్షన్‌ని కాన్ఫిగర్ చేయండి.</translation>
 <translation id="209586405398070749">స్టేబుల్ ఛానెల్</translation>
-<translation id="2098658257603918882">వినియోగం మరియు క్రాష్-సంబంధిత డేటాను నివేదించడం ప్రారంభించు</translation>
+<translation id="2098658257603918882">వినియోగం, క్రాష్-సంబంధిత డేటాను నివేదించడాన్ని ప్రారంభించు</translation>
 <translation id="2104418465060359056">ఎక్స్‌టెన్షన్‌లు మరియు ప్లగిన్‌లకు సంబంధించిన వివరాలను నివేదించడం</translation>
 <translation id="2111016292707172233"><ph name="PRODUCT_NAME" /> కంటెంట్ వీక్షణలో వెతకడానికి నొక్కండి ఫీచర్ లభ్యతను ప్రారంభిస్తుంది.
 
@@ -510,13 +510,13 @@
       మీరు ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, ప్రస్తుత వినియోగదారు కోసం అన్ని విధానం సెట్టింగ్‌లను మరియు నియంత్రణలను విస్మరించి వేరే విండోలో ఏవైనా క్యాప్టివ్ పోర్టల్ ప్రామాణీకరణ పేజీలు ప్రదర్శించబడతాయి (అంటే <ph name="PRODUCT_NAME" />విజయవంతమైన ఇంటర్నెట్ కనెక్షన్‌ని గుర్తించే వరకు క్యాప్టివ్ పోర్టల్ సైన్ ఇన్ పేజీతో ప్రారంభమయ్యే అన్ని వెబ్ పేజీలు).
 
       మీరు ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకుండా వదిలివేస్తే, ఏవైనా క్యాప్టివ్ పోర్టల్ ప్రామాణీకరణ పేజీలు ప్రస్తుత వినియోగదారు ప్రాక్సీ సెట్టింగ్‌లను ఉపయోగించి (సాధారణ) కొత్త బ్రౌజర్ ట్యాబ్‌లో చూపబడతాయి.</translation>
-<translation id="21394354835637379">ఎక్స్‌టెన్ష‌న్‌లను, యాప్‌లను, థీమ్‌లను ఇన్‌స్టాల్ చేయడానికి అనుమతించవలసిన URLలను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది.
+<translation id="21394354835637379">ఎక్స్‌టెన్ష‌న్‌ల‌ను, యాప్‌ల‌ను, థీమ్‌లను ఇన్‌స్టాల్ చేయడానికి అనుమతించవలసిన URLలను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది.
 
-<ph name="PRODUCT_NAME" /> 21, ప్రారంభంలో, Chrome వెబ్ స్టోర్ వెలుపల నుండి ఎక్స్‌టెన్ష‌న్‌లను, యాప్‌లను,  వినియోగదారు స్క్రిప్ట్‌లను ఇన్‌స్టాల్ చేయడం చాలా కష్టం. ఇది వ‌ర‌కు, వినియోగదారులు *.crx ఫైల్‌కు లింక్‌పై క్లిక్ చేస్తే, <ph name="PRODUCT_NAME" /> కొన్ని హెచ్చరికల తర్వాత ఫైల్‌ను ఇన్‌స్టాల్ చేసే అవకాశాన్ని అందిస్తుంది. <ph name="PRODUCT_NAME" /> 21 తర్వాత, ఇటువంటి ఫైల్‌లు తప్పనిసరిగా డౌన్‌లోడ్ చేయబడతాయి, ఆపై <ph name="PRODUCT_NAME" /> సెట్టింగ్‌ల పేజీకి లాగబడతాయి. ఈ సెట్టింగ్ నిర్దిష్ట URLలను పాత, సులభమైన ఇన్‌స్ట‌లేషన్ విధానాన్ని కలిగి ఉండటానికి అనుమతిస్తాయి.
+<ph name="PRODUCT_NAME" /> 21,ప్రారంభంలో, Chrome వెబ్ స్టోర్ వెలుపల నుండి ఎక్స్‌టెన్ష‌న్‌ల‌ను, యాప్‌ల‌ను, వినియోగదారు స్క్రిప్ట్‌లను ఇన్‌స్టాల్ చేయడం చాలా కష్టం. ఇదివ‌ర‌కు, వినియోగదారులు *.crx ఫైల్‌ లింక్‌పై క్లిక్ చేస్తే, <ph name="PRODUCT_NAME" /> కొన్ని హెచ్చరికల తర్వాత ఫైల్‌ను ఇన్‌స్టాల్ చేసే అవకాశాన్ని అందిస్తుంది. <ph name="PRODUCT_NAME" /> 21 తర్వాత, ఇటువంటి ఫైల్‌లు తప్పనిసరిగా డౌన్‌లోడ్ చేయబడతాయి. ఆపై <ph name="PRODUCT_NAME" /> సెట్టింగ్‌ల పేజీకి లాగబడతాయి. ఈ సెట్టింగ్ నిర్దిష్ట URLలను పాత, సులభమైన ఇన్‌స్ట‌లేషన్ విధానాన్ని కలిగి ఉండటానికి అనుమతిస్తాయి.
 
-ఈ జాబితాలోని ప్రతి అంశం ఒక ఎక్స్‌టెన్ష‌న్‌-శైలి సరిపోలిక నమూనా (http://code.google.com/chrome/extensions/match_patterns.htmlను చూడండి). వినియోగదారులు ఈ జాబితాలో అంశానికి సరిపోలే అంశాలను ఏ URL నుండి అయినా సులభంగా ఇన్‌స్టాల్ చేయగలుగుతారు. *.crx ఫైల్ మరియు డౌన్‌లోడ్ ప్రారంభమైన పేజీ రెండింటి స్థానాన్ని (అంటే సిఫార‌సు చేసిన వారు) ఈ నమూనాలు తప్పనిసరిగా అనుమతించాలి. ExtensionInstallBlacklist ఈ విధానం కంటే ముందే వర్తించబడుతుంది.
+ఈ జాబితాలోని ప్రతి అంశం ఒక ఎక్స్‌టెన్ష‌న్‌-శైలి సరిపోలిక నమూనా (http://code.google.com/chrome/extensions/match_patterns.htmlను చూడండి). వినియోగదారులు ఈ జాబితాలో అంశానికి సరిపోలే అంశాలను ఏ URL నుండి అయినా సులభంగా ఇన్‌స్టాల్ చేయగలుగుతారు. *.crx ఫైల్ మరియు డౌన్‌లోడ్ ప్రారంభమైన పేజీ రెండింటి స్థానాన్ని (అంటే రిఫరర్) ఈ నమూనాలు తప్పనిసరిగా అనుమతించాలి. ExtensionInstallBlacklist ఈ విధానం కంటే ముందే వర్తించబడుతుంది.
 
-ఈ విధానంపై <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> ప్రాధాన్యతను కలిగి ఉంటుంది. అంటే, నిరోధిత జాబితాలోని ఎక్స్‌టెన్ష‌న్‌ ఈ జాబితాలో సైట్ నుండి సంభవించినా కూడా ఇన్‌స్టాల్ చేయబడదు.</translation>
+<ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> ఈ విధానంపై ప్రాధాన్యతను కలిగి ఉంటుంది. అంటే, బ్లాక్‌లిస్ట్‌లోని ఎక్స్‌టెన్ష‌న్‌ ఈ జాబితాలో సైట్ నుండి సంభవించినా కూడా ఇన్‌స్టాల్ చేయబడదు.</translation>
 <translation id="214901426630414675">ముద్రణ డ్యూప్లెక్స్ మోడ్‌ని పరిమితం చేయండి</translation>
 <translation id="2149330464730004005">రంగు ముద్రణను ప్రారంభించండి</translation>
 <translation id="2156132677421487971"><ph name="PRODUCT_NAME" /> కోసం విధానాలను కాన్ఫిగర్ చేస్తుంది, ఈ లక్షణం సహాయంతో వినియోగదారులు బ్రౌజర్ నుండి ట్యాబ్‌లు, సైట్‌లు లేదా డెస్క్‌టాప్ కంటెంట్‌లను రిమోట్ డిస్‌ప్లేలు మరియు సౌండ్ సిస్టమ్‌లకు పంపగలుగుతారు.</translation>
@@ -644,11 +644,11 @@
 
       విధానాన్ని ఒప్పుకు సెట్ చేస్తే, ఈవెంట్‌లు లాగ్ చేయబడతాయి.
       విధానాన్ని తప్పుకు సెట్ చేస్తే లేదా అసలు సెట్ చేయకపోతే, ఈవెంట్‌లు లాగ్ చేయబడవు.</translation>
-<translation id="244317009688098048">ఆటోమేటిక్‌-లాగిన్ కోసం బెయిల్అవుట్‌ కీబోర్డ్ షార్ట్‌క‌ట్‌ను ప్రారంభించండి.
+<translation id="244317009688098048">స్వీయ-లాగిన్ కోసం బెయిల్అవుట్ కీబోర్డ్ షార్ట్‌క‌ట్‌ను ప్రారంభించండి.
 
-      ఈ విధానాన్ని సెట్ చేయకపోతే లేదా ఒప్పున‌కు సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతాను సున్నా-ఆలస్యపు ఆటోమేటిక్‌-లాగిన్‌కు కాన్ఫిగర్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> ఆటోమేటిక్‌-లాగిన్‌ను తప్పించి, లాగిన్ స్క్రీన్‌ను చూపడం కోసం కీబోర్డ్ షార్ట్‌క‌ట్‌ Ctrl+Alt+Sను ఆమోదిస్తుంది.
+      ఈ విధానాన్ని సెట్ చేయకపోతే లేదా ఒప్పునకు సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతాను సున్నా-ఆలస్యపు స్వీయ-లాగిన్‌కు కాన్ఫిగర్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> స్వీయ-లాగిన్‌ను తప్పించి, లాగిన్ స్క్రీన్‌ను చూపడం కోసం కీబోర్డ్ సత్వరమార్గం Ctrl+Alt+Sను ఆమోదిస్తుంది.
 
-      ఈ విధానాన్ని తప్పున‌కు సెట్ చేస్తే, సున్నా-ఆలస్యపు ఆటోమేటిక్‌-లాగిన్ (కాన్ఫిగర్ చేసి ఉంటే) తప్పించబడదు.</translation>
+      ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, సున్నా-ఆలస్యపు స్వీయ-లాగిన్ (కాన్ఫిగర్ చేసి ఉంటే) తప్పించబడదు.</translation>
 <translation id="2463365186486772703">అప్లికేషన్ భాష</translation>
 <translation id="2466131534462628618">క్యాప్టివ్ పోర్టల్ ప్రామాణీకరణ ప్రాక్సీని విస్మరిస్తుంది</translation>
 <translation id="2482676533225429905">స్థానిక సందేశ పద్ధతి</translation>
@@ -666,9 +666,9 @@
       ఈ విధానాన్ని సెట్ చేయకుంటే, సర్టిఫికెట్ పారదర్శకత ద్వారా బహిరంగపరచాల్సిన ఏదైనా సర్టిఫికెట్, సర్టిఫికెట్ పారదర్శకత విధానానికి అనుగుణంగా బహిరంగపరచని పక్షంలో అవిశ్వసనీయమైనదిగా పరిగణించబడుతుంది.</translation>
 <translation id="2488010520405124654">ఆఫ్‌లైన్‌లో ఉన్నప్పుడు నెట్‌వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్‌ను ప్రారంభించండి.
 
-      ఈ విధానాన్ని సెట్ చేయకపోతే లేదా ఒప్పున‌కు సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతా సున్నా ఆలస్యపు ఆటోమేటిక్‌-లాగిన్ కోసం కాన్ఫిగర్ చేయబడితే మరియు పరికరం ఇంటర్నెట్‌కు యాక్సెస్‌ను కలిగి ఉండకపోతే, <ph name="PRODUCT_OS_NAME" /> నెట్‌వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్‌ను చూపుతుంది.
+      ఈ విధానాన్ని సెట్ చేయకపోతే లేదా ఒప్పునకు సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతా సున్నా ఆలస్యపు స్వీయ-లాగిన్ కోసం కాన్ఫిగర్ చేయబడితే మరియు పరికరం ఇంటర్నెట్‌కు యాక్సెస్‌ను కలిగి ఉండకపోతే, <ph name="PRODUCT_OS_NAME" /> నెట్‌వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్‌ను చూపుతుంది.
 
-      ఈ విధానాన్ని తప్పున‌కు సెట్ చేస్తే, నెట్‌వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్‌కు బదులుగా ఎర్ర‌ర్‌ సందేశం క‌నిపిస్తుంది.</translation>
+      ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, నెట్‌వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్‌కు బదులుగా లోప సందేశం ప్రదర్శించబడుతుంది.</translation>
 <translation id="2498238926436517902">అరను ఎల్లప్పుడూ స్వయంచాలకంగా దాచు</translation>
 <translation id="2514328368635166290">డిఫాల్ట్ శోధన ప్రొవైడర్ యొక్క ఇష్టమైన చిహ్నం URLను పేర్కొంటుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రొవైడర్‌కు చిహ్నం ఉండదు. ఈ విధానం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation>
 <translation id="2516600974234263142"><ph name="PRODUCT_NAME" />లో ముద్రించడాన్ని ప్రారంభిస్తుంది మరియు వినియోగదారులు ఈ సెట్టింగ్‌ను మార్చకుండా నిరోధిస్తుంది.
@@ -800,13 +800,13 @@
       విధానాన్ని తప్పు అని సెట్ చేసినట్లయితే, వినియోగదారులు తమ స్వంత స్థానిక ప్రింటర్‌లను జోడించలేరు మరియు కాన్ఫిగర్ చేయలేరు. మునుపు కాన్ఫిగర్ చేయబడిన స్థానిక ప్రింటర్‌లు వేటినైనా ఉపయోగించి కూడా వారు ముద్రించలేరు.
       </translation>
 <translation id="2805707493867224476">పాప్-అప్‌లను చూపించడానికి అన్ని సైట్‌లను అనుమతించు</translation>
-<translation id="2808013382476173118">ఈ మెషిన్‌తో కనెక్షన్‌ ఏర్పాటు చేయడానికి రిమోట్ క్లయింట్‌లు ప్రయత్నిస్తున్నప్పుడు STUN సర్వర్‌ల వినియోగాన్ని ప్రారంభిస్తుంది.
+<translation id="2808013382476173118">రిమోట్ క్లయింట్‌లు ఈ మెషీన్‌కు కనెక్షన్‌ను ఏర్పాటు చేయడానికి ప్రయత్నిస్తున్నప్పుడు STUN సర్వర్‌ల వినియోగాన్ని ప్రారంభిస్తుంది.
 
-          ఈ సెట్టింగ్ ప్రారంభించిన‌ట్ల‌యితే, ఈ మెషిన్‌లు ఫైర్‌వాల్‌ ద్వారా వేరు అయినా కూడా రిమోట్ క్లయింట్‌లు వాటిని గుర్తించగలుగుతాయి, వాటికి కనెక్ట్ అవుతాయి.
+          ఈ సెట్టింగ్ ప్రారంభించబడితే, అప్పుడు ఈ మెషీన్‌లు ఫైర్‌వాల్‌ ద్వారా వేరు చేయబడినప్పటికీ రిమోట్ క్లయింట్‌లు వాటిని గుర్తించగలుగుతాయి. వాటికి కనెక్ట్ అవుతాయి.
 
-          ఈ సెట్టింగ్ నిలిపివేసిన‌ట్ల‌యితే, అవుట్‌గోయింగ్ UDP కనెక్షన్‌లు ఫైర్‌వాల్ ద్వారా ఫిల్టర్ అయిన‌ట్ల‌యితే, అప్పుడు ఈ మెషిన్ స్థానిక నెట్‌వర్క్‌లోని క్లయింట్ మెషిన్‌ల నుండి మాత్రమే కనెక్షన్‌లను అనుమతిస్తుంది.
+          ఈ సెట్టింగ్ నిలిపివేయబడితే మరియు అవుట్‌గోయింగ్ UDP కనెక్షన్‌లు ఫైర్‌వాల్ ద్వారా ఫిల్టర్ చేయబడితే, అప్పుడు ఈ మెషీన్ స్థానిక నెట్‌వర్క్‌లోని క్లయింట్ మెషీన్‌ల నుండి మాత్రమే కనెక్షన్‌లను అనుమతిస్తుంది.
 
-          ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, సెట్టింగ్ ప్రారంభ‌మ‌వుతుంది.</translation>
+          ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, సెట్టింగ్ ప్రారంభించబడుతుంది.</translation>
 <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> క్లయింట్‌ల కోసం Windows రిజిస్ట్రీ స్థానం:</translation>
 <translation id="2824715612115726353">అజ్ఞాత మోడ్‌ని ప్రారంభించు</translation>
 <translation id="283695852388224413">విధానం సెట్ చేయబడితే, కాన్ఫిగర్ చేయబడిన PIN యొక్క గరిష్ట అంకెల పరిమితి అమలు చేయబడుతుంది. విలువ 0 లేదా తక్కువ ఉంటే గరిష్ట అంకెల పరిమితి ఉండదు; ఆ సందర్భంలో వినియోగదారు ఎంత పొడవాటి PINని అయినా సెట్ చేసుకోవచ్చు. ఈ సెట్టింగ్ <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> కంటే తక్కువ ఉండి, 0 కంటే పెద్దది అయితే, గరిష్ట అంకెల పరిమితి కనిష్ట అంకెల పరిమితికి సమానంగా ఉంటుంది.
@@ -989,9 +989,9 @@
 <translation id="3288595667065905535">విడుదల ఛానెల్</translation>
 <translation id="3292147213643666827"><ph name="CLOUD_PRINT_NAME" /> మరియు మెషీన్‌కు కనెక్ట్ చేయబడిన లెగసీ ప్రింటర్‌ల మధ్య ప్రాక్సీ లాగా వ్యవహరించడానికి <ph name="PRODUCT_NAME" />ను ప్రారంభిస్తుంది.
 
-      ఈ సెట్టింగ్ ప్రారంభించబడినా లేదా కాన్ఫిగర్ చేయకపోయినా, వినియోగదారులు వారి Google ఖాతాతో ప్ర‌మాణీకరణ ద్వారా క్లౌడ్ ప్రింట్‌ ప్రాక్సీని ప్రారంభించవచ్చు.
+      ఈ సెట్టింగ్ ప్రారంభించబడినా లేదా కాన్ఫిగర్ చేయకపోయినా, వినియోగదారులు వారి Google ఖాతాతో ప్రామాణీకరణ ద్వారా క్లౌడ్ ప్రింట్‌ ప్రాక్సీని ప్రారంభించవచ్చు.
 
-      ఈ సెట్టింగ్‌ను నిలిపివేస్తే, వినియోగదారులు ప్రాక్సీని ప్రారంభించలేరు మరియు మెషీన్ దాని ప్రింటర్‌లను <ph name="CLOUD_PRINT_NAME" />తో భాగస్వామ్యం చేయడానికి అనుమతించబడదు.</translation>
+      ఈ సెట్టింగ్‌ను నిలిపివేస్తే, వినియోగదారులు ప్రాక్సీని ప్రారంభించలేరు. మెషీన్ దాని ప్రింటర్‌లను <ph name="CLOUD_PRINT_NAME" />తో షేర్‌ చేయడానికి అనుమతించబడదు.</translation>
 <translation id="3307746730474515290">ఏయే యాప్/ఎక్స్‌టెన్షన్ రకాలను ఇన్‌స్టాల్ చేసేందుకు అనుమతించాలో నియంత్రిస్తుంది మరియు అమలు సమయ యాక్సెస్‌ని పరిమితం చేస్తుంది.
 
           <ph name="PRODUCT_NAME" />లో ఇన్‌స్టాల్ చేయగల యాప్/ఎక్స్‌టెన్షన్ రకాలను మరియు అవి పరస్పర చర్య చేయగల హోస్ట్‌లను ఈ సెట్టింగ్ అనుమతిస్తుంది. విలువ అనేది పదబంధాల జాబితా, ప్రతి దానిలో కింది వాటిలో ఒకటి ఉండాలి: "user_script", "hosted_app", "legacy_packaged_app", "platform_app". ఈ రకాలకు సంబంధించిన మరింత సమాచారం కావాలంటే, <ph name="PRODUCT_NAME" /> ఎక్స్‌టెన్షన్ల పత్రాలను చూడండి.
@@ -1076,9 +1076,9 @@
 <translation id="3478024346823118645">సైన్-అవుట్‌లో వినియోగదారు డేటాని తుడిచివేయి</translation>
 <translation id="348495353354674884">వర్చువల్ కీబోర్డ్‌ను ప్రారంభించు</translation>
 <translation id="3487623755010328395">
-        ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_NAME" /> స్వయంగా నమోదు చేయడానికి మరియు అన్ని ప్రొఫైల్‌లతో అనుబంధించబడిన క్లౌడ్ విధానాన్ని వర్తింపజేయడానికి ప్రయత్నిస్తుంది.
+        ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_NAME" /> స్వయంగా నమోదు చేయడానికి, అన్ని ప్రొఫైల్‌లతో అనుబంధించబడిన క్లౌడ్ విధానాన్ని వర్తింపజేయడానికి ప్రయత్నిస్తుంది.
 
-         ఈ విధానం యొక్క విలువ Google నిర్వాహక కన్సోల్ నుండి పునరుద్ధరించబడే నమోదు టొకెన్.</translation>
+         ఈ విధానం విలువ, Google నిర్వాహక కన్సోల్ నుండి పునరుద్ధరించబడే నమోదు టొకెన్.</translation>
 <translation id="3489247539215560634">ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, <ph name="PRODUCT_NAME" /> వినియోగదారుల పాస్‌వర్డ్‌లను గుర్తు పెట్టుకొని వారు సైట్‌కు తదుపరిసారి లాగిన్ చేసినప్పుడు స్వయంచాలకంగా అందిస్తుంది.
 
 ఈ సెట్టింగ్‌ను నిలిపివేస్తే, వినియోగదారులు కొత్త పాస్‌వర్డ్‌లను సేవ్ చేయలేరు కానీ మునుపు సేవ్ చేసిన పాస్‌వర్డ్‌లను ఇప్పటికీ ఉపయోగించవచ్చు.
@@ -1100,7 +1100,7 @@
 
           'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation>
 <translation id="350797926066071931">అనువాదాన్ని ప్రారంభించు</translation>
-<translation id="3512226956150568738">ARCని అమలు చేయడం కోసం ext4కు తరలించాల్సి రావడం కంటే ముందే క్లయిట్ పరికర మోడల్‌లో ARCకి మద్దతు ఉన్నట్లయితే మరియ ArcEnabled విధానం ఒప్పు అని సెట్ చేయబడి ఉంటే, ఈ ఎంపిక AskUser (విలువ 3) వలె ప్రవర్తిస్తుంది. మిగిలిన అన్ని సందర్భాలలో (పరికర మోడల్‌లో ముందుగా ARCకి మద్దతు లేకుంటే లేదా ArcEnabled విధానం తప్పు వలె సెట్ చేయబడి ఉంటే), ఈ విలువ DisallowArc (విలువ 0)కు సమానం.</translation>
+<translation id="3512226956150568738">ARCని అమలు చేయడం కోసం ext4కు తరలించాల్సి రావడం కంటే ముందే క్లయింట్ పరికర మోడల్‌లో ARCకి మద్దతు ఉన్నట్లయితే, ArcEnabled విధానం ఒప్పు అని సెట్ చేయబడి ఉంటే, ఈ ఎంపిక AskUser (విలువ 3) లాగా ప్రవర్తిస్తుంది. మిగిలిన అన్ని సందర్భాలలో (పరికర మోడల్‌లో ముందుగా ARCకి మద్దతు లేకుంటే లేదా ArcEnabled విధానం తప్పు లాగా సెట్ చేయబడి ఉంటే), ఈ విలువ DisallowArc (విలువ 0)కు సమానం.</translation>
 <translation id="3513655665999652754">Quirks Server మానిటర్ క్రమాంకనాన్ని సర్దుబాటు చేయడానికి ICC డిస్‌ప్లే ప్రొఫైల్‌ల వంటి హార్డ్‌వేర్-నిర్దిష్ట కాన్ఫిగరేషన్ ఫైల్‌లను అందిస్తుంది.
 
 ఈ విధానాన్ని తప్పున‌కు సెట్ చేసినప్పుడు, పరికరం కాన్ఫిగరేషన్ ఫైల్‌లను డౌన్‌లోడ్ చేయడం కోసం Quirks Serverను సంప్రదించడానికి ప్రయత్నించదు.
@@ -1139,7 +1139,7 @@
 <translation id="3702647575225525306"><ph name="POLICY_NAME" /> (ఏక-పంక్తి ఫీల్డ్ విస్మరించబడింది మరియు భవిష్యత్తులో తీసివేయబడుతుంది. దయచేసి కింద ఉన్న బహుళ పంక్తి వచన పెట్టెను ఉపయోగించడం ప్రారంభించండి.)</translation>
 <translation id="3709266154059827597">పొడిగింపు వ్యవస్థాపన ఆమోదంకానిజాబితాని కాన్ఫిగర్ చెయ్యి</translation>
 <translation id="3711895659073496551">తాత్కాలికంగా నిలిపివేయడం</translation>
-<translation id="3715569262675717862">క్లయింట్ సర్టిఫికెట్‌ల ఆధారంగా ప్రమాణీకరణ</translation>
+<translation id="3715569262675717862">క్లయింట్ సర్టిఫికెట్‌ల ఆధారంగా ప్రామాణీకరణ</translation>
 <translation id="3734995764843493369">పాస్‌వర్డ్ నమోదు ప్రతి రోజు (24 గంటలకు) అవసరమవుతుంది</translation>
 <translation id="3736879847913515635">వినియోగదారు మేనేజర్‌లో 'వ్యక్తిని జోడించు' ఎంపికను ప్రారంభించండి</translation>
 <translation id="3748900290998155147">సాధారణ స్థితికి తీసుకువచ్చే లాక్‌లు అనుమతించబడాలో లేదో పేర్కొంటుంది. సాధారణ స్థితికి తీసుకువచ్చే లాక్‌లను పవర్ నిర్వహణ ఎక్స్‌టెన్షన్‌ API ద్వారా మరియు ARC యాప్‌ల ద్వారా ఎక్స్‌టెన్షన్‌లతో అభ్యర్థించవచ్చు.
@@ -1307,7 +1307,7 @@
           దీన్ని తప్పునకు సెట్ చేస్తే లేదా ఏదీ సెట్ చేయకుంటే, సర్టిఫికెట్ ఏదీ రూపొందించబడదు మరియు enterprise.platformKeys ఎక్స్‌టెన్షన్ APIకి చేసే కాల్‌లు విఫలమవుతాయి.</translation>
 <translation id="3965339130942650562">నిష్క్రియ వినియోగదారు లాగ్-అవుట్ అమలు అయ్యే వరకు ముగింపు సమయం</translation>
 <translation id="3973371701361892765">అరను ఎప్పుడూ స్వయంచాలకంగా దాచవద్దు</translation>
-<translation id="3984028218719007910">లాగ్ అవుట్ చేసిన తర్వాత స్థానిక ఖాతా డేటాని <ph name="PRODUCT_OS_NAME" /> ఉంచుతుందో లేదో నిర్ధారిస్తుంది. ఒప్పుకి సెట్ చేయబడితే, <ph name="PRODUCT_OS_NAME" /> ద్వారా నిరంతర ఖాతాలు ఉండబడవు మరియు వినియోగదారు సెషన్ నుండి మొత్తం డేటా లాగ్ అవుట్ చేయబడిన తర్వాత విస్మరించబడతాయి. ఈ విధానం తప్పుకి సెట్ చేయబడితే లేదా కాన్ఫిగర్ చేయబడితే, పరికరం స్థానిక వినియోగదారు డేటాని ఉంచవచ్చు (గుప్తీకరించిన).</translation>
+<translation id="3984028218719007910">లాగ్ అవుట్ చేసిన తర్వాత స్థానిక ఖాతా డేటాను <ph name="PRODUCT_OS_NAME" /> ఉంచుతుందో లేదో నిర్ధారిస్తుంది. ఒప్పున‌కు సెట్ చేయబడితే, <ph name="PRODUCT_OS_NAME" /> ద్వారా నిరంతర ఖాతాలు ఉంచ‌బడవు. వినియోగదారు సెషన్ నుండి లాగ్ అవుట్ చేయబడిన తర్వాత మొత్తం డేటా విస్మరించబ‌డుతుంది. ఈ విధానం తప్పున‌కు సెట్ చేయబడితే లేదా కాన్ఫిగర్ చేయబడితే, పరికరం స్థానిక వినియోగదారు డేటాను ఉంచవచ్చు (గుప్తీకరించినది).</translation>
 <translation id="3997519162482760140">SAML లాగిన్ పేజీల్లో వీడియో సంగ్రహణ పరికరాలకు యాక్సెస్ మంజూరు చేయబడే URLలు</translation>
 <translation id="4001275826058808087">Chrome OS నమోదు ద్వారా ఆఫర్‌లను రీడీమ్ చేయడానికి వినియోగదారులను అనుమతించాలా లేదా అనేదాన్ని నియంత్రించడానికి ఎంటర్‌ప్రైజ్ పరికరాల కోసం IT నిర్వాహకులు ఈ ఫ్లాగ్‌ను ఉపయోగించవచ్చు .
 
@@ -1384,17 +1384,17 @@
 <translation id="4138655880188755661">సమయ పరిమితి</translation>
 <translation id="4157003184375321727">OS మరియు ఫర్మ్‌వేర్ వెర్షన్‌ను నివేదించు</translation>
 <translation id="4157594634940419685">స్థానిక CUPS ప్రింటర్‌లకు యాక్సెస్‌ని అనుమతించండి</translation>
-<translation id="4163705126749612234">రిమోట్ ప్రాప్యత క్లయింట్‌లపై విధించబడే అవసరమైన క్లయింట్ డొమైన్ పేరుని కాన్ఫిగర్ చేస్తుంది మరియు దాన్ని మార్చనీయకుండా వినియోగదారులను నిరోధిస్తుంది.
+<translation id="4163705126749612234">రిమోట్ యాక్సెస్‌ క్లయింట్‌లపై విధించబడే అవసరమైన క్లయింట్ డొమైన్ పేరును కాన్ఫిగర్ చేస్తుంది.  దాన్ని మార్చనీయకుండా వినియోగదారులను నిరోధిస్తుంది.
 
-ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు కేవలం నిర్దిష్ట డొమైన్‌లలో ఒకదానిలోని క్లయింట్‌లు మాత్రమే హోస్ట్‌కి కనెక్ట్ అవగలగుతాయి.
+ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు కేవలం నిర్దిష్ట డొమైన్‌లలో ఒకదానిలోని క్లయింట్‌లు మాత్రమే హోస్ట్‌కు కనెక్ట్ అవగలగుతాయి.
 
-ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకపోతే, కనెక్షన్ రకం కోసం డిఫాల్ట్ విధానం వర్తింపజేయబడుతుంది. రిమోట్ సహాయం కోసం, ఏ డొమైన్‌లోని క్లయింట్‌లు అయినా హోస్ట్‌కి కనెక్ట్ చేయడానికి ఇది అనుమతిస్తుంది; ఏ సమయంలోనైనా రిమోట్ ప్రాప్యత కోసం, హోస్ట్ యజమాని మాత్రమే కనెక్ట్ చేయగలరు.
+ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకపోతే, కనెక్షన్ రకం కోసం డిఫాల్ట్ విధానం వర్తింపజేయబడుతుంది. రిమోట్ సహాయం కోసం, ఏ డొమైన్‌లోని క్లయింట్‌లు అయినా హోస్ట్‌కు కనెక్ట్ చేయడానికి ఇది అనుమతిస్తుంది; ఏ సమయంలోనైనా రిమోట్ యాక్సెస్‌ కోసం, హోస్ట్ యజమాని మాత్రమే కనెక్ట్ చేయగలరు.
 
-ఒకవేళ ఉంటే ఈ సెట్టింగ్ RemoteAccessHostClientDomainని భర్తీ చేస్తుంది.
+ఒకవేళ ఉంటే ఈ సెట్టింగ్ RemoteAccessHostClientDomainను అధిగ‌మిస్తుంది.
 
-RemoteAccessHostDomainListని కూడా చూడండి.</translation>
+RemoteAccessHostDomainListను కూడా చూడండి.</translation>
 <translation id="4183229833636799228">డిఫాల్ట్ <ph name="FLASH_PLUGIN_NAME" /> సెట్టింగ్</translation>
-<translation id="4192388905594723944">రిమోట్ యాక్సెస్ క్లయింట్ ప్రమాణీకరణ టోకెన్‌ని ధృవీకరించే URL</translation>
+<translation id="4192388905594723944">రిమోట్ యాక్సెస్‌ క్లయింట్ ప్రామాణీకరణ టోకెన్‌ను ధృవీకరించే URL</translation>
 <translation id="4203389617541558220">ఆటోమేటిక్ రీబూట్‌లను షెడ్యూల్ చేయడం ద్వారా పరికరం యొక్క లభ్యతను పరిమితం చేయండి.
 
       ఈ విధానాన్ని సెట్ చేసినప్పుడు, ఇది ఆటోమేటిక్ రీబూట్ షెడ్యూల్ చేయబడిన తర్వాత పరికరం యొక్క లభ్యత నిడివిని నిర్దేశిస్తుంది.
@@ -1470,13 +1470,13 @@
 <translation id="4347908978527632940">ఒప్పు అయి ఉండి, వినియోగదారు పర్యవేక్షించబడే వినియోగదారు అయినట్లైతే, అప్పుడు ఇతర Android యాప్‌లు కంటెంట్ ప్రదాత ద్వారా వినియోగదారు వెబ్ నియంత్రణలను ప్రశ్నించవచ్చు.
 
           తప్పు అయితే లేదా సెట్ చేయకపోతే, అప్పుడు కంటెంట్ ప్రదాత సమాచారం ఏదీ అందించదు.</translation>
-<translation id="435461861920493948"><ph name="PRODUCT_NAME" />లో ఖాతా దృశ్యమానతను నియంత్రించడానికి ఉపయోగించే నమూనాల జాబితాని కలిగి ఉంటుంది.
+<translation id="435461861920493948"><ph name="PRODUCT_NAME" />లో ఖాతా దృశ్యమానతను నియంత్రించడానికి ఉపయోగించే నమూనాల జాబితాను కలిగి ఉంటుంది.
 
       <ph name="PRODUCT_NAME" />లో ఖాతా దృశ్యమానతను నిర్ధారించడం కోసం ఈ విధానంలో నిల్వ చేయబడిన నమూనాలతో పరికరంలోని ప్రతి ఖాతా సరిపోల్చబడుతుంది. జాబితాలోని ఏదైనా నమూనాకు సరిపోలినట్లయితే ఖాతా కనిపిస్తుంది. లేదంటే, ఖాతా దాచబడుతుంది.
 
       సున్నా లేదా మరిన్ని నిర్హేతుక అక్షరాలతో సరిపోల్చడానికి వైల్డ్‌కార్డ్ అక్షరం '*'ని ఉపయోగించండి. పలాయన అక్షరం '\' అయితే, వాస్తవ '*' లేదా '\' అక్షరాలతో సరిపోల్చడానికి, మీరు వాటి ముందు '\' ఉంచండి.
 
-     ఒకవేళ ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, పరికరంలోని అన్ని Google ఖాతాలు <ph name="PRODUCT_NAME" />లో కనిపిస్తాయి.</translation>
+     ఒకవేళ ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఆపై పరికరంలోని అన్ని Google ఖాతాలు <ph name="PRODUCT_NAME" />లో కనిపిస్తాయి.</translation>
 <translation id="4360826270668210664">ఈ విధానాన్ని సెట్ చేస్తే, రిమోట్ యాక్సెస్ హోస్ట్‌ కనెక్ట్ అయ్యే క్రమంలో క్లయింట్‌లు ఈ URL నుండి ప్రమాణీకరణ టోకెన్‌ను పొందేలా ప్రమాణీకరించడం అవసరం. ఖచ్చితంగా RemoteAccessHostTokenValidationUrlతో కలయికలో ఉపయోగించాలి.
 
 ఈ ఫీచర్ ప్రస్తుతం సర్వర్ తరపున నిలిపివేయబడింది.</translation>
@@ -1561,9 +1561,9 @@
 <translation id="4555850956567117258">వినియోగదారు కోసం రిమోట్ ధృవీకరణను ప్రారంభించండి</translation>
 <translation id="4557134566541205630">డిఫాల్ట్ శోధన ప్రదాత కొత్త ట్యాబ్ పేజీ URL</translation>
 <translation id="4567137030726189378">డెవలపర్ సాధనాల వినియోగాన్ని అనుమతించండి</translation>
-<translation id="4578912515887794133">ఈ సెట్టింగ్ ప్రారంభించబడితే, రిమోట్ యాక్సెస్ హోస్ట్ స్థానిక వినియోగదారు పేరు (హోస్ట్ అనుబంధించబడిన) మరియు హోస్ట్ యజమాని వలె నమోదు చేయబడిన Google ఖాతా పేరును (అంటే హోస్ట్ యజమాని "johndoe@example.com" Google ఖాతా అయితే, "johndoe" ఖాతా పేరుగా పరిగణించబడుతుంది) సరిపోల్చుతుంది. హోస్ట్ యజమాని పేరు హోస్ట్ అనుబంధించబడిన స్థానిక వినియోగదారు పేరుకు భిన్నంగా ఉంటే రిమోట్ యాక్సెస్ హోస్ట్ ప్రారంభించబడదు. పేర్కొన్న డొమైన్‌తో (అంటే "example.com") అనుబంధించబడిన హోస్ట్ యజమాని Google ఖాతాను కూడా అమలు చేయడానికి RemoteAccessHostMatchUsername విధానాన్ని తప్పనిసరిగా RemoteAccessHostDomainతో కలిపి ఉపయోగించబడుతుంది.
+<translation id="4578912515887794133">ఈ సెట్టింగ్ ప్రారంభించబడితే, రిమోట్ యాక్సెస్‌ హోస్ట్, స్థానిక వినియోగదారు పేరును (హోస్ట్ అనుబంధించబడిన), హోస్ట్ యజమాని లాగా నమోదు చేయబడిన Google ఖాతా పేరును (అంటే హోస్ట్ యజమాని "johndoe@example.com" Google ఖాతా అయితే, "johndoe" ఖాతా పేరుగా పరిగణించబడుతుంది) సరిపోల్చుతుంది. హోస్ట్ యజమాని పేరు హోస్ట్ అనుబంధించబడిన స్థానిక వినియోగదారు పేరుకు భిన్నంగా ఉంటే రిమోట్ యాక్సెస్‌ హోస్ట్ ప్రారంభించబడదు. పేర్కొన్న డొమైన్‌తో (అంటే "example.com") అనుబంధించబడిన హోస్ట్ యజమాని Google ఖాతాను కూడా అమలు చేయడానికి RemoteAccessHostMatchUsername విధానాన్ని తప్పనిసరిగా RemoteAccessHostDomainతో కలిపి ఉపయోగించబడుతుంది.
 
-ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకుంటే, రిమోట్ యాక్సెస్ హోస్ట్ ఏ స్థానిక వినియోగదారుతో అయినా అనుబంధించబడుతుంది.</translation>
+ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకుంటే, రిమోట్ యాక్సెస్‌ హోస్ట్ ఏ స్థానిక వినియోగదారుతో అయినా అనుబంధించబడుతుంది.</translation>
 <translation id="4600786265870346112">పెద్ద కర్సర్‌ను ప్రారంభించండి</translation>
 <translation id="4604931264910482931">స్థానిక సందేశ పద్ధతి నిరోధిత జాబితాను కాన్ఫిగర్ చేయండి</translation>
 <translation id="4613508646038788144">ఒకవేళ విధానాన్ని తప్పుకు సెట్ చేస్తే మూడవ పక్షం సాఫ్ట్‌వేర్ Chrome వ్యవహార విధానాల్లో అమలు చేయగల కోడ్‌ను చొప్పించడానికి అనుమతించబడుతుంది. ఒకవేళ విధానాన్ని సెట్ చేయకున్నా లేదా ఒప్పుకు సెట్ చేసినా, మూడవ పక్షం సాఫ్ట్‌వేర్ Chrome వ్యవహార విధానాల్లో అమలు చేయగల కోడ్‌ను చొప్పించనీయకుండా అడ్డుకోబడుతుంది.</translation>
@@ -1617,7 +1617,7 @@
           అనేక సర్వర్ పేర్లు ఉంటే, వాటిని కామాలతో వేరు చేయండి. వైల్డ్‌కార్డ్‌లు (*) అనుమతించబడతాయి.
 
           మీరు ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, సర్వర్ ఇంట్రానెట్‌గా గుర్తించబడినప్పటికీ కూడా <ph name="PRODUCT_NAME" /> వినియోగదారు ఆధారాలకు అధికారం ఇవ్వదు.</translation>
-<translation id="4752880493649142945">RemoteAccessHostTokenValidationUrlకి కనెక్ట్ చేయడానికి క్లయింట్ ప్రమాణపత్రం</translation>
+<translation id="4752880493649142945">RemoteAccessHostTokenValidationUrlకు కనెక్ట్ చేయడానికి క్లయింట్ స‌ర్టిఫికెట్‌</translation>
 <translation id="4757671984625088193">ఇది ఒప్పుకి సెట్ చేయబడినా చేయబడకపోయినా, <ph name="PRODUCT_NAME" /> ప్రస్తుత పేజీకి సంబంధించిన పేజీలనే సూచిస్తుంది.
       ఈ సూచనలు Google సర్వర్‌ల నుండి రిమోట్‌గా అందించబడతాయి.
 
@@ -1685,14 +1685,12 @@
 
       ఈ విధానం తప్పు అని సెట్ చేస్తే, వినియోగదారు మేనేజర్ నుండి కొత్త ప్రొఫైల్‌లను సృష్టించడానికి <ph name="PRODUCT_NAME" /> అనుమతించదు.</translation>
 <translation id="4970855112942626932">బ్రౌజర్ సైన్-ఇన్‌ని నిలిపివేయండి</translation>
-<translation id="4971529314808359013">సైట్ సర్టిఫికెట్‌ను అభ్యర్థిస్తే, <ph name="PRODUCT_NAME" /> ఆటోమేటిక్‌గా క్లయింట్ సర్టిఫికెట్‌ను ఎంచుకోవాల్సిన సైట్‌లను పేర్కొనే url నమూనాల జాబితాను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది.
+<translation id="4971529314808359013">సైట్, స‌ర్టిఫికెట్‌ను అభ్యర్థిస్తే, <ph name="PRODUCT_NAME" /> ఆటోమేటిక్‌గా క్లయింట్ స‌ర్టిఫికెట్‌ను ఎంచుకోవాల్సిన సైట్‌లను పేర్కొనే url నమూనాల జాబితాను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది.
 
-          విలువ తప్పనిసరిగా వచన ఫార్మాటుకు 
- మార్చబడిన JSON నిఘంటువుల శ్రేణి అయ్యి ఉండాలి. ప్రతి నిఘంటువు తప్పనిసరిగా { "pattern": "$URL_PATTERN", "filter" : $FILTER } ఫార్మాట్లో
- ఉండాలి, $URL_PATTERN అనేది కంటెంట్ సెట్టింగ్ నమూనా. $FILTER బ్రౌజర్ ఆటోమేటిక్‌గా ఎంచుకునే క్లయింట్ సర్టిఫికెట్లను నియంత్రిస్తుంది. ఫిల్టర్‌తో సంబంధం లేకుండా, సర్వర్ సర్టిఫికెట్ అభ్యర్థనకు సరిపోలే సర్టిఫికెట్లు మాత్రమే ఎంచుకోబడతాయి. $FILTER { "ISSUER": { "CN": "$ISSUER_CN" } } ఫార్మాట్లో ఉంటే, అదనంగా CommonName $ISSUER_CNతో సర్టిఫికెట్ ద్వారా మంజూరు చేయబడిన క్లయింట్ సర్టిఫికెట్లు మాత్రమే ఎంచుకోబడతాయి. $FILTER ఖాళీ నిఘంటువు {} అయితే, క్లయింట్ సర్టిఫికెట్ల ఎంపిక అదనంగా నియంత్రించబడదు.
+          విలువ తప్పనిసరిగా వచన ఆకృతికి మార్చబడిన JSON నిఘంటువుల శ్రేణి అయి ఉండాలి. ప్రతి నిఘంటువు తప్పనిసరిగా { "pattern": "$URL_PATTERN", "filter" : $FILTER } ఆకృతిలో ఉండాలి. $URL_PATTERN అనేది కంటెంట్ సెట్టింగ్ నమూనా. $FILTER, బ్రౌజర్ ఆటోమేటిక్‌గా ఎంచుకునే క్లయింట్ స‌ర్టిఫికెట్‌లను నియంత్రిస్తుంది. ఫిల్టర్‌తో సంబంధం లేకుండా, సర్వర్ స‌ర్టిఫికెట్‌ అభ్యర్థనకు సరిపోలే స‌ర్టిఫికెట్‌లు మాత్రమే ఎంచుకోబడతాయి. $FILTER { "ISSUER": { "CN": "$ISSUER_CN" } } ఆకృతిలో ఉంటే, అదనంగా CommonName $ISSUER_CNతో స‌ర్టిఫికెట్‌ ద్వారా మంజూరు చేయబడిన క్లయింట్ స‌ర్టిఫికెట్‌లు మాత్రమే ఎంచుకోబడతాయి. $FILTER ఖాళీ నిఘంటువు {} అయితే, క్లయింట్ స‌ర్టిఫికెట్‌ల ఎంపిక అదనంగా నియంత్రించబడదు.
 
           ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఏ సైట్ కోసం స్వీయ ఎంపిక చేయబడదు.</translation>
-<translation id="4978405676361550165">"OffHours" విధానాన్ని సెట్ చేసినట్లయితే, నిర్దేశించిన సమయ వ్యవధులలో నిర్దిష్ట పరికర విధానాలు విస్మరించబడతాయి (ఈ విధానాల డిఫాల్ట్ సెట్టింగ్‌లు ఉపయోగించబడతాయి). "OffHours" ప్రారంభమైన లేదా ముగిసిన ప్రతిసారీ పరికర విధానాలను Chrome తిరిగి వర్తింపజేస్తుంది. "OffHours" సమయం ముగిసినప్పుడు, పరికర విధాన సెట్టింగ్‌లు మార్చినప్పుడు ఆ విషయం వినియోగదారుకు తెలియజేయబడుతుంది. నిర్బంధంగా సైన్ అవుట్ చేసేలా చేస్తుంది (ఉదా., అనుమతి లేని ఖాతాతో వినియోగదారు సైన్ ఇన్ అయినప్పుడు).</translation>
+<translation id="4978405676361550165">"OffHours" విధానాన్ని సెట్ చేసినట్లయితే, నిర్దేశిత‌ సమయ వ్యవధులలో పేర్కొనబడిన పరికర విధానాలు విస్మరించబడతాయి (ఈ విధానాల డిఫాల్ట్ సెట్టింగ్‌లు ఉపయోగించబడతాయి). "OffHours" ప్రారంభమైన లేదా ముగిసిన ప్రతిసారీ పరికర విధానాలను Chrome తిరిగి వర్తింపజేస్తుంది. "OffHours" సమయం ముగిసినప్పుడు, పరికర విధాన సెట్టింగ్‌లు మార్చబడినప్పుడు (ఉదా., వినియోగదారు అనుమతి లేని ఖాతాతో సైన్ ఇన్ చేసినప్పుడు) వినియోగదారుకు తెలియజేయబడుతుంది. నిర్బంధంగా సైన్ అవుట్ చేయాల్సి వస్తుంది.</translation>
 <translation id="4980635395568992380">డేటా రకం:</translation>
 <translation id="4983201894483989687">పాత ప్లగ్‌ఇన్‌లని అమలు చెయ్యడానికి అనుమతించు</translation>
 <translation id="4988291787868618635">నిష్క్రియ ఆలస్యం ఏర్పడినప్పుడు తీసుకోవలసిన చర్య</translation>
@@ -1702,20 +1700,20 @@
 <translation id="5056708224511062314">స్క్రీన్ మాగ్నిఫైయర్ నిలిపివేయబడింది</translation>
 <translation id="5058573563327660283">ఆటోమేటిక్ క్లీన్-అప్ సమయంలో డిస్క్ స్థలాన్ని ఖాళీ చేయడానికి ఉపయోగించబడే వ్యూహాన్ని (విస్మరించబడింది) ఎంచుకోండి</translation>
 <translation id="5067143124345820993">లాగిన్ వినియోగదారు అనుమతి జాబితా</translation>
-<translation id="5068140065960598044">మెషీన్ విధానాన్ని <ph name="PRODUCT_NAME" /> క్లౌడ్ విధానం భర్తీ చేస్తుంది.</translation>
+<translation id="5068140065960598044">మెషీన్ విధానాన్ని <ph name="PRODUCT_NAME" /> క్లౌడ్ విధానం అధిగ‌మిస్తుంది.</translation>
 <translation id="5075834892754086022">విధానం సెట్ చేయబడితే, కాన్ఫిగర్ చేయబడిన PIN యొక్క కనిష్ట అంకెల పరిమితి అమలు చేయబడుతుంది. (PIN యొక్క ఖచ్చితమైన కనిష్ట అంకెల పరిమితి 1; 1 కంటే తక్కువ విలువలు 1గా పరిగణించబడతాయి.)
 
 విధానం సెట్ చేయబడకపోతే, 6 అంకెల కనీస PIN అంకెల పరిమితి అమలు చేయబడుతుంది. ఇది సిఫార్సు చేయబడిన కనీస పరిమితి.</translation>
 <translation id="5085647276663819155">ముద్రణ పరిదృశ్యాన్ని నిలిపివేయి</translation>
 <translation id="5090209345759901501">Flash కంటెంట్ సెట్టింగ్‌ను మొత్తం కంటెంట్‌కు విస్తరింపజేయండి</translation>
 <translation id="5093540029655764852">క్లయింట్, వారి మెషీన్ ఖాతా పాస్‌వర్డ్‌‌ను మార్చే రేట్‌ను (రోజులలో) పేర్కొంటుంది. 
-పాస్‌వర్డ్‌, క్లయింట్ ద్వారా యాదృచ్ఛికంగా సృష్టించబడి, వినియోగదారుకు కనిపించకుండా ఉంటుంది.
+పాస్‌వర్డ్‌ క్లయింట్ ద్వారా యాదృచ్ఛికంగా సృష్టించబడి, వినియోగదారుకు కనిపించకుండా ఉంటుంది.
 
-      వినియోగదారుని పాస్‌వర్డ్‌‌ల లాగా, మెషీన్ పాస్‌వర్డ్‌‌లను కూడా క్రమబద్ధంగా మార్చాలి. ఈ విధానాన్ని నిలిపివేసినా లేదా అధిక సంఖ్యలో రోజులను సెట్ చేసినా, దాడులు చేసే అవ‌కాశం ఉన్న‌ వారికి మెషీన్ ఖాతా పాస్‌వర్డ్‌‌‌ను కనుగొనేందుకు, దాన్ని ఉపయోగించేందుకు ఎక్కువ సమయం ఉంటుంది కాబట్టి భద్రతపై ప్రతికూల ప్రభావం ఉండవచ్చు.
+      వినియోగదారుని పాస్‌వర్డ్‌‌ల లాగా, మెషీన్ పాస్‌వర్డ్‌‌లను కూడా క్రమబద్ధంగా మార్చాలి. ఈ విధానాన్ని నిలిపివేసినా లేదా అధిక సంఖ్యలో రోజులను సెట్ చేసినా, సంభావ్య దాడులు చేసే వారికి మెషీన్ ఖాతా పాస్‌వర్డ్‌‌‌ను కనుగొనేందుకు, దాన్ని ఉపయోగించేందుకు ఎక్కువ సమయం ఉంటుంది కాబట్టి భద్రతపై ప్రతికూల ప్రభావం ఉండవచ్చు.
 
       విధానాన్ని సెట్ చేయకపొతే, మెషీన్ ఖాతా పాస్‌వర్డ్‌‌ ప్రతి 30 రోజులకు మార్చబడుతుంది.
 
-      విధానాన్ని 0కి సెట్ చేస్తే, మెషీన్ ఖాతా పాస్‌వర్డ్‌‌ మార్పు నిలిపివేయబడుతుంది.
+      విధానాన్ని 0కు సెట్ చేస్తే, మెషీన్ ఖాతా పాస్‌వర్డ్‌‌ మార్పు నిలిపివేయబడుతుంది.
 
       క్లయింట్ చాలా ఎక్కువ రోజుల వరకు ఆఫ్‌లైన్‌లో ఉంటే పాస్‌వర్డ్‌‌‌లు, పేర్కొన్న రోజులు కన్నా ముందే పాతవి అవ్వచ్చు అని గమనించండి.</translation>
 <translation id="5105313908130842249">బ్యాటరీ శక్తితో అమలవుతున్నప్పుడు స్క్రీన్ లాక్ ఆలస్యం</translation>
@@ -1825,9 +1823,9 @@
 <translation id="5330684698007383292">ఈ కింది కంటెంట్ రకాలని నిర్వహించడానికి <ph name="PRODUCT_FRAME_NAME" />ని అనుమతించండి</translation>
 <translation id="5365476955714838841">ప్రత్యామ్నాయ బ్రౌజర్‌ కోసం ఆదేశ పంక్తి పారామీటర్లు.</translation>
 <translation id="5365946944967967336">ఉపకరణ పట్టీలో హోమ్ బటన్‌ని చూపు</translation>
-<translation id="5366745336748853475">సైట్ సర్టిఫికెట్‌ను అభ్యర్ధించినట్లయితే, SAML విధానం హోస్ట్ చేసిన ఫ్రేమ్‌లో సైన్-ఇన్ స్క్రీన్‌లో క్లయింట్ సర్టిఫికెట్ ఆటోమేటిక్‌గా ఎంచుకోబడే సైట్‌లను పేర్కొనే url నమూనాల జాబితాను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, పరికర వ్యాప్తంగా అమలు కాగల సర్టిఫికెట్‌ను కాన్ఫిగర్ చేసి, దానిని SAML IdPకి సమర్పించడానికి ఉపయోగించవచ్చు.
+<translation id="5366745336748853475">సైట్, స‌ర్టిఫికెట్‌ను అభ్యర్థించినట్లయితే, SAML విధానం హోస్ట్ చేసిన ఫ్రేమ్‌లో సైన్-ఇన్ స్క్రీన్‌లో క్లయింట్ స‌ర్టిఫికెట్‌ ఆటోమేటిక్‌గా ఎంచుకోబడే సైట్‌లను పేర్కొనే url నమూనాల జాబితాను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, పరికర వ్యాప్తంగా అమలు కాగల స‌ర్టిఫికెట్‌ను కాన్ఫిగర్ చేసి, దానిని SAML IdPకి సమర్పించడానికి ఉపయోగించవచ్చు.
 
-      విలువ తప్పనిసరిగా వచన ఆకృతికి మార్చబడిన JSON నిఘంటువుల శ్రేణి అయ్యి ఉండాలి. ప్రతి నిఘంటువు తప్పనిసరిగా { "pattern": "$URL_PATTERN", "filter" : $FILTER } ఆకృతిలో ఉండాలి, ఇందులో $URL_PATTERN అనగా కంటెంట్ సెట్టింగ్ నమూనా. $FILTER అనేది బ్రౌజర్ ఆటోమేటిక్‌గా ఎంచుకునే క్లయింట్ సర్టిఫికెట్లను నియంత్రిస్తుంది. ఫిల్టర్‌తో సంబంధం లేకుండా, సర్వర్ సర్టిఫికెట్ అభ్యర్థనకు సరిపోలే సర్టిఫికెట్లు మాత్రమే ఎంచుకోబడతాయి. ఒకవేళ $FILTER అనేది { "ISSUER": { "CN": "$ISSUER_CN" } } ఆకృతిలో ఉంటే, అదనంగా CommonName $ISSUER_CNతో సర్టిఫికెట్ ద్వారా మంజూరు చేయబడిన క్లయింట్ సర్టిఫికెట్‌లు మాత్రమే ఎంచుకోబడతాయి. ఒకవేళ $FILTER అనేది ఖాళీ నిఘంటువు {} అయితే, క్లయింట్ సర్టిఫికెట్‌ల ఎంపిక అదనంగా నియంత్రించబడదు.
+      విలువ తప్పనిసరిగా వచన ఆకృతికి మార్చబడిన JSON నిఘంటువుల శ్రేణి అయి ఉండాలి. ప్రతి నిఘంటువు తప్పనిసరిగా { "pattern": "$URL_PATTERN", "filter" : $FILTER } ఆకృతిలో ఉండాలి. ఇందులో $URL_PATTERN అంటే కంటెంట్ సెట్టింగ్ నమూనా. $FILTER అనేది బ్రౌజర్ ఆటోమేటిక్‌గా ఎంచుకునే క్లయింట్ స‌ర్టిఫికెట్‌లను నియంత్రిస్తుంది. ఫిల్టర్‌తో సంబంధం లేకుండా, సర్వర్ స‌ర్టిఫికెట్‌ అభ్యర్థనకు సరిపోలే స‌ర్టిఫికెట్‌లు మాత్రమే ఎంచుకోబడతాయి. ఒకవేళ $FILTER అనేది { "ISSUER": { "CN": "$ISSUER_CN" } } ఆకృతిలో ఉంటే, అదనంగా CommonName $ISSUER_CNతో స‌ర్టిఫికెట్‌ ద్వారా మంజూరు చేయబడిన క్లయింట్ స‌ర్టిఫికెట్‌లు మాత్రమే ఎంచుకోబడతాయి. ఒకవేళ $FILTER అనేది ఖాళీ నిఘంటువు {} అయితే, క్లయింట్ స‌ర్టిఫికెట్‌ల ఎంపిక అదనంగా నియంత్రించబడదు.
 
       ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఏ సైట్ కోసం స్వీయ ఎంపిక చేయబడదు.</translation>
 <translation id="5366977351895725771">తప్పుకు సెట్ చేస్తే, ఈ వినియోగదారు యొక్క పర్యవేక్షించబడే-వినియోగదారు సృష్టి నిలిపివేయబడుతుంది. ప్రస్తుతం ఉన్న పర్యవేక్షించబడే వినియోగదారులు ఇప్పటికీ అందుబాటులో ఉంటారు.
@@ -1931,7 +1929,7 @@
       పేర్కొనబడితే, వ్యత్యాసాల సీడ్‌ను పొందడానికి ఉపయోగించే URLకు 'నిరోధించు' అనే ప్రశ్న పారామీటర్‌ని జోడిస్తుంది. పారామీటర్ విలువ ఈ విధానంలో పేర్కొన్న విలువ అవుతుంది.
 
       పేర్కొనబడకపోతే, వ్యత్యాసాల సీడ్ URLను సవరించదు.</translation>
-<translation id="5561811616825571914">సైన్-ఇన్ స్క్రీన్‌లో ఈ సైట్‌లకు క్లయింట్ ప్రమాణపత్రాలను స్వయంచాలకంగా ఎంపిక చేస్తుంది</translation>
+<translation id="5561811616825571914">సైన్-ఇన్ స్క్రీన్‌లో ఈ సైట్‌లకు క్లయింట్ స‌ర్టిఫికెట్‌ల‌ను ఆటోమేటిక్‌గా ఎంపిక చేస్తుంది</translation>
 <translation id="556865034069957245">ఈ విధానం పూర్తి స్క్రీన్ మోడ్ అందుబాటును నియంత్రిస్తుంది, ఇందులో మొత్తం <ph name="PRODUCT_NAME" /> దాచబడుతుంది మరియు వెబ్ కంటెంట్ మాత్రమే కనిపిస్తుంది.
 
       
@@ -2066,15 +2064,15 @@
 <translation id="5868414965372171132">వినియోగదారు-స్థాయి నెట్‌వర్క్ కాన్ఫిగరేషన్</translation>
 <translation id="5879014913445067283"><ph name="NETBIOS_NAME" /> ద్వారా నెట్‌వర్క్ ఫైల్ షేర్‌ ఆచూకీ శోధనను నియంత్రిస్తుంది</translation>
 <translation id="5883015257301027298">డిఫాల్ట్ కుక్కీల సెట్టింగ్</translation>
-<translation id="5887414688706570295">రిమోట్ యాక్సెస్ హోస్ట్‌లు ఉపయోగించే TalkGadget పదాన్ని కాన్ఫిగర్ చేస్తుంది మరియు వినియోగదారులు దీన్ని మార్చకుండా నిరోధిస్తుంది.
+<translation id="5887414688706570295">రిమోట్ యాక్సెస్‌ హోస్ట్‌లు ఉపయోగించే TalkGadget పేరు ముందు భాగాన్ని కాన్ఫిగర్ చేస్తుంది. వినియోగదారులు దీన్ని మార్చకుండా నిరోధిస్తుంది.
 
-          పేర్కొని ఉంటే, ఈ పదం TalkGadget కోసం పూర్తి డొమైన్ పేరును సృష్టించడానికి ఆధార TalkGadget పేరుకు ముందు జోడించబడుతుంది. ఆధార TalkGadget డొమైన్ పేరు '.talkgadget.google.com'.
+          నిర్దిష్టంగా పేర్కొంటే, ఈ పేరు ముందు భాగం TalkGadget కోసం పూర్తి డొమైన్ పేరును సృష్టించడానికి ఆధార TalkGadget పేరుకు ముందు జోడించబడుతుంది. ఆధార TalkGadget డొమైన్ పేరు '.talkgadget.google.com'.
 
-          ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు హోస్ట్‌లు TalkGadgetను యాక్సెస్ చేసేటప్పుడు డిఫాల్ట్ డొమైన్ పేరుకు బదులుగా అనుకూల డొమైన్ పేరును ఉపయోగిస్తాయి.
+          ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు హోస్ట్‌లు TalkGadgetను యాక్సెస్‌ చేసేటప్పుడు డిఫాల్ట్ డొమైన్ పేరుకు బదులుగా అనుకూల డొమైన్ పేరును ఉపయోగిస్తాయి.
 
           ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకపోతే, అప్పుడు అన్ని హోస్ట్‌ల కోసం డిఫాల్ట్ TalkGadget డొమైన్ పేరు ('chromoting-host.talkgadget.google.com') ఉపయోగించబడుతుంది.
 
-          ఈ విధానం సెట్టింగ్ వలన రిమోట్ యాక్సెస్ క్లయింట్‌లు ప్రభావితం కావు. అవి ఎల్లప్పుడూ TalkGadgetను యాక్సెస్ చేయడానికి 'chromoting-client.talkgadget.google.com'ను ఉపయోగిస్తాయి.</translation>
+          ఈ విధానం సెట్టింగ్ వ‌ల్ల రిమోట్ యాక్సెస్‌ క్లయింట్‌లు ప్రభావితం కావు. అవి ఎల్లప్పుడూ TalkGadgetను యాక్సెస్‌ చేయడానికి 'chromoting-client.talkgadget.google.com'ను ఉపయోగిస్తాయి.</translation>
 <translation id="5893553533827140852">ఈ సెట్టింగ్ ప్రారంభించబడితే, gnubby ప్రామాణీకరణ అభ్యర్థనలు రిమోట్ హోస్ట్ కనెక్షన్‌లో ప్రాక్సీ చేయబడతాయి.
 
           ఈ సెట్టింగ్ నిలిపివేయబడితే లేదా కాన్ఫిగర్ చేయబడకపోతే, gnubby ప్రామాణీకరణ అభ్యర్థనలు ప్రాక్సీ చేయబడవు.</translation>
@@ -2242,15 +2240,15 @@
           ఈ విధానాన్ని సెట్ చేయకుంటే, 'DefaultPluginsSetting' విధానం సెట్ చేయబడి ఉంటే దాని నుండి లేదా వినియోగదారు యొక్క వ్యక్తిగత కాన్ఫిగరేషన్ నుండి సార్వజనీన డిఫాల్ట్ విలువ అన్ని సైట్‌ల కోసం ఉపయోగించబడుతుంది.</translation>
 <translation id="6190022522129724693">డిఫాల్ట్ పాప్‌అప్‌ల సెట్టింగ్</translation>
 <translation id="6190367314942602985">వినియోగదారు గుర్తింపు సమాచారాన్ని నివేదించండి</translation>
-<translation id="6197453924249895891">ఎక్స్‌టెన్షన్‌ల కోసం కార్పొరేట్ కీల యాక్సెస్‌ను మంజూరు చేస్తుంది.
+<translation id="6197453924249895891">ఎక్స్‌టెన్ష‌న్‌ల కోసం కార్పొరేట్ కీల యాక్సెస్‌ను మంజూరు చేస్తుంది.
 
-      కీలు నిర్వహిత ఖాతాలో chrome.enterprise.platformKeys API ఉపయోగించి రూపొందించబడితే కార్పొరేట్ వినియోగం కోసం నిర్దేశించబడతాయి. వేరొక మార్గంలో దిగుమతి చేయబడిన లేదా రూపొందించబడిన కీలు కార్పొరేట్ వినియోగం కోసం నిర్దేశించబడవు.
+      కీలు, నిర్వాహిత ఖాతాలో chrome.enterprise.platformKeys API ఉపయోగించి రూపొందించబడితే కార్పొరేట్ వినియోగం కోసం నిర్దేశించబడతాయి. వేరొక మార్గంలో దిగుమతి చేయబడిన లేదా రూపొందించబడిన కీలు కార్పొరేట్ వినియోగం కోసం నిర్దేశించబడవు.
 
-      కార్పొరేట్ వినియోగం కోసం నిర్దేశించిన కీలకు యాక్సెస్ కేవలం ఈ విధానం ప్రకారం మాత్రమే నియంత్రించబడుతుంది. వినియోగదారు ఎక్స్‌టెన్షన్‌లకు లేదా వాటి నుండి కార్పొరేట్ కీల యాక్సెస్‌ను మంజూరు చేయలేరు లేదా ఉపసంహరించలేరు.
+      కార్పొరేట్ వినియోగం కోసం నిర్దేశించిన కీలకు యాక్సెస్‌ కేవలం ఈ విధానం ప్రకారం మాత్రమే నియంత్రించబడుతుంది. వినియోగదారు, ఎక్స్‌టెన్ష‌న్‌లకు లేదా వాటి నుండి కార్పొరేట్ కీల యాక్సెస్‌ను మంజూరు చేయలేరు లేదా ఉపసంహరించలేరు.
 
-      డిఫాల్ట్‌గా ఎక్స్‌టెన్షన్‌ కార్పొరేట్ వినియోగం కోసం నిర్దేశించిన కీని ఉపయోగించలేదు, ఇలా చేయడం ఆ ఎక్స్‌టెన్షన్‌ కోసం allowCorporateKeyUsageని తప్పునకు సెట్ చేయడంతో సమానం.
+      డిఫాల్ట్‌గా ఎక్స్‌టెన్ష‌న్‌ కార్పొరేట్ వినియోగం కోసం నిర్దేశించిన కీని ఉపయోగించలేదు, ఇలా చేయడం ఆ ఎక్స్‌టెన్ష‌న్‌ కోసం allowCorporateKeyUsageని తప్పునకు సెట్ చేయడంతో సమానం.
 
-      ఎక్స్‌టెన్షన్‌ కోసం allowCorporateKeyUsageని ఒప్పునకు సెట్ చేస్తే మాత్రమే, ఇది అనియంత్రిత డేటాకు సైన్ చేయడానికి కార్పొరేట్ వినియోగం కోసం గుర్తుపెట్టిన ఏ ప్లాట్‌ఫారమ్ కీని అయినా ఉపయోగించగలుగుతుంది. ఎక్స్‌టెన్షన్‌ దాడి చేసేవారికి వ్యతిరేకంగా కీకి సురక్షిత యాక్సెస్ కలిగి ఉన్నట్లు విశ్వసిస్తే మాత్రమే ఈ అనుమతిని మంజూరు చేయాలి.</translation>
+      ఎక్స్‌టెన్ష‌న్‌ కోసం allowCorporateKeyUsageను ఒప్పునకు సెట్ చేస్తే మాత్రమే, ఇది నిర్హేతుక‌ డేటాకు సైన్ చేయడానికి కార్పొరేట్ వినియోగం కోసం గుర్తుపెట్టిన ఏ ప్లాట్‌ఫారమ్ కీని అయినా ఉపయోగించగలుగుతుంది. దాడి చేసే వారికి వ్యతిరేకంగా ఎక్స్‌టెన్ష‌న్‌, కీకి సురక్షిత యాక్సెస్‌ కలిగి ఉన్నట్లు విశ్వసిస్తే మాత్రమే ఈ అనుమతిని మంజూరు చేయాలి.</translation>
 <translation id="6208896993204286313"><ph name="PRODUCT_NAME" /> విధాన సమాచారాన్ని నివేదించండి</translation>
 <translation id="6210259502936598222">OS మరియు <ph name="PRODUCT_NAME" /> వెర్షన్ సమాచారాన్ని నివేదించండి</translation>
 <translation id="6211428344788340116">పరికరం కార్యాచరణ సమయాలను నివేదించండి.
@@ -2273,8 +2271,8 @@
 <translation id="6282799760374509080">ఆడియో క్యాప్చర్‌ను అనుమతించడం లేదా తిరస్కరించడం</translation>
 <translation id="6284362063448764300">TLS 1.1</translation>
 <translation id="6310223829319187614">వినియోగదారు సైన్ ఇన్ చేస్తున్నప్పుడు, డొమైన్ పేరు స్వయంపూర్తిని ప్రారంభిస్తుంది</translation>
-<translation id="6315673513957120120">వినియోగదారులు SSL ఎర్రర్లు గల సైట్‌లకు నావిగేట్ చేసినప్పుడు Chrome ఒక హెచ్చరిక పేజీని చూపుతుంది. డిఫాల్ట్‌గా లేదా ఈ విధానం ఒప్పుకు సెట్ చేసినప్పుడు, ఈ హెచ్చరిక పేజీల గుండా క్లిక్ చేయడానికి వినియోగదారులు అనుమతించబడతారు.
-      ఈ విధానాన్ని తప్పుకు సెట్ చేస్తే, వినియోగదారులు ఏ హెచ్చరిక పేజీ గుండా క్లిక్ చేయడానికి అనుమతించబడరు.</translation>
+<translation id="6315673513957120120">వినియోగదారులు SSL లోపాలు ఉన్న సైట్‌లకు నావిగేట్ చేసినప్పుడు Chrome ఒక హెచ్చరిక పేజీని చూపుతుంది. డిఫాల్ట్‌గా లేదా ఈ విధానం ఒప్పునకు సెట్ చేసినప్పుడు, ఈ హెచ్చరిక పేజీల గుండా క్లిక్ చేయడానికి వినియోగదారులు అనుమతించబడతారు.
+      ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, వినియోగదారులు ఏ హెచ్చరిక పేజీ గుండా క్లిక్ చేయడానికి అనుమతించబడరు.</translation>
 <translation id="6352543686437322588">నిర్దిష్ట జాప్యం తర్వాత ఆటో-లాగిన్ చేయాల్సిన పరికర-స్థానిక ఖాతా.
 
       ఈ విధానాన్ని సెట్ చేస్తే, లాగిన్ స్క్రీన్‌పై వినియోగదారు ప్రమేయం లేకుండా నిర్దిష్ట సమయ వ్యవధి గడిచిన తర్వాత పేర్కొన్న సెషన్ ఆటోమేటిక్‌గా లాగిన్ చేయబడుతుంది. పరికర-స్థానిక ఖాతాను తప్పనిసరిగా కాన్ఫిగర్ చేసి ఉండాలి (|DeviceLocalAccounts| చూడండి).
@@ -2396,13 +2394,13 @@
 <translation id="6731757988219967594">పెద్దలకు మాత్రమే విషయాల కంటెంట్ కోసం అగ్రశ్రేణి స్థాయి సైట్‌లను ఫిల్టర్ చేయండి (కానీ పొందుపరిచిన iframesను తప్ప)</translation>
 <translation id="6734521799274931721">ChromeOS లభ్యత కోసం నెట్‌వర్క్ ఫైల్ షేర్‌లను నియంత్రిస్తుంది</translation>
 <translation id="6735701345096330595">అందుబాటులో ఉన్న భాష‌ల స్పెల్‌చెక్‌ను నిర్బంధంగా ప్రారంభించండి</translation>
-<translation id="673699536430961464">ఈ సెట్టింగ్ వలన వినియోగదారులు వారి <ph name="PRODUCT_OS_NAME" /> పరికరంలో సైన్ ఇన్ చేసిన తర్వాత వారి బ్రౌజర్ విండోలలోని కంటెంట్ ప్రదేశంలో Google ఖాతాల మధ్య మారడానికి అనుమతించబడతారు.
+<translation id="673699536430961464">ఈ సెట్టింగ్ వ‌ల్ల వినియోగదారులు వారి <ph name="PRODUCT_OS_NAME" /> పరికరంలో సైన్ ఇన్ చేసిన తర్వాత వారి బ్రౌజర్ విండోలలోని కంటెంట్ ప్రదేశంలో Google ఖాతాల మధ్య మారడానికి అనుమతించబడతారు.
 
-      ఒకవేళ ఈ విధానాన్ని తప్పుకు సెట్ చేస్తే, అజ్ఞాతేతర బ్రౌజర్ కంటెంట్ ప్రదేశంలో వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించబడదు.
+      ఒకవేళ ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, అజ్ఞాతేతర బ్రౌజర్ కంటెంట్ ప్రదేశంలో వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించబడదు.
 
-      ఒకవేళ ఈ విధానాన్ని సెట్ చేయకున్నా లేదా ఒప్పుకు సెట్ చేసినా, డిఫాల్ట్ ప్రవర్తన ఉపయోగించబడుతుంది: బ్రౌజర్ కంటెంట్ ప్రదేశంలో వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించబడుతుంది, కానీ పిల్లల ఖాతాలకు మాత్రం అనుమతించబడదు, ఆ ఖాతాల విషయంలో, సైన్ ఇన్ చేయడం అనేది అజ్ఞాతేతర కంటెంట్ ప్రదేశంలో బ్లాక్ చేయబడుతుంది.
+      ఒకవేళ ఈ విధానాన్ని సెట్ చేయకున్నా లేదా ఒప్పునకు సెట్ చేసినా, డిఫాల్ట్ ప్రవర్తన ఉపయోగించబడుతుంది: బ్రౌజర్ కంటెంట్ ప్రదేశంలో వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించబడుతుంది. కానీ పిల్లల ఖాతాలకు మాత్రం అనుమతించబడదు,  అజ్ఞాతేతర కంటెంట్ ప్రదేశంలో బ్లాక్ చేయబడుతుంది.
 
-      ఒకవేళ అజ్ఞాత మోడ్ ద్వారా వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించకూడదనుకుంటే, IncognitoModeAvailability విధానాన్ని ఉపయోగించి ఆ మోడ్‌ను బ్లాక్ చేయడం పరిగణించండి.
+      ఒకవేళ అజ్ఞాత మోడ్ ద్వారా వేరే ఖాతాకు సైన్ ఇన్ చేయడం అనుమతించకూడదనుకుంటే, IncognitoModeAvailability విధానాన్ని ఉపయోగించి ఆ మోడ్‌ను బ్లాక్ చేయడం పరిశీలించండి.
 
       వినియోగదారులు వారి కుక్కీలను బ్లాక్ చేయడం ద్వారా ప్రామాణీకరించబడని స్థితిలో Google సేవలను యాక్సెస్ చేయగలరని గమనించండి.</translation>
 <translation id="6738326937072482736"><ph name="TPM_FIRMWARE_UPDATE_TPM" /> ఫర్మ్‌వేర్ ​​అప్‌డేట్ కార్యశీలత యొక్క లభ్యత మరియు ప్రవర్తనను కాన్ఫిగర్ చేస్తుంది.
@@ -2515,11 +2513,11 @@
 <translation id="6931242315485576290">Googleతో డేటా సమకాలీకరణని ఆపివేయి</translation>
 <translation id="6936894225179401731">ప్రాక్సీ సర్వర్‌కు గరిష్ట ఏక కాల కనెక్షన్‌ల సంఖ్యను నిర్దేశిస్తుంది.
 
-      కొన్ని ప్రాక్సీ సర్వర్‌లు ఒక క్లయింట్‌కు అత్యధిక సంఖ్యలో ఏక కాల కనెక్షన్‌లను నిర్వహించలేవు మరియు ఈ సమస్యను ఈ విధానాన్ని తక్కువ విలువకు సెట్ చేయడం ద్వారా పరిష్కరించవచ్చు.
+      కొన్ని ప్రాక్సీ సర్వర్‌లు ఒక క్లయింట్‌కు అత్యధిక సంఖ్యలో ఏక కాల కనెక్షన్‌లను నిర్వహించలేవు. ఈ విధానాన్ని తక్కువ విలువకు సెట్ చేయడం ద్వారా ఈ సమస్యను పరిష్కరించవచ్చు.
 
-      ఈ విధానం విలువ 100 కన్నా తక్కువగా మరియు 6 కన్నా ఎక్కువగా ఉండాలి మరియు ఢిపాల్ట్ విలువ 32.
+      ఈ విధానం విలువ 100 కన్నా తక్కువగా, 6 కన్నా ఎక్కువగా ఉండాలి. ఢిపాల్ట్ విలువ 32.
 
-      కొన్ని వెబ్ అనువర్తనాలు అమలులో ఉండే GETలతో పలు కనెక్షన్‌లను ఉపయోగిస్తూ ఉంటాయని గుర్తించబడ్డాయి, కాబట్టి అలాంటి చాలా వెబ్ అనువర్తనాలు తెరవబడి ఉంటే, 32 కంటే తక్కువగా పేర్కొనడం వలన బ్రౌజర్ నెట్‌వర్కింగ్ తటస్థంగా నిలిచిపోతుంది. డిఫాల్ట్ విలువ కంటే తగ్గించడం అనేది మీ సొంత పూచీకత్తు.
+      కొన్ని వెబ్ యాప్‌లు, అమలులో ఉండే GETలతో పలు కనెక్షన్‌లను ఉపయోగిస్తూ ఉంటాయని గుర్తించబడ్డాయి. కాబట్టి అలాంటి చాలా వెబ్ యాప్‌లు తెరవబడి ఉంటే, 32 కంటే తక్కువగా పేర్కొనడం వ‌ల్ల‌ బ్రౌజర్ నెట్‌వర్కింగ్ తటస్థంగా నిలిచిపోతుంది. డిఫాల్ట్ విలువ కంటే తగ్గించడం అనేది మీ సొంత పూచీకత్తు.
 
       ఈ విధానం సెట్ చేయకుండా వదిలివేయబడితే డిపాల్ట్ విలువ 32 ఉపయోగించబడుతుంది.</translation>
 <translation id="6943577887654905793">Mac/Linux ప్రాధాన్య పేరు:</translation>
@@ -2640,9 +2638,9 @@
 <translation id="7216442368414164495">సురక్షిత బ్రౌజింగ్ విస్తారిత నివేదనను ప్రారంభించడానికి వినియోగదారులను అనుమతిస్తుంది</translation>
 <translation id="7221822638060296742">వెబ్‌సైట్‌లు ఆటోమేటిక్‌గా <ph name="FLASH_PLUGIN_NAME" /> ప్లగ్ఇన్ అమలు చేయడానికి అనుమతించాలో లేదో సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఆటోమేటిక్‌గా అమలవుతున్న <ph name="FLASH_PLUGIN_NAME" /> ప్లగ్ఇన్ అన్ని వెబ్‌సైట్‌లకు అనుమతించవచ్చు లేదా అన్ని వెబ్‌సైట్‌లకు తిరస్కరించవచ్చు.
 
-         ప్లే చేయడానికి క్లిక్ చేయడం <ph name="FLASH_PLUGIN_NAME" /> ప్లగ్ఇన్ అమలు చేయడానికి అనుమతిస్తుంది, కానీ వాడుకదారు దాని అమలు ప్రారంభించడానికి ప్లేస్‌హోల్డర్‌పై క్లిక్ చేయాలి.
+         ప్లే చేయడానికి క్లిక్ చేయడం <ph name="FLASH_PLUGIN_NAME" /> ప్లగ్ఇన్ అమలు చేయడానికి అనుమతిస్తుంది. కానీ వినియోగదారు దాని అమలు ప్రారంభించడానికి ప్లేస్‌హోల్డర్‌పై క్లిక్ చేయాలి.
 
-          ఆటోమేటిక్ ప్లేబ్యాక్ <ph name="PLUGINS_ALLOWED_FOR_URLS_POLICY_NAME" /> విధానంపై స్పష్టంగా జాబితా చేయబడిన డొమైన్‌ల కోసం మాత్రమే అనుమతించబడుతుంది. మీరు అన్ని సైట్‌లకు ఆటోమేటిక్ ప్లేబ్యాక్‌ను ప్రారంభించాలనుకుంటే, http://* మరియు https://*ను ఈ జాబితాకు జోడించండి.
+          ఆటోమేటిక్‌ ప్లేబ్యాక్ <ph name="PLUGINS_ALLOWED_FOR_URLS_POLICY_NAME" /> విధానంపై స్పష్టంగా జాబితా చేయబడిన డొమైన్‌ల కోసం మాత్రమే అనుమతించబడుతుంది. మీరు అన్ని సైట్‌లకు ఆటోమేటిక్‌ ప్లేబ్యాక్‌ను ప్రారంభించాలనుకుంటే, http://* మరియు https://*ను ఈ జాబితాకు జోడించండి.
 
           ఈ విధానాన్ని సెట్ చేయకుండా వదిలి వేసి ఉంటే, వినియోగదారు ఈ సెట్టింగ్‌ను మాన్యువల్‌గా మార్చగలుగుతారు.</translation>
 <translation id="7229975860249300121"><ph name="PRODUCT_NAME" />లో బ్రౌజర్ ప్రాథమిక ఖాతాల లాగా సెట్ చేయడానికి ఏ Google ఖాతాలను ఉపయోగించాలో నిర్ణయించడానికి ఉపయోగించే రెగ్యులర్ ఎక్స్‌ప్రెషన్‌ని కలిగి ఉంటుంది (అంటే, సమకాలీకరణ ప్రారంభ ఫ్లో సమయంలో ఎంచుకునే ఖాతా).
@@ -3014,7 +3012,7 @@
 <translation id="7953256619080733119">నిర్వహించబడే వినియోగదారు మాన్యువల్ మినహాయింపు హోస్ట్‌లు</translation>
 <translation id="7958537754689366707">పాస్‌వర్డ్ నమోదు ప్రతి పన్నెండు గంటలకు అవసరమవుతుంది</translation>
 <translation id="7961779417826583251">జాబితాలోని లెగసీ సర్టిఫికేట్ అధికారాల కోసం సర్టిఫికేట్ పారదర్శకత అమలును నిలిపివేయండి</translation>
-<translation id="7974114691960514888">ఈ విధానానికి మద్దతు లేదు. రిమోడ్ క్లయింట్‌కు కనెక్ట్ అవుతున్నప్పుడు, STUN మరియు రిల్వే సర్వర్‌ల ఉపయోగాన్ని ప్రారంభిస్తుంది. ఈ సెట్టింగ్ ప్రారంభించబడి ఉంటే, ఈ మెషీన్ రిమోట్ హోస్ట్ మెషీన్‌లు ఫైర్‌వైల్ ద్వారా వేరు చేయబడినా కూడా కనుగొంటుంది మరియు వాటికి కనెక్ట్ చేస్తుంది. ఈ సెట్టింగ్ ఆపివేయబడి మరియు బయటకు వెళ్లే UDP కనెక్షన్‌లు ఫైర్‌వాల్ ద్వారా వడపోత చేయబడి ఉంటే, అప్పుడు ఈ మెషీన్ స్థానిక నెట్‌వర్క్‌లోని హోస్ట్ మెషీన్‌లకు మాత్రమే కనెక్ట్ చేస్తుంది.</translation>
+<translation id="7974114691960514888">ఈ విధానానికి మద్దతు లేదు. రిమోట్‌ క్లయింట్‌కు కనెక్ట్ అవుతున్నప్పుడు- STUN, రిలే సర్వర్‌ల ఉపయోగాన్ని ప్రారంభిస్తుంది. ఈ సెట్టింగ్ ప్రారంభించబడి ఉంటే, ఈ మెషిన్ రిమోట్ హోస్ట్ మెషిన్‌లు ఫైర్‌వైల్ ద్వారా వేరు చేయబడినా కూడా కనుగొంటుంది. వాటికి కనెక్ట్ చేస్తుంది. ఈ సెట్టింగ్ ఆపివేయబడి ఉంటే, బయటకు వెళ్లే UDP కనెక్షన్‌లు ఫైర్‌వాల్ ద్వారా వడపోత చేయబడి ఉంటే, అప్పుడు ఈ మెషిన్ స్థానిక నెట్‌వర్క్‌లోని హోస్ట్ మెషిన్‌లకు మాత్రమే కనెక్ట్ చేస్తుంది.</translation>
 <translation id="7976157349247117979"><ph name="PRODUCT_NAME" /> గమ్యస్థానం పేరు</translation>
 <translation id="7980227303582973781">ప్రత్యేక పరిమితులు లేవు</translation>
 <translation id="7985242821674907985"><ph name="PRODUCT_NAME" /></translation>
@@ -3057,11 +3055,11 @@
 ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ప్రాప్యత ఎంపికలు సిస్టమ్ ట్రే మెనులో కనిపించవు, కానీ వినియోగదారు సెట్టింగ్‌ల పేజీ ద్వారా ప్రాప్యత ఎంపికలు కనిపించేలా చేయవచ్చు.</translation>
 <translation id="806523868782250975">నిర్వహించబడే బుక్‌మార్క్‌ల జాబితాను కాన్ఫిగర్ చేస్తుంది.
 
-విధానంలో బుక్‌మార్క్‌ల జాబితా ఉంటుంది, దీనిలోని ప్రతి బుక్‌మార్క్ కూడా "<ph name="NAME" />" మరియు "<ph name="URL_LABEL" />" కీలను కలిగి ఉండే నిఘంటువు, వీటిలో బుక్‌మార్క్ పేరు మరియు దాని లక్ష్యం ఉంటాయి. "<ph name="URL_LABEL" />" కీ లేని, కానీ అదనపు "<ph name="CHILDREN" />" కీ కలిగి ఉండే బుక్‌మార్క్‌ను నిర్వచించడం ద్వారా ఉపఫోల్డర్‌ను కాన్ఫిగర్ చేయవచ్చు, అయితే ఈ ఉపఫోల్డర్ ఎగువ నిర్వచించినట్లు బుక్‌మార్క్‌లను కలిగి ఉంటుంది (వీటిలో కొన్ని మళ్లీ ఫోల్డర్‌లుగా ఉండవచ్చు). ఓమ్నిపెట్టె ద్వారా అసంపూర్ణ URLలు సమర్పించబడితే <ph name="PRODUCT_NAME" /> వాటిని సవరిస్తుంది, ఉదాహరణకు "<ph name="GOOGLE_COM" />" అనేది "<ph name="HTTPS_GOOGLE_COM" />" వలె మారుతుంది.
+ఈ విధానంలో బుక్‌మార్క్‌ల జాబితా ఉంటుంది. దీనిలోని ప్రతి బుక్‌మార్క్ కూడా "<ph name="NAME" />" మరియు "<ph name="URL_LABEL" />" కీలను కలిగి ఉండే నిఘంటువు. వీటిలో బుక్‌మార్క్ పేరు, దాని లక్ష్యం ఉంటాయి. "<ph name="URL_LABEL" />" కీ లేని, కానీ అదనపు "<ph name="CHILDREN" />" కీ కలిగి ఉండే బుక్‌మార్క్‌ను నిర్వచించడం ద్వారా ఉపఫోల్డర్‌ను కాన్ఫిగర్ చేయవచ్చు. అయితే ఈ ఉపఫోల్డర్ ఎగువ నిర్వచించినట్లు బుక్‌మార్క్‌లను కలిగి ఉంటుంది (వీటిలో కొన్ని మళ్లీ ఫోల్డర్‌లుగా ఉండవచ్చు). ఓమ్నిబాక్స్‌ ద్వారా అసంపూర్ణ URLలు సమర్పించబడితే <ph name="PRODUCT_NAME" /> వాటిని సవరిస్తుంది, ఉదాహరణకు "<ph name="GOOGLE_COM" />" అనేది "<ph name="HTTPS_GOOGLE_COM" />" లాగా మారుతుంది.
 
-ఈ బుక్‌మార్క్‌లు వినియోగదారు సవరించలేని ఫోల్డర్‌లో ఉంచబడతాయి (కానీ వినియోగదారు దాన్ని బుక్‌మార్క్ పట్టీ నుండి దాచడానికి ఎంచుకోవచ్చు). డిఫాల్ట్‌గా ఫోల్డర్ పేరు "నిర్వహిత బుక్‌మార్క్‌లు" అని ఉంటుంది, కానీ ఇది విలువగా కోరుకున్న ఫోల్డర్ పేరుతో కీ "<ph name="TOPLEVEL_NAME" />" కలిగిన నిఘంటువు బుక్‌మార్క్‌ల జాబితాకు జోడించడం ద్వారా అనుకూలీకరించబడుతుంది.
+ఈ బుక్‌మార్క్‌లు వినియోగదారు సవరించలేని ఫోల్డర్‌లో ఉంచబడతాయి (కానీ వినియోగదారు, దాన్ని బుక్‌మార్క్ బార్‌ నుండి దాచడానికి ఎంచుకోవచ్చు). డిఫాల్ట్‌గా ఫోల్డర్ పేరు "నిర్వాహిత బుక్‌మార్క్‌లు" అని ఉంటుంది. కానీ ఇది విలువగా కోరుకున్న ఫోల్డర్ పేరుతో కీ "<ph name="TOPLEVEL_NAME" />" కలిగిన నిఘంటువు బుక్‌మార్క్‌ల జాబితాకు జోడించడం ద్వారా అనుకూలీకరించబడుతుంది.
 
-నిర్వహిత బుక్‌మార్క్‌లు వినియోగదారుని ఖాతాకు సమకాలీకరించబడవు మరియు పొడిగింపుల ద్వారా సవరించబడవు.</translation>
+నిర్వాహిత బుక్‌మార్క్‌లు వినియోగదారుని ఖాతాకు సింక్ చేయ‌బడవు. ఎక్స్‌టెన్ష‌న్‌ల ద్వారా సవరించబడవు.</translation>
 <translation id="8078366200175825572">కుక్కీలను సెట్ చేయడానికి అనుమతించబడని సైట్‌లను పేర్కొనే url నమూనాల జాబితాను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
 
           ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే 'DefaultCookiesSetting' విధానం సెట్ చేయబడి ఉంటే దాని నుండి లేదంటే వినియోగదారు యొక్క వ్యక్తిగత కాన్ఫిగరేషన్ నుండి గ్లోబల్ డిఫాల్ట్ విలువ అన్ని సైట్‌ల కోసం ఉపయోగించబడుతుంది.
@@ -3074,12 +3072,12 @@
           ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, 'AllowImages' ఉపయోగించబడుతుంది మరియు వినియోగదారు దాన్ని మార్చగలరు.
 
           గతంలో ఈ విధానం Androidలో పొరపాటున ప్రారంభించబడింది, కానీ Androidలో దీనికి ఎప్పుడూ పూర్తి మద్దతు లేదు.</translation>
-<translation id="8104962233214241919">ఈ సైట్లకు క్లయింట్ దృవీకరణ పత్రాలు స్వయంచాలకంగా ఎంపిక చేయండి</translation>
+<translation id="8104962233214241919">ఈ సైట్లకు క్లయింట్ స‌ర్టిఫికెట్‌లు ఆటోమేటిక్‌గా ఎంపిక చేయండి</translation>
 <translation id="8112122435099806139">పరికరం కోసం ఉపయోగించబడే గడియారం ఆకృతిని పేర్కొంటుంది.
 
-      ఈ విధానం లాగిన్ స్క్రీన్‌పై ఉపయోగించాల్సిన మరియు వినియోగదారు సెషన్‌ల కోసం డిఫాల్ట్‌గా ఉపయోగించాల్సిన గడియారం ఆకృతిని కాన్ఫిగర్ చేస్తుంది. వినియోగదారులు అప్పటికీ వారి ఖాతా కోసం గడియారం ఆకృతిని భర్తీ చేయవచ్చు.
+      ఈ విధానం లాగిన్ స్క్రీన్‌పై ఉపయోగించాల్సిన, వినియోగదారు సెషన్‌ల కోసం డిఫాల్ట్‌గా ఉపయోగించాల్సిన గడియారం ఆకృతిని కాన్ఫిగర్ చేస్తుంది. వినియోగదారులు అప్పటికీ వారి ఖాతా కోసం గడియారం ఆకృతిని అధ‌గిమించ‌వ‌చ్చు.
 
-      విధానాన్ని ఒప్పుకి సెట్ చేస్తే, పరికరం 24 గంటల గడియారం ఆకృతిని ఉపయోగిస్తుంది. విధానాన్ని తప్పుకి సెట్ చేస్తే, పరికరం 12 గంటల గడియారం ఆకృతిని ఉపయోగిస్తుంది.
+      విధానాన్ని ఒప్పున‌కు సెట్ చేస్తే, పరికరం 24 గంటల గడియారం ఆకృతిని ఉపయోగిస్తుంది. విధానాన్ని తప్పున‌కు సెట్ చేస్తే, పరికరం 12 గంటల గడియారం ఆకృతిని ఉపయోగిస్తుంది.
 
       ఈ విధానాన్ని సెట్ చేయకపోతే, పరికరం డిఫాల్ట్‌గా 24 గంటల గడియారం ఆకృతిని ఉపయోగిస్తుంది.</translation>
 <translation id="8114382167597081590">YouTubeలో పరిమిత మోడ్‌ను అమలు చేయవద్దు</translation>
@@ -3116,11 +3114,11 @@
           మీరు ఈ విధానాన్ని సెట్ చేస్తే, వినియోగదారులు దీన్ని మార్చలేరు లేదా అధిగ‌మించ‌లేరు.
 
           ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, అధిక కాంట్రాస్ట్ మోడ్ ప్రాథమికంగా నిలిపివేయబడుతుంది కానీ వినియోగదారు ఎప్పుడైనా ప్రారంభించవచ్చు.</translation>
-<translation id="815061180603915310">ప్రారంభించబడేలా సెట్ చేస్తే, ఈ విధానం ప్రొఫైల్ తాత్కాలిక‌ మోడ్‌కు మార్చబడేలా నిర్బంధిస్తుంది. ఈ విధానాన్ని OS విధానం (ఉదా. Windowsలో GPO)గా పేర్కొంటే, ఇది సిస్టమ్‌లోని ప్రతి ప్రొఫైల్‌కు వర్తిస్తుంది; విధానాన్ని Cloud విధానంగా సెట్ చేస్తే, ఇది నిర్వాహిత ఖాతాతో సైన్ ఇన్ చేసిన ప్రొఫైల్‌కు మాత్రమే వర్తిస్తుంది.
+<translation id="815061180603915310">ప్రారంభించబడేలా సెట్ చేస్తే, ఈ విధానం, ప్రొఫైల్‌ను తాత్కాలిక‌ మోడ్‌కు మార్చబడేలా నిర్బంధిస్తుంది. ఈ విధానాన్ని OS విధానం (ఉదా. Windowsలో GPO)గా పేర్కొంటే, ఇది సిస్టమ్‌లోని ప్రతి ప్రొఫైల్‌కు వర్తిస్తుంది; విధానాన్ని Cloud విధానంగా సెట్ చేస్తే, ఇది నిర్వాహిత ఖాతాతో సైన్ ఇన్ చేసిన ప్రొఫైల్‌కు మాత్రమే వర్తిస్తుంది.
 
-      ఈ మోడ్‌లో వినియోగదారు త‌న‌ సెషన్‌ను ముగించే వరకు మాత్రమే ప్రొఫైల్ డేటా డిస్క్‌లో ఉంటుంది. బ్రౌజర్ చరిత్ర, ఎక్స్‌టెన్ష‌న్‌ల వంటి ఫీచ‌ర్‌లు, వాటి డేటా, కుక్కీలు, వెబ్ డేటాబేస్‌ల వంటి వెబ్ డేటా, బ్రౌజర్ మూసివేయబడిన తర్వాత భద్రపరచబడదు. అయితే ఇది మాన్యువల్‌గా డిస్క్‌కు ఏదైనా డేటాను డౌన్‌లోడ్ చేయనీయకుండా, పేజీలను సేవ్ చేయనీయకుండా లేదా వాటిని ముద్రించనీయకుండా వినియోగదారుని నిరోధించదు.
+      ఈ మోడ్‌లో వినియోగదారు వారి సెషన్‌ను ముగించే వరకు మాత్రమే ప్రొఫైల్ డేటా డిస్క్‌లో ఉంటుంది. బ్రౌజర్ చరిత్ర, ఎక్స్‌టెన్ష‌న్‌ల వంటి ఫీచ‌ర్‌లు, వాటి డేటా, కుక్కీలు, వెబ్ డేటాబేస్‌ల వంటి వెబ్ డేటా, బ్రౌజర్ మూసివేయబడిన తర్వాత భద్రపరచబడదు. అయితే ఇది మాన్యువల్‌గా డిస్క్‌కు ఏదైనా డేటాను డౌన్‌లోడ్ చేయనీయకుండా, పేజీలను సేవ్ చేయనీయకుండా లేదా వాటిని ముద్రించనీయకుండా వినియోగదారుని నిరోధించదు.
 
-      వినియోగదారు సమకాలీకరణను ప్రారంభిస్తే ఈ మొత్తం డేటా త‌న సమకాలీకరణ ప్రొఫైల్‌లో సాధారణ ప్రొఫైల్‌ల మాదిరిగా భద్రపరచబడుతుంది. విధానం ప్రకారం ప్రత్యేకంగా నిలిపివేయబడి ఉంటే మినహా అజ్ఞాత మోడ్ కూడా అందుబాటులో ఉంటుంది.
+      వినియోగదారు, సింక్‌ను ప్రారంభిస్తే ఈ మొత్తం డేటా వారి సింక్‌ ప్రొఫైల్‌లో సాధారణ ప్రొఫైల్‌ల మాదిరిగా భద్రపరచబడుతుంది. విధానం ప్రకారం ప్రత్యేకంగా నిలిపివేయబడి ఉంటే మినహా అజ్ఞాత మోడ్ కూడా అందుబాటులో ఉంటుంది.
 
       విధానం నిలిపివేసేలా సెట్ చేసి ఉంటే లేదా ఏమీ సెట్ చేయకుండా ఉంటే, సైన్ ఇన్ చేసినప్పుడు సాధారణ ప్రొఫైల్‌లకు మళ్లించబడుతుంది.</translation>
 <translation id="8158758865057576716"><ph name="PRODUCT_NAME" /> ప్రొఫైల్ డేటా కోసం రోమింగ్ కాపీల రూపకల్పనను ప్రారంభించండి.</translation>
@@ -3144,9 +3142,9 @@
 <translation id="8244525275280476362">విధాన అప్రామాణీకరణ తర్వాత పొందడంలో గరిష్ట ఆలస్యం</translation>
 <translation id="8256688113167012935">సంబంధిత పరికర-స్థానిక ఖాతాకు లాగిన్ స్క్రీన్‌పై <ph name="PRODUCT_OS_NAME" /> చూపే ఖాతా పేరును నియంత్రిస్తుంది.
 
-      ఈ విధానాన్ని సెట్ చేస్తే, లాగిన్ స్క్రీన్ సంబంధిత పరికర-స్థానిక ఖాతా కోసం చిత్ర-ఆధారిత లాగిన్ ఎంపికలో పేర్కొన్న స్ట్రింగ్‌ను ఉపయోగిస్తుంది.
+      ఈ విధానాన్ని సెట్ చేస్తే, లాగిన్ స్క్రీన్ సంబంధిత పరికర-స్థానిక ఖాతా కోసం చిత్ర-ఆధారిత లాగిన్ ఎంపికలో పేర్కొన్న వాక్యాన్ని ఉపయోగిస్తుంది.
 
-      ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, <ph name="PRODUCT_OS_NAME" /> లాగిన్ స్క్రీన్‌పై ప్రదర్శన పేరులాగా పరికర-స్థానిక ఖాతా యొక్క ఇమెయిల్ ఖాతా IDని ఉపయోగిస్తుంది.
+      ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, <ph name="PRODUCT_OS_NAME" /> లాగిన్ స్క్రీన్‌పై ప్రదర్శన పేరుగా పరికర-స్థానిక ఖాతా యొక్క ఇమెయిల్ ఖాతా IDని ఉపయోగిస్తుంది.
 
       ఈ విధానం సాధారణ వినియోగదారు ఖాతాలకు విస్మరించబడుతుంది.</translation>
 <translation id="8259375588339409826">Chromium మరియు Google Chrome రెండూ ఒకే రకమైన విధానాలకు మద్దతిస్తాయి. దయచేసి నోటీసు లేకుండా మార్చగల లేదా తీసివేయగల విడుదల చేయబడని విధానాలను (అంటే 'మద్దతు ఇచ్చేవి' నమోదులో <ph name="PRODUCT_NAME" /> యొక్క ఇంకా విడుదల కాని వెర్షన్ సూచిస్తుంది) ఈ పత్రం కలిగి ఉండవచ్చు, వాటి కోసం భద్రతా మరియు గోప్యతా లక్షణాలకు సంబంధించిన హామీలతో సహా ఎలాంటి హామీలు ఇవ్వబడవు అని గమనించండి.
@@ -3359,7 +3357,7 @@
 
       సెట్ చేయకపోతే, డిఫాల్ట్ సమయం <ph name="PRODUCT_OS_NAME" /> పరికరాలకు 345600000 మిల్లీసెకన్లు (నాలుగు రోజులు) , అలాగే <ph name="PRODUCT_NAME" />కు 604800000 మిల్లీసెకన్లు (ఒక వారం) ఉపయోగించబడుతుంది.</translation>
 <translation id="8685024486845674965">పాస్‌వర్డ్‌ని తిరిగి ఉపయోగించినప్పుడు పాస్‌వర్డ్ రక్షణ హెచ్చరిక సక్రియం చేయబడుతుంది</translation>
-<translation id="8693243869659262736">అంతర్నిర్మిత DNS క్లయింట్‌ను ఉపయోగించండి</translation>
+<translation id="8693243869659262736">అంత‌ర్గ‌త‌ DNS క్లయింట్‌ను ఉపయోగించండి</translation>
 <translation id="8704831857353097849">ఆపివేయబడిన ప్లగ్‌ఇన్‌ల జాబితా</translation>
 <translation id="8711086062295757690">కీలక పదాన్ని పేర్కొంటుంది, ఈ కీలక పదం ఈ ప్రొవైడర్ కోసం శోధనను ప్రారంభించే ఓమ్నిపెట్టె‌లో ఉపయోగించే సత్వరమార్గం. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రొవైడర్‌ను ఏ కీలక పదం సక్రియం చేయదు. ఈ విధానం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడి ఉన్నప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation>
 <translation id="8731693562790917685">నిర్ధిష్ట రకమైన కంటెంట్‌లను (ఉదాహరణకు కుక్కీలు, చిత్రాలు లేదా JavaScript) ఎలా నిర్వహించాలో పేర్కొనడానికి కంటెంట్ సెట్టింగ్‌లు మిమ్మల్ని అనుమతిస్తాయి.</translation>
@@ -3416,11 +3414,11 @@
 <translation id="8864975621965365890">సైట్ <ph name="PRODUCT_FRAME_NAME" /> ద్వారా అమలు చేయబడినప్పుడు ప్రాంప్ట్ చేయబడే అవకాశాన్ని నియంత్రిస్తుంది.</translation>
 <translation id="8867464911288727016"><ph name="PRODUCT_NAME" />లో ఏకీకృత Google అనువాదం సేవను ప్రారంభిస్తుంది.
 
-      మీరు ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, <ph name="PRODUCT_NAME" /> ఏకీకృత అనువాదం సాధనాల బార్‌ను (సముచిత సమయంలో) చూపడం ద్వారా అనువాద ఫంక్ష‌న్‌ను వినియోగ‌దారుకు అందిస్తుంది. కుడి-క్లిక్ సందర్భ మెనూలో అనువాదం ఎంపికను చూపుతుంది.
+      మీరు ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, <ph name="PRODUCT_NAME" /> ఏకీకృత అనువాదం సాధనాల బార్‌ను (సముచిత సమయంలో) చూపడం ద్వారా అనువాద కార్య‌శీల‌త‌ను అందిస్తుంది. కుడి-క్లిక్ సందర్భ మెనూలో అనువాదం ఎంపికను చూపుతుంది.
 
       మీరు ఈ సెట్టింగ్‌ను నిలిపివేస్తే, అంత‌ర్గ‌త‌ అనువాదం ఫీచర్‌లు అన్నీ నిలిపివేయబడతాయి.
 
-      మీరు ఈ సెట్టింగ్‌ను ప్రారంభించినా లేదా నిలిపివేసినా, వినియోగదారులు <ph name="PRODUCT_NAME" />లో ఈ సెట్టింగ్‌ను మార్చలేరు లేదా అధిగ‌మించ‌లేరు.
+      మీరు ఈ సెట్టింగ్‌ను ప్రారంభించినా లేదా నిలిపివేసినా, వినియోగదారులు <ph name="PRODUCT_NAME" />లో ఈ సెట్టింగ్‌ను మార్చలేరు లేదా అధ‌గిమించ‌లేరు.
 
       ఈ సెట్టింగ్‌ను సెట్ చేయకుండా వదిలేస్తే, ఈ ఫంక్షన్‌ను ఉపయోగించాలో లేదో వినియోగదారు నిర్ణయించగలరు.</translation>
 <translation id="8870318296973696995">హోమ్ పేజీ</translation>
@@ -3494,15 +3492,15 @@
       ఒప్పుకి సెట్ చేయబడినట్లయితే లేదా సెట్ చేయకపోతే, సింక్ సమ్మతి ప్రదర్శించబడుతుంది.</translation>
 <translation id="8947415621777543415">పరికర స్థానాన్ని నివేదించండి</translation>
 <translation id="8951350807133946005">డిస్క్ కాష్ డైరెక్టరీని సెట్ చెయ్యి</translation>
-<translation id="8952317565138994125">Google హోస్ట్‌ సమకాలీకరణ సేవలను ఉపయోగించి <ph name="PRODUCT_NAME" />లో డేటా సమకాలీకరణను నిలిపివేస్తుంది. వినియోగదారులు ఈ సెట్టింగ్‌ని మార్చడాన్ని నిరోధిస్తుంది.
+<translation id="8952317565138994125">Google నిర్వాహిత సింక్‌ సేవలను ఉపయోగించి <ph name="PRODUCT_NAME" />లో డేటా సింక్‌ను నిలిపివేస్తుంది. వినియోగదారులు ఈ సెట్టింగ్‌ను మార్చడాన్ని నిరోధిస్తుంది.
 
-      మీరు ఈ సెట్టింగ్‌ని ఆరంభించినట్లయితే, వినియోగదారులు <ph name="PRODUCT_NAME" />లో ఈ సెట్టింగ్‌ను మార్చలేరు లేదా అధిగ‌మించ‌లేరు.
+      మీరు ఈ సెట్టింగ్‌ను ఆరంభించినట్లయితే, వినియోగదారులు <ph name="PRODUCT_NAME" />లో ఈ సెట్టింగ్‌ను మార్చలేరు లేదా భర్తీ చేయలేరు.
 
-     ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, Google సమకాలీకరణ ఉపయోగించాలా, వ‌ద్దా అనే అంశం వినియోగదారులు నిర్ణయించుకుంటారు.
+     ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, Google సింక్‌ ఉపయోగించాలో, వద్దో అనే అంశం వినియోగదారులు నిర్ణయించడానికి అందుబాటులోకి వస్తుంది.
 
-      Google సమకాలీకరణను పూర్తిగా నిలిపివేయడానికి, మీరు Google నిర్వాహక కన్సోల్‌లో Google సమకాలీకరణ సేవను నిలిపివేయాల్సిందిగా సిఫార్సు చేయడమైనది.
+      Google సింక్‌ను పూర్తిగా నిలిపివేయడానికి, మీరు Google నిర్వాహక కన్సోల్‌లో Google సింక్‌ సేవను నిలిపివేయాల్సిందిగా సిఫార్సు చేయడమైనది.
 
-      <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME" /> విధానం ఆరంభించడానికి సెట్ చేసినప్పుడు ఆ ఫీచర్ ఒకే క్లయింట్ తరఫున ఉన్న ఫంక్ష‌న్‌ను భాగస్వామ్యం చేస్తుంది కాబట్టి ఈ విధానం ఆరంభించబడకూడదు. ఈ సందర్భంలో Google హోస్ట్‌ సమకాలీకరణ పూర్తిగా నిలిపివేయబడింది.</translation>
+      <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME" /> విధానం ఆరంభించడానికి సెట్ చేసినప్పుడు ఆ ఫీచర్ ఒకే క్లయింట్ తరఫున ఉన్న కార్య‌శీల‌త‌ను షేర్‌ చేస్తుంది కాబట్టి ఈ విధానం ఆరంభించబడకూడదు. ఈ సందర్భంలో Google నిర్వాహిత సింక్‌ పూర్తిగా నిలిపివేయబడింది.</translation>
 <translation id="8955719471735800169">ఎగువకు తిరిగి వెళ్ళు</translation>
 <translation id="8959992920425111821">డిఫాల్ట్ కాన్ఫిగరేషన్</translation>
 <translation id="8960850473856121830">ఈ జాబితాలోని నమూనాలు అభ్యర్థిస్తున్న URL భద్రతా మూలాధారంతో
@@ -3564,15 +3562,15 @@
 
       గమనిక: ఈ విధానం Androidలో వర్తించదు. Androidలో IsolateOrigins ప్రారంభించడానికి, IsolateOriginsAndroid విధాన సెట్టింగ్‌ను ఉపయోగించండి.
       </translation>
-<translation id="9072600218500597787">రిమోట్ ప్రాప్యత హోస్ట్‌లపై విధించబడే అవసరమైన హోస్ట్ పేర్లను కాన్ఫిగర్ చేస్తుంది మరియు వినియోగదారులు దీన్ని మార్చనీయకుండా నిరోధిస్తుంది.
+<translation id="9072600218500597787">రిమోట్ యాక్సెస్‌ హోస్ట్‌లపై విధించబడే అవసరమైన హోస్ట్ పేర్లను కాన్ఫిగర్ చేస్తుంది. వినియోగదారులు దీన్ని మార్చనీయకుండా నిరోధిస్తుంది.
 
-ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు నిర్దిష్ట డొమైన్ పేరులో నమోదు అయిన ఖాతాలను ఉపయోగించి మాత్రమే హోస్ట్‌లు భాగస్వామ్యం చేయబడతాయి.
+ఈ సెట్టింగ్‌ను ప్రారంభిస్తే, అప్పుడు నిర్దిష్ట డొమైన్ పేరులో నమోదు అయిన ఖాతాలను ఉపయోగించి మాత్రమే హోస్ట్‌లు షేర్‌ చేయబడతాయి.
 
-ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకపోతే, అప్పుడు ఏ ఖాతానైనా ఉపయోగించి హోస్ట్‌లు భాగస్వామ్యం చేయబడతాయి.
+ఈ సెట్టింగ్‌ను నిలిపివేస్తే లేదా సెట్ చేయకపోతే, అప్పుడు ఏ ఖాతానైనా ఉపయోగించి హోస్ట్‌లు షేర్‌ చేయబడతాయి.
 
-ఒకవేళ ఉంటే ఈ సెట్టింగ్ RemoteAccessHostDomainని భర్తీ చేస్తుంది.
+ఒకవేళ ఉంటే ఈ సెట్టింగ్ RemoteAccessHostDomainను అధిగ‌మిస్తుంది.
 
-RemoteAccessHostClientDomainListని కూడా చూడండి.</translation>
+RemoteAccessHostClientDomainListను కూడా చూడండి.</translation>
 <translation id="9077227880520270584">పరికర-స్థానిక ఖాతా ఆటో-లాగిన్ టైమర్</translation>
 <translation id="9084985621503260744">శక్తి నిర్వహణను వీడియో కార్యాచరణ ప్రభావితం చేయాలో లేదో పేర్కొనడం</translation>
 <translation id="9088433379343318874">పర్యవేక్షించబడే వినియోగదారు కంటెంట్ ప్రదాతను ప్రారంభించండి</translation>
@@ -3655,13 +3653,13 @@
 విధానాన్ని తప్పుకు సెట్ చేస్తే, 'శీర్షికలు మరియు ఫుటర్లు' ముద్రణ ప్రివ్యూ డైలాగ్‌లో ఎంచుకోబడదు మరియు వినియోగదారు దీన్ని మార్చలేరు.
 
 విధానాన్ని ఒప్పుకు సెట్ చేస్తే, 'శీర్షికలు మరియు ఫుటర్లు' ముద్రణ ప్రివ్యూ డైలాగ్‌లో ఎంపిక చేయబడుతుంది మరియు వినియోగదారు దీన్ని మార్చలేరు.</translation>
-<translation id="9210953373038593554">SAML లాగిన్‌ల కోసం ప్రమాణీకరణ రకాన్ని కాన్ఫిగర్ చేస్తుంది.
+<translation id="9210953373038593554">SAML లాగిన్‌ల కోసం ప్రామాణీకరణ రకాన్ని కాన్ఫిగర్ చేస్తుంది.
 
-      ఈ విధానాన్ని సెట్ చేయనప్పుడు లేదా డిఫాల్ట్‌ (విలువ 0)కి సెట్ చేసినప్పుడు, ఇతర కారకాల ఆధారంగా SAML లాగిన్‌ల పద్ధతిని బ్రౌజర్ నిర్ణయిస్తుంది. అత్యంత సాధారణ సందర్భంలో, వినియోగదారు ప్రమాణీకరణ మరియు కాష్ చేయబడిన వినియోగదారు డేటా సంరక్షణ అన్నవి వినియోగదారులు మాన్యువల్‌గా నమోదు చేసిన పాస్‌వర్డ్‌లపై ఆధారపడి ఉంటాయి.
+      ఈ విధానాన్ని సెట్ చేయనప్పుడు లేదా డిఫాల్ట్‌ (విలువ 0)కి సెట్ చేసినప్పుడు, ఇతర కారకాల ఆధారంగా SAML లాగిన్‌ల పద్ధతిని బ్రౌజర్ నిర్ణయిస్తుంది. అత్యంత సాధారణ సందర్భంలో, వినియోగదారు ప్రామాణీకరణ, కాష్ చేయబడిన వినియోగదారు డేటా సంరక్షణ అన్నవి వినియోగదారులు మాన్యువల్‌గా నమోదు చేసిన పాస్‌వర్డ్‌లపై ఆధారపడి ఉంటాయి.
 
-      ఈ విధానాన్ని ClientCertificate (విలువ 1)కి సెట్ చేసినప్పుడు, SAML ద్వారా లాగిన్ చేసే కొత్తగా జోడించబడిన వినియోగదారుల కోసం క్లయింట్ సర్టిఫికేట్ ప్రమాణీకరణ ఉపయోగించబడుతుంది. అటువంటి వినియోగదారుల కోసం పాస్‌వర్డ్‌లు ఉపయోగించబడవు మరియు వారి కాష్ చేయబడిన స్థానిక డేటా, సంబంధిత క్రిప్టోగ్రాఫిక్ కీలను ఉపయోగించి రక్షించబడుతుంది. ఉదాహరణకు, స్మార్ట్ కార్డ్ ఆధారిత వినియోగదారు ప్రమాణీకరణను కాన్ఫిగర్ చేయడానికి ఈ సెట్టింగ్ అనుమతిస్తుంది (DeviceLoginScreenAppInstallList విధానం ద్వారా స్మార్ట్ కార్డ్ మిడిల్‌వేర్ యాప్‌లను ఇన్‌స్టాల్ చేయాలని గుర్తుంచుకోండి).
+      ఈ విధానాన్ని ClientCertificate (విలువ 1)కి సెట్ చేసినప్పుడు, SAML ద్వారా లాగిన్ చేసే కొత్తగా జోడించబడిన వినియోగదారుల కోసం క్లయింట్ స‌ర్టిఫికెట్‌ ప్రామాణీకరణ ఉపయోగించబడుతుంది. అటువంటి వినియోగదారుల కోసం పాస్‌వర్డ్‌లు ఉపయోగించబడవు. వారి కాష్ చేయబడిన స్థానిక డేటా, సంబంధిత క్రిప్టోగ్రాఫిక్ కీలను ఉపయోగించి రక్షించబడుతుంది. ఉదాహరణకు, స్మార్ట్ కార్డ్ ఆధారిత వినియోగదారు ప్రామాణీకరణను కాన్ఫిగర్ చేయడానికి ఈ సెట్టింగ్ అనుమతిస్తుంది (DeviceLoginScreenAppInstallList విధానం ద్వారా స్మార్ట్ కార్డ్ మిడిల్‌వేర్ యాప్‌లను ఇన్‌స్టాల్ చేయాలని గుర్తుంచుకోండి).
 
-      SAMLని ఉపయోగించి ప్రమాణీకరించే వినియోగదారులపై మాత్రమే ఈ విధానం ప్రభావం చూపుతుంది.</translation>
+      SAMLని ఉపయోగించి ప్రామాణీకరించే వినియోగదారులపై మాత్రమే ఈ విధానం ప్రభావం చూపుతుంది.</translation>
 <translation id="9213347477683611358">పరికరంలోకి ఏ వినియోగదారు ఇంకా సైన్ ఇన్ చేయనట్లయితే, లాగిన్ స్క్రీన్‌పై చూపబడే పరికర-స్థాయి వాల్‌పేపర్ చిత్రాన్ని కాన్ఫిగర్ చేస్తుంది. విధానం Chrome OS పరికరం వాల్‌పేపర్‌ చిత్రాన్ని డౌన్‌లోడ్ చేయగల URLను మరియు డౌన్‌లోడ్ యొక్క సమగ్రత ధృవీకరణకు ఉపయోగించడానికి క్రిప్టోగ్రాఫిక్ హ్యాష్‌ను పేర్కొనడం ద్వారా సెట్ చేయబడుతుంది. చిత్రం తప్పనిసరిగా JPEG ఫార్మాట్లో ఉండాలి, దీని పరిమాణం ఎట్టి పరిస్థితుల్లోనూ 16MB మించకూడదు. URL తప్పనిసరిగా ఎటువంటి ప్రామాణీకరణ లేకుండానే యాక్సెస్ చేయగలిగేలా ఉండాలి. వాల్‌పేపర్ చిత్రం డౌన్‌లోడ్ చేయబడుతుంది మరియు కాష్ చేయబడుతుంది. URL లేదా హ్యాష్ మారినప్పుడల్లా మళ్లీ డౌన్‌లోడ్ చేయబడుతుంది.
 
       విధానాన్ని URL మరియు హ్యాష్‌ని JSON ఫార్మాట్లో వ్యక్తపరిచే స్ట్రింగ్ వలె పేర్కొనాలి, ఉదా.,
@@ -3679,9 +3677,9 @@
 <translation id="930930237275114205"><ph name="PRODUCT_FRAME_NAME" /> వినియోగదారు డేటా డైరెక్టరీనీ నేరుగా సెట్ చేయండి</translation>
 <translation id="943865157632139008"><ph name="PRODUCT_FRAME_NAME" /> వ్యవస్థాపితం అయినపుడు డిఫాల్ట్ HTML కాన్ఫిగర్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. హోస్ట్ బ్రౌజర్ రెండరింగ్ చేయడం కోసం డిఫాల్ట్ సెట్టింగ్, కాని మీరు ఐచ్ఛికంగా దీన్ని ఓవర్‌రైడ్ చెయ్యాలి మరియు డిఫాల్ట్‌గా <ph name="PRODUCT_FRAME_NAME" /> రెండర్ HTML పేజీలని కలిగి ఉండాలి.</translation>
 <translation id="944817693306670849">డిస్క్ కాష్ పరిమాణాన్ని సెట్ చేయి</translation>
-<translation id="966854160628341653">కొత్త వినియోగదారు ఖాతాలను సృష్టించడానికి <ph name="PRODUCT_OS_NAME" /> అనుమతిస్తుందో లేదో అనేదాన్ని నియంత్రిస్తుంది. ఆ విధానం తప్పుకు సెట్ చేయబడి ఉంటే, ఇప్పటికే ఖాతా లేని వినియోగదారులు లాగిన్ చేయలేరు.
+<translation id="966854160628341653">కొత్త వినియోగదారు ఖాతాలను సృష్టించడానికి <ph name="PRODUCT_OS_NAME" /> అనుమతిస్తుందో లేదో అనే దాన్ని నియంత్రిస్తుంది. ఆ విధానం తప్పునకు సెట్ చేయబడి ఉంటే, ఇప్పటికే ఖాతా లేని వినియోగదారులు లాగిన్ చేయలేరు.
 
-      ఈ విధానం ఒప్పుకు సెట్ చేయబడి ఉంటే లేదా కాన్ఫిగర్ చేయబడకుండా ఉంటే, <ph name="DEVICE_USER_WHITELIST_POLICY_NAME" /> వినియోగదారును లాగిన్ చేయడానికి అనుమతించే విధంగా సృష్టించడానికి కొత్త వినియోగదారు ఖాతాలు అనుమతించబడతాయి.</translation>
+      ఈ విధానం ఒప్పునకు సెట్ చేయబడి ఉంటే లేదా కాన్ఫిగర్ చేయబడకుండా ఉంటే, <ph name="DEVICE_USER_WHITELIST_POLICY_NAME" /> వినియోగదారును లాగిన్ చేయడానికి అనుమతించే విధంగా సృష్టించడానికి కొత్త వినియోగదారు ఖాతాలు అనుమతించబడతాయి.</translation>
 <translation id="981346395360763138">Google స్థాన సేవలు నిలిపివేయబడ్డాయి</translation>
 <translation id="982497069985795632">స్పెల్‌చెక్‌ను ప్రారంభించండి</translation>
 <translation id="988537626274109600">ఆటోమేటిక్‌‌గా అప్‌డేట్‌లను తనిఖీ చేసేందుకు <ph name="PRODUCT_OS_NAME" /> పరికరం అనుమతించబడని సమయంలో ఈ విధానం సమయ పరిమితలను నియంత్రిస్తుంది.
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index 257c4f31..867496c 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -2622,8 +2622,8 @@
       |future_config|, erişim kodu doğrulamak için kullanılan birincil yapılandırmadır.
       |old_configs| yalnızca erişim kodunun |future_config| veya |current_config| ile doğrulanamadığı zamanlarda erişim kodu doğrulamak için kullanılmalıdır.
 
-      Bu politika kullanılırken erişim kodu yapılandırmanın yavaş yavaş döndürülmesi beklenir. Yeni yapılandırma her zaman |future_config|'in içine koyulur. Aynı zamanda
-      mevcut değer de |current_config|'in içine taşınır. |current_config|'in önceki değerleri |old_configs|'e taşınır ve rotasyon döngüsü bittikten sonra kaldırılır.
+      Bu politika kullanılırken erişim kodu yapılandırmanın yavaş yavaş döndürülmesi beklenir. Yeni yapılandırma her zaman |future_config| yapılandırmasının içine koyulur. Aynı zamanda
+      mevcut değer de |current_config| yapılandırmasının içine taşınır. |current_config| yapılandırmasının önceki değerleri |old_configs| yapılandırmasına taşınır ve rotasyon döngüsü bittikten sonra kaldırılır.
 
       Bu politika yalnızca çocuk kullanıcılar için geçerlidir.
       Bu politika ayarlandığında, Ebeveyn Erişim Kodu çocuk kullanıcının cihazında doğrulanabilir.
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index a3fc2deb..a00cb6b 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -143,6 +143,7 @@
 
 如果你未設定這項政策,則系統預設行為會是不允許使用用戶端憑證的連線合併 HTTP/2 連線。</translation>
 <translation id="1353966721814789986">起始網頁</translation>
+<translation id="1354424209129232709">上限:</translation>
 <translation id="1359553908012294236">如果將這項政策設為 True 或未設定,<ph name="PRODUCT_NAME" /> 會啟用訪客登入。訪客登入是 <ph name="PRODUCT_NAME" /> 設定檔,其中的所有視窗都處於無痕模式。
 
       如果將這項政策設為 False,<ph name="PRODUCT_NAME" /> 將會禁止啟動訪客設定檔。</translation>
@@ -753,6 +754,7 @@
       如果未設定這項政策,系統會自動採用 <ph name="PRINTERS_ALLOW_ALL" />。
       </translation>
 <translation id="2908277604670530363">Proxy 伺服器的並行連線數量上限</translation>
+<translation id="2952347049958405264">限制:</translation>
 <translation id="2956777931324644324">我們已於 <ph name="PRODUCT_NAME" /> 版本 36 中移除這項政策。
 
       指定是否要啟用 TLS 網域專屬憑證擴充功能。
@@ -1388,6 +1390,7 @@
 <translation id="465099050592230505">企業線上應用程式商店網址 (已不適用)</translation>
 <translation id="4665897631924472251">擴充功能管理設定</translation>
 <translation id="4668325077104657568">預設圖片設定</translation>
+<translation id="4670865688564083639">下限:</translation>
 <translation id="4671708336564240458">讓你設定是否禁止發生濫用行為的網站開啟新視窗或新分頁。
 
       如果將這項政策設為 True,發生濫用行為的網站將無法開啟新視窗或新分頁。
@@ -1781,6 +1784,7 @@
 
       網址 (例如 https://example.com/some/path) 只會比對為 U2F appID,網域 (例如 example.com) 則只會比對為 WebAuthn RP ID。因此,如要同時涵蓋指定網站的 U2F API 和 WebAuthn API,必須一併列出 appID 網址和網域。</translation>
 <translation id="5836064773277134605">限制遠端存取主機所使用的 UDP 通訊埠範圍</translation>
+<translation id="5861856285460256766">家長存取碼設定</translation>
 <translation id="5862253018042179045">設定互動朗讀協助功能在登入畫面的預設狀態。
 
           如果你將這項政策設為 True,系統將在顯示登入畫面時啟用互動朗讀。
@@ -2519,6 +2523,11 @@
           如果不是清單中的擴充功能,或是未設定清單,API 呼叫作業將會失敗,並傳回錯誤代碼。</translation>
 <translation id="7618907117929117943">如果作業系統比目標版本還新,且版本復原後可以沿用裝置層級設定 (包括網路憑證),則復原並維持在目標版本,並在復原版本後略過 OOBE 流程。如果因故無法沿用裝置層級設定 (例如目標版本不支援版本復原功能或有變更與版本復原功能不相容),則不會復原版本,執行中的復原作業將遭到取消。
           支援 <ph name="PRODUCT_OS_NAME" /> 70 以上版本。如果用戶端版本低於 70,則這個值代表版本復原功能已停用。</translation>
+<translation id="7620869951155758729">這項政策可讓你指定用來產生及驗證家長存取碼的設定。請一律使用 |current_config| 來產生存取碼,而且只有在無法透過 |future_config| 驗證存取碼時,才能使用這項設定進行驗證。
+      |future_config| 是驗證存取碼時主要使用的設定。只有在 |future_config| 和 |current_config| 兩者都無法用於驗證存取碼時,才能使用 |old_configs| 進行驗證。
+
+      根據預期,這項政策會逐漸輪換存取碼設定。新設定一律會加到 |future_config| 中,同時
+      現有值會移到 |current_config| 中。|current_config| 先前的值則會移到 |old_configs|,並在輪換結束後移除。這項政策只適用於兒童使用者。如果設定這項政策,系統將可在兒童使用者裝置上驗證家長存取碼。如果不設定這項政策,系統將無法在兒童使用者裝置上驗證家長存取碼。</translation>
 <translation id="7625444193696794922">指定裝置的固定發佈頻道。</translation>
 <translation id="7632724434767231364">GSSAPI 資料庫名稱</translation>
 <translation id="7635471475589566552">設定「<ph name="PRODUCT_NAME" />」的應用程式語言代碼,並且禁止使用者變更語言代碼。如果你啟用這項設定,「<ph name="PRODUCT_NAME" />」就會使用指定的語言代碼。如果設定的語言代碼不受支援,就會改用「en-US」。如果停用或尚未調整這項設定,「<ph name="PRODUCT_NAME" />」就會使用使用者指定的偏好語言代碼 (如果已設定)、系統語言代碼或備用語言代碼「en-US」。</translation>
diff --git a/components/strings/components_google_chrome_strings_te.xtb b/components/strings/components_google_chrome_strings_te.xtb
index b5c3f53f..2d28a8f 100644
--- a/components/strings/components_google_chrome_strings_te.xtb
+++ b/components/strings/components_google_chrome_strings_te.xtb
@@ -6,7 +6,7 @@
 <translation id="2147651015520127414">Chrome ఈ వెబ్‌సైట్ ప్రమాణపత్రాన్ని <ph name="ISSUER" /> జారీ చేసినట్లు ధృవీకరించింది.</translation>
 <translation id="2874156562296220396"><ph name="BEGIN_LINK_CHROMIUM" />Chromium<ph name="END_LINK_CHROMIUM" /> ఓపెన్ సోర్స్ ప్రాజెక్ట్‌ మరియు ఇతర <ph name="BEGIN_LINK_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్<ph name="END_LINK_OSS" />లపై Google Chrome ఎంతగానో ఆధారపడుతుంది.</translation>
 <translation id="3140883423282498090">మీ మార్పులు మీరు Google Chromeను మళ్లీ ప్రారంభించినప్పుడు ప్రభావాన్ని చూపుతాయి.</translation>
-<translation id="3444832043240812445">మీరు <ph name="BEGIN_LINK" />క్రాష్‌ నివేద‌న‌ను ప్రారంభించినపుడు<ph name="END_LINK" /> ఈ పేజీ మీ ఇటీవలి క్రాష్‌ల సమాచారాన్ని మాత్రమే చూపిస్తుంది.</translation>
+<translation id="3444832043240812445">మీరు <ph name="BEGIN_LINK" />క్రాష్‌ నివేదికను ప్రారంభించినపుడు<ph name="END_LINK" /> ఈ పేజీ మీ ఇటీవలి క్రాష్‌ల సమాచారాన్ని మాత్రమే చూపిస్తుంది.</translation>
 <translation id="3875312571075912821">మీ ఫైర్‌వాల్ లేదా యాంటీవైరస్ సెట్టింగ్‌ల్లో నెట్‌వర్క్‌ను ప్రాప్యత చేయడానికి
           Chromeను అనుమతించండి.</translation>
 <translation id="4010643444566880169">Chrome OS దాని ప్రాథమిక సెటప్‌ను పూర్తి చేయలేదు.</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index 64ae93d..49a4da8 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">ኢሜይል ያክሉ</translation>
 <translation id="3901925938762663762">ካርዱ አገልግሎት ጊዜው አብቅቷል</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">የተሰቀለ የብልሽት ሪፖርት መታወቂያ <ph name="CRASH_ID" /> (የአካባቢ የብልሽት መታወቂያ፦ <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">ሁልጊዜ በዚህ ጣቢያ ላይ ጠይቅ</translation>
 <translation id="3947577358805392297">በኋላ ላይ ለመጠቀም ገጽን አስቀምጥ</translation>
 <translation id="3949571496842715403">ይህ አገልጋይ <ph name="DOMAIN" /> መሆኑን ሊያረጋግጥ አልቻለም፤ የደህንነት ዕውቅና ማረጋገጫው የርዕሰ ጒዳይ አማራጭ ስሞችን አይጠቅስም። ይህ በተሳሳተ ውቅረት የተከሰተ ወይም አጥቂ የእርስዎን ግንኙነት አቋርጦ እየገባ ስለሆነ ሊሆን ይችላል።</translation>
@@ -1063,7 +1062,6 @@
 <translation id="8149426793427495338">የእርስዎ ኮምፒውተ ተኝቷል።</translation>
 <translation id="8150722005171944719"><ph name="URL" /> ላይ ያለው ፋይል የሚነበብ አይደለም።  ተወግዶ፣ ተወስዶ ወይም የፋይል ፍቃዶቹ መዳረሻ እየከለከሉ ሊሆኑ ይችላሉ።</translation>
 <translation id="8184538546369750125">ሁለንተናዊ ነባሪውን ተጠቀም (ፍቀድ)</translation>
-<translation id="8191494405820426728">ከባቢያዊ የብልሽት መታወቂያ <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;ውሰድን ቀልብስ</translation>
 <translation id="8197543752516192074">ገጽን ተርጉም</translation>
 <translation id="8201077131113104583">የማይሰራ የURL ዝማኔ ለቅጥያ ከመታወቂያ «<ph name="EXTENSION_ID" />» ጋር።</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index a472161..e9dbbdc 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">إضافة بريد إلكتروني</translation>
 <translation id="3901925938762663762">انتهت صلاحية البطاقة</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">تحميل مُعرّف تقارير الأعطال <ph name="CRASH_ID" /> (مُعرّف الأعطال المحلية: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">السؤال دائمًا على موقع الويب هذا</translation>
 <translation id="3947577358805392297">حفظ الصفحة لوقت لاحق</translation>
 <translation id="3949571496842715403">لم يتمكن هذا الخادم من إثبات أنه <ph name="DOMAIN" />؛ بل إن شهادة الأمان التابعة له لا تُحدّد الأسماء البديلة للمضيفات. وربما يكون السبب في ذلك وجود خطأ في التهيئة أو اعتراض أحد المهاجمين للاتصال.</translation>
@@ -550,7 +549,7 @@
 <translation id="4552089082226364758">الفلاش</translation>
 <translation id="4558551763791394412">جرّب إيقاف الإضافات.</translation>
 <translation id="457875822857220463">التسليم</translation>
-<translation id="4582204425268416675">إزالة بطاقة</translation>
+<translation id="4582204425268416675">إزالة البطاقة</translation>
 <translation id="4587425331216688090">‏هل تريد إزالة العنوان من Chrome؟</translation>
 <translation id="4592951414987517459">يتم ترميز اتصالك بالنطاق <ph name="DOMAIN" /> باستخدام مجموعة تشفير حديثة.</translation>
 <translation id="4594403342090139922">تراجع عن الحذ&amp;ف</translation>
@@ -953,7 +952,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /> حول هذه المشكلة.</translation>
 <translation id="7453467225369441013">‏سيتم تسجيل الخروج من معظم مواقع الويب لكن لن يتم تسجيل الخروج من حسابك في Google.</translation>
 <translation id="7455133967321480974">استخدام الإعداد التلقائي العمومي (حظر)</translation>
-<translation id="7460618730930299168">يختلف هذا الفحص عما حدَّدته. هل تريد المتابعة؟</translation>
+<translation id="7460618730930299168">يختلف هذا الفحص عن اختيارك. هل تريد المتابعة؟</translation>
 <translation id="7473891865547856676">لا، شكرًا</translation>
 <translation id="7481312909269577407">إلى الأمام</translation>
 <translation id="7485870689360869515">لم يتم العثور على بيانات.</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">خضع جهاز الكمبيوتر إلى وضع السكون.</translation>
 <translation id="8150722005171944719">الملف الموجود على <ph name="URL" /> غير قابل للقراءة. ربما تمت إزالته، أو ربما تكون أذونات الملف هي التي تمنع الدخول.</translation>
 <translation id="8184538546369750125">استخدام الإعداد التلقائي العمومي (سماح)</translation>
-<translation id="8191494405820426728">معرّف الأعطال المحلي <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">تراجع عن ال&amp;نقل</translation>
 <translation id="8197543752516192074">ترجمة الصفحة</translation>
 <translation id="8201077131113104583">‏عنوان URL لتحديث الإضافة التي تحتوي على رقم التعريف "<ph name="EXTENSION_ID" />" غير صالح.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 4ea95733..494deb9 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -10,6 +10,7 @@
 <translation id="1038842779957582377">неизвестно име</translation>
 <translation id="1050038467049342496">Затворете другите приложения.</translation>
 <translation id="1055184225775184556">&amp;Отмяна на добавянето</translation>
+<translation id="1058479211578257048">Картите се запазват...</translation>
 <translation id="10614374240317010">Незапазвани никога</translation>
 <translation id="1066396345355680611">Може да загубите достъп до защитено съдържание от <ph name="SITE" /> и някои други сайтове.</translation>
 <translation id="106701514854093668">Настолни отметки</translation>
@@ -452,7 +453,6 @@
 <translation id="3890664840433101773">Добавяне на имейл адрес</translation>
 <translation id="3901925938762663762">Картата е с изтекла валидност</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> – <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Идентификатор на качения сигнал за срив: <ph name="CRASH_ID" /> (локален идентификатор на срива: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Винаги да се извежда запитване за този сайт</translation>
 <translation id="3947577358805392297">Запазване на страницата за по-късно</translation>
 <translation id="3949571496842715403">Сървърът не можа да докаже, че е <ph name="DOMAIN" />. В сертификата му за сигурност не са посочени алтернативни имена на обекта. Това може да се дължи на неправилно конфигуриране или на прихващане на връзката ви от извършител на атака.</translation>
@@ -604,6 +604,7 @@
 <translation id="4989163558385430922">Преглед на всички</translation>
 <translation id="4989809363548539747">Тази приставка не се поддържа</translation>
 <translation id="5002932099480077015">Ако настройката е активирана, копие на картата ви ще се съхранява в Chrome на това устройство с цел по-бързо попълване на формуляри.</translation>
+<translation id="5014174725590676422">Показан е екранът при първо стартиране на Google Асистент в Chrome</translation>
 <translation id="5015510746216210676">Име на компютъра:</translation>
 <translation id="5018422839182700155">Тази страница не може да се отвори</translation>
 <translation id="5019198164206649151">Допълнителното хранилище е в лошо състояние</translation>
@@ -715,6 +716,7 @@
 <translation id="5720705177508910913">Текущият потребител</translation>
 <translation id="5730040223043577876">Chrome препоръчва да зададете повторно паролата си, ако сте я използвали и на други сайтове.</translation>
 <translation id="5732392974455271431">Родителите ви могат да го отблокират за вас</translation>
+<translation id="5737183892635480227">{NUM_CARDS,plural, =1{Запазване на картата в профила ви в Google}other{Запазване на картите в профила ви в Google}}</translation>
 <translation id="5763042198335101085">Въведете валиден имейл адрес</translation>
 <translation id="5765072501007116331">За да видите начините на бърза доставка и изискванията, изберете адрес</translation>
 <translation id="5770114862687765385">Файлът изглежда е повреден. Кликнете върху бутона за повторно задаване, за да рестартирате сесията.</translation>
@@ -1061,7 +1063,6 @@
 <translation id="8149426793427495338">Компютърът ви премина в спящ режим.</translation>
 <translation id="8150722005171944719">Файлът на адрес <ph name="URL" /> не може да бъде прочетен.  Възможно е да е премахнат, преместен или разрешенията му да предотвратяват достъпа.</translation>
 <translation id="8184538546369750125">Използване на глобалната стандартна стойност (разрешаване)</translation>
-<translation id="8191494405820426728">Локален идентификатор на срива: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Отмяна на преместването</translation>
 <translation id="8197543752516192074">Превод на страницата</translation>
 <translation id="8201077131113104583">Невалиден URL адрес за актуализиране на разширението с идентификационен номер <ph name="EXTENSION_ID" />.</translation>
@@ -1195,6 +1196,7 @@
 <translation id="9080712759204168376">Обобщена информация за поръчката</translation>
 <translation id="9103872766612412690">Обикновено <ph name="SITE" /> използва шифроване за защита на информацията ви. Когато Chromium опита да установи връзка с/ъс <ph name="SITE" /> този път, уебсайтът върна необичайни и неправилни идентификационни данни. Това може да се случи, когато извършител на атака пробва да се представи за <ph name="SITE" /> или връзката е прекъсната от екран за вход в Wi-Fi. Информацията ви продължава да е защитена, тъй като Chromium спря връзката, преди да бъдат обменени данни.</translation>
 <translation id="9106062320799175032">Добавяне на адрес за фактуриране</translation>
+<translation id="9110718169272311511">Функцията Google Асистент в Chrome е достъпна в долната част на екрана</translation>
 <translation id="9114524666733003316">Картата се потвърждава...</translation>
 <translation id="9128870381267983090">Свързване към мрежа</translation>
 <translation id="9137013805542155359">Показване на оригинала</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index ddb8531e..c0967889 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -454,7 +454,6 @@
 <translation id="3890664840433101773">ইমেল আইডি যোগ করুন</translation>
 <translation id="3901925938762663762">কার্ডটির মেয়াদ শেষ হয়েছে</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ক্র্যাশ রিপোর্ট আইডি <ph name="CRASH_ID" /> আপলোড করা হয়েছে (স্থানীয় ক্র্যাশ আইডি: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">এই সাইটে সর্বদা জিজ্ঞাসা করুন</translation>
 <translation id="3947577358805392297">পরে ব্যবহার করার জন্য পৃষ্ঠা সেভ করুন</translation>
 <translation id="3949571496842715403">এই সার্ভারটিকে <ph name="DOMAIN" /> হিসাবে প্রমাণ করা যায়নি; এটির নিরাপত্তা শংসাপত্রে সাবজেক্ট অল্টারনেটিভ নেম্স নির্দিষ্ট করা নেই। কনফিগারেশনের কোনও সমস্যা অথবা আপনার সংযোগে কোনও আক্রমণকারী আড়ি পাতার কারণে এটি হয়ে থাকতে পারে।</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">আপনার কম্পিউটারটি নিদ্রা মোডে গিয়েছে।</translation>
 <translation id="8150722005171944719"><ph name="URL" />এ ফাইলটি পাঠযোগ্য নয়৷ এটা মুছে ফেলা হয়েছে পারে, সরিয়ে দেওয়া হয়েছে, অথবা ফাইল অনুমতি প্রবেশাধিকার প্রতিরোধ করতে পারে৷</translation>
 <translation id="8184538546369750125">বিশ্বব্যাপী ডিফল্ট ব্যবহার করুন (অনুমতি দিন)</translation>
-<translation id="8191494405820426728">স্থানীয় ক্র্যাশ আইডি <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;সরানোকে পূর্বাবস্থায় ফেরান</translation>
 <translation id="8197543752516192074">পৃষ্ঠাটি অনুবাদ করুন</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" আইডি যুক্ত এক্সটেনশনের আপডেট করার ইউআরএলটি ভুল।</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index b160c20..27dbaa0 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -10,6 +10,7 @@
 <translation id="1038842779957582377">nom desconegut</translation>
 <translation id="1050038467049342496">Tanca altres aplicacions</translation>
 <translation id="1055184225775184556">&amp;Desfés l'addició</translation>
+<translation id="1058479211578257048">S'estan desant les targetes...</translation>
 <translation id="10614374240317010">Contrasenyes que no es desen mai</translation>
 <translation id="1066396345355680611">Pot ser que deixis de tenir accés al contingut protegit del lloc web <ph name="SITE" /> i d'altres llocs web.</translation>
 <translation id="106701514854093668">Adreces d'interès d'escriptori</translation>
@@ -452,7 +453,6 @@
 <translation id="3890664840433101773">Afegeix un correu electrònic</translation>
 <translation id="3901925938762663762">La targeta ha caducat</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">S'ha penjat l'identificador <ph name="CRASH_ID" /> de l'informe d'error (identificador d'error local: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Pregunta sempre en aquest lloc</translation>
 <translation id="3947577358805392297">Desa la pàgina per a més tard</translation>
 <translation id="3949571496842715403">Aquest servidor no ha pogut demostrar que sigui <ph name="DOMAIN" />, perquè el seu certificat de seguretat no especifica noms alternatius per a l'assumpte. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la connexió.</translation>
@@ -604,6 +604,7 @@
 <translation id="4989163558385430922">Mostra-ho tot</translation>
 <translation id="4989809363548539747">Aquest connector no és compatible</translation>
 <translation id="5002932099480077015">Si s'activa, Chrome emmagatzemarà una còpia de la targeta en aquest dispositiu per agilitzar l'emplenament de formularis.</translation>
+<translation id="5014174725590676422">Es mostra la pantalla de la primera execució de l'Assistent de Google a Chrome</translation>
 <translation id="5015510746216210676">Nom de l'ordinador:</translation>
 <translation id="5018422839182700155">No es pot obrir aquesta pàgina</translation>
 <translation id="5019198164206649151">L'emmagatzematge de la còpia de seguretat està en mal estat</translation>
@@ -715,6 +716,7 @@
 <translation id="5720705177508910913">Usuari actual</translation>
 <translation id="5730040223043577876">Chrome et recomana que restableixis la contrasenya si l'has fet servir en altres llocs web.</translation>
 <translation id="5732392974455271431">Els teus pares te'l poden desbloquejar</translation>
+<translation id="5737183892635480227">{NUM_CARDS,plural, =1{Desa la targeta al Compte de Google}other{Desa targetes al Compte de Google}}</translation>
 <translation id="5763042198335101085">Introdueix una adreça electrònica vàlida</translation>
 <translation id="5765072501007116331">Per veure els mètodes i els requisits d'entrega, selecciona una adreça</translation>
 <translation id="5770114862687765385">Sembla que el fitxer està malmès. Fes clic al botó Restableix per restablir la sessió.</translation>
@@ -1061,7 +1063,6 @@
 <translation id="8149426793427495338">L'ordinador ha entrat en mode de repòs.</translation>
 <translation id="8150722005171944719">El fitxer de <ph name="URL" /> no es pot llegir. Pot ser que s'hagi eliminat, que s'hagi traslladat o que els permisos del fitxer n'impedeixin l'accés.</translation>
 <translation id="8184538546369750125">Utilitza l'opció predeterminada global (Permet)</translation>
-<translation id="8191494405820426728">Identificador de l'error local: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Desfés el moviment</translation>
 <translation id="8197543752516192074">Tradueix la pàgina</translation>
 <translation id="8201077131113104583">L'URL d'actualització per a l'extensió amb identificador "<ph name="EXTENSION_ID" />" no és vàlid.</translation>
@@ -1195,6 +1196,7 @@
 <translation id="9080712759204168376">Resum de la comanda</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> utilitza normalment l'encriptació per protegir la vostra informació. En aquesta ocasió, quan Chromium ha provat de connectar-se a <ph name="SITE" />, el lloc web ha enviat credencials poc comunes i incorrectes. Pot ser que un atacant estigui provant de fer-se passar per <ph name="SITE" /> o que una pantalla d'inici de sessió a la xarxa Wi-Fi hagi interromput la connexió. En qualsevol cas, la vostra informació continua estant segura, perquè Chromium ha aturat la connexió abans no s'intercanviés cap dada.</translation>
 <translation id="9106062320799175032">Afegeix una adreça de facturació</translation>
+<translation id="9110718169272311511">L'Assistent de Google a Chrome està disponible a la part inferior de la pantalla</translation>
 <translation id="9114524666733003316">S'està confirmant la targeta...</translation>
 <translation id="9128870381267983090">Connecta't a la xarxa</translation>
 <translation id="9137013805542155359">Mostra l'original</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 3097ae59..b2c6fc8f 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -448,7 +448,6 @@
 <translation id="3890664840433101773">Přidat e-mail</translation>
 <translation id="3901925938762663762">Karta vypršela</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID nahrané zprávy o selhání <ph name="CRASH_ID" /> (místní ID selhání: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Na tomto webu se vždy zeptat</translation>
 <translation id="3947577358805392297">Uložit stránku na později</translation>
 <translation id="3949571496842715403">Server nedokázal prokázat, že patří doméně <ph name="DOMAIN" />. V jeho bezpečnostním certifikátu nejsou uvedeny alternativní názvy subjektu. Může to být způsobeno nesprávnou konfigurací nebo tím, že vaše připojení zachytává útočník.</translation>
@@ -1055,7 +1054,6 @@
 <translation id="8149426793427495338">Počítač přešel do režimu spánku.</translation>
 <translation id="8150722005171944719">Soubor na adrese <ph name="URL" /> nelze načíst. Možná byl odstraněn, přesunut nebo mohou přístupu bránit oprávnění souboru.</translation>
 <translation id="8184538546369750125">Použít výchozí globální hodnotu (Povolit)</translation>
-<translation id="8191494405820426728">Místní ID selhání <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Vrátit přesunutí zpět</translation>
 <translation id="8197543752516192074">Přeložit stránku</translation>
 <translation id="8201077131113104583">Neplatná adresa URL aktualizace rozšíření s ID <ph name="EXTENSION_ID" />.</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index a2a2f83..ec71d73 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Tilføj mail</translation>
 <translation id="3901925938762663762">Kortet er udløbet</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Uploadet nedbruds-id <ph name="CRASH_ID" /> (lokalt nedbruds-id: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Spørg altid på dette website</translation>
 <translation id="3947577358805392297">Gem siden til senere</translation>
 <translation id="3949571496842715403">Denne server kunne ikke bevise, at den er <ph name="DOMAIN" />, da sikkerhedscertifikatet ikke angiver alternative navne på emner. Dette kan skyldes en fejlkonfiguration, eller at en hacker har opfanget din forbindelse.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Din computer gik i dvale.</translation>
 <translation id="8150722005171944719">Filen i <ph name="URL" /> kan ikke læses. Den kan være blevet fjernet, flyttet, eller også forhindrer filtilladelser muligvis adgangen.</translation>
 <translation id="8184538546369750125">Brug global standard (tillad)</translation>
-<translation id="8191494405820426728">Lokalt nedbruds-id <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Fortryd flytning</translation>
 <translation id="8197543752516192074">Oversæt side</translation>
 <translation id="8201077131113104583">Ugyldig webadresse til opdatering for udvidelse med id'et "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 678e29b..ce077a62 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -451,7 +451,6 @@
 <translation id="3890664840433101773">E-Mail-Adresse hinzufügen</translation>
 <translation id="3901925938762663762">Die Karte ist abgelaufen.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> – <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID des hochgeladenen Absturzberichts: <ph name="CRASH_ID" /> (lokale Absturz-ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Auf dieser Website immer fragen</translation>
 <translation id="3947577358805392297">Seite für später speichern</translation>
 <translation id="3949571496842715403">Dieser Server konnte nicht beweisen, dass er <ph name="DOMAIN" /> ist. Sein Sicherheitszertifikat gibt keine alternativen Namen an. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Ihr Computer ist im Ruhemodus.</translation>
 <translation id="8150722005171944719">Die Datei unter <ph name="URL" /> kann nicht gelesen werden. Sie wurde möglicherweise entfernt oder verschoben oder die Dateiberechtigungen verhindern den Zugriff.</translation>
 <translation id="8184538546369750125">Globalen Standard verwenden (Zulassen)</translation>
-<translation id="8191494405820426728">Lokale Absturz-ID: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Verschieben rückgängig machen</translation>
 <translation id="8197543752516192074">Seite übersetzen</translation>
 <translation id="8201077131113104583">Ungültige Update-URL für Erweiterung mit der ID "<ph name="EXTENSION_ID" />"</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index a55ad71..6cfeb9c0 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Προσθήκη διεύθυνσης ηλεκτρονικού ταχυδρομείου</translation>
 <translation id="3901925938762663762">Η κάρτα έχει λήξει</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Αναγνωριστικό μεταφορτωμένης αναφοράς σφαλμάτων <ph name="CRASH_ID" /> (Αναγνωριστικό τοπικού σφάλματος: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Να γίνεται πάντα ερώτηση σε αυτόν τον ιστότοπο</translation>
 <translation id="3947577358805392297">Αποθήκευση σελίδας για αργότερα</translation>
 <translation id="3949571496842715403">Αυτός ο διακομιστής δεν μπορεί να αποδείξει ότι είναι ο τομέας <ph name="DOMAIN" />. Το πιστοποιητικό ασφαλείας δεν προσδιορίζει Εναλλακτικά ονόματα θέματος. Αυτό μπορεί να οφείλεται σε εσφαλμένη διαμόρφωση ή σε κάποιον τρίτο που επιτίθεται στη σύνδεσή σας.</translation>
@@ -1065,7 +1064,6 @@
 <translation id="8149426793427495338">Ο υπολογιστής σας τέθηκε σε αδράνεια.</translation>
 <translation id="8150722005171944719">Δεν είναι δυνατή η ανάγνωση του αρχείου στη διεύθυνση <ph name="URL" />. Ενδέχεται να καταργήθηκε, να μετακινήθηκε ή τα δικαιώματα αρχείου μπορεί να μην επιτρέπουν την πρόσβαση.</translation>
 <translation id="8184538546369750125">Χρήση καθολικής προεπιλεγμένης ρύθμισης (Επιτρέπεται)</translation>
-<translation id="8191494405820426728">Αναγνωριστικό τοπικού σφάλματος <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Αναίρεση μετακίνησης</translation>
 <translation id="8197543752516192074">Μετάφραση σελίδας</translation>
 <translation id="8201077131113104583">Η διεύθυνση URL ενημέρωσης για την επέκταση με αναγνωριστικό ID "<ph name="EXTENSION_ID" />", δεν είναι έγκυρη.</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 9df1fc1e..ad2353b 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -393,7 +393,10 @@
 <translation id="3479539252931486093">Was this unexpected? <ph name="BEGIN_LINK" />Let us know<ph name="END_LINK" /></translation>
 <translation id="3479552764303398839">Not now</translation>
 <translation id="3484560055331845446">You could lose access to your Google account. Chrome recommends changing your password now. You'll be asked to sign in.</translation>
+<translation id="3495081129428749620">Find in page
+    <ph name="PAGE_TITLE" /></translation>
 <translation id="3498215018399854026">We could not reach your parent at the moment. Please try again.</translation>
+<translation id="3505277389583235524">Tab switch button, press enter to switch to the open tab, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
 <translation id="3528171143076753409">Server's certificate is not trusted</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{At least 1 item on synced devices}=1{1 item (and more on synced devices)}other{# items (and more on synced devices)}}</translation>
 <translation id="3539171420378717834">Keep a copy of this card on this device</translation>
@@ -453,7 +456,6 @@
 <translation id="3890664840433101773">Add email</translation>
 <translation id="3901925938762663762">The card is expired</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Uploaded Crash Report ID <ph name="CRASH_ID" /> (Local Crash ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Always ask on this site</translation>
 <translation id="3947577358805392297">Save page for later</translation>
 <translation id="3949571496842715403">This server could not prove that it is <ph name="DOMAIN" />; its security certificate does not specify Subject Alternative Names. This may be caused by a misconfiguration or an attacker intercepting your connection.</translation>
@@ -567,6 +569,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4736825316280949806">Restart Chromium</translation>
 <translation id="473775607612524610">Update</translation>
+<translation id="4738601419177586157"><ph name="TEXT" /> search suggestion</translation>
 <translation id="4742407542027196863">Manage passwords…</translation>
 <translation id="4744603770635761495">Executable Path</translation>
 <translation id="4750917950439032686">Your information (for example, passwords or credit card numbers) is private when it is sent to this site.</translation>
@@ -587,6 +590,7 @@
 <translation id="4854362297993841467">This delivery method isn’t available. Try a different method.</translation>
 <translation id="4858792381671956233">You asked your parents if it's OK to visit this site</translation>
 <translation id="4876305945144899064">No username</translation>
+<translation id="4877422487531841831"><ph name="TEXT" /> search</translation>
 <translation id="4879491255372875719">Automatic (default)</translation>
 <translation id="4880827082731008257">Search history</translation>
 <translation id="4881695831933465202">Open</translation>
@@ -1022,6 +1026,7 @@
 <translation id="7815407501681723534">Found <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> for '<ph name="SEARCH_STRING" />'</translation>
 <translation id="7818867226424560206">Policy management</translation>
 <translation id="782886543891417279">The Wi-Fi that you are using (<ph name="WIFI_NAME" />) may require you to visit its login page.</translation>
+<translation id="7844689747373518809">{COUNT,plural, =0{None}=1{1 app (<ph name="EXAMPLE_APP_1" />)}=2{2 apps (<ph name="EXAMPLE_APP_1" />, <ph name="EXAMPLE_APP_2" />)}other{# apps (<ph name="EXAMPLE_APP_1" />, <ph name="EXAMPLE_APP_2" /> <ph name="AND_MORE" />)}}</translation>
 <translation id="785549533363645510">However, you aren’t invisible. Going incognito doesn’t hide your browsing from your employer, your Internet service provider or the websites that you visit.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Leave site?</translation>
@@ -1064,7 +1069,6 @@
 <translation id="8149426793427495338">Your computer went to sleep.</translation>
 <translation id="8150722005171944719">The file at <ph name="URL" /> is not readable.  It may have been removed, moved or file permissions may be preventing access.</translation>
 <translation id="8184538546369750125">Use global default (Allow)</translation>
-<translation id="8191494405820426728">Local Crash ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Undo Move</translation>
 <translation id="8197543752516192074">Translate page</translation>
 <translation id="8201077131113104583">Invalid update URL for extension with ID "<ph name="EXTENSION_ID" />".</translation>
@@ -1130,6 +1134,7 @@
 <translation id="858637041960032120">Add phone no.</translation>
 <translation id="859285277496340001">The certificate does not specify a mechanism to check whether it has been revoked.</translation>
 <translation id="860043288473659153">Cardholder name</translation>
+<translation id="8604621652298273827"><ph name="TAB_SWITCH_SUFFIX" />, currently open, press tab then enter to switch to the open tab</translation>
 <translation id="8620436878122366504">Your parents haven't approved it yet</translation>
 <translation id="8625384913736129811">Save This Card to This Device</translation>
 <translation id="8662811608048051533">Signs you out of most sites.</translation>
@@ -1192,6 +1197,7 @@
 <translation id="9049981332609050619">You attempted to reach <ph name="DOMAIN" />, but the server presented an invalid certificate.</translation>
 <translation id="9050666287014529139">Passphrase</translation>
 <translation id="9065203028668620118">Edit</translation>
+<translation id="9065745800631924235"><ph name="TEXT" /> search from history</translation>
 <translation id="9069693763241529744">Blocked by an extension</translation>
 <translation id="9076283476770535406">It may have mature content</translation>
 <translation id="9078964945751709336">More information required</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index b8a74b5d..b39ba13 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Agregar correo electrónico</translation>
 <translation id="3901925938762663762">Caducó la tarjeta.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID del informe de fallos <ph name="CRASH_ID" /> cargado (ID de fallo local: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Preguntar siempre en este sitio</translation>
 <translation id="3947577358805392297">Guardar la página</translation>
 <translation id="3949571496842715403">Este servidor no pudo probar que su dominio es <ph name="DOMAIN" />; su certificado de seguridad no especifica la extensión Nombres alternativos del asunto. Es posible que se deba a un error en la configuración o a que haya un atacante que está interceptando tu conexión.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">La computadora se suspendió.</translation>
 <translation id="8150722005171944719">El archivo de <ph name="URL" /> no se puede leer. Es posible que se haya eliminado o movido o que se impida el acceso a los permisos del archivo.</translation>
 <translation id="8184538546369750125">Usar configuración global predeterminada (Permitir)</translation>
-<translation id="8191494405820426728">ID del fallo local: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Deshacer Mover</translation>
 <translation id="8197543752516192074">Traducir página</translation>
 <translation id="8201077131113104583">URL de actualización no válida para la extensión con ID "<ph name="EXTENSION_ID" />"</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index a66db53..0bc23bb 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -10,6 +10,7 @@
 <translation id="1038842779957582377">nombre desconocido</translation>
 <translation id="1050038467049342496">Cierra otras aplicaciones</translation>
 <translation id="1055184225775184556">&amp;Deshacer acción de añadir</translation>
+<translation id="1058479211578257048">Guardando tarjetas…</translation>
 <translation id="10614374240317010">Contraseñas que nunca se guardan</translation>
 <translation id="1066396345355680611">Es posible que dejes de tener acceso al contenido protegido de <ph name="SITE" /> y a otros sitios web.</translation>
 <translation id="106701514854093668">Marcadores del ordenador</translation>
@@ -452,7 +453,6 @@
 <translation id="3890664840433101773">Añadir correo electrónico</translation>
 <translation id="3901925938762663762">La tarjeta ha caducado</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID del informe sobre fallos subido: <ph name="CRASH_ID" /> (ID del fallo local: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Preguntar siempre en este sitio web</translation>
 <translation id="3947577358805392297">Guardar página para más tarde</translation>
 <translation id="3949571496842715403">Este servidor no ha podido demostrar que es <ph name="DOMAIN" />; su certificado de seguridad no especifica nombres alternativos del sujeto. Este problema puede deberse a una configuración incorrecta o a que un atacante ha interceptado la conexión.</translation>
@@ -604,6 +604,7 @@
 <translation id="4989163558385430922">Ver todo</translation>
 <translation id="4989809363548539747">Este complemento no es compatible</translation>
 <translation id="5002932099480077015">Si se habilita esta opción, Chrome guardará una copia de tu tarjeta en este dispositivo para rellenar la información más rápido.</translation>
+<translation id="5014174725590676422">Se muestra la primera pantalla de ejecución del Asistente de Google en Chrome</translation>
 <translation id="5015510746216210676">Nombre del equipo:</translation>
 <translation id="5018422839182700155">No se puede abrir esta página</translation>
 <translation id="5019198164206649151">El almacén secundario está en mal estado.</translation>
@@ -715,6 +716,7 @@
 <translation id="5720705177508910913">Usuario actual</translation>
 <translation id="5730040223043577876">Chrome te recomienda que cambies tu contraseña si la has vuelto a utilizar en otros sitios web.</translation>
 <translation id="5732392974455271431">Tus padres pueden desbloquearlo</translation>
+<translation id="5737183892635480227">{NUM_CARDS,plural, =1{Guarda la tarjeta en tu cuenta de Google}other{Guarda las tarjetas en tu cuenta de Google}}</translation>
 <translation id="5763042198335101085">Introduce una dirección de correo electrónico válida</translation>
 <translation id="5765072501007116331">Selecciona una dirección para ver los métodos de entrega y los requisitos</translation>
 <translation id="5770114862687765385">Parece que el archivo está dañado. Haz clic en el botón Recuperar para recuperar la sesión.</translation>
@@ -1061,7 +1063,6 @@
 <translation id="8149426793427495338">El ordenador se ha suspendido.</translation>
 <translation id="8150722005171944719">El archivo que se encuentra en <ph name="URL" /> no se puede leer. Puede que se haya eliminado o movido o que los permisos del archivo impidan acceder a él.</translation>
 <translation id="8184538546369750125">Utilizar valor predeterminado global (Permitir)</translation>
-<translation id="8191494405820426728">ID del fallo local: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Deshacer movimiento</translation>
 <translation id="8197543752516192074">Traducir página</translation>
 <translation id="8201077131113104583">URL de actualización no válida para la extensión <ph name="EXTENSION_ID" />.</translation>
@@ -1195,6 +1196,7 @@
 <translation id="9080712759204168376">Resumen del pedido</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> utiliza normalmente el cifrado para proteger tu información. Cuando Chromium intentó establecer conexión con <ph name="SITE" />, el sitio web devolvió unas credenciales inusuales e incorrectas. Esto puede ocurrir si un atacante intenta suplantar la identidad de <ph name="SITE" /> o si una pantalla de inicio de sesión Wi-Fi interrumpe la conexión. Tu información sigue estando protegida, ya que Chromium detuvo la conexión antes de que se intercambiaran datos.</translation>
 <translation id="9106062320799175032">Añade una dirección de facturación</translation>
+<translation id="9110718169272311511">En Chrome, el Asistente de Google está disponible en la parte inferior de la pantalla</translation>
 <translation id="9114524666733003316">Confirmando tarjeta...</translation>
 <translation id="9128870381267983090">Conectarse a la red</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 59978fa..7f6ba6e 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">E-posti aadressi lisamine</translation>
 <translation id="3901925938762663762">Kaart on aegunud</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Üleslaaditud krahhiaruande ID <ph name="CRASH_ID" /> (kohaliku krahhi ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Küsi sellel saidil alati</translation>
 <translation id="3947577358805392297">Salvesta leht hilisemaks</translation>
 <translation id="3949571496842715403">Server ei suutnud tõestada, et see on domeen <ph name="DOMAIN" />; selle turvasertifikaat ei määra laiendust Subject Alternative Names. Selle põhjuseks võib olla vale seadistus või ründaja, kes on sekkunud teie ühendusse.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Teie arvuti lülitus unerežiimile.</translation>
 <translation id="8150722005171944719">Fail <ph name="URL" /> ei ole loetav. Võimalik, et see on eemaldatud, teisaldatud või faili load takistavad juurdepääsu.</translation>
 <translation id="8184538546369750125">Kasuta globaalset vaikeseadet (luba)</translation>
-<translation id="8191494405820426728">Kohaliku krahhi ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Võta teisaldamine tagasi</translation>
 <translation id="8197543752516192074">Tõlgi leht</translation>
 <translation id="8201077131113104583">ID-ga „<ph name="EXTENSION_ID" />” laienduse kehtetu värskendamise URL.</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 1b34ee3..4ecb22d 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">افزودن ایمیل</translation>
 <translation id="3901925938762663762">کارت منقضی شده است</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">شناسه گزارش خرابی بارگذاری‌شده <ph name="CRASH_ID" /> (شناسه خرابی محلی: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">در این سایت، همیشه سؤال شود</translation>
 <translation id="3947577358805392297">ذخیره صفحه برای بعد</translation>
 <translation id="3949571496842715403">‏این سرور نتوانست ثابت کند که <ph name="DOMAIN" /> است؛ در گواهی امنیتی آن، Subject Alternative Names مشخص نشده است. ممکن است این مشکل به دلیل پیکربندی نادرست یا قطع اتصال شما توسط مهاجم ایجاد شده باشد.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">رایانه‌تان به خواب رفته است.</translation>
 <translation id="8150722005171944719">این فایل در <ph name="URL" /> قابل خواندن نیست. ممکن است حذف شده، جابجا شده باشد و یا مجوزهای فایل از دسترسی جلوگیری می‌کنند.</translation>
 <translation id="8184538546369750125">استفاده از پیش‌فرض جهانی (مجاز)</translation>
-<translation id="8191494405820426728">شناسه خرابی محلی <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;واگرد انتقال</translation>
 <translation id="8197543752516192074">ترجمه صفحه</translation>
 <translation id="8201077131113104583">نشانی وب به‌روزرسانی نامعتبر برای برنامه افزودنی با شناسه «<ph name="EXTENSION_ID" />».</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index 0d132d2..5c42068 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Lisää sähköposti</translation>
 <translation id="3901925938762663762">Kortti on vanhentunut.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Kaatumisraportti lähetetty, raporttitunnus: <ph name="CRASH_ID" /> (paikallinen kaatumistunnus: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Kysy aina tällä sivustolla</translation>
 <translation id="3947577358805392297">Tallenna sivu myöhempää käyttöä varten</translation>
 <translation id="3949571496842715403">Palvelin ei voinut todistaa olevansa <ph name="DOMAIN" />; sen suojausvarmenteessa ei määritetä kohteen vaihtoehtoisia nimiä. Tämä voi johtua määritysvirheestä tai verkkoyhteytesi siepanneesta hyökkääjästä.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">Tietokoneesi siirtyi virransäästötilaan.</translation>
 <translation id="8150722005171944719">Tiedosto osoitteessa <ph name="URL" /> ei ole luettavissa. Se on voitu poistaa tai siirtää, tai tiedoston käyttöluvat voivat estää sen käytön.</translation>
 <translation id="8184538546369750125">Käytä yleistä oletusasetusta (salli)</translation>
-<translation id="8191494405820426728">Paikallinen kaatumistunnus <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">K&amp;umoa siirto</translation>
 <translation id="8197543752516192074">Käännä sivu</translation>
 <translation id="8201077131113104583">Laajennuksella, jonka tunnus on <ph name="EXTENSION_ID" />, on virheellinen päivitys-URL-osoite.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index a90c285..8983320 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Magdagdag ng email</translation>
 <translation id="3901925938762663762">Na-expire na ang card</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID ng Na-upload na Ulat ng Pag-crash <ph name="CRASH_ID" /> (ID ng Lokal na Pag-crash: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Palaging hilingin sa site na ito</translation>
 <translation id="3947577358805392297">I-save ang page para sa ibang pagkakataon</translation>
 <translation id="3949571496842715403">Hindi mapatunayan ng server na ito na <ph name="DOMAIN" /> ito; hindi tinutukoy ng certificate ng seguridad nito ang Mga Alternatibong Pangalan ng Subject. Maaaring dahil ito sa isang maling configuration o sa isang umaatake na humahadlang sa iyong koneksyon.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Nag-sleep ang iyong computer.</translation>
 <translation id="8150722005171944719">Hindi nababasa ang file sa <ph name="URL" />. Maaaring ito ay naalis, nalipat, o maaaring pinipigilan ng mga pagpapahintulot ng file ang access.</translation>
 <translation id="8184538546369750125">Gamitin ang pangkalahatang default (Payagan)</translation>
-<translation id="8191494405820426728">ID ng Lokal na Pag-crash <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;I-undo ang Paglilipat</translation>
 <translation id="8197543752516192074">Isalin ang Page</translation>
 <translation id="8201077131113104583">Di-wastong URL ng update para sa extension na may ID na "<ph name="EXTENSION_ID" />."</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index a76e8d9..dde98ea 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Ajouter une adresse e-mail</translation>
 <translation id="3901925938762663762">La carte a expiré.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID du rapport d'erreur importé : <ph name="CRASH_ID" /> (ID de plantage local : <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Toujours demander sur ce site</translation>
 <translation id="3947577358805392297">Enregistrer la page pour la consulter plus tard</translation>
 <translation id="3949571496842715403">Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car son certificat de sécurité ne contient pas l'extension "Subject Alternative Names" (Autres noms de l'objet). Cela peut être dû à une mauvaise configuration ou à l'interception de votre connexion par un pirate informatique.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Votre ordinateur s'est mis en veille.</translation>
 <translation id="8150722005171944719">Le fichier disponible à l'adresse <ph name="URL" /> n'est pas lisible. Il est possible qu'il ait été supprimé ou déplacé, ou que les autorisations associées empêchent d'y accéder.</translation>
 <translation id="8184538546369750125">Utiliser le paramètre global par défaut ("Autoriser")</translation>
-<translation id="8191494405820426728">ID de plantage local : <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Annuler le déplacement</translation>
 <translation id="8197543752516192074">Traduire la page</translation>
 <translation id="8201077131113104583">URL de mise à jour non valide pour l'extension associée à l'identifiant "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 17d76e59..682e281 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -451,7 +451,6 @@
 <translation id="3890664840433101773">ઇમેઇલ ઉમેરો</translation>
 <translation id="3901925938762663762">કાર્ડની સમયસીમા સમાપ્ત થઇ ગઈ છે</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ક્રૅશ રિપોર્ટ ID <ph name="CRASH_ID" /> (સ્થાનિક ક્રૅશ ID: <ph name="CRASH_LOCAL_ID" />) અપલોડ કર્યું</translation>
 <translation id="3946209740501886391">આ સાઇટ પર હંમેશાં પૂછો</translation>
 <translation id="3947577358805392297">પછીથી ઉપયોગમાં લેવા માટે પેજ સાચવો</translation>
 <translation id="3949571496842715403">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર વિષય વૈકલ્પિક નામનો ઉલ્લેખ કરતું નથી. આ કોઈ ખોટી ગોઠવણીને કારણે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવતો હોવાને કારણે બન્યું હોઈ શકે.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">તમારું કમ્પ્યુટર નિષ્ક્રિય થઈ ગયું હતું.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> પરની ફાઇલ વાંચનયોગ્ય નથી. તે દૂર કરવામાં, ખસેડવામાં આવી હોઈ શકે છે અથવા ફાઇલ પરવાનગીઓ ઍક્સેસ કરવાથી અટકાવતી હોઈ શકે છે.</translation>
 <translation id="8184538546369750125">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (મંજૂરી આપો)</translation>
-<translation id="8191494405820426728">સ્થાનિક ક્રૅશ ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;ખસેડવું પૂર્વવત્‌ કરો</translation>
 <translation id="8197543752516192074">પેજનો અનુવાદ કરો</translation>
 <translation id="8201077131113104583">ID "<ph name="EXTENSION_ID" />" સાથેના એક્સટેન્શન માટે અમાન્ય અપડેટ URL.</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 89eb3792..1602deb 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">ईमेल जोड़ें</translation>
 <translation id="3901925938762663762">इस कार्ड की समय सीमा समाप्‍त हो गई है</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">अपलोड की गई ख़राबी रिपोर्ट  आईडी <ph name="CRASH_ID" /> (स्थानीय क्रैश आईडी: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">इस साइट पर हमेशा पूछें</translation>
 <translation id="3947577358805392297">पेज को बाद के लिए सेव करें</translation>
 <translation id="3949571496842715403">यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसके सुरक्षा प्रमाणपत्र में विषय के वैकल्पिक नाम नहीं बताए गए हैं. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता की ओर से आपके कनेक्शन में अवरोध डालने के कारण हो सकता है.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">आपका कंप्यूटर निष्क्रिय हो गया है.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> पर मौजूद फ़ाइल पढ़ने योग्य नहीं है.  हो सकता है कि इसे निकाल दिया गया हो, कहीं ले जाया गया हो, या फ़ाइल की अनुमतियां पहुंच रोक रही हों.</translation>
 <translation id="8184538546369750125">वैश्विक डिफ़ॉल्ट का उपयोग करें (अनुमति दें)</translation>
-<translation id="8191494405820426728">स्थानीय क्रैश आईडी <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;ले जाना वापस लाएं</translation>
 <translation id="8197543752516192074">पेज का अनुवाद करें</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" आईडी वाले एक्‍सटेंशन का गलत अपडेट यूआरएल.</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 884ed37..56c47d3 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -10,6 +10,7 @@
 <translation id="1038842779957582377">nepoznati naziv</translation>
 <translation id="1050038467049342496">Zatvorite ostale aplikacije</translation>
 <translation id="1055184225775184556">&amp;Poništi dodavanje</translation>
+<translation id="1058479211578257048">Spremanje kartica...</translation>
 <translation id="10614374240317010">Zaporke se nikad ne spremaju</translation>
 <translation id="1066396345355680611">Možda ćete izgubiti pristup zaštićenom sadržaju s web-lokacije <ph name="SITE" /> i nekih drugih web-lokacija.</translation>
 <translation id="106701514854093668">Oznake radne površine</translation>
@@ -451,7 +452,6 @@
 <translation id="3890664840433101773">Dodajte e-adresu</translation>
 <translation id="3901925938762663762">Kartica je istekla</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Preneseno je izvješće o rušenju programa s ID-om <ph name="CRASH_ID" /> (lokalni ID rušenja: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Uvijek pitaj na ovoj web-lokaciji</translation>
 <translation id="3947577358805392297">Spremi stranicu za kasnije</translation>
 <translation id="3949571496842715403">Poslužitelj nije mogao dokazati da je <ph name="DOMAIN" />; njegov sigurnosni certifikat ne navodi alternativne nazive predmeta. To može biti uzrokovano pogrešnom konfiguracijom ili napadom na vašu vezu.</translation>
@@ -603,6 +603,7 @@
 <translation id="4989163558385430922">Prikaži sve</translation>
 <translation id="4989809363548539747">Taj dodatak nije podržan</translation>
 <translation id="5002932099480077015">Ako je to omogućeno, Chrome će pohraniti kopiju vaše kartice na ovom uređaju radi bržeg ispunjavanja obrazaca.</translation>
+<translation id="5014174725590676422">Prikazuje se zaslon prvog pokretanja Google asistenta u Chromeu</translation>
 <translation id="5015510746216210676">Naziv uređaja:</translation>
 <translation id="5018422839182700155">Stranica se ne može otvoriti</translation>
 <translation id="5019198164206649151">Sigurnosno pohranjivanje u neispravnom je stanju</translation>
@@ -714,6 +715,7 @@
 <translation id="5720705177508910913">Trenutačni korisnik:</translation>
 <translation id="5730040223043577876">Chrome preporučuje poništavanje zaporke ako ste je upotrebljavali za druge web-lokacije.</translation>
 <translation id="5732392974455271431">Tvoji je roditelji mogu deblokirati</translation>
+<translation id="5737183892635480227">{NUM_CARDS,plural, =1{Spremite karticu na svoj Google račun}one{Spremite kartice na svoj Google račun}few{Spremite kartice na svoj Google račun}other{Spremite kartice na svoj Google račun}}</translation>
 <translation id="5763042198335101085">Unesite važeću e-adresu</translation>
 <translation id="5765072501007116331">Odaberite adresu za prikaz načina dostave i zahtjeva za dostavu.</translation>
 <translation id="5770114862687765385">Čini se da je datoteka oštećena. Kliknite gumb "Poništi" da biste poništili sesiju.</translation>
@@ -1060,7 +1062,6 @@
 <translation id="8149426793427495338">Računalo je u stanju mirovanja.</translation>
 <translation id="8150722005171944719">Datoteka na adresi <ph name="URL" /> nije čitljiva. Možda je uklonjena ili premještena ili dozvole datoteka sprječavaju pristup.</translation>
 <translation id="8184538546369750125">Upotrijebi globalnu zadanu vrijednost (dopusti)</translation>
-<translation id="8191494405820426728">Lokalni ID rušenja <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Poništi premještanje</translation>
 <translation id="8197543752516192074">Prevedi stranicu</translation>
 <translation id="8201077131113104583">Nevažeći URL ažuriranja za proširenje s ID-om "<ph name="EXTENSION_ID" />".</translation>
@@ -1196,6 +1197,7 @@
 <translation id="9103872766612412690"><ph name="SITE" /> obično upotrebljava enkripciju radi zaštite vaših podataka. Prilikom ovog pokušaja povezivanja Chromiuma s web-lokacijom <ph name="SITE" /> ta je web-lokacija vratila neuobičajene
 i netočne vjerodajnice. To može značiti da se neki napadač pokušava predstaviti kao <ph name="SITE" /> ili je zaslon za prijavu na Wi-Fi prekinuo vezu. Vaši su podaci još uvijek sigurni jer je Chromium zaustavio povezivanje prije razmjene podataka.</translation>
 <translation id="9106062320799175032">Dodajte adresu za naplatu</translation>
+<translation id="9110718169272311511">Google asistent u Chromeu dostupan je pri dnu zaslona</translation>
 <translation id="9114524666733003316">Potvrđivanje kartice...</translation>
 <translation id="9128870381267983090">Povezivanje s mrežom</translation>
 <translation id="9137013805542155359">Prikaži original</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 4f75b03..7e351e3 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -450,7 +450,6 @@
 <translation id="3890664840433101773">E-mail-cím hozzáadása</translation>
 <translation id="3901925938762663762">A kártya lejárt</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Feltöltött hibajelentés azonosítója: <ph name="CRASH_ID" /> (helyi hibaazonosító: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Mindig kérdezze meg ezen a webhelyen</translation>
 <translation id="3947577358805392297">Oldal mentése későbbre</translation>
 <translation id="3949571496842715403">A szerver nem tudta bizonyítani, hogy valóban a(z) <ph name="DOMAIN" /> domainbe tartozik; biztonsági tanúsítványában nincs meghatározva a „Subject Alternative Names” mező. Ezt okozhatja konfigurációs hiba, vagy az, hogy egy támadó eltérítette az Ön kapcsolatát.</translation>
@@ -1059,7 +1058,6 @@
 <translation id="8149426793427495338">Számítógépe alvó üzemmódba váltott.</translation>
 <translation id="8150722005171944719">A fájl (<ph name="URL" />) nem olvasható. Lehet, hogy eltávolították, áthelyezték, vagy a fájlengedélyek megakadályozzák a hozzáférést.</translation>
 <translation id="8184538546369750125">Globális alapértelmezés használata (Engedélyezés)</translation>
-<translation id="8191494405820426728">Helyi hibaazonosító: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Áthelyezés visszavonása</translation>
 <translation id="8197543752516192074">Oldal lefordítása</translation>
 <translation id="8201077131113104583">A(z) „<ph name="EXTENSION_ID" />” azonosítójú bővítmény frissítési URL-je érvénytelen.</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 125d45a..61c1bd74 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Tambahkan email</translation>
 <translation id="3901925938762663762">Kartu telah habis masa berlakunya</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID Laporan Error yang Diupload <ph name="CRASH_ID" /> (ID Error Lokal: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Selalu tanyakan pada situs ini</translation>
 <translation id="3947577358805392297">Simpan halaman untuk nanti</translation>
 <translation id="3949571496842715403">Server ini tidak dapat membuktikan bahwa ini adalah <ph name="DOMAIN" />; sertifikat keamanannya tidak menyebutkan Nama Alternatif Subjek. Hal ini dapat disebabkan oleh kesalahan konfigurasi atau penyerang memotong sambungan Anda.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">Komputer Anda sedang dalam mode tidur.</translation>
 <translation id="8150722005171944719">File pada <ph name="URL" /> tidak dapat dibaca.  File mungkin telah dihapus, dipindahkan, atau izin file mungkin mencegah akses.</translation>
 <translation id="8184538546369750125">Gunakan default global (Izinkan)</translation>
-<translation id="8191494405820426728">ID Error Lokal <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Urungkan Pemindahan</translation>
 <translation id="8197543752516192074">Terjemahkan Halaman</translation>
 <translation id="8201077131113104583">URL pembaruan tidak valid untuk ekstensi dengan ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 971b604..c734471c4 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -450,7 +450,6 @@
 <translation id="3890664840433101773">Aggiungi email</translation>
 <translation id="3901925938762663762">La carta è scaduta</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID rapporto sugli arresti anomali caricato <ph name="CRASH_ID" /> (ID arresto anomalo locale: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Chiedi sempre su questo sito</translation>
 <translation id="3947577358805392297">Salva la pagina per dopo</translation>
 <translation id="3949571496842715403">Questo server non è riuscito a dimostrare che si tratta di <ph name="DOMAIN" />; il relativo certificato di sicurezza non contiene nomi alternativi del soggetto. Il problema potrebbe essere dovuto a un'errata configurazione o a un malintenzionato che intercetta la connessione.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Il computer è entrato in modalità sospensione.</translation>
 <translation id="8150722005171944719">Il file all'indirizzo <ph name="URL" /> non è leggibile. Potrebbe essere stato rimosso, spostato oppure delle autorizzazioni del file potrebbero impedire l'accesso.</translation>
 <translation id="8184538546369750125">Usa predefinita globale (Consenti)</translation>
-<translation id="8191494405820426728">ID arresto anomalo locale: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Annulla spostamento</translation>
 <translation id="8197543752516192074">Traduci la pagina</translation>
 <translation id="8201077131113104583">URL di aggiornamento non valido per l'estensione con ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index cfd443f..d25c62f 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">הוספת כתובת אימייל</translation>
 <translation id="3901925938762663762">תוקף הכרטיס פג</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">מזהה דוח הקריסה שהועלה <ph name="CRASH_ID" /> (מזהה קריסה מקומי: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">שאל תמיד באתר הזה</translation>
 <translation id="3947577358805392297">שמירת הדף למועד מאוחר יותר</translation>
 <translation id="3949571496842715403">‏השרת הזה לא הצליח להוכיח שהוא <ph name="DOMAIN" />; אישור האבטחה שלו לא מציין ערכי Subject Alternative Name. ייתכן שהסיבה לכך היא תצורה שגויה או תוקף המיירט את החיבור שלך.</translation>
@@ -1066,7 +1065,6 @@
 <translation id="8149426793427495338">המחשב עבר למצב שינה.</translation>
 <translation id="8150722005171944719">הקובץ הנמצא ב-<ph name="URL" /> לא ניתן לקריאה. ייתכן שהקובץ הוסר או הועבר, או שהרשאות הקובץ מונעות גישה אליו.</translation>
 <translation id="8184538546369750125">השתמש בברירת המחדל הכללית (אפשר)</translation>
-<translation id="8191494405820426728">מזהה קריסה מקומי <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;ביטול העברה</translation>
 <translation id="8197543752516192074">תרגום הדף</translation>
 <translation id="8201077131113104583">כתובת אתר לא חוקית לעדכון עבור תוסף עם המזהה "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index e6d589b..66cea46 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">メールを追加</translation>
 <translation id="3901925938762663762">カードの有効期限が切れています</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">クラッシュ レポート ID <ph name="CRASH_ID" /> がアップロードされました(ローカルのクラッシュ ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">このサイトでは常に確認</translation>
 <translation id="3947577358805392297">ページを保存しておく</translation>
 <translation id="3949571496842715403">このサーバーが <ph name="DOMAIN" /> であることを確認できませんでした。このサーバーのセキュリティ証明書で SAN(サブジェクトの別名)が指定されていません。設定が不適切であるか、悪意のあるユーザーによって接続が妨害されている可能性があります。</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">パソコンがスリープ状態です。</translation>
 <translation id="8150722005171944719"><ph name="URL" /> のファイルを読むことができません。削除されたか移動された可能性があります。ファイルに対するアクセス権がない場合もあります。</translation>
 <translation id="8184538546369750125">グローバルのデフォルト値([許可])を使用</translation>
-<translation id="8191494405820426728">ローカルのクラッシュ ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">移動の取り消し(&amp;U)</translation>
 <translation id="8197543752516192074">ページを翻訳する</translation>
 <translation id="8201077131113104583">ID「<ph name="EXTENSION_ID" />」の拡張機能に対する無効な更新 URL です。</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index de8a1f9..fb3ad60 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -448,7 +448,6 @@
 <translation id="3890664840433101773">ಇಮೇಲ್ ಸೇರಿಸಿ</translation>
 <translation id="3901925938762663762">ಕಾರ್ಡ್ ಅವಧಿಯು ಮುಗಿದಿದೆ</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ಕ್ರ್ಯಾಷ್ ವರದಿ ಐಡಿ <ph name="CRASH_ID" />(ಸ್ಥಳೀಯ ಕ್ರ್ಯಾಷ್ ಐಡಿ: <ph name="CRASH_LOCAL_ID" />) ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3946209740501886391">ಯಾವಾಗಲೂ ಈ ಸೈಟ್‌ನಲ್ಲಿ ಕೇಳಿ</translation>
 <translation id="3947577358805392297">ನಂತರದ ಬಳಕೆಗಾಗಿ ಪುಟವನ್ನು ಉಳಿಸಿ</translation>
 <translation id="3949571496842715403">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣ ಪತ್ರವು ವಿಷಯವಸ್ತು ಪರ್ಯಾಯ ಹೆಸರುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿಲ್ಲ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
@@ -1055,7 +1054,6 @@
 <translation id="8149426793427495338">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ನಿದ್ರಾವಸ್ಥೆಗೆ ಹೋಗಿದೆ.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> ನಲ್ಲಿನ ಫೈಲ್ ಓದುವಂತಿರುವುದಿಲ್ಲ. ಇದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು, ಚಲಿಸಬಹುದು, ಅಥವಾ ಫೈಲ್ ಅನುಮತಿಗಳು ಪ್ರವೇಶವನ್ನು ತಡೆಗಟ್ಟುತ್ತಿರಬಹುದು.</translation>
 <translation id="8184538546369750125">ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಬಳಸಿ (ಅನುಮತಿಸಿ)</translation>
-<translation id="8191494405820426728"><ph name="CRASH_LOCAL_ID" /> ಸ್ಥಳೀಯ ಕ್ರ್ಯಾಶ್ ಐಡಿ</translation>
 <translation id="8194797478851900357">&amp;ಸರಿಸುವುದನ್ನು ರದ್ದುಗೊಳಿಸು</translation>
 <translation id="8197543752516192074">ಪುಟವನ್ನು ಅನುವಾದಿಸಿ</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" ಜೊತೆಗಿನ ವಿಸ್ತರಣೆಗೆ ಅಮಾನ್ಯವಾದ ಅಪ್‌ಡೇಟ್‌‌ URL.</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index fd3b50dd..2ee423bd2 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">이메일 추가</translation>
 <translation id="3901925938762663762">만료된 카드입니다.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">비정상 종료 보고서 ID <ph name="CRASH_ID" /> 업로드됨(로컬 비정상 종료 ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">이 사이트에서 항상 물어보기</translation>
 <translation id="3947577358805392297">페이지 저장</translation>
 <translation id="3949571496842715403">보안 인증서에 주체 대체 이름(SAN)이 지정되어 있지 않아 이 서버가 <ph name="DOMAIN" />임을 입증할 수 없습니다. 서버를 잘못 설정했거나 공격자가 연결을 가로채고 있기 때문일 수도 있습니다.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">컴퓨터가 절전 모드 상태입니다.</translation>
 <translation id="8150722005171944719"><ph name="URL" />의 파일을 읽을 수 없습니다. 삭제 또는 이동되었거나 파일 사용 권한이 액세스를 차단할 수도 있습니다.</translation>
 <translation id="8184538546369750125">전체 기본값 사용(허용)</translation>
-<translation id="8191494405820426728">로컬 비정상 종료 ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">이동 실행 취소(&amp;U)</translation>
 <translation id="8197543752516192074">페이지 번역</translation>
 <translation id="8201077131113104583">ID가 '<ph name="EXTENSION_ID" />'인 확장 프로그램에 대한 잘못된 업데이트 URL</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 37e73f6..bd44026 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -454,7 +454,6 @@
 <translation id="3890664840433101773">Pridėti el. pašto adresą</translation>
 <translation id="3901925938762663762">Kortelė nebegalioja</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Įkeltos strigties ataskaitos ID: <ph name="CRASH_ID" /> (vietinės strigties ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Visada klausti šioje svetainėje</translation>
 <translation id="3947577358805392297">Išsaugoti puslapį naudoti vėliau</translation>
 <translation id="3949571496842715403">Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikate nenurodomi temos alternatyvūs pavadinimai. Tai gali būti dėl netinkamos konfigūracijos arba dėl ryšį pertraukusio užgrobėjo.</translation>
@@ -1065,7 +1064,6 @@
 <translation id="8149426793427495338">Įjungta kompiuterio miego būsena.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> nurodyto failo negalima skaityti. Gali būti, kad jis pašalintas, perkeltas arba neleidžiama prieiga prie jo dėl failo leidimų.</translation>
 <translation id="8184538546369750125">Naudoti visuotinį numatytąjį nustatymą (leisti)</translation>
-<translation id="8191494405820426728">Vietinės strigties ID: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Anuliuoti perkėlimą</translation>
 <translation id="8197543752516192074">Versti puslapį</translation>
 <translation id="8201077131113104583">Netinkamas plėtinio, kurio ID „<ph name="EXTENSION_ID" />“, atnaujinimo URL.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index b95dd2c3..c3df010 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -451,7 +451,6 @@
 <translation id="3890664840433101773">E-pasta adreses pievienošana</translation>
 <translation id="3901925938762663762">Kartes derīguma termiņš ir beidzies.</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Augšupielādētā avārijas ziņojuma ID <ph name="CRASH_ID" /> (vietējais avārijas ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Vienmēr jautāt šajā vietnē</translation>
 <translation id="3947577358805392297">Saglabāt lapu vēlākai izmantošanai</translation>
 <translation id="3949571496842715403">Šis serveris nevarēja pierādīt, ka šī ir vietne <ph name="DOMAIN" />; tā drošības sertifikātā nav norādīti temata citi nosaukumi. Iespējams, tas ir nepareizas konfigurācijas dēļ vai arī kāds ļaunprātīgi izmanto jūsu savienojumu.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Dators tika pārslēgts miega režīmā.</translation>
 <translation id="8150722005171944719">Vietnē <ph name="URL" /> esošo failu nevar nolasīt. Iespējams, tas ir noņemts vai pārvietots vai piekļuvei nepieciešamas atļaujas.</translation>
 <translation id="8184538546369750125">Izmantot globālo noklusējumu (Atļaut)</translation>
-<translation id="8191494405820426728">Vietējais avārijas ID: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Pārvietošanas atsaukšana</translation>
 <translation id="8197543752516192074">Tulkot lapu</translation>
 <translation id="8201077131113104583">Nederīgs atjaunināšanas URL paplašinājumam ar ID “<ph name="EXTENSION_ID" />”.</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index f2062966..f830850e 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">ഇമെയില്‍‌ ചേര്‍‌ക്കുക</translation>
 <translation id="3901925938762663762">കാർഡ് കാലഹരണപ്പെട്ടു</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686"><ph name="CRASH_ID" /> എന്ന ക്രാഷ് റിപ്പോർട്ട് ഐഡി അപ്‌ലോഡുചെയ്‌തു (ലോക്കൽ ക്രാഷ് ഐഡി: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">ഈ സൈറ്റിൽ എല്ലായ്‌പ്പോഴും ചോദിക്കുക</translation>
 <translation id="3947577358805392297">പിന്നീടുള്ള ആവശ്യത്തിനായി പേജ് സംരക്ഷിക്കുക</translation>
 <translation id="3949571496842715403">ഈ സെർവറിന് ഇത് <ph name="DOMAIN" /> ആണെന്ന് തെളിയിക്കാനായില്ല; അതിന്റെ സുരക്ഷാ സർട്ടിഫിക്കറ്റ് വിഷയേതര നാമങ്ങൾ വ്യക്തമാക്കുന്നില്ല. തെറ്റായ കോൺഫിഗറേഷൻ കാരണമോ ഒരു അക്രമി നിങ്ങളുടെ കണക്ഷനെ തടസ്സപ്പെടുത്തുന്നത് കൊണ്ടോ ആയിരിക്കാം ഇത് സംഭവിച്ചത്.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">നിങ്ങളുടെ കമ്പ്യൂട്ടർ സുഷുപ്‌തിയിലായി.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> എന്നതിലെ ഫയൽ റീഡുചെയ്യാനാവുന്നില്ല.  അത് നീക്കംചെയ്‌തിരിക്കുകയോ, നീക്കിയിരിക്കുകയോ ഫയൽ അനുമതികൾ ആക്‌സസ്സ് തടയുകയോ ചെയ്യുന്നുണ്ടാകാം.</translation>
 <translation id="8184538546369750125">ഗ്ലോബൽ ഡിഫോൾട്ട് ഉപയോഗിക്കുക (അനുവദിക്കുക)</translation>
-<translation id="8191494405820426728">ലോക്കൽ ക്രാഷ് ഐഡി <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;നീക്കുന്നത് പഴയപടിയാക്കുക</translation>
 <translation id="8197543752516192074">പേജ് വിവർത്തനം ചെയ്യുക</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" എന്ന ഐഡിയുള്ള വിപുലീകരണത്തിന്റെ അസാധുവായ അപ്‌ഡേറ്റ് URL.</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 6fb3ff0..68c3131 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">ईमेल जोडा</translation>
 <translation id="3901925938762663762">कार्ड कालबाह्य झाले आहे</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">क्रॅश तक्रार आयडी अपलोड केला<ph name="CRASH_ID" /> (स्थानिक क्रॅश आयडी: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">नेहमी या साइटवर विचारा</translation>
 <translation id="3947577358805392297">पेज नंतरसाठी सेव्ह करा</translation>
 <translation id="3949571496842715403">हा सर्व्हर <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट विषय पर्यायी नावांचा उल्लेख करत नाही. हे कदाचित चुकीच्या कॉंफिगरेशनमुळे होत आहे किंवा हल्लेखोर तुमच्या कनेक्शनमध्ये अडथळा आणत आहे.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">तुमचा कॉंप्युटर निष्क्रीय झाला.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> येथील फाइल वाचनीय नाही. ती काढून टाकलेली, हलविलेली असू शकते किंवा फाइल परवानग्या प्रवेश प्रतिबंधित करत असू शकतात.</translation>
 <translation id="8184538546369750125">सार्वत्रिक डीफॉल्‍ट वापरा (अनुमती द्या)</translation>
-<translation id="8191494405820426728">स्थानिक क्रॅश आयडी <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;हलवा पूर्ववत करा</translation>
 <translation id="8197543752516192074">पेजचे भाषांतर करा</translation>
 <translation id="8201077131113104583"><ph name="EXTENSION_ID" /> ID असलेल्या एक्स्टेंशनासाठी चुकीची अपडेट URL.</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 01e09203..597cd132 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Tambah e-mel</translation>
 <translation id="3901925938762663762">Kad telah tamat tempoh</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID Laporan Ranap Yang Dimuat Naik <ph name="CRASH_ID" /> (ID Ranap Setempat: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Sentiasa tanya pada tapak ini</translation>
 <translation id="3947577358805392297">Simpan halaman untuk dirujuk lagi</translation>
 <translation id="3949571496842715403">Pelayan ini tidak dapat membuktikan bahawa domainnya ialah <ph name="DOMAIN" />; sijil keselamatannya tidak menyatakan Nama Alternatif Subjek. Ini mungkin disebabkan oleh kesilapan konfigurasi atau penyerang memintasi sambungan anda.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">Komputer anda dalam mod tidur.</translation>
 <translation id="8150722005171944719">Fail di <ph name="URL" /> tidak boleh dibaca.  Fail mungkin telah dialih keluar, dipindahkan atau kebenaran fail mungkin menghalang akses.</translation>
 <translation id="8184538546369750125">Gunakan lalai global (Benarkan)</translation>
-<translation id="8191494405820426728">ID Ranap Setempat <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Buat Asal Pindahkan</translation>
 <translation id="8197543752516192074">Terjemah Halaman</translation>
 <translation id="8201077131113104583">URL kemas kini tidak sah untuk sambungan dengan ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 9130a61..97a8082 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -448,7 +448,6 @@
 <translation id="3890664840433101773">E-mailadres toevoegen</translation>
 <translation id="3901925938762663762">De kaart is verlopen</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Crashrapport-ID <ph name="CRASH_ID" /> (lokale crash-ID: <ph name="CRASH_LOCAL_ID" />) geüpload</translation>
 <translation id="3946209740501886391">Altijd vragen op deze site</translation>
 <translation id="3947577358805392297">Pagina opslaan voor later</translation>
 <translation id="3949571496842715403">Deze server kan niet bewijzen dat dit <ph name="DOMAIN" /> is. In het bijbehorende beveiligingscertificaat worden geen 'Subject Alternative Names' gespecificeerd. Dit kan worden veroorzaakt door een verkeerde configuratie of door een aanvaller die je verbinding heeft onderschept.</translation>
@@ -1056,7 +1055,6 @@
 <translation id="8149426793427495338">De slaapstand van je computer is geactiveerd.</translation>
 <translation id="8150722005171944719">Het bestand op <ph name="URL" /> is onleesbaar. Het bestand is mogelijk verwijderd of verplaatst of de bestandsrechten zorgen ervoor dat het bestand niet kan worden geopend.</translation>
 <translation id="8184538546369750125">Algemene standaardinstelling gebruiken (Toestaan)</translation>
-<translation id="8191494405820426728">Lokale crash-ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Verplaatsen ongedaan maken</translation>
 <translation id="8197543752516192074">Pagina vertalen</translation>
 <translation id="8201077131113104583">Ongeldige update-URL voor de extensie met de ID '<ph name="EXTENSION_ID" />'.</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 887f710..09110821 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Legg til e-post</translation>
 <translation id="3901925938762663762">Kortet er utløpt</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID-en for den opplastede programstopprapporten: <ph name="CRASH_ID" /> (lokal kræsj-ID: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Spør alltid på dette nettstedet</translation>
 <translation id="3947577358805392297">Lagre siden for senere bruk</translation>
 <translation id="3949571496842715403">Denne tjeneren kunne ikke bevise at den er <ph name="DOMAIN" />. Det er ikke angitt noen alternative emnenavn i tjenerens sikkerhetssertifikat. Dette kan være forårsaket av en feilkonfigurering eller en angriper som avskjærer tilkoblingen din.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Datamaskinen din gikk inn i hvilemodus.</translation>
 <translation id="8150722005171944719">Kunne ikke lese filen på <ph name="URL" /> Den kan ha blitt fjernet eller flyttet. Det kan også være filtillatelser som forhindrer tilgang.</translation>
 <translation id="8184538546369750125">Bruk global standardinnstilling (Tillat)</translation>
-<translation id="8191494405820426728">Lokal kræsj-ID: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Angre flyttingen</translation>
 <translation id="8197543752516192074">Oversett siden</translation>
 <translation id="8201077131113104583">Ugyldig oppdaterings-URL for utvidelse med ID «<ph name="EXTENSION_ID" />».</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index 3005fe6a..791436f 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Dodaj adres e-mail</translation>
 <translation id="3901925938762663762">Karta straciła ważność</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Przesłano raport o awarii – identyfikator: <ph name="CRASH_ID" /> (lokalny identyfikator awarii: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Zawsze pytaj na tej stronie</translation>
 <translation id="3947577358805392297">Zapisz stronę na później</translation>
 <translation id="3949571496842715403">Serwer nie mógł udowodnić, że należy do <ph name="DOMAIN" />. Jego certyfikat bezpieczeństwa nie określa alternatywnych nazw podmiotu. Może to być spowodowane błędną konfiguracją lub przechwyceniem połączenia przez atakującego.</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">Twój komputer przeszedł w tryb uśpienia.</translation>
 <translation id="8150722005171944719">Nie można odczytać pliku <ph name="URL" />. Być może został usunięty lub uprawnienia dostępu uniemożliwiają jego odczyt.</translation>
 <translation id="8184538546369750125">Użyj globalnej wartości domyślnej (Zezwalaj)</translation>
-<translation id="8191494405820426728">Lokalny identyfikator awarii: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Cofnij przeniesienie</translation>
 <translation id="8197543752516192074">Przetłumacz stronę</translation>
 <translation id="8201077131113104583">Nieprawidłowy URL aktualizowania dla rozszerzenia o identyfikatorze „<ph name="EXTENSION_ID" />”.</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index abbcf1f8..fbcb621 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Adicionar e-mail</translation>
 <translation id="3901925938762663762">O cartão expirou</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Código do relatório de falha enviado: <ph name="CRASH_ID" /> (código de falha local: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Sempre perguntar neste site</translation>
 <translation id="3947577358805392297">Salvar página para mais tarde</translation>
 <translation id="3949571496842715403">Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança dele não especifica a extensão Nomes alternativos do requerente. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">Seu computador entrou em modo de suspensão.</translation>
 <translation id="8150722005171944719">O arquivo em <ph name="URL" /> não está legível. Ele pode ter sido removido ou movido, ou as permissões do arquivo podem estar impedindo o acesso.</translation>
 <translation id="8184538546369750125">Usar padrão global (Permitir)</translation>
-<translation id="8191494405820426728">Código de falha local: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Desfazer mover</translation>
 <translation id="8197543752516192074">Traduzir página</translation>
 <translation id="8201077131113104583">URL de atualização inválido para extensão com ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 540b16b..260bc80 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Adicionar email</translation>
 <translation id="3901925938762663762">O cartão expirou</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID do relatório de falhas carregado <ph name="CRASH_ID" /> (ID de falha de sistema local: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Perguntar sempre neste site</translation>
 <translation id="3947577358805392297">Guardar a página para mais tarde</translation>
 <translation id="3949571496842715403">Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O respetivo certificado de segurança não especifica Nomes alternativos do requerente. Isto pode ser o resultado de uma configuração incorreta ou de um utilizador mal-intencionado que intercetou a sua ligação.</translation>
@@ -1063,7 +1062,6 @@
 <translation id="8149426793427495338">O computador entrou em suspensão.</translation>
 <translation id="8150722005171944719">O ficheiro em <ph name="URL" /> não é legível. Pode ter sido removido, movido ou as permissões do ficheiro podem estar a impedir o acesso.</translation>
 <translation id="8184538546369750125">Utilizar predefinição global (Permitir)</translation>
-<translation id="8191494405820426728">ID de falha local <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Anular movimentação</translation>
 <translation id="8197543752516192074">Traduzir página</translation>
 <translation id="8201077131113104583">Atualizar URL inválido para a extensão com o ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 0dd8f15..d387633 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Adaugă o adresă de e-mail</translation>
 <translation id="3901925938762663762">Cardul este expirat</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">S-a încărcat Raportul de blocare cu ID-ul <ph name="CRASH_ID" /> (ID blocare locală: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Întreabă întotdeauna pe acest site</translation>
 <translation id="3947577358805392297">Salvează pagina pentru mai târziu</translation>
 <translation id="3949571496842715403">Acest server nu a putut dovedi că este <ph name="DOMAIN" />; în certificatul său de securitate nu este specificat câmpul Nume alternative subiect. Cauza poate fi o eroare de configurare sau interceptarea conexiunii de către un atacator.</translation>
@@ -659,7 +658,7 @@
 <translation id="5344579389779391559">Această pagină poate să genereze costuri</translation>
 <translation id="5355557959165512791">Nu poți accesa <ph name="SITE" /> acum, deoarece certificatul său a fost revocat. Erorile de rețea și atacurile sunt de obicei temporare și probabil că această pagină va funcționa mai târziu.</translation>
 <translation id="536296301121032821">Setările pentru politică nu au putut fi stocate</translation>
-<translation id="5363056109122666249">Chrome oferă să îți salveze cardurile în Contul Google pentru că ești conectat. Poți schimba acest comportament în setări.</translation>
+<translation id="5363056109122666249">Chrome oferă salvarea cardurilor în Contul Google pentru că te-ai conectat. Poți schimba acest comportament în setări.</translation>
 <translation id="5371425731340848620">Actualizează cardul</translation>
 <translation id="5377026284221673050">„Ora este setată în trecut”, „Ora este setată în viitor” sau „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;”</translation>
 <translation id="5384855140246857529">Pentru a-ți folosi cardurile pe toate dispozitivele, conectează-te și activează sincronizarea.</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">Computerul este inactiv.</translation>
 <translation id="8150722005171944719">Fișierul de la <ph name="URL" /> nu poate fi citit.  Este posibil să fi fost eliminat ori mutat sau ca permisiunile pentru fișiere să împiedice accesarea acestuia.</translation>
 <translation id="8184538546369750125">Utilizați setarea prestabilită la nivel global (Permiteți)</translation>
-<translation id="8191494405820426728">ID blocare locală: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Anulați mutarea</translation>
 <translation id="8197543752516192074">Tradu pagina</translation>
 <translation id="8201077131113104583">Adresa URL pentru actualizarea extensiei cu ID-ul „<ph name="EXTENSION_ID" />” nu este validă.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index e2909283..eb3b624c 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -451,7 +451,6 @@
 <translation id="3890664840433101773">Добавление адреса электронной почты</translation>
 <translation id="3901925938762663762">Срок действия карты истек</translation>
 <translation id="3909695131102177774"><ph name="LABEL" />. <ph name="ERROR" />.</translation>
-<translation id="3945915738023014686">Идентификатор загруженного отчета о сбоях: <ph name="CRASH_ID" />. Локальный идентификатор сбоя: <ph name="CRASH_LOCAL_ID" />.</translation>
 <translation id="3946209740501886391">Всегда спрашивать на этом сайте</translation>
 <translation id="3947577358805392297">Сохранить</translation>
 <translation id="3949571496842715403">Сервер не может подтвердить связь с доменом <ph name="DOMAIN" />. В его сертификате безопасности не указаны альтернативные варианты имен. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Ваш компьютер перешел в спящий режим.</translation>
 <translation id="8150722005171944719">Файл по адресу <ph name="URL" /> недоступен. Возможно, он был удален или перемещен либо права доступа к нему ограничены.</translation>
 <translation id="8184538546369750125">Использовать глобальный параметр по умолчанию (разрешать)</translation>
-<translation id="8191494405820426728">Локальный идентификатор сбоя: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Отменить перемещение</translation>
 <translation id="8197543752516192074">Перевести страницу</translation>
 <translation id="8201077131113104583">Недействительный URL для обновления расширения с идентификатором <ph name="EXTENSION_ID" />.</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 8e5bac6f..c876670c 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -449,7 +449,6 @@
 <translation id="3890664840433101773">Pridanie e-mailu</translation>
 <translation id="3901925938762663762">Platnosť karty vypršala</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Identifikátor nahranej správy o zlyhaní: <ph name="CRASH_ID" /> (ID miestneho zlyhania: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Vždy sa opýtať na tomto webe</translation>
 <translation id="3947577358805392297">Uložiť stránku na neskôr</translation>
 <translation id="3949571496842715403">Tento server nedokázal potvrdiť, či ide o doménu <ph name="DOMAIN" /> – príslušný bezpečnostný certifikát neuvádza alternatívne názvy predmetu. Môže to byť spôsobené nesprávnou konfiguráciou alebo tým, že vaše pripojenie napadol útočník.</translation>
@@ -1059,7 +1058,6 @@
 <translation id="8149426793427495338">Váš počítač prešiel do režimu spánku.</translation>
 <translation id="8150722005171944719">Súbor na adrese <ph name="URL" /> nie je možné prečítať. Je možné, že bol odstránený, presunutý alebo môžu v prístupe brániť povolenia súboru.</translation>
 <translation id="8184538546369750125">Použiť predvolené všeobecné nastavenie (Povoliť)</translation>
-<translation id="8191494405820426728">Identifikátor miestneho zlyhania <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Vrátiť späť presunutie</translation>
 <translation id="8197543752516192074">Preložiť stránku</translation>
 <translation id="8201077131113104583">Neplatná webová adresa aktualizácie pre rozšírenie s ID <ph name="EXTENSION_ID" />.</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index 11cbe9d5..4c6a76e2 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Dodajanje e-poštnega naslova</translation>
 <translation id="3901925938762663762">Kartica je potekla</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> – <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID naloženega poročila o zrušitvah <ph name="CRASH_ID" /> (ID lokalne zrušitve: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Vedno vprašaj na tem spletnem mestu</translation>
 <translation id="3947577358805392297">Shrani stran za pozneje</translation>
 <translation id="3949571496842715403">Strežniku ni uspelo dokazati, da je <ph name="DOMAIN" />; njegovo varnostno potrdilo ne določa nadomestnih imen SAN (Subject Alternative Name). Razlog za to je morda napačna konfiguracija ali napadalčevo prestrezanje povezave.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Računalnik je preklopil v stanje pripravljenosti.</translation>
 <translation id="8150722005171944719">Datoteke na <ph name="URL" /> ni mogoče prebrati. Morda je odstranjena, premaknjena ali pa dostop preprečujejo dovoljenja za datoteke.</translation>
 <translation id="8184538546369750125">Uporabi globalno privzeto (Dovoli)</translation>
-<translation id="8191494405820426728">ID lokalne zrušitve <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Razveljavi premik</translation>
 <translation id="8197543752516192074">Prevedi stran</translation>
 <translation id="8201077131113104583">Neveljaven posodobitveni URL za razširitev z ID-jem »<ph name="EXTENSION_ID" />«.</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index f937863..108769b1 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Додајте имејл</translation>
 <translation id="3901925938762663762">Картица је истекла</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ИД извештаја о отказивању је отпремљен <ph name="CRASH_ID" /> (ИД локалног отказивања: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Увек питај на овом сајту</translation>
 <translation id="3947577358805392297">Сачувај страницу за касније</translation>
 <translation id="3949571496842715403">Овај сервер не може да докаже да је <ph name="DOMAIN" />; његов безбедносни сертификат не наводи Алтернативне називе субјекта. Узрок томе је можда погрешна конфигурација или нападач који је прекинуо везу.</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">Рачунар је прешао у режим спавања.</translation>
 <translation id="8150722005171944719">Датотека на адреси <ph name="URL" /> не може да се чита. Можда је уклоњена или премештена или дозволе за датотеке спречавају приступ.</translation>
 <translation id="8184538546369750125">Користи глобалну подразумевану вредност (Дозволи)</translation>
-<translation id="8191494405820426728">ИД локалног отказивања <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Опозови премештање</translation>
 <translation id="8197543752516192074">Преведи страницу</translation>
 <translation id="8201077131113104583">Неважећи URL за ажурирање за додатак са ИД-ом „<ph name="EXTENSION_ID" />“.</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 3f8ed69..003b4571 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -10,6 +10,7 @@
 <translation id="1038842779957582377">okänt namn</translation>
 <translation id="1050038467049342496">Stäng andra appar</translation>
 <translation id="1055184225775184556">&amp;Ångra Lägg till</translation>
+<translation id="1058479211578257048">Sparar kort …</translation>
 <translation id="10614374240317010">Aldrig sparad</translation>
 <translation id="1066396345355680611">Du kan förlora tillgången till skyddat innehåll från <ph name="SITE" /> och några andra webbplatser.</translation>
 <translation id="106701514854093668">Bokmärken på skrivbordet</translation>
@@ -452,7 +453,6 @@
 <translation id="3890664840433101773">Lägg till e-post</translation>
 <translation id="3901925938762663762">Kortet gäller inte längre</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Id i den uppladdade felrapporten <ph name="CRASH_ID" /> (Lokalt krasch-id: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Fråga alltid på den här webbplatsen</translation>
 <translation id="3947577358805392297">Spara sidan till senare</translation>
 <translation id="3949571496842715403">Servern kunde inte bevisa att den är <ph name="DOMAIN" /> eftersom inga alternativa namn på certifikatobjektet anges i säkerhetscertifikatet. Detta kan bero på en felaktig konfigurering eller att en angripare manipulerat anslutningen.</translation>
@@ -604,6 +604,7 @@
 <translation id="4989163558385430922">Visa alla</translation>
 <translation id="4989809363548539747">Det här pluginprogrammet stöds inte</translation>
 <translation id="5002932099480077015">Om alternativet är aktiverat sparar Chrome en kopia av kortet på enheten så att det går snabbare att fylla i formulär.</translation>
+<translation id="5014174725590676422">Skärmen vid första användningen av Googe-assistenten i Chrome visas</translation>
 <translation id="5015510746216210676">Datornamn:</translation>
 <translation id="5018422839182700155">Det går inte att öppna den här sidan</translation>
 <translation id="5019198164206649151">Säkerhetskopian har dålig status</translation>
@@ -715,6 +716,7 @@
 <translation id="5720705177508910913">Aktuell användare</translation>
 <translation id="5730040223043577876">Du rekommenderas att återställa lösenordet om du har återanvänt det på andra webbplatser.</translation>
 <translation id="5732392974455271431">Dina föräldrar kan ta bort blockeringen</translation>
+<translation id="5737183892635480227">{NUM_CARDS,plural, =1{Spara kortet i Google-kontot}other{Spara korten i Google-kontot}}</translation>
 <translation id="5763042198335101085">Ange en giltig e-postadress</translation>
 <translation id="5765072501007116331">Välj en adress för att visa leveranssätt och krav</translation>
 <translation id="5770114862687765385">Den här filen verkar vara skadad. Återställ sessionen genom att klicka på återställningsknappen.</translation>
@@ -1061,7 +1063,6 @@
 <translation id="8149426793427495338">Datorn gick i viloläge.</translation>
 <translation id="8150722005171944719">Det går inte att läsa filen på <ph name="URL" />. Den kan ha tagits bort eller flyttats, eller så krävs behörighet för att få åtkomst till den.</translation>
 <translation id="8184538546369750125">Använd global standardinställning (Tillåt)</translation>
-<translation id="8191494405820426728">Lokalt krasch-id <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Ångra Flytta</translation>
 <translation id="8197543752516192074">Översätt sidan</translation>
 <translation id="8201077131113104583">Ogiltig webbadress för uppdatering för tillägg med id <ph name="EXTENSION_ID" />.</translation>
@@ -1196,6 +1197,7 @@
 <translation id="9080712759204168376">Sammanfattning av beställningen</translation>
 <translation id="9103872766612412690">På <ph name="SITE" /> används normalt kryptering (SSL) för att skydda din information. När Chromium försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en Wi-Fi-inloggningsskärm. Din information är fortfarande säker eftersom Chromium avbröt anslutningen innan någon data utbyttes.</translation>
 <translation id="9106062320799175032">Lägg till faktureringsadress</translation>
+<translation id="9110718169272311511">Du hittar Google-assistenten i Chrome nära skärmens nederkant</translation>
 <translation id="9114524666733003316">Kortet kontrolleras …</translation>
 <translation id="9128870381267983090">Anslut till ett nätverk</translation>
 <translation id="9137013805542155359">Visa original</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index ea7da09..7fce843a 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Ongeza anwani ya barua pepe</translation>
 <translation id="3901925938762663762">Kadi imekwisha muda</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Kitambulisho cha Ripoti ya Kuacha Kufanya Kazi Kilichopakiwa <ph name="CRASH_ID" /> (Kitambulisho cha Kuacha Kufanya Kazi cha Ndani ya Kifaa: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Uliza kwenye tovuti hii kila wakati</translation>
 <translation id="3947577358805392297">Hifadhi ukurasa kwa matumizi ya baadaye</translation>
 <translation id="3949571496842715403">Seva hii haikuweza kuthibitisha kuwa ni <ph name="DOMAIN" />; cheti chake cha usalama hakibainishi Majina Mbadala ya Mada. Hii inaweza kusababishwa na uwekaji mipangilio usiofaa au muunganisho wako kukatwa na mvamizi.</translation>
@@ -1062,7 +1061,6 @@
 <translation id="8149426793427495338">Kompyuta yako iko katika hali tuli.</translation>
 <translation id="8150722005171944719">Faili katika <ph name="URL" /> haisomeki. Huenda imeondolewa, kusogezwa, au idhini za faili huenda zinazuia ufikiaji.</translation>
 <translation id="8184538546369750125">Tumia chaguomsingi la duniani (Ruhusu)</translation>
-<translation id="8191494405820426728">Kitambulisho cha Kuacha Kufanya Kazi <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">Tendua hatua</translation>
 <translation id="8197543752516192074">Tafsiri Ukurasa</translation>
 <translation id="8201077131113104583">URL ya sasisho si sahihi kwa kiendelezi chenye Kitambulisho "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index a8bc802..a886a795 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -449,7 +449,6 @@
 <translation id="3890664840433101773">மின்னஞ்சலைச் சேர்</translation>
 <translation id="3901925938762663762">கார்டு காலாவதியானது</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">பதிவேற்றிய சிதைவு அறிக்கை ஐடி <ph name="CRASH_ID" /> (அகச் சிதைவு ஐடி: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">இந்தத் தளத்தில் எப்போதும் கேள்</translation>
 <translation id="3947577358805392297">பின்னர் படிப்பதற்காகப் பக்கத்தைச் சேமி</translation>
 <translation id="3949571496842715403">இது <ph name="DOMAIN" /> தான் என்பதை, இந்தச் சேவையகத்தால் உறுதிப்படுத்த முடியவில்லை; பொருள் மாற்றுப் பெயர்களை அதன் பாதுகாப்புச் சான்றிதழ் குறிப்பிடவில்லை. இது தவறான உள்ளமைவினால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.</translation>
@@ -1057,7 +1056,6 @@
 <translation id="8149426793427495338">உங்கள் கணினி உறக்கநிலைக்குச் சென்றது.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> இல் உள்ள கோப்பு படிக்கக் கூடியதாக இல்லை. அது அகற்றப்பட்டிருக்கலாம், நகர்த்தப்பட்டிருக்கலாம் அல்லது கோப்பு அனுமதிகள் அணுகலைத் தடுத்திருக்கலாம்.</translation>
 <translation id="8184538546369750125">முழுமையான இயல்புநிலையைப் பயன்படுத்து (அனுமதி)</translation>
-<translation id="8191494405820426728">அகச் சிதைவு ஐடி: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;நகர்த்தலைச் செயல்தவிர்</translation>
 <translation id="8197543752516192074">பக்கத்தை மொழிபெயர்</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" ஐடியுடன் கூடிய நீட்டிப்பிற்கான தவறான புதுப்பிப்பு URL.</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 2810915..707456a 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -56,7 +56,7 @@
     &lt;/ol&gt;</translation>
 <translation id="1257286744552378071">మీ సంస్థ నిర్వహించని ఒక సైట్‌లో మీరు మీ పాస్‌వర్డ్‌ని నమోదు చేసారు. మీ ఖాతాని రక్షించడం కోసం, మీ పాస్‌వర్డ్‌ని ఇతర యాప్‌లు మరియు సైట్‌లలో తిరిగి ఉపయోగించవద్దు.</translation>
 <translation id="1263231323834454256">పఠన జాబితా</translation>
-<translation id="1264126396475825575">క్రాష్ నివేదిక <ph name="CRASH_TIME" />కి సంగ్రహించబడింది (ఇంకా అప్‌లోడ్ చేయలేదు లేదా విస్మరించబడింది)</translation>
+<translation id="1264126396475825575">క్రాష్ నివేదిక <ph name="CRASH_TIME" />కు క్యాప్చ‌ర్ చేయ‌బ‌డింది (ఇంకా అప్‌లోడ్ చేయలేదు లేదా విస్మరించబడింది)</translation>
 <translation id="1270502636509132238">పికప్ పద్ధతి</translation>
 <translation id="1285320974508926690">ఈ సైట్‌ను అనువదించవద్దు</translation>
 <translation id="1292701964462482250">"మీ కంప్యూటర్‌లో ఉన్న సాఫ్ట్‌వేర్ కారణంగా Chrome సురక్షితంగా వెబ్‌కి కనెక్ట్ కాలేకపోతోంది" (Windows కంప్యూటర్‌లకు మాత్రమే)</translation>
@@ -89,8 +89,8 @@
 <translation id="1484290072879560759">షిప్పింగ్ చిరునామాను ఎంచుకోండి</translation>
 <translation id="1501859676467574491">మీ Google ఖాతా నుండి కార్డ్‌లను చూపండి</translation>
 <translation id="1506687042165942984">ఈ పేజీ యొక్క సేవ్ చేసిన (అంటే పాతది) కాపీని చూపుతుంది.</translation>
-<translation id="1507202001669085618">&lt;p&gt;ఆన్‌లైన్ వెళ్లడానికి ముందు సైన్ ఇన్ చేయాల్సిన అవసరం ఉన్న Wi-Fi పోర్టల్‌ని మీరు ఉపయోగిస్తున్నట్లయితే మీకు ఈ ఎర్రర్ కనిపిస్తుంది.&lt;/p&gt;
-    &lt;p&gt;ఎర్రర్‌ని పరిష్కరించడానికి, మీరు తెరవాలనుకుంటున్న పేజీలో &lt;strong&gt;కనెక్ట్ చేయి&lt;/strong&gt;ని నొక్కండి.&lt;/p&gt;</translation>
+<translation id="1507202001669085618">&lt;p&gt;ఆన్‌లైన్‌కు వెళ్లడం కంటే ముందు సైన్ ఇన్ చేయాల్సిన అవసరం ఉన్న Wi-Fi పోర్టల్‌ను మీరు ఉపయోగిస్తున్నట్లయితే మీకు ఈ ఎర్రర్ కనిపిస్తుంది.&lt;/p&gt;
+    &lt;p&gt;ఎర్రర్‌ను పరిష్కరించడానికి, మీరు తెరవాలనుకుంటున్న పేజీలో &lt;strong&gt;కనెక్ట్ చేయి&lt;/strong&gt;ని నొక్కండి.&lt;/p&gt;</translation>
 <translation id="1517433312004943670">ఫోన్ నంబర్ అవసరం</translation>
 <translation id="1517500485252541695">ఆమోదించబడిన క్రెడిట్ మరియు డెబిట్ కార్డ్‌లు</translation>
 <translation id="1519264250979466059">రూపకల్పన తేదీ</translation>
@@ -159,7 +159,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{ఏమీ లేవు}=1{1 సైట్}other{# సైట్‌లు}}</translation>
 <translation id="1927235823738766038">ఆమోదించే క్రెడిట్ మరియు డెబిట్ కార్డ్‌లు</translation>
 <translation id="194030505837763158"><ph name="LINK" />కి వెళ్లండి</translation>
-<translation id="1945968466830820669">మీరు మీ సంస్థ యొక్క ఖాతాకు యాక్సెస్‌ని కోల్పోవచ్చు లేదా గుర్తింపు చౌర్యానికి గురికావచ్చు. Chromium మీరు ఇప్పుడే మీ పాస్‌వర్డ్‌ని మార్చాల్సిందిగా సిఫార్సు చేస్తోంది.</translation>
+<translation id="1945968466830820669">మీరు మీ సంస్థ ఖాతాకు యాక్సెస్‌ను కోల్పోవచ్చు. లేదా గుర్తింపు స‌మాచారం చౌర్యానికి గురికావచ్చు. Chromium మీరు ఇప్పుడే మీ పాస్‌వర్డ్‌ను మార్చాల్సిందిగా సిఫార్సు చేస్తోంది.</translation>
 <translation id="1948773908305951926">ఆమోదించబడిన ప్రీపెయిడ్ కార్డ్‌లు</translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> బుక్‌మార్క్‌లు</translation>
 <translation id="1973335181906896915">శ్రేణిగా రూపొందించడంలో లోపం</translation>
@@ -220,7 +220,7 @@
 <translation id="2359629602545592467">అనేకం</translation>
 <translation id="2359808026110333948">కొనసాగించు</translation>
 <translation id="2360873523816792727">మీ కార్డ్‌ల‌ను అన్ని పరికరాలలో ఉపయోగించాలంటే, సమకాలీకరణను ఆన్ చేయండి.</translation>
-<translation id="2365563543831475020"><ph name="CRASH_TIME" />కి సంగ్రహించిన క్రాష్ నివేదిక అప్‌లోడ్ కాలేదు</translation>
+<translation id="2365563543831475020"><ph name="CRASH_TIME" />కు క్యాప్చ‌ర్ చేయ‌బ‌డిన‌ క్రాష్ నివేదిక అప్‌లోడ్ కాలేదు</translation>
 <translation id="2367567093518048410">స్థాయి</translation>
 <translation id="2378238891085281592">మీరు ప్రైవేట్ మోడ్‌లోకి వెళ్లారు</translation>
 <translation id="2384307209577226199">ఎంటర్‌ప్రైజ్ డిఫాల్ట్</translation>
@@ -419,7 +419,7 @@
 <translation id="3676592649209844519">పరికర ID:</translation>
 <translation id="3678029195006412963">అభ్యర్థనకు సంతకం అందించడం సాధ్యపడలేదు</translation>
 <translation id="3678529606614285348">కొత్త అజ్ఞాత విండోలో పేజీని తెరవండి (Ctrl-Shift-N)</translation>
-<translation id="3679803492151881375">క్రాష్ నివేదిక <ph name="CRASH_TIME" />కి సంగ్రహించబడింది, <ph name="UPLOAD_TIME" />కి అప్‌లోడ్ చేయబడింది</translation>
+<translation id="3679803492151881375">క్రాష్ నివేదిక <ph name="CRASH_TIME" />కు క్యాప్చ‌ర్ చేయ‌బ‌డింది, <ph name="UPLOAD_TIME" />కు అప్‌లోడ్ చేయబడింది</translation>
 <translation id="3681007416295224113">సర్టిఫికెట్ సమాచారం</translation>
 <translation id="3704162925118123524">మీరు ఉపయోగించే నెట్‌వర్క్‌కి మీరు దాని లాగిన్ పేజీని సందర్శించడం అవసరం కావచ్చు.</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">ఇమెయిల్‌ను జోడించండి</translation>
 <translation id="3901925938762663762">కార్డ్ గడువు సమయం ముగిసింది</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">క్రాష్ నివేదిక ID <ph name="CRASH_ID" /> (స్థానిక క్రాష్ ID: <ph name="CRASH_LOCAL_ID" />) అప్‌లోడ్ చేయబడింది</translation>
 <translation id="3946209740501886391">ఈ సైట్‌లో ఎల్లప్పుడూ అడగాలి</translation>
 <translation id="3947577358805392297">తర్వాతి వినియోగం కోసం పేజీని సేవ్ చేయి</translation>
 <translation id="3949571496842715403">ఈ సర్వర్ తను <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రంలో విషయ ప్రత్యామ్నాయ పేర్లు పేర్కొనబడలేదు. తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా హ్యాకర్ మీ కనెక్షన్‌కి అంతరాయం కలిగించడం వలన ఇలా జరిగి ఉండవచ్చు.</translation>
@@ -470,7 +469,7 @@
 <translation id="4058922952496707368">కీ "<ph name="SUBKEY" />": <ph name="ERROR" /></translation>
 <translation id="4067947977115446013">చెల్లుబాటు అయ్యే చిరునామాను జోడించండి</translation>
 <translation id="4072486802667267160">మీ ఆర్డర్‌ను ప్రాసెస్ చేస్తున్నప్పుడు లోపం ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
-<translation id="4075732493274867456">క్లయింట్ మరియు సర్వర్ ఒకే SSL ప్రోటోకాల్ వెర్షన్ లేదా సైఫర్ సూట్‌కు మద్దతివ్వవు.</translation>
+<translation id="4075732493274867456">క్లయింట్, సర్వర్- ఒకే SSL ప్రోటోకాల్ సంస్కరణ లేదా సైఫర్ సూట్‌కు మద్దతు ఇవ్వవు.</translation>
 <translation id="4079302484614802869">ప్రాక్సీ కాన్ఫిగరేషన్ స్థిరమైన ప్రాక్సీ సర్వర్‌లను కాకుండా, ఒక .pac స్క్రిప్ట్ URLను ఉపయోగించడానికి సెట్ చేయబడింది.</translation>
 <translation id="4098354747657067197">ముందు వంచనాత్మక సైట్ ఉంది</translation>
 <translation id="4103249731201008433">పరికరం క్రమ సంఖ్య చెల్లదు</translation>
@@ -543,7 +542,7 @@
 <translation id="4506176782989081258">ధృవీకరణ లోపం: <ph name="VALIDATION_ERROR" /></translation>
 <translation id="4506599922270137252">సిస్టమ్ నిర్వాహకుడిని సంప్రదించడం</translation>
 <translation id="450710068430902550">నిర్వాహకుడితో భాగస్వామ్యం</translation>
-<translation id="4515275063822566619">కార్డ్‌లు మరియు చిరునామాలు Chrome మరియు మీ Google ఖాతా (<ph name="ACCOUNT_EMAIL" />) నుండి పొందినవి. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్‌లు<ph name="END_LINK" />లో వాటిని నిర్వహించవచ్చు.</translation>
+<translation id="4515275063822566619">కార్డ్‌లు, చిరునామాలు- Chrome నుండి, మీ Google ఖాతా (<ph name="ACCOUNT_EMAIL" />) నుండి పొందినవి. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్‌లు<ph name="END_LINK" />లో వాటిని నిర్వహించవచ్చు.</translation>
 <translation id="4522570452068850558">వివరాలు</translation>
 <translation id="4524805452350978254">కార్డ్‌లను నిర్వహించండి</translation>
 <translation id="4552089082226364758">ఫ్లాష్</translation>
@@ -630,7 +629,7 @@
 <translation id="5145883236150621069">విధాన ప్రతిస్పందనలో లోపం కోడ్ ఉంది</translation>
 <translation id="5159010409087891077">కొత్త అజ్ఞాత విండోలో పేజీని తెరవండి (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> కార్డ్ CVCని నమోదు చేయండి. మీరు నిర్ధారించిన తర్వాత, మీ Google ఖాతా నుండి కార్డ్ వివరాలు ఈ సైట్‌తో షేర్ చేయబడతాయి.</translation>
-<translation id="5169827969064885044">మీరు మీ సంస్థ యొక్క ఖాతాకు యాక్సెస్‌ని కోల్పోవచ్చు లేదా గుర్తింపు చౌర్యానికి గురికావచ్చు. Chrome మీరు ఇప్పుడే మీ పాస్‌వర్డ్‌ని మార్చాల్సిందిగా సిఫార్సు చేస్తోంది.</translation>
+<translation id="5169827969064885044">మీరు మీ సంస్థ ఖాతాకు యాక్సెస్‌ను కోల్పోవచ్చు. లేదా గుర్తింపు స‌మాచారం చౌర్యానికి గురికావచ్చు. మీరు ఇప్పుడే మీ పాస్‌వర్డ్‌ను మార్చాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
 <translation id="5171045022955879922">URLను వెతకండి లేదా టైప్ చేయండి</translation>
 <translation id="5172758083709347301">మెషీన్</translation>
 <translation id="5179510805599951267"><ph name="ORIGINAL_LANGUAGE" />లో లేదా? ఈ లోపాన్ని నివేదించండి</translation>
@@ -648,7 +647,7 @@
 <translation id="5299298092464848405">విధానాన్ని అన్వయించడంలో లోపం</translation>
 <translation id="5300589172476337783">చూపించు</translation>
 <translation id="5308380583665731573">కనెక్ట్ చేయండి</translation>
-<translation id="5308689395849655368">క్రాష్ నివేదిక నిలిపివెయ్యబడింది.</translation>
+<translation id="5308689395849655368">క్రాష్ నివేదిక నిలిపివేయ‌బడింది.</translation>
 <translation id="5317780077021120954">సేవ్ చేయి</translation>
 <translation id="5323105697514565458"><ph name="FRIENDLY_MATCH_TEXT" />, <ph name="NUM_MATCHES" />లో <ph name="MATCH_POSITION" /></translation>
 <translation id="5324080437450482387">సంప్రదింపు సమాచారాన్ని ఎంచుకోండి</translation>
@@ -717,7 +716,7 @@
 <translation id="5732392974455271431">మీ తల్లిదండ్రులు దీన్ని మీ కోసం అన్‌బ్లాక్ చేయగలరు</translation>
 <translation id="5763042198335101085">చెల్లుబాటు అయ్యే ఇమెయిల్ చిరునామాను నమోదు చేయండి</translation>
 <translation id="5765072501007116331">బట్వాడా పద్ధతులు మరియు అవసరాలను చూడాలంటే, చిరునామాని ఎంచుకోండి</translation>
-<translation id="5770114862687765385">ఫైల్ పాడై ఉండవచ్చు. సెషన్‌ని రీసెట్ చేయడం కోసం 'రీసెట్ చేయి' బటన్‌ని క్లిక్ చేయండి</translation>
+<translation id="5770114862687765385">ఫైల్ పాడై ఉండవచ్చు. సెషన్‌ను రీసెట్ చేయడం కోసం 'రీసెట్ చేయి' బటన్‌ను క్లిక్ చేయండి</translation>
 <translation id="5778550464785688721">MIDI పరికరాల పూర్తి నియంత్రణ</translation>
 <translation id="57838592816432529">మ్యూట్ చేయి</translation>
 <translation id="5784606427469807560">మీ కార్డ్‌ను నిర్ధారించడంలో సమస్య ఏర్పడింది. మీ ఇంటర్నెట్ కనెక్షన్‌ని తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation>
@@ -785,7 +784,7 @@
 <translation id="6263376278284652872"><ph name="DOMAIN" /> బుక్‌మార్క్‌లు</translation>
 <translation id="6264485186158353794">భద్రతకు తిరిగి వెళ్ళు</translation>
 <translation id="6276112860590028508">మీ పఠన జాబితాలో ఉన్న పేజీలు ఇక్కడ కనిపిస్తాయి</translation>
-<translation id="627746635834430766">తర్వాతిసారి మరింత వేగంగా చెల్లించడానికి, మీ కార్డ్ మరియు బిల్లింగ్ చిరునామాను మీ Google ఖాతాకు సేవ్ చేయండి.</translation>
+<translation id="627746635834430766">తర్వాతిసారి మరింత వేగంగా చెల్లించడానికి, మీ కార్డ్, బిల్లింగ్ చిరునామాను మీ Google ఖాతాకు సేవ్ చేయండి.</translation>
 <translation id="6280223929691119688">ఈ చిరునామాకు బట్వాడా చేయడం సాధ్యం కాదు. వేరే చిరునామాని ఎంచుకోండి.</translation>
 <translation id="6282194474023008486">పోస్టల్ కోడ్</translation>
 <translation id="6290238015253830360">మీకు సూచించిన కథనాలు ఇక్కడ కనిపిస్తాయి</translation>
@@ -799,7 +798,7 @@
 <translation id="6358450015545214790">దీని అర్ధం ఏమిటి?</translation>
 <translation id="6383221683286411806">కొనసాగించడం వల్ల ఛార్జ్‌లు చెల్లించాల్సి రావచ్చు.</translation>
 <translation id="6386120369904791316">{COUNT,plural, =1{1 ఇతర సూచన}other{# ఇతర సూచనలు}}</translation>
-<translation id="6387754724289022810">తర్వాతిసారి మరింత వేగంగా చెల్లించడానికి, మీ కార్డ్ మరియు బిల్లింగ్ చిరునామాను మీ Google ఖాతాకు మరియు ఈ పరికరానికి సేవ్ చేయండి.</translation>
+<translation id="6387754724289022810">తర్వాతిసారి మరింత వేగంగా చెల్లించడానికి, మీ కార్డ్, బిల్లింగ్ చిరునామాను మీ Google ఖాతాకు, ఈ పరికరానికి సేవ్ చేయండి.</translation>
 <translation id="6404511346730675251">బుక్‌మార్క్‌ను సవరించు</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> గడువు ముగింపు తేదీ మరియు CVCని నమోదు చేయండి</translation>
 <translation id="6414888972213066896">మీరు ఈ సైట్‌ని సందర్శించడానికి అనుమతించమని కోరుతూ మీ తల్లి/తండ్రికి అభ్యర్థన పంపారు</translation>
@@ -916,7 +915,7 @@
 <translation id="7271803869921933038">ఆమోదించే ప్రీపెయిడ్ కార్డ్‌లు</translation>
 <translation id="7275334191706090484">నిర్వహించబడిన బుక్‌మార్క్‌లు</translation>
 <translation id="7298195798382681320">సిఫార్సు చేయబడినవి</translation>
-<translation id="7309308571273880165"><ph name="CRASH_TIME" /> తేదీన సంగ్రహించిన క్రాష్ నివేదిక (అప్‌లోడ్ చేయాల్సిందిగా వినియోగదారుకు అభ్యర్థన, ఇంకా అప్‌లోడ్ చేయలేదు)</translation>
+<translation id="7309308571273880165"><ph name="CRASH_TIME" /> తేదీన క్యాప్చ‌ర్ చేయ‌బ‌డిన‌ క్రాష్ నివేదిక (అప్‌లోడ్ చేయాల్సిందిగా వినియోగదారుకు అభ్యర్థన, ఇంకా అప్‌లోడ్ చేయలేదు)</translation>
 <translation id="7320336641823683070">కనెక్షన్ సహాయం</translation>
 <translation id="7334320624316649418">&amp;మళ్లీ క్రమం చేయడాన్ని పునరావృతం చేయి</translation>
 <translation id="733923710415886693">సర్వర్ ప్రమాణపత్రాన్ని ప్రమాణపత్రం పారదర్శకత ద్వారా బహిరంగపరచలేదు.</translation>
@@ -930,9 +929,9 @@
 <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;ప్రారంభించు&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;ని క్లిక్ చేయండి
@@ -977,7 +976,7 @@
 <translation id="7600965453749440009"><ph name="LANGUAGE" />ను ఎప్పటికీ అనువదించవద్దు</translation>
 <translation id="7610193165460212391">విలువ <ph name="VALUE" /> పరిధి వెలుపల ఉంది.</translation>
 <translation id="7613889955535752492">గడువు ముగింపు: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
-<translation id="7615602087246926389">మీకు ఇప్పటికే మీ Google ఖాతా పాస్‌వర్డ్ యొక్క మరొక వెర్షన్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ అయిన డేటా ఉంది. దయచేసి దాన్ని దిగువ నమోదు చేయండి.</translation>
+<translation id="7615602087246926389">మీకు ఇప్పటికే మీ Google ఖాతా పాస్‌వర్డ్ యొక్క మరొక వెర్ష‌న్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ అయిన డేటా ఉంది. దయచేసి దాన్ని దిగువ నమోదు చేయండి.</translation>
 <translation id="7637571805876720304">Chromium నుండి క్రెడిట్ కార్డ్‌ను తీసివేయాలా?</translation>
 <translation id="765676359832457558">అధునాతన సెట్టింగ్‌లను దాచు...</translation>
 <translation id="7658239707568436148">రద్దు చెయ్యి</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">మీ కంప్యూటర్ నిద్రావస్థకి వెళ్లింది.</translation>
 <translation id="8150722005171944719"><ph name="URL" />లో ఫైల్ చదవగలిగేది కాదు. దీన్ని తీసివేసి ఉండవచ్చు, తరలించి ఉండవచ్చు లేదా ఫైల్ అనుమతులు ప్రాప్యతను నిరోధిస్తుండవచ్చు.</translation>
 <translation id="8184538546369750125">సార్వజనీన డిఫాల్ట్‌ను ఉపయోగించు (అనుమతించు)</translation>
-<translation id="8191494405820426728">స్థానిక క్రాష్ ID <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;తరలించడాన్ని రద్దు చేయి</translation>
 <translation id="8197543752516192074">పేజీని అనువదించు</translation>
 <translation id="8201077131113104583">ID "<ph name="EXTENSION_ID" />" ఉన్న ఎక్స్‌టెన్షన్ కోసం అప్‌డేట్ URL చెల్లదు.</translation>
@@ -1145,7 +1143,7 @@
 <translation id="8763927697961133303">USB పరికరం</translation>
 <translation id="8768895707659403558">మీ కార్డ్‌లను మీ అన్ని పరికరాలలో ఉపయోగించాలంటే, <ph name="SIGN_IN_LINK" />.</translation>
 <translation id="8790007591277257123">&amp;తొలగించడాన్ని పునరావృతం చేయి</translation>
-<translation id="8792621596287649091">మీరు మీ <ph name="ORG_NAME" /> ఖాతాకు యాక్సెస్‌ని కోల్పోవచ్చు లేదా గుర్తింపు చోరీకి గురి కావచ్చు. మీ పాస్‌వర్డ్‌ని ఇప్పుడే రీసెట్ చేయాల్సిందిగా Chromium సిఫార్సు చేస్తోంది.</translation>
+<translation id="8792621596287649091">మీరు మీ <ph name="ORG_NAME" /> ఖాతాకు యాక్సెస్‌ను కోల్పోవచ్చు. లేదా గుర్తింపు స‌మాచారం చోరీకి గురి కావచ్చు. మీ పాస్‌వర్డ్‌ను ఇప్పుడే రీసెట్ చేయాల్సిందిగా Chromium సిఫార్సు చేస్తోంది.</translation>
 <translation id="8800988563907321413">మీ సమీపంలోని సూచనలు ఇక్కడ కనిపిస్తాయి</translation>
 <translation id="8820817407110198400">బుక్‌మార్క్‌లు</translation>
 <translation id="883848425547221593">ఇతర బుక్‌మార్క్‌లు:</translation>
@@ -1159,7 +1157,7 @@
 <translation id="8891727572606052622">చెల్లని ప్రాక్సీ మోడ్.</translation>
 <translation id="8892964541482452187">ట్యాబ్ స్విచ్ బటన్, ఈ ట్యాబ్‌కి మారడానికి ఎంటర్‌ని నొక్కండి</translation>
 <translation id="8903921497873541725">దగ్గరికి జూమ్ చేయి</translation>
-<translation id="8931333241327730545">మీరు ఈ కార్డ్‌ను మీ Google ఖాతాకి సేవ్ చేయాలనుకుంటున్నారా?</translation>
+<translation id="8931333241327730545">మీరు ఈ కార్డ్‌ను మీ Google ఖాతాకు సేవ్ చేయాలనుకుంటున్నారా?</translation>
 <translation id="8932102934695377596">మీ గడియారం సమయం గతంలో ఉంది</translation>
 <translation id="893332455753468063">పేరుని జోడించండి</translation>
 <translation id="8938939909778640821">ఆమోదించబడిన క్రెడిట్ మరియు ప్రీపెయిడ్ కార్డ్‌లు</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index e242548..133742ec 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">เพิ่มอีเมล</translation>
 <translation id="3901925938762663762">บัตรหมดอายุ</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">อัปโหลดรหัสรายงานข้อขัดข้อง <ph name="CRASH_ID" /> แล้ว (รหัสข้อขัดข้องในเครื่อง: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">ถามทุกครั้งบนเว็บไซต์นี้</translation>
 <translation id="3947577358805392297">เก็บหน้านี้ไว้ดูทีหลัง</translation>
 <translation id="3949571496842715403">เซิร์ฟเวอร์นี้ไม่สามารถพิสูจน์ได้ว่าเป็น <ph name="DOMAIN" /> เพราะใบรับรองความปลอดภัยไม่ได้ระบุชื่อสำรองของหัวเรื่อง โดยอาจเกิดจากการกำหนดค่าผิดหรือผู้โจมตีที่ขัดขวางการเชื่อมต่อของคุณ</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">คอมพิวเตอร์ของคุณเข้าสู่โหมดสลีปแล้ว</translation>
 <translation id="8150722005171944719">ไฟล์ที่ <ph name="URL" /> ไม่สามารถอ่านได้ เนื่องจากอาจถูกลบ ย้ายไปแล้ว หรือการอนุญาตของไฟล์อาจป้องกันการเข้าถึง</translation>
 <translation id="8184538546369750125">ใช้ค่าเริ่มต้นสากล (อนุญาต)</translation>
-<translation id="8191494405820426728">รหัสข้อขัดข้องในเครื่อง <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;เลิกทำการย้าย</translation>
 <translation id="8197543752516192074">แปลหน้าเว็บ</translation>
 <translation id="8201077131113104583">การอัปเดต URL ไม่ถูกต้องสำหรับส่วนขยายรหัส "<ph name="EXTENSION_ID" />"</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 123c43d..3e6db94 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">E-posta adresi ekle</translation>
 <translation id="3901925938762663762">Kartın kullanım süresi doldu</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Kilitlenme Raporu Kimliği <ph name="CRASH_ID" /> Yüklendi (Yerel Kilitlenme Kimliği: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Bu sitede her zaman sor</translation>
 <translation id="3947577358805392297">Sayfayı sonrası için kaydet</translation>
 <translation id="3949571496842715403">Bu sunucu <ph name="DOMAIN" /> olduğunu kanıtlayamadı. Güvenlik sertifikasında Konu Diğer Adları belirtilmiyor. Bu durum, bir yanlış yapılandırmadan veya bağlantınıza müdahale eden bir saldırgandan kaynaklanıyor olabilir.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Bilgisayarınız uyku moduna geçti.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> konumundaki dosya okunamıyor. Kaldırılmış ya da taşınmış olabilir veya dosya izinleri erişimi önlüyordur.</translation>
 <translation id="8184538546369750125">Genel varsayılanı kullan (İzin ver)</translation>
-<translation id="8191494405820426728">Yerel Kilitlenme Kimliği: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">Taşımayı &amp;Geri Al</translation>
 <translation id="8197543752516192074">Sayfayı Çevir</translation>
 <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" kodlu uzantı için geçersiz güncelleme URL'si.</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 7cc7692..3bd7818 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -453,7 +453,6 @@
 <translation id="3890664840433101773">Додати електронну адресу</translation>
 <translation id="3901925938762663762">Термін дії картки минув</translation>
 <translation id="3909695131102177774"><ph name="LABEL" />: <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">Ідентифікатор завантаженого звіту про аварійне завершення роботи: <ph name="CRASH_ID" /> (локальний ідентифікатор аварійного завершення роботи: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Завжди запитувати на цьому сайті</translation>
 <translation id="3947577358805392297">Зберегти сторінку</translation>
 <translation id="3949571496842715403">Цей сервер не зміг довести, що він – домен <ph name="DOMAIN" />. У його сертифікаті безпеки не вказано альтернативні імена. Імовірні причини: неправильна конфігурація або хтось намагається перехопити ваше з’єднання.</translation>
@@ -1064,7 +1063,6 @@
 <translation id="8149426793427495338">Ваш комп’ютер перейшов у режим сну.</translation>
 <translation id="8150722005171944719">Файл за адресою <ph name="URL" /> не читається. Можливо, його видалено, переміщено або доступ заборонено дозволами файлу.</translation>
 <translation id="8184538546369750125">Використовувати глобальне налаштування за умовчанням (Дозволяти)</translation>
-<translation id="8191494405820426728">Локальний ідентифікатор аварійного завершення роботи: <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Відмінити переміщення</translation>
 <translation id="8197543752516192074">Перекласти сторінку</translation>
 <translation id="8201077131113104583">Недійсна URL-адреса для оновлення розширення з ідентифікатором "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 39d17ef8..c6825f8 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">Thêm email</translation>
 <translation id="3901925938762663762">Thẻ đã hết hạn</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">ID báo cáo sự cố đã tải lên <ph name="CRASH_ID" /> (ID sự cố cục bộ: <ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">Luôn hỏi trên trang web này</translation>
 <translation id="3947577358805392297">Lưu trang để xem sau</translation>
 <translation id="3949571496842715403">Máy chủ này không thể chứng minh được đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ không chỉ định Tên thay thế đối tượng. Điều này có thể do cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
@@ -1061,7 +1060,6 @@
 <translation id="8149426793427495338">Máy tính của bạn đã chuyển sang chế độ ngủ.</translation>
 <translation id="8150722005171944719">Không thể đọc được tệp tại <ph name="URL" />.  Tệp này có thể đã bị xóa, di chuyển hoặc quyền tệp có thể đang chặn truy cập.</translation>
 <translation id="8184538546369750125">Sử dụng cài đặt mặc định chung (Cho phép)</translation>
-<translation id="8191494405820426728">ID sự cố cục bộ <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">&amp;Hoàn tác di chuyển</translation>
 <translation id="8197543752516192074">Dịch trang</translation>
 <translation id="8201077131113104583">URL cập nhật không hợp lệ cho tiện ích có ID "<ph name="EXTENSION_ID" />".</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 5ec78f7c..471f4c4 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -450,7 +450,6 @@
 <translation id="3890664840433101773">添加电子邮件地址</translation>
 <translation id="3901925938762663762">此信用卡已过期</translation>
 <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation>
-<translation id="3945915738023014686">已上传的崩溃报告的 ID:<ph name="CRASH_ID" />(本地崩溃 ID:<ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">在该网站上一律询问</translation>
 <translation id="3947577358805392297">保存页面以备后用</translation>
 <translation id="3949571496842715403">此服务器无法证实它就是 <ph name="DOMAIN" /> - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。</translation>
@@ -1060,7 +1059,6 @@
 <translation id="8149426793427495338">您的计算机已进入休眠模式。</translation>
 <translation id="8150722005171944719">无法读取 <ph name="URL" /> 上的文件。该文件可能已遭到删除、移动,或者文件权限不允许进行访问。</translation>
 <translation id="8184538546369750125">使用全局默认设置(允许)</translation>
-<translation id="8191494405820426728">本地崩溃 ID:<ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">撤消移动(&amp;U)</translation>
 <translation id="8197543752516192074">翻译网页</translation>
 <translation id="8201077131113104583">ID 为“<ph name="EXTENSION_ID" />”的扩展程序的更新网址无效。</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 920f67d..621aef6 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -452,7 +452,6 @@
 <translation id="3890664840433101773">新增電子郵件地址</translation>
 <translation id="3901925938762663762">這張信用卡已過期</translation>
 <translation id="3909695131102177774"><ph name="LABEL" />:<ph name="ERROR" /></translation>
-<translation id="3945915738023014686">已上傳的當機報告 ID:<ph name="CRASH_ID" /> (本機當機 ID:<ph name="CRASH_LOCAL_ID" />)</translation>
 <translation id="3946209740501886391">一律詢問你是否接受這個網站的要求</translation>
 <translation id="3947577358805392297">儲存網頁以供日後使用</translation>
 <translation id="3949571496842715403">這個伺服器無法證明所屬網域為 <ph name="DOMAIN" />;其安全性憑證未指定主體別名。這可能是因為設定錯誤,或是有攻擊者攔截你的連線所致。</translation>
@@ -519,6 +518,7 @@
 <translation id="4275830172053184480">重新啟動裝置</translation>
 <translation id="4277028893293644418">重設密碼</translation>
 <translation id="4280429058323657511">,到期日:<ph name="EXPIRATION_DATE_ABBR" /></translation>
+<translation id="428639260510061158">{NUM_CARDS,plural, =1{這張卡片已儲存到你的 Google 帳戶}other{這些卡片已儲存到你的 Google 帳戶}}</translation>
 <translation id="4305817255990598646">切換</translation>
 <translation id="4312866146174492540">封鎖 (預設)</translation>
 <translation id="4325863107915753736">找不到文章</translation>
@@ -548,6 +548,7 @@
 <translation id="4552089082226364758">Flash</translation>
 <translation id="4558551763791394412">試試看停用擴充功能。</translation>
 <translation id="457875822857220463">快遞</translation>
+<translation id="4582204425268416675">移除卡片</translation>
 <translation id="4587425331216688090">要從 Chrome 中移除地址嗎?</translation>
 <translation id="4592951414987517459">您的 <ph name="DOMAIN" /> 連線使用新型加密套件進行加密。</translation>
 <translation id="4594403342090139922">復原刪除(&amp;U)</translation>
@@ -655,6 +656,7 @@
 <translation id="5344579389779391559">進入接下來的頁面後,系統可能會向您收費</translation>
 <translation id="5355557959165512791">目前無法造訪 <ph name="SITE" />,因為這個網站的憑證已遭撤銷。網路錯誤和攻擊行為通常是暫時性的,因此這個網頁可能稍後就會恢復正常狀態。</translation>
 <translation id="536296301121032821">無法儲存政策設定</translation>
+<translation id="5363056109122666249">你已登入帳戶,因此 Chrome 詢問你是否要將卡片儲存至你的 Google 帳戶。你可以在設定中變更這項行為。</translation>
 <translation id="5371425731340848620">更新信用卡</translation>
 <translation id="5377026284221673050">「你的時鐘時間過慢」、「你的時鐘時間過快」或 「&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;」</translation>
 <translation id="5384855140246857529">如要將卡片同步到所有裝置,請登入並開啟同步功能。</translation>
@@ -757,6 +759,7 @@
 <translation id="6047233362582046994">如果你瞭解安全性風險,也可以選擇在有害應用程式尚未遭到移除的狀態下<ph name="BEGIN_LINK" />造訪這個網站<ph name="END_LINK" />。</translation>
 <translation id="6047927260846328439">這項內容可能會試圖誘使你安裝軟體或提供個人資訊。<ph name="BEGIN_LINK" />仍要顯示<ph name="END_LINK" /></translation>
 <translation id="6051221802930200923">目前無法造訪 <ph name="SITE" />,因為這個網站使用憑證鎖定功能。網路錯誤和攻擊行為通常是暫時性的,因此這個網頁可能稍後就會恢復正常狀態。</translation>
+<translation id="6058977677006700226">想在所有裝置上使用你的卡片嗎?</translation>
 <translation id="6059925163896151826">USB 裝置</translation>
 <translation id="6071091556643036997">政策類型無效。</translation>
 <translation id="6080696365213338172">你使用了管理員提供的憑證存取內容,因此管理員可攔截你傳送至「<ph name="DOMAIN" />」的資料。</translation>
@@ -875,6 +878,7 @@
 <translation id="7016992613359344582">這些費用可能只收取一次,也可能週期性收取,而且您可能不會注意到這筆費用。</translation>
 <translation id="7029809446516969842">密碼</translation>
 <translation id="7050187094878475250">您嘗試連線至 <ph name="DOMAIN" />,但伺服器提供的憑證有效期限太長,因此難以信任。</translation>
+<translation id="705310974202322020">{NUM_CARDS,plural, =1{目前無法儲存這張卡片}other{目前無法儲存這些卡片}}</translation>
 <translation id="7053983685419859001">封鎖</translation>
 <translation id="7064851114919012435">聯絡資訊</translation>
 <translation id="7079718277001814089">這個網站含有惡意軟體</translation>
@@ -945,6 +949,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />進一步瞭解<ph name="END_LINK" />這個問題。</translation>
 <translation id="7453467225369441013">你會從大多數網站登出,但不會因此登出 Google 帳戶。</translation>
 <translation id="7455133967321480974">使用全域預設值 (封鎖)</translation>
+<translation id="7460618730930299168">放映場次細節與你所選取的不同。要繼續嗎?</translation>
 <translation id="7473891865547856676">不用了,謝謝</translation>
 <translation id="7481312909269577407">往前</translation>
 <translation id="7485870689360869515">找不到任何資料。</translation>
@@ -984,6 +989,7 @@
 <translation id="7681101578153515023">變更搜尋引擎</translation>
 <translation id="7682287625158474539">寄送地址</translation>
 <translation id="7687186412095877299">在付款表單中填入已儲存的付款方式</translation>
+<translation id="769721561045429135">目前你有某些卡片只能在這部裝置上使用。按一下 [繼續] 即可查看卡片。</translation>
 <translation id="7699293099605015246">目前無法顯示文章</translation>
 <translation id="7701040980221191251">無</translation>
 <translation id="7704050614460855821"><ph name="BEGIN_LINK" />繼續前往 <ph name="SITE" /> 網站 (不安全)<ph name="END_LINK" /></translation>
@@ -1045,14 +1051,15 @@
 <translation id="808894953321890993">變更密碼</translation>
 <translation id="8091372947890762290">尚未在伺服器上啟動</translation>
 <translation id="8094917007353911263">目前使用的網路可能會要求您造訪 <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />。</translation>
+<translation id="8100588592594801589">已移除無效的卡片</translation>
 <translation id="8103161714697287722">付款方式</translation>
 <translation id="8118489163946903409">付款方式</translation>
 <translation id="8127301229239896662">「<ph name="SOFTWARE_NAME" />」未正確安裝在電腦或網路上。請通知 IT 管理員解決這個問題。</translation>
+<translation id="8130693978878176684">我無法提供協助了,請自行填入資料。</translation>
 <translation id="8131740175452115882">確認</translation>
 <translation id="8149426793427495338">您的電腦已進入睡眠模式。</translation>
 <translation id="8150722005171944719">無法讀取位於 <ph name="URL" /> 的檔案。這個檔案可能已遭移除或移動位置,或者檔案權限為禁止存取。</translation>
 <translation id="8184538546369750125">使用全域預設值 (允許)</translation>
-<translation id="8191494405820426728">本機當機 ID:<ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="8194797478851900357">復原移動(&amp;U)</translation>
 <translation id="8197543752516192074">翻譯網頁</translation>
 <translation id="8201077131113104583">擴充功能 (ID:「<ph name="EXTENSION_ID" />」) 的更新網址無效。</translation>
@@ -1211,6 +1218,7 @@
 <translation id="939736085109172342">新增資料夾</translation>
 <translation id="945855313015696284">查看下方資訊並刪除所有無效的卡片</translation>
 <translation id="951104842009476243">接受的簽帳金融卡和預付卡</translation>
+<translation id="960701843220172709">{NUM_CARDS,plural, =1{只要登入帳戶即可開始使用。系統會將這張卡片和相應的帳單地址儲存到你的 Google 帳戶。}other{只要登入帳戶即可開始使用。系統會將這些卡片和相應的帳單地址儲存到你的 Google 帳戶。}}</translation>
 <translation id="962484866189421427">這項內容可能會試圖讓你安裝身分不實的欺騙性應用程式,或是收集可用於追蹤你的資料。<ph name="BEGIN_LINK" />仍要顯示<ph name="END_LINK" /></translation>
 <translation id="969892804517981540">正式版本</translation>
 <translation id="973773823069644502">新增快遞地址</translation>
diff --git a/components/test/data/SafeBrowsingDb/PrefixSetRef b/components/test/data/SafeBrowsingDb/PrefixSetRef
deleted file mode 100644
index 185ce27..0000000
--- a/components/test/data/SafeBrowsingDb/PrefixSetRef
+++ /dev/null
@@ -1,5000 +0,0 @@
-93162
-2176144
-4898948
-4984863
-6722230
-7845700
-9043296
-18262486
-18594566
-18788672
-18941067
-20066209
-20516700
-20674439
-23562591
-25171335
-26341236
-26842299
-27456677
-27811026
-28013009
-28602117
-29373394
-30243908
-30625539
-31411045
-31734799
-33219771
-33434139
-34847043
-38661020
-39454479
-43012219
-43814734
-43949182
-46435740
-47209320
-47211242
-47216173
-47228039
-47238647
-47238955
-47240323
-47244941
-47263343
-47264647
-52455906
-54402022
-57005467
-57982386
-58835534
-60076576
-60498985
-64104555
-64566403
-67750781
-67755717
-67757385
-67759065
-67760767
-67776095
-67782727
-67791553
-67795462
-67798445
-67821700
-67870097
-68141344
-68716323
-69047429
-69530383
-71205827
-72008958
-72765304
-76156164
-76840461
-81091509
-82774917
-82781494
-82788700
-82794278
-82797149
-82816613
-82818760
-82821094
-82823956
-82827553
-85498336
-90017820
-91013387
-91129519
-93468618
-94875671
-96484387
-97507006
-97508883
-97509414
-97516837
-97521050
-97523451
-97524757
-97529950
-97543298
-97550540
-98508727
-98833032
-98837097
-98838240
-98838990
-98855214
-98856879
-98857702
-98860802
-98887047
-98890791
-102735605
-106945184
-107048652
-108903490
-112487410
-114651395
-118592206
-119306760
-119469058
-119863696
-122862058
-126621345
-127724166
-130064489
-132525609
-133127769
-134643166
-134793010
-143729170
-143825562
-143832711
-143839482
-143844391
-143850284
-143857572
-143859922
-143869518
-143878700
-143885460
-143945294
-145926373
-146058993
-146475681
-147757336
-147952346
-148345692
-151332002
-152218792
-153491558
-158186900
-161435942
-162593761
-162595104
-162603922
-162614088
-162614936
-162620303
-162631576
-162631672
-162632019
-162646646
-167604984
-172140881
-177888466
-178844177
-179356373
-180992715
-182042229
-183643166
-183804841
-184275101
-188568810
-189750984
-191303051
-191566532
-193990749
-195081164
-195402669
-196901891
-198407411
-199022733
-199325218
-199328638
-199329255
-199340341
-199344618
-199347386
-199347488
-199354374
-199358896
-199372216
-201090136
-208619348
-209270983
-211622170
-212680698
-213489061
-214169633
-214546464
-218641557
-218645121
-218649900
-218666945
-218672530
-218675014
-218675282
-218685924
-218690011
-218693644
-220561606
-225651898
-226932468
-227259723
-228631547
-230079581
-230357716
-231482429
-231485770
-231491435
-231496504
-231501560
-231525514
-231526392
-231527420
-231529792
-231535157
-233446835
-234134103
-235706756
-235854951
-238037445
-238840688
-242335136
-243912196
-245071543
-245623939
-246075862
-246083781
-246099518
-246100321
-246112413
-246117559
-246118671
-246123106
-246133485
-246133629
-246706008
-246777065
-247242900
-247666225
-249468620
-250140584
-255374934
-255376169
-255389989
-255390304
-255401638
-255402606
-255417499
-255423383
-255426044
-255431024
-255655721
-255728609
-256462633
-257718481
-258313879
-259338704
-259576316
-259858037
-262051895
-262868775
-265000610
-265887348
-266045645
-269027451
-270666364
-274574248
-279987179
-281117491
-282310845
-283799248
-284775482
-284870116
-284997243
-286773968
-290795668
-293877862
-295856234
-296369342
-296521103
-296783168
-299769227
-299781137
-302207844
-303132571
-303198755
-303831041
-303836914
-303845244
-303845530
-303846018
-303855361
-303860382
-303871369
-303879333
-303894956
-309178954
-309324512
-309811398
-311854720
-317279427
-318652029
-319671330
-320166154
-320776598
-324364541
-324466472
-325380495
-327203414
-327987011
-330183374
-331226208
-333112472
-334306277
-336925579
-337167813
-337169335
-337180552
-337185612
-337195525
-337199291
-337202058
-337210251
-337219176
-337219517
-337541808
-337755210
-337855394
-338314903
-343934831
-348323969
-349621194
-355255476
-357118714
-359583970
-361084562
-361554204
-362547070
-363490348
-364504421
-365268852
-365274696
-365277465
-365287226
-365292440
-365296593
-365296997
-365319520
-365321695
-365322865
-367358847
-368134495
-370314722
-370964092
-371312418
-372778903
-373418751
-374869986
-374995175
-375983918
-380546986
-381219282
-383418184
-384937578
-386927835
-386929605
-386931722
-386932276
-386940737
-386951432
-386969881
-386976280
-386979651
-386983039
-387762864
-388275805
-389275520
-390408387
-390837598
-391209017
-391214964
-391227088
-391241327
-391242852
-391246474
-391249997
-391252189
-391259701
-391262669
-392941937
-393358639
-394585603
-397217356
-398915423
-399508795
-400805703
-402180227
-404610231
-404614404
-404616907
-404624312
-404627732
-404629496
-404639234
-404664003
-404670758
-404671096
-405852873
-408122377
-409910761
-409983666
-410371528
-411452334
-412307721
-412409535
-412569480
-414313771
-414340309
-414342173
-414346533
-414352517
-414356104
-414358329
-414359984
-414362039
-414363534
-415835777
-421268836
-423359184
-424640219
-426750242
-428129002
-428579129
-430215830
-430824744
-432083697
-432810076
-433319547
-437909585
-440564179
-444757673
-445494943
-445535746
-448184079
-448205126
-448205309
-448208314
-448212898
-448216437
-448218478
-448218605
-448226643
-448230087
-449119418
-450693976
-452353439
-454310476
-454406263
-454458935
-457804725
-459619180
-459774791
-460684800
-463402970
-466046311
-467075285
-467440610
-468701485
-470181417
-470296341
-472608560
-474676021
-475310664
-477510595
-477650260
-479985282
-479989114
-485539996
-488741379
-489131520
-491108406
-494680209
-495803851
-496242041
-496746880
-497876318
-501597401
-503716480
-504842092
-507069091
-507543807
-508410034
-511106760
-511684906
-512823801
-515521256
-518558556
-518810949
-519129922
-520972247
-522317345
-522708961
-523168872
-525155156
-525581116
-527635327
-528685305
-531735060
-533506510
-533789735
-533793262
-533802662
-533805081
-533809251
-533820242
-533830041
-533830715
-533838230
-533840363
-533971644
-533977469
-533978245
-533982325
-533998910
-533998936
-533999969
-534010653
-534017908
-534024484
-534149535
-537012155
-539432325
-540680134
-545351832
-545943167
-546944914
-548178538
-552096729
-552309745
-552322018
-552323545
-552332229
-552339658
-552342397
-552343231
-552344911
-552350565
-552353660
-553381030
-554629065
-554719323
-557144498
-557904821
-558864227
-559294934
-560752357
-561514656
-561872151
-561873165
-561885200
-561894368
-561896255
-561897877
-561901799
-561908068
-561919848
-561923233
-561997876
-564117033
-564752329
-566143280
-567425811
-568097855
-569620623
-574465141
-574567599
-574806693
-575351794
-575404408
-575408132
-575411432
-575416296
-575425627
-575427407
-575431265
-575433832
-575434623
-575452217
-576512434
-577217264
-577226671
-577231650
-577234807
-577242733
-577252746
-577262872
-577265731
-577266117
-577272368
-579732575
-583703261
-585548583
-590504941
-590662916
-590678944
-590679492
-590693248
-590695351
-590695753
-590700436
-590710127
-590713550
-590718718
-590870609
-592817130
-594544950
-594984138
-597657108
-597980435
-598863855
-598864177
-598870646
-598874657
-598876315
-598881299
-598899351
-598901351
-598902207
-598903032
-598923956
-604330205
-606608719
-608551128
-610459874
-611178036
-611899607
-614070491
-614077625
-614079668
-614080017
-614080955
-614081148
-614090140
-614092775
-614101432
-614105447
-614446052
-614819302
-621122051
-621174675
-621349467
-626827943
-627459714
-627800350
-629639494
-629722575
-631338237
-634277667
-636797022
-638662016
-639921060
-640349490
-643229763
-643466931
-643528813
-643991858
-647784969
-650481411
-656280080
-656284909
-658604855
-658956976
-660486460
-662976572
-665122513
-665665900
-667326243
-668080041
-670165314
-671439734
-671591891
-672352804
-672353158
-672356275
-672358427
-672378442
-672382581
-672383015
-672394018
-672396568
-672405337
-675772034
-677915550
-679297908
-679300324
-679311601
-679312006
-679317134
-679319564
-679323821
-679330601
-679335935
-679354885
-681797004
-682603169
-682728392
-685793501
-686495117
-688586222
-689049788
-691409652
-694174217
-694322257
-697328981
-697585915
-700652197
-702111657
-704836123
-704869717
-706036913
-706038005
-706041538
-706052684
-706059156
-706059315
-706061951
-706071129
-706080849
-706083782
-706998390
-711258015
-713867244
-714050089
-718749423
-720141864
-721950250
-721953066
-721968621
-721971205
-721976671
-721978749
-721986187
-721999507
-722001911
-722007347
-722270761
-722438775
-724232611
-724244463
-724250122
-724257162
-724263445
-724273341
-724273893
-724282522
-724282830
-724283432
-725025155
-725034643
-725035126
-725038692
-725041503
-725044970
-725062308
-725075175
-725080059
-725081318
-725253245
-725484119
-727902638
-729306306
-730181697
-730876253
-732655532
-732659416
-732660939
-732662063
-732667924
-732692136
-732694624
-732705303
-732708509
-732714730
-736891155
-737095231
-738508941
-739522022
-741258407
-742918378
-742921496
-742937480
-742942539
-742943229
-742946462
-742965866
-742967578
-742975576
-742979708
-746142146
-747966711
-748713501
-750007803
-754411732
-755154226
-755586913
-756717397
-756863814
-756880299
-756899359
-756899406
-756901475
-756905346
-756908069
-756909026
-756916255
-756916837
-758906500
-759801421
-760128407
-760565516
-761039961
-762058527
-764708644
-764940819
-764983701
-765438345
-770888008
-772662310
-773398935
-774304664
-774728334
-776266698
-777462689
-778416976
-778424564
-778431218
-778441179
-778443040
-778452473
-778465193
-778467997
-778474315
-778474749
-780232952
-780248168
-780253371
-780254415
-780261933
-780266485
-780269012
-780271983
-780272959
-780278625
-781070152
-782438098
-783707517
-783827316
-784968651
-786560881
-787422207
-793199131
-793833439
-794052958
-795910700
-799380156
-801780976
-802077501
-802335588
-802897479
-803127352
-803143176
-803147703
-803148583
-803149910
-803152908
-803155963
-803165372
-803169205
-803171122
-804747971
-804758985
-804759176
-804764734
-804771595
-804774854
-804776229
-804778797
-804779526
-804792426
-807915482
-809203246
-810416465
-810779402
-812296224
-814466204
-814765301
-817064158
-817236385
-817915307
-820739696
-823339540
-823348732
-823717513
-827035028
-827038300
-830641173
-831834017
-833725182
-833731459
-833740031
-833750470
-833758495
-833764507
-833766200
-833767832
-833768794
-833788968
-838104563
-838286688
-838506446
-838598557
-838837972
-839380380
-845246112
-846460918
-846529262
-848421038
-850576127
-851059689
-857040379
-858308359
-858532552
-859160052
-864826847
-864868211
-867361590
-867721952
-870465956
-870837970
-870841831
-870849104
-870850072
-870867703
-870872195
-870874141
-870874652
-870875980
-870879179
-870981656
-872643238
-875538445
-876157113
-876169621
-876179905
-876182710
-876182826
-876186746
-876191694
-876198577
-876207901
-876211452
-877720045
-877789655
-878124372
-879872864
-880038937
-885044421
-887774081
-888771879
-889606472
-889937936
-890676184
-891501708
-891986928
-892144105
-897778458
-901813849
-903003040
-903913554
-904753781
-906924026
-907765125
-908794642
-909256171
-911621949
-912839012
-914823105
-914927451
-915595624
-920166323
-920292764
-920976174
-921190275
-922500610
-923473516
-926134330
-929226670
-929862195
-930134529
-930673866
-931372065
-934859073
-935175309
-941162518
-944603643
-947337722
-950777027
-950906665
-950911043
-950917426
-950919224
-950933946
-950939346
-950944028
-950947422
-950952644
-950960078
-950964963
-954114962
-955818113
-957323218
-957374376
-957381203
-957383610
-957384413
-957399570
-957399676
-957404518
-957409416
-957426949
-957427410
-958920807
-959336851
-959621087
-961067250
-961354958
-962207763
-962848066
-963631729
-965775669
-966910369
-966913929
-967136375
-968542380
-968866518
-969284677
-969527784
-971621460
-971801837
-973711758
-974058765
-980952041
-983248991
-983877360
-984067266
-985480430
-988230942
-993773726
-995050802
-995283898
-998087875
-1002393407
-1009665592
-1011388892
-1016475194
-1016481411
-1016483200
-1016483322
-1016485608
-1016520119
-1016520836
-1016521128
-1016524582
-1016534330
-1018653708
-1019396446
-1019496685
-1021450560
-1021456464
-1021457682
-1021462478
-1021462944
-1021484517
-1021498252
-1021499807
-1021500296
-1021506565
-1021603560
-1023208646
-1028422523
-1030691483
-1031338695
-1032791904
-1033048005
-1033408961
-1033754186
-1038821887
-1040039869
-1040409472
-1041514420
-1043356783
-1044908452
-1046269476
-1047327835
-1052170176
-1054546804
-1056640913
-1058934169
-1059339037
-1059343123
-1059347869
-1059351487
-1059358387
-1059367701
-1059374862
-1059376991
-1059383979
-1059395959
-1060901452
-1070142227
-1070311805
-1071473029
-1072830714
-1073640538
-1074945193
-1074952395
-1074959027
-1074961058
-1074962280
-1074964324
-1074967816
-1074995662
-1075001097
-1075005880
-1075284983
-1075287943
-1075291848
-1075296923
-1075298950
-1075303391
-1075309163
-1075316118
-1075319197
-1075321881
-1078649094
-1079540969
-1081215704
-1082263432
-1082374732
-1082719950
-1085876438
-1085877868
-1085877962
-1085884180
-1085888023
-1085890782
-1085894003
-1085904245
-1085911667
-1085924771
-1086383322
-1087879278
-1088937678
-1092660616
-1092664715
-1092670735
-1092688869
-1092696941
-1092698295
-1092707280
-1092707559
-1092715824
-1092718400
-1095603518
-1096035264
-1096240746
-1097365743
-1099285073
-1099901651
-1101775456
-1101874119
-1102446280
-1102571510
-1103100528
-1103109917
-1103122201
-1103122346
-1103124754
-1103129582
-1103146658
-1103147169
-1103147669
-1103148864
-1106070430
-1106870725
-1107402292
-1109913459
-1110955070
-1111285037
-1113776515
-1113780436
-1113787865
-1113788374
-1113789980
-1113791019
-1113805459
-1113826693
-1113827161
-1113836604
-1113840081
-1114051616
-1114052505
-1114053943
-1114056367
-1114066679
-1114073359
-1114089937
-1114090377
-1114107192
-1114114586
-1114944486
-1115558029
-1116319546
-1122361340
-1123588875
-1123614342
-1125964384
-1126721708
-1127610375
-1130942602
-1131652234
-1131659875
-1131664696
-1131672298
-1131679486
-1131679539
-1131681452
-1131684629
-1131690979
-1131703041
-1132775945
-1133991434
-1134770226
-1136617748
-1139034521
-1139978625
-1144609751
-1145666921
-1149696487
-1149847449
-1150394832
-1150402981
-1150403445
-1150404848
-1150413589
-1150416000
-1150418004
-1150419141
-1150429349
-1150453226
-1154120441
-1156031563
-1159191726
-1159821476
-1160026815
-1160157967
-1161082765
-1161743979
-1164885527
-1164887770
-1164889634
-1164895357
-1164898477
-1164902563
-1164902962
-1164918479
-1164933728
-1164941811
-1167075359
-1167711788
-1168206568
-1168656167
-1169740854
-1170511111
-1172252515
-1176768626
-1176771850
-1176772694
-1176773785
-1176779449
-1176796876
-1176800236
-1176802749
-1176806693
-1176820002
-1183698591
-1185345682
-1189925005
-1193709492
-1198833125
-1199864845
-1200235802
-1200892142
-1203065819
-1203561919
-1207678254
-1207908131
-1209644321
-1215823022
-1215932988
-1216152516
-1218779447
-1221680962
-1222898250
-1227680920
-1227869793
-1229053288
-1230206684
-1231204860
-1231507138
-1232387961
-1233652938
-1233657478
-1233664806
-1233669093
-1233672842
-1233691895
-1233695864
-1233696192
-1233696518
-1233708122
-1234147139
-1236211522
-1238036684
-1243288019
-1243753016
-1244367331
-1244368112
-1244372286
-1244373620
-1244374501
-1244375148
-1244378837
-1244393736
-1244393822
-1244397831
-1244761083
-1244883398
-1246779534
-1247478176
-1248473473
-1250900340
-1251963789
-1252768688
-1252845552
-1253654091
-1254457146
-1255586096
-1256477364
-1257048780
-1259466303
-1263392771
-1266075457
-1269103254
-1275202417
-1275217152
-1277646528
-1277648176
-1277661465
-1277663842
-1277671887
-1277682403
-1277689923
-1277690057
-1277697300
-1277706244
-1278566695
-1278816857
-1280318502
-1281768907
-1281882463
-1283803782
-1284307584
-1284350810
-1285843124
-1286103322
-1290038688
-1291113065
-1294674813
-1299391954
-1299564923
-1299782093
-1300377152
-1301552488
-1301633751
-1302712797
-1303112082
-1303461095
-1303748838
-1303998550
-1305210961
-1309240831
-1310106651
-1310901687
-1311013808
-1311252139
-1312604332
-1313028857
-1313117173
-1313731878
-1318627916
-1318955965
-1319190774
-1319203034
-1319205610
-1319225911
-1319229358
-1319233200
-1319234766
-1319240378
-1319240402
-1319241634
-1319506283
-1320958968
-1321822052
-1322177576
-1323740736
-1323741220
-1323746653
-1323751401
-1323774596
-1323776964
-1323782140
-1323786246
-1323793681
-1323797850
-1323817335
-1323823540
-1323829577
-1323832938
-1323844950
-1323850855
-1323853943
-1323855138
-1323858032
-1323876007
-1325713711
-1327546518
-1329919527
-1331745276
-1332349845
-1335484810
-1340659027
-1341670602
-1342478229
-1344870244
-1345247575
-1345788927
-1347110752
-1347125481
-1347130352
-1347141414
-1347148971
-1347150779
-1347158454
-1347161002
-1347161660
-1347164129
-1347858866
-1347934385
-1348573665
-1350717006
-1351052419
-1351185055
-1351853837
-1352045274
-1353814005
-1353820840
-1353832573
-1353843175
-1353858699
-1353861680
-1353862396
-1353863169
-1353873896
-1353876892
-1354344170
-1354716512
-1355878919
-1363645157
-1364589746
-1364787253
-1364800015
-1364801163
-1364816534
-1364823574
-1364830633
-1364837850
-1364850764
-1364853250
-1364856524
-1364858313
-1366085599
-1367363342
-1367411688
-1368884129
-1369469359
-1370450723
-1370833154
-1371111807
-1371190176
-1372278110
-1374216410
-1374471640
-1375763128
-1376706157
-1376934028
-1378389273
-1379357628
-1381077479
-1382781135
-1383483992
-1383517143
-1384691308
-1385246452
-1386747213
-1387634241
-1388870619
-1391968650
-1391974129
-1391981281
-1391981848
-1391983033
-1391983080
-1391986812
-1391987419
-1391988976
-1392013357
-1393287001
-1393296251
-1393454882
-1396293869
-1397102997
-1398056596
-1398362928
-1398967104
-1399261833
-1401077940
-1401723290
-1402795956
-1402796005
-1402798394
-1402804412
-1402805549
-1402810273
-1402816344
-1402819266
-1402835395
-1402839495
-1408113614
-1408657313
-1409259191
-1409437535
-1410298677
-1410819827
-1417263280
-1418998180
-1419993874
-1420455667
-1420555209
-1420560053
-1420568429
-1420570899
-1420574298
-1420577785
-1420601117
-1420601723
-1420608709
-1420611320
-1421031488
-1422793087
-1422823102
-1422824037
-1422828419
-1422829202
-1422834628
-1422834688
-1422839485
-1422839756
-1422843785
-1423621804
-1427562463
-1431603893
-1433316058
-1434062919
-1434855356
-1435261228
-1435751562
-1435758860
-1435764135
-1435764862
-1435783263
-1435783952
-1435792407
-1435797798
-1435799896
-1435806564
-1437555928
-1446464852
-1446656775
-1446821221
-1446844785
-1447276585
-1447282989
-1447283614
-1447286322
-1447302878
-1447305640
-1447315228
-1447316613
-1447318394
-1447318858
-1450150949
-1450232419
-1450675858
-1450675960
-1450677171
-1450683232
-1450686365
-1450694135
-1450695969
-1450700965
-1450705376
-1450725525
-1450869827
-1453220958
-1453533519
-1454079149
-1456085298
-1456937554
-1457067531
-1462706196
-1463297123
-1463678979
-1465203305
-1466574155
-1469629148
-1469964204
-1473267602
-1473345228
-1475913495
-1475916912
-1475934161
-1475938325
-1475942753
-1475943036
-1475962062
-1475962573
-1475965418
-1475970393
-1477828123
-1478459132
-1478735487
-1479045695
-1479063680
-1479067791
-1479076065
-1479080378
-1479083270
-1479086067
-1479086291
-1479091908
-1479095179
-1479101871
-1479803961
-1480712433
-1482899248
-1484562645
-1487142919
-1490360840
-1493881844
-1493899511
-1493904149
-1493907515
-1493911195
-1493922045
-1493927648
-1493939861
-1493942420
-1493944790
-1494173942
-1499153646
-1499530531
-1501425927
-1503051005
-1503858605
-1505317559
-1508122609
-1509307947
-1510169915
-1510422196
-1510730855
-1511934822
-1513323697
-1514228159
-1514440114
-1514445496
-1514447743
-1514463982
-1514465400
-1514465441
-1514475310
-1514479085
-1514481246
-1514489474
-1515115853
-1515195630
-1516628870
-1516644639
-1516649252
-1516653068
-1516654723
-1516662091
-1516664970
-1516665440
-1516672616
-1516679259
-1517703190
-1519491762
-1520032092
-1520508940
-1523764507
-1523941391
-1524032298
-1524212069
-1524214583
-1524218855
-1524221256
-1524231591
-1524235339
-1524245161
-1524250718
-1524260501
-1524268891
-1528572376
-1532498874
-1532855486
-1533118223
-1534793566
-1535459818
-1536664517
-1538654529
-1539204609
-1539803726
-1542919523
-1542923556
-1542926409
-1542931736
-1542933489
-1542938622
-1542948752
-1542969676
-1542970592
-1542975817
-1544906564
-1546869597
-1548321127
-1549329127
-1552048811
-1552220841
-1552864088
-1556447105
-1558209399
-1558218393
-1558219555
-1558223364
-1558237083
-1558242589
-1558263038
-1558263253
-1558263496
-1558271128
-1558366500
-1558368596
-1558374587
-1558388863
-1558401874
-1558406170
-1558406598
-1558416971
-1558426822
-1558429259
-1559567623
-1560914693
-1563114680
-1563421834
-1564355611
-1564362363
-1564366810
-1564373495
-1564378768
-1564386819
-1564387904
-1564391682
-1564402339
-1564402685
-1564848655
-1566369994
-1566452131
-1566944339
-1567037914
-1569478692
-1574427880
-1575802869
-1576971295
-1577445345
-1578416458
-1578715539
-1580747962
-1580756987
-1580757740
-1580785535
-1580791993
-1580792113
-1580794654
-1580798990
-1580801022
-1580808562
-1583591939
-1583593692
-1583595676
-1583600354
-1583602766
-1583621986
-1583628428
-1583635282
-1583639609
-1583642886
-1585651474
-1586234862
-1586499940
-1586527253
-1586863300
-1586865582
-1590590163
-1591110426
-1591749355
-1591750044
-1591753021
-1591762431
-1591777056
-1591782416
-1591794942
-1591795549
-1591796957
-1591797905
-1591822668
-1594273951
-1595155774
-1599935083
-1604132292
-1605040040
-1605458880
-1605462085
-1606514010
-1608200002
-1610368608
-1610685771
-1612180684
-1612202717
-1613021641
-1614676069
-1615453691
-1615459988
-1615462899
-1615467303
-1615467342
-1615468194
-1615468240
-1615491408
-1615491693
-1615508548
-1616071868
-1617442371
-1618051168
-1618153952
-1618916156
-1618998550
-1619022952
-1622453489
-1622454642
-1622466111
-1622487742
-1622489101
-1622493679
-1622494463
-1622495077
-1622501937
-1622504259
-1623416540
-1623868149
-1623869054
-1623875772
-1623877965
-1623904988
-1623908271
-1623918403
-1623919013
-1623926585
-1623929103
-1624982607
-1626574099
-1627610180
-1628062295
-1629261600
-1629878188
-1630616449
-1631991678
-1632267908
-1632640584
-1633018072
-1636509450
-1641063398
-1641072512
-1641074017
-1641074803
-1641080134
-1641080451
-1641093329
-1641094080
-1641099076
-1641108906
-1642389089
-1646723487
-1650600746
-1650603670
-1650604474
-1650637653
-1650638302
-1650645276
-1650645437
-1650649147
-1650655157
-1650661971
-1650786429
-1651108160
-1651640648
-1654055703
-1655270822
-1655380944
-1655974791
-1655977265
-1655984805
-1655987516
-1655994320
-1655995260
-1656005353
-1656018489
-1656021885
-1656030954
-1656365767
-1658135664
-1659376363
-1660645740
-1662959459
-1665139351
-1667433900
-1667851095
-1668958284
-1670615294
-1670616476
-1670618811
-1670626357
-1670639369
-1670645488
-1670647290
-1670649751
-1670649939
-1670657808
-1673220052
-1673445446
-1675814214
-1676075803
-1679532434
-1679743419
-1683757495
-1685042942
-1687332085
-1687937773
-1689560380
-1690562826
-1690563225
-1690564385
-1690566366
-1690571398
-1690578252
-1690593872
-1690594151
-1690603635
-1690604609
-1691170003
-1691691578
-1693316141
-1694140001
-1694600459
-1695041711
-1695962412
-1702338669
-1703531969
-1704201998
-1704835560
-1704848087
-1704867635
-1704868643
-1704878369
-1704881738
-1704884918
-1704887529
-1704892037
-1704895333
-1706602376
-1708318227
-1708860062
-1709055235
-1709057700
-1709062872
-1709063136
-1709086651
-1709088305
-1709095444
-1709098302
-1709106044
-1709114168
-1710403334
-1711548546
-1713267100
-1713325693
-1713385431
-1713503890
-1714049268
-1714053227
-1714058259
-1714061254
-1714078336
-1714081368
-1714082882
-1714089289
-1714095147
-1714095156
-1714352945
-1715001241
-1716619959
-1716811084
-1716811266
-1716813083
-1716833742
-1716851451
-1716852465
-1716852905
-1716854477
-1716864798
-1716865419
-1719507766
-1720321960
-1720496905
-1722763712
-1725454020
-1727226841
-1728587025
-1730396972
-1731018545
-1735658600
-1737254190
-1737261616
-1737264485
-1737265171
-1737273027
-1737276806
-1737290685
-1737290961
-1737309480
-1737310209
-1737388126
-1738304545
-1738388187
-1739030408
-1743285620
-1743556795
-1743558008
-1743570565
-1743571746
-1743579895
-1743580240
-1743583262
-1743585296
-1743589620
-1743590021
-1743608510
-1747721103
-1749244319
-1749568817
-1755435441
-1755460424
-1757178556
-1758441467
-1759676080
-1769938745
-1773037556
-1774997799
-1779621433
-1779622504
-1779623882
-1779628220
-1779630497
-1779631002
-1779645289
-1779664937
-1779666327
-1779667549
-1780341302
-1781243396
-1781588119
-1782973256
-1786548246
-1787010282
-1788157713
-1790630303
-1796938831
-1799514579
-1799857940
-1799996740
-1800498457
-1802804023
-1802994261
-1803077198
-1806587632
-1813485493
-1813725704
-1813728762
-1813754822
-1813757459
-1813758023
-1813761861
-1813762397
-1813764905
-1813773331
-1813784467
-1813788924
-1814334780
-1816932425
-1821930630
-1826975663
-1827105228
-1827845705
-1827849478
-1827852484
-1827857384
-1827881546
-1827883601
-1827889155
-1827892916
-1827893537
-1827900654
-1834756691
-1836950508
-1837626849
-1839060926
-1841106693
-1841495360
-1843086240
-1844043549
-1845145155
-1845401198
-1848975594
-1848988282
-1848988522
-1848994290
-1848995203
-1849000405
-1849008687
-1849024502
-1849027817
-1849028642
-1850660284
-1851719909
-1851728458
-1851732659
-1851738195
-1851738713
-1851743231
-1851760912
-1851763107
-1851770346
-1851783172
-1852355790
-1852748865
-1853067193
-1854479538
-1854664929
-1854694686
-1856341764
-1858966757
-1861370980
-1862467760
-1862563657
-1863022560
-1865388154
-1865390020
-1865405674
-1865407473
-1865410526
-1865411004
-1865419921
-1865426165
-1865446329
-1865447192
-1867902523
-1868023232
-1870518520
-1871747286
-1872836796
-1873415990
-1874698180
-1875456994
-1876060941
-1876744696
-1878452672
-1879600300
-1879755724
-1882206493
-1882212135
-1882213435
-1882217372
-1882227405
-1882240816
-1882241282
-1882243412
-1882259876
-1882262800
-1886075208
-1886221206
-1886221660
-1886222235
-1886226805
-1886234157
-1886235347
-1886239658
-1886241695
-1886243874
-1886258511
-1887567087
-1893958900
-1893970296
-1893985053
-1893994299
-1893996041
-1893996153
-1893997703
-1894001414
-1894010116
-1894017921
-1894313166
-1896258945
-1896549120
-1900811545
-1903733878
-1904795844
-1906447224
-1906596208
-1907274362
-1912623812
-1916007411
-1917267797
-1918109738
-1919447710
-1921217040
-1921532305
-1922069840
-1922422772
-1925355997
-1928979956
-1929090901
-1929103502
-1929119765
-1929120193
-1929124057
-1929124216
-1929142619
-1929151094
-1929153259
-1929153275
-1931394346
-1937495910
-1938660905
-1942482161
-1942879911
-1943949013
-1946720923
-1948801132
-1948926651
-1950233957
-1951395309
-1952022130
-1953015224
-1955030015
-1955108781
-1956084682
-1956595520
-1956595744
-1956613765
-1956613849
-1956623454
-1956627675
-1956627772
-1956628890
-1956639626
-1956646526
-1963378659
-1963379411
-1963384353
-1963385852
-1963399696
-1963412282
-1963426985
-1963429307
-1963431513
-1963435945
-1965822342
-1965929000
-1969611952
-1969875822
-1972039513
-1973289511
-1974765995
-1975560045
-1975576681
-1975577481
-1975578098
-1975580516
-1975587096
-1975589317
-1975593882
-1975597929
-1975609959
-1979927683
-1983176312
-1983603934
-1987934217
-1989453972
-1990554876
-1991482074
-1992069361
-1997239821
-1997296036
-2001556509
-2002014253
-2002604924
-2003172930
-2003461940
-2005791019
-2006908236
-2007954098
-2009480640
-2009622937
-2012183750
-2012184096
-2012185709
-2012190652
-2012220286
-2012222292
-2012227020
-2012230501
-2012239267
-2012246461
-2012807621
-2013531425
-2016805137
-2018770714
-2023850551
-2023869297
-2027323464
-2031495642
-2032358468
-2032692899
-2033310829
-2034804671
-2037654229
-2037688810
-2038869747
-2044714265
-2045208113
-2045230043
-2045240770
-2045242580
-2045248076
-2045251455
-2045254411
-2045259071
-2045260379
-2045268591
-2045677876
-2045774036
-2046176593
-2048735398
-2048823315
-2055801914
-2055917588
-2056768322
-2058229241
-2058355875
-2062008090
-2067279729
-2069030099
-2069983558
-2073386364
-2074651791
-2075886686
-2075905949
-2075925306
-2075937218
-2075946306
-2075954148
-2075954295
-2075956180
-2075964893
-2075967216
-2075968733
-2081529943
-2082401174
-2082425429
-2084286128
-2087813725
-2088079881
-2091181100
-2092082672
-2094389744
-2094560259
-2096631857
-2097184748
-2097186481
-2097198956
-2097199384
-2097204811
-2097207321
-2097216694
-2097216923
-2097235164
-2097240725
-2097663140
-2098640019
-2099597004
-2102034052
-2102343071
-2104142464
-2104850406
-2110008149
-2110725956
-2111737095
-2114571322
-2115452010
-2117548192
-2118105145
-2118179096
-2119634651
-2119839094
-2121318140
-2122230140
-2123315261
-2124235853
-2124528354
-2124736692
-2125980086
-2126643752
-2126679841
-2127152312
-2132315157
-2133910233
-2134691340
-2136577299
-2136661774
-2138063466
-2143366269
-2143475545
-2144333411
-2146468853
-2147491218
-2151746012
-2152942891
-2154073502
-2154650550
-2154660020
-2154665616
-2154678943
-2154685625
-2154685705
-2154689332
-2154692109
-2154709922
-2154712448
-2158748550
-2158935445
-2161416533
-2161789769
-2163163005
-2164083144
-2170957177
-2171554574
-2171563042
-2171566837
-2171567954
-2171578139
-2171580076
-2171581498
-2171586871
-2171590607
-2171601050
-2172564286
-2172564506
-2172569385
-2172583430
-2172593885
-2172595780
-2172610092
-2172610872
-2172610995
-2172613661
-2174848923
-2184972215
-2184985112
-2184987339
-2185001582
-2185002714
-2185010245
-2185015106
-2185021970
-2185022397
-2185031833
-2188000640
-2188262529
-2189007375
-2189175180
-2191308658
-2192714708
-2192949512
-2193636865
-2194112824
-2195318876
-2195884396
-2196141944
-2196142272
-2196145830
-2196147077
-2196150960
-2196170485
-2196186858
-2196190538
-2196202366
-2196206072
-2196472215
-2197510941
-2198093564
-2199023304
-2199061418
-2201911223
-2203247371
-2203744315
-2204404670
-2205033807
-2205364629
-2206368616
-2207169912
-2207685542
-2214453091
-2214532148
-2216204073
-2218222144
-2220226367
-2220229131
-2220243489
-2220250942
-2220251155
-2220259198
-2220264346
-2220267773
-2220273822
-2220274004
-2220711884
-2220801721
-2223250890
-2224181538
-2224702177
-2226560638
-2228656461
-2229243192
-2229250457
-2229252967
-2229259235
-2229261966
-2229262174
-2229268561
-2229279027
-2229284571
-2229298318
-2230118978
-2230468053
-2232614330
-2232619817
-2232625609
-2232627422
-2232643508
-2232643903
-2232646180
-2232652586
-2232670409
-2232671006
-2236035642
-2236038673
-2236042195
-2236045665
-2236046447
-2236058360
-2236061164
-2236062199
-2236083301
-2236087254
-2236252475
-2236262269
-2236265023
-2236267452
-2236269263
-2236285880
-2236289453
-2236305530
-2236308628
-2236309837
-2236653162
-2236850206
-2236927658
-2240036738
-2244070271
-2248556880
-2248960955
-2250075761
-2252356893
-2252373388
-2252374194
-2252375496
-2252375764
-2252376873
-2252382961
-2252386969
-2252388345
-2252390993
-2252397486
-2252397877
-2252398154
-2252404942
-2252405465
-2252406784
-2252413223
-2252416001
-2252426027
-2252427945
-2256697944
-2258072476
-2259511217
-2260197715
-2260231951
-2260265029
-2260331654
-2261933088
-2263116646
-2263640492
-2263816914
-2263846155
-2265418305
-2266499187
-2266692170
-2267668085
-2268483322
-2269577248
-2270110531
-2273456703
-2273952777
-2275539952
-2277111359
-2282687222
-2284362073
-2284609667
-2287792123
-2289426429
-2292321353
-2296569872
-2299376975
-2299643519
-2300447791
-2300466510
-2300468003
-2300471489
-2300483973
-2300497469
-2300500709
-2300503173
-2300509976
-2300510165
-2300520374
-2305083146
-2307433487
-2307467172
-2309065289
-2309869384
-2311512876
-2312038839
-2312039860
-2312041815
-2312046226
-2312056825
-2312057195
-2312068312
-2312076920
-2312077524
-2312089094
-2312318901
-2320929474
-2320934309
-2320944009
-2320949982
-2320959565
-2320959811
-2320960303
-2320966440
-2320967392
-2320967878
-2322257508
-2324157840
-2328755424
-2329208497
-2329252899
-2330132432
-2330973320
-2332547857
-2332551806
-2332554182
-2332561067
-2332568861
-2332581760
-2332582977
-2332584810
-2332588319
-2332588543
-2332714775
-2335922179
-2337510063
-2338786677
-2338948694
-2339538686
-2341291119
-2342431963
-2343565907
-2344887298
-2348738538
-2352379020
-2353832413
-2357476828
-2361607063
-2361820558
-2363790346
-2364917528
-2368438595
-2368918062
-2369911581
-2370505555
-2370892686
-2371996830
-2377149178
-2378615342
-2378890815
-2378963658
-2384720455
-2384792895
-2386000926
-2386185817
-2386186936
-2386197630
-2386200053
-2386205367
-2386209802
-2386211369
-2386212285
-2386216582
-2386232922
-2386272210
-2390230460
-2390738035
-2392316799
-2393949060
-2394472377
-2396086436
-2396567984
-2399357812
-2400020434
-2400883057
-2404358008
-2404941743
-2407979403
-2409699021
-2411637905
-2412146128
-2412835433
-2418460514
-2421062692
-2422364187
-2422393115
-2423907376
-2423933638
-2426964650
-2428320039
-2428323318
-2428326041
-2428340743
-2428347619
-2428358242
-2428363849
-2428368376
-2428380303
-2428382864
-2431904156
-2433242894
-2434272298
-2434324117
-2436158732
-2436160452
-2436217412
-2436404915
-2438407900
-2438783914
-2442213146
-2445666986
-2450608614
-2450786308
-2451451669
-2454573776
-2465298189
-2465955932
-2466041927
-2466611223
-2471517553
-2472826968
-2476253047
-2476822182
-2476853776
-2478000173
-2478256201
-2478649472
-2478920365
-2480799484
-2481098140
-2483629696
-2483890689
-2484830983
-2486370960
-2491878964
-2492819750
-2492820172
-2492821682
-2492823367
-2492829173
-2492833030
-2492844493
-2492851444
-2492855060
-2492868056
-2495911140
-2496876646
-2498337354
-2498405390
-2501764141
-2502622909
-2502870332
-2503322073
-2503627594
-2504538077
-2504540835
-2504543532
-2504556826
-2504557683
-2504558865
-2504562634
-2504578234
-2504580369
-2504597665
-2506929246
-2508360463
-2509344298
-2509358376
-2509371645
-2509374814
-2509382493
-2509393339
-2509395465
-2509396306
-2509398986
-2509399621
-2510445115
-2514635103
-2516014898
-2518482648
-2519440870
-2523563227
-2525412917
-2526252215
-2526314577
-2526465159
-2526589441
-2530053895
-2530669627
-2531091251
-2532342144
-2535790089
-2542376775
-2542408439
-2542751893
-2542776950
-2542791779
-2542795944
-2542798050
-2542806864
-2542820070
-2542828506
-2542830811
-2542831346
-2542836663
-2544128237
-2544495286
-2548522457
-2553839265
-2555220158
-2558159600
-2561564398
-2561566489
-2561567109
-2561577979
-2561578617
-2561583876
-2561586283
-2561594781
-2561604501
-2561620943
-2563043304
-2563066543
-2565457340
-2565683756
-2566055564
-2566624098
-2567527132
-2569078846
-2569399755
-2569480214
-2570128642
-2570797541
-2572283169
-2574261541
-2580057736
-2582109555
-2584266521
-2584330772
-2586280559
-2587440661
-2591894853
-2592465321
-2593527954
-2597030499
-2598293696
-2602435648
-2602660943
-2603755464
-2606443937
-2609775432
-2610177139
-2610879133
-2611091673
-2612477653
-2612895927
-2613267486
-2613410081
-2614040131
-2616911850
-2620072786
-2622584963
-2623656295
-2629694037
-2629705028
-2629706981
-2629713746
-2629719181
-2629727507
-2629732075
-2629736432
-2629738515
-2629753913
-2629872602
-2631868140
-2632934069
-2633358897
-2637392543
-2640784336
-2641320358
-2643959767
-2644376050
-2647366401
-2647857101
-2648463572
-2650391406
-2650777061
-2652714990
-2656699390
-2656796050
-2657526552
-2657600095
-2658245247
-2658794443
-2661914454
-2661917597
-2661922935
-2661927145
-2661931229
-2661937458
-2661952715
-2661955450
-2661957817
-2661960224
-2661986740
-2662368822
-2664344329
-2664558631
-2665130506
-2668835115
-2669280465
-2670132552
-2670145805
-2670145932
-2670155836
-2670163601
-2670178253
-2670181800
-2670187058
-2670190027
-2670194345
-2672069549
-2672110315
-2672117215
-2672124035
-2672130186
-2672132253
-2672133079
-2672133332
-2672141132
-2672144213
-2672148351
-2672950129
-2672951189
-2672952227
-2672956895
-2672968566
-2672979817
-2672982967
-2672983619
-2672988008
-2672999234
-2673604505
-2673788321
-2675636423
-2678298931
-2679233164
-2682244489
-2686044112
-2687657300
-2692891520
-2693809759
-2697721989
-2699185308
-2699521763
-2699900618
-2700962228
-2702373524
-2702381851
-2702398079
-2702398186
-2702407098
-2702412654
-2702418696
-2702419822
-2702427202
-2702430461
-2705870276
-2706195239
-2710307130
-2712416475
-2712476596
-2712661048
-2718917310
-2723341094
-2724325641
-2726034705
-2728048388
-2728841491
-2730806751
-2731886932
-2732573834
-2733493646
-2738795632
-2739880188
-2739881937
-2739882932
-2739886348
-2739898896
-2739908772
-2739908928
-2739921004
-2739923965
-2739926525
-2740211385
-2744801032
-2747598397
-2747761072
-2750063218
-2750071409
-2750072603
-2750076062
-2750077121
-2750079148
-2750079940
-2750113761
-2750115986
-2750119418
-2751950421
-2753410076
-2753471372
-2756310809
-2757055170
-2758161386
-2758901192
-2759514830
-2759522454
-2759622248
-2761705353
-2763384346
-2764205064
-2764550499
-2765716777
-2768921895
-2771310737
-2771622988
-2773537552
-2774003880
-2776118671
-2776378615
-2777215098
-2779708475
-2780127338
-2780406701
-2781240933
-2781328612
-2781863990
-2785522377
-2785583695
-2787593094
-2789927876
-2790049389
-2792718731
-2795358095
-2795582357
-2796584306
-2798900512
-2800359534
-2800627733
-2801156587
-2802948581
-2805206807
-2807110933
-2807180408
-2807777158
-2808374453
-2810885254
-2813497690
-2815391407
-2815542600
-2816878416
-2817092862
-2820782385
-2821816668
-2822206558
-2822533082
-2823259029
-2824566714
-2824575246
-2825161337
-2827124524
-2827187654
-2827588613
-2828801614
-2832138458
-2835490986
-2837165784
-2837170360
-2837175908
-2837184173
-2837190047
-2837199086
-2837201893
-2837202750
-2837223190
-2837223936
-2838895424
-2839575154
-2841791447
-2843906916
-2844612837
-2846240132
-2847587669
-2849771818
-2850809160
-2850809425
-2850811746
-2850831612
-2850833349
-2850834090
-2850850380
-2850851712
-2850857946
-2850859428
-2851886553
-2852454667
-2853187610
-2854990085
-2854991109
-2854998577
-2854999001
-2855002881
-2855005903
-2855007353
-2855011960
-2855012572
-2855015211
-2856415542
-2860281997
-2860643750
-2862476309
-2862745351
-2866072670
-2866073730
-2866078652
-2866091150
-2866096896
-2866097523
-2866102119
-2866106235
-2866112592
-2866115464
-2866217027
-2866224828
-2866230018
-2866258164
-2866259255
-2866263788
-2866264783
-2866265089
-2866271414
-2866272476
-2867596123
-2867866098
-2868053246
-2868132517
-2868928974
-2872678023
-2872977697
-2874818402
-2878583169
-2879032505
-2879885749
-2881281074
-2882447582
-2883904388
-2884603344
-2888714742
-2889589443
-2891331440
-2892542846
-2893585729
-2894707881
-2896732232
-2897461366
-2900585337
-2905379500
-2905528900
-2908439130
-2908705007
-2908706334
-2908708362
-2908718684
-2908733118
-2908733338
-2908739873
-2908749615
-2908752752
-2908761317
-2912253143
-2915452457
-2919124868
-2920312189
-2921603181
-2923380326
-2926403308
-2927374878
-2928016819
-2929880015
-2930958433
-2931186231
-2931245017
-2932134761
-2933045943
-2933248603
-2933919446
-2934193908
-2934199882
-2937376731
-2937400312
-2937401487
-2937401770
-2937402761
-2937407848
-2937409291
-2937411013
-2937412703
-2937428414
-2939357393
-2940550961
-2943129005
-2945787472
-2946360920
-2946748048
-2951612139
-2951862408
-2955827478
-2956891717
-2956894937
-2956901121
-2956915478
-2956925680
-2956934306
-2956939554
-2956942986
-2956945377
-2956956210
-2959735470
-2960058737
-2961528990
-2962096140
-2962360365
-2966230528
-2966754230
-2966816245
-2969267676
-2970268780
-2971284776
-2980209988
-2980776952
-2981682200
-2984054185
-2984054399
-2984055141
-2984055269
-2984059884
-2984091064
-2984091572
-2984095287
-2984096884
-2984108107
-2986585924
-2988638476
-2988998321
-2989144660
-2992715237
-2992719312
-2992733378
-2992737220
-2992738376
-2992742099
-2992753313
-2992759027
-2992763309
-2992763718
-2993250576
-2995260839
-2995305207
-2995789603
-2995979378
-2998123075
-2999722837
-3000663788
-3001534611
-3002077568
-3003119680
-3006733331
-3009057157
-3011585928
-3012734226
-3014884893
-3016626722
-3018702924
-3019970478
-3020034086
-3020036760
-3020038744
-3020045292
-3020049656
-3020050902
-3020051580
-3020059775
-3020070973
-3020073145
-3021646931
-3021650425
-3021651005
-3021659361
-3021661890
-3021671917
-3021673024
-3021676268
-3021677053
-3021687631
-3022492519
-3023075467
-3024570406
-3025537065
-3025732971
-3028787482
-3029297304
-3030131514
-3030868753
-3030871573
-3030872393
-3030877868
-3030879292
-3030887783
-3030908870
-3030919347
-3030925340
-3030926479
-3030945950
-3034218630
-3037114526
-3037237612
-3039258972
-3040302280
-3040460223
-3041266429
-3042946317
-3045054058
-3045259822
-3045351103
-3050456705
-3052604911
-3052943231
-3055096263
-3057055983
-3057078810
-3059642103
-3060887390
-3061465753
-3063357230
-3063754956
-3065955076
-3065957385
-3065958045
-3065965486
-3065983745
-3065986489
-3065999084
-3066007503
-3066012781
-3066013356
-3066121513
-3068129109
-3068265022
-3070362337
-3071318373
-3074309380
-3075147853
-3075148105
-3075153584
-3075167976
-3075169834
-3075179899
-3075180716
-3075186175
-3075195851
-3075198143
-3078504705
-3081261655
-3083832123
-3084261594
-3088193776
-3089320229
-3089789024
-3098790094
-3100415420
-3101540900
-3101550656
-3101555687
-3101557051
-3101561151
-3101565888
-3101569755
-3101574049
-3101583197
-3101592231
-3101609962
-3107945723
-3108041560
-3108155521
-3108596305
-3108619605
-3108630603
-3108635072
-3108636766
-3108646883
-3108646975
-3108647529
-3108655023
-3108656126
-3108702851
-3111945675
-3112100585
-3114097758
-3114375976
-3116226268
-3116326194
-3117152784
-3117153040
-3117154577
-3117156646
-3117157102
-3117166506
-3117173081
-3117179087
-3117179982
-3117201315
-3124551900
-3125661369
-3127455277
-3127456156
-3127465539
-3127475657
-3127479471
-3127492059
-3127493206
-3127493543
-3127495381
-3127508808
-3131760536
-3132364064
-3132804050
-3134372040
-3134813177
-3139458563
-3141463864
-3142896134
-3145338380
-3145343600
-3145344213
-3145345013
-3145359604
-3145369117
-3145372665
-3145374007
-3145381254
-3145386994
-3145568560
-3150624844
-3153004039
-3153040472
-3158404342
-3160152151
-3160229097
-3162172879
-3162510264
-3163076442
-3171142858
-3171242846
-3173592091
-3174848551
-3177582713
-3178034269
-3178868268
-3179358738
-3185111392
-3185930304
-3188483230
-3188620231
-3189056388
-3189061523
-3189072763
-3189072837
-3189074902
-3189090500
-3189090948
-3189106405
-3189109598
-3189114870
-3190352493
-3191024532
-3192901494
-3192901547
-3192905380
-3192916606
-3192919654
-3192930403
-3192932778
-3192933053
-3192938465
-3192943430
-3194703522
-3194771795
-3198214795
-3198512551
-3200429012
-3200555744
-3202769244
-3205331931
-3206140823
-3206146690
-3206151266
-3206162279
-3206164319
-3206167845
-3206168978
-3206173921
-3206178618
-3206199609
-3206646502
-3208591826
-3208637082
-3208939570
-3215706394
-3217677432
-3217683059
-3217684906
-3217696298
-3217716623
-3217718959
-3217720811
-3217727769
-3217730308
-3217733001
-3219264379
-3222109267
-3225984332
-3225998515
-3226482265
-3226493779
-3226499402
-3226504992
-3226511063
-3226523116
-3226526502
-3226527093
-3226530697
-3226533699
-3226821631
-3226825578
-3226829771
-3226834559
-3226836060
-3226850687
-3226855450
-3226866622
-3226873127
-3226876637
-3236471424
-3238192316
-3238463741
-3239027623
-3239392579
-3242320440
-3242645739
-3242862904
-3244366422
-3245725496
-3251203242
-3252782721
-3252789294
-3253892355
-3255981720
-3256603693
-3256629714
-3256637765
-3256644166
-3256646456
-3256648894
-3256652815
-3256656074
-3256657364
-3256662953
-3257636831
-3258038254
-3258520897
-3260014338
-3260015609
-3260035162
-3260038710
-3260049553
-3260051384
-3260053535
-3260054108
-3260067614
-3260067909
-3260788495
-3262987833
-3265459761
-3265468858
-3265473834
-3265476302
-3265479644
-3265482885
-3265483389
-3265507093
-3265510823
-3265516387
-3269360808
-3270764578
-3271898063
-3271909544
-3271910825
-3271920014
-3271920159
-3271923716
-3271929132
-3271931812
-3271934372
-3271941742
-3272597195
-3273587983
-3276284890
-3279170091
-3279333165
-3281282528
-3283749076
-3283751825
-3283752895
-3283765359
-3283767213
-3283769921
-3283784169
-3283789013
-3283789766
-3283801899
-3284855331
-3286315828
-3286323007
-3286324182
-3286326298
-3286330455
-3286333575
-3286353109
-3286357210
-3286362387
-3286368134
-3287523887
-3287848608
-3288208768
-3288209942
-3288216024
-3288224246
-3288225815
-3288226307
-3288237201
-3288238013
-3288249553
-3288269372
-3292809221
-3294047553
-3295655466
-3295674171
-3299153252
-3300803176
-3301280681
-3301844812
-3302101043
-3302110929
-3302111011
-3302111857
-3302125800
-3302128871
-3302138845
-3302154976
-3302155153
-3302156350
-3304543094
-3305152808
-3307638533
-3307696198
-3308841184
-3309181452
-3312902598
-3313255486
-3313454394
-3315233776
-3315778874
-3317569675
-3318103921
-3320668002
-3321822563
-3323534234
-3324429103
-3324739631
-3324747907
-3324761333
-3324771143
-3324773128
-3324773928
-3324775273
-3324784812
-3324784952
-3324795054
-3327961555
-3328022487
-3329389097
-3335684347
-3338381685
-3339305705
-3339794724
-3341358991
-3342562379
-3342709337
-3342711615
-3342730019
-3342730637
-3342736308
-3342744638
-3342751669
-3342755946
-3342765825
-3342771728
-3344513203
-3344874771
-3348207421
-3348224252
-3348228028
-3348229327
-3348233513
-3348244088
-3348247400
-3348253514
-3348265894
-3348267130
-3348792514
-3349537827
-3350312597
-3353392007
-3354108086
-3354323808
-3356135408
-3356947401
-3357461771
-3358157774
-3360253859
-3363187107
-3363192065
-3363202466
-3363211165
-3363213645
-3363218925
-3363220122
-3363229128
-3363243523
-3363251625
-3364490787
-3368362269
-3369045463
-3369772181
-3374351661
-3377564338
-3377887346
-3378313902
-3379248548
-3382297794
-3382833675
-3382982392
-3384132513
-3391058373
-3391583187
-3393790506
-3394657462
-3398209184
-3398860927
-3402241504
-3405855618
-3407181129
-3409585473
-3411225372
-3413787180
-3421124256
-3422680497
-3426732410
-3426826712
-3427101791
-3429838103
-3429981007
-3430925986
-3430935947
-3434167434
-3434884033
-3434888325
-3434889720
-3434904530
-3434911690
-3434913521
-3434920080
-3434920354
-3434920597
-3434933347
-3434935360
-3434943282
-3435249729
-3436017646
-3436507072
-3437634089
-3440541779
-3441258284
-3441439031
-3443391583
-3443424202
-3443749104
-3444384439
-3445790754
-3446386619
-3447639015
-3449648318
-3453106709
-3453110934
-3453114919
-3453117109
-3453120988
-3453121544
-3453127800
-3453128910
-3453139540
-3453149500
-3453416373
-3453655743
-3454506236
-3455569583
-3459148365
-3459395823
-3459400590
-3459404839
-3459409615
-3459412582
-3459420711
-3459422872
-3459424744
-3459439705
-3459447781
-3461120933
-3462233706
-3463234327
-3465388112
-3467708106
-3468669131
-3470227819
-3472559414
-3472933823
-3473774909
-3474490478
-3475481126
-3477122630
-3478253762
-3480492460
-3480614931
-3480617257
-3480617363
-3480625093
-3480627578
-3480645200
-3480648168
-3480650103
-3480672411
-3480673184
-3484234870
-3484235687
-3484236599
-3484237261
-3484249641
-3484252693
-3484258216
-3484265465
-3484280757
-3484293185
-3485855878
-3486940276
-3490412368
-3493688965
-3497140730
-3503677688
-3506250911
-3506451264
-3506451316
-3506452349
-3506495504
-3506495622
-3506496422
-3506498123
-3506501124
-3506501850
-3506514325
-3508337972
-3508565720
-3509301746
-3510190085
-3513650994
-3515631045
-3515647633
-3515658497
-3515658732
-3515676327
-3515679289
-3515681741
-3515689797
-3515691506
-3515691756
-3517892156
-3518442496
-3518454029
-3518461496
-3518464224
-3518467424
-3518478709
-3518493413
-3518501148
-3518502573
-3518503616
-3520125512
-3520319603
-3521031075
-3521706055
-3521912947
-3522343082
-3522861163
-3523779973
-3526941958
-3529346675
-3531202850
-3533124954
-3533894993
-3534045908
-3534747094
-3539467688
-3541228934
-3545789607
-3545789616
-3545796497
-3545801822
-3545809919
-3545812262
-3545820067
-3545827260
-3545831885
-3545832972
-3546315296
-3546950169
-3546958518
-3546961082
-3546972399
-3546974536
-3546991466
-3546991496
-3546998935
-3546999072
-3547005643
-3547193499
-3549064867
-3550510091
-3551048530
-3551242355
-3552888629
-3553229131
-3554673564
-3559680465
-3560669145
-3560794850
-3561195895
-3561226549
-3561229477
-3561229596
-3561235117
-3561240935
-3561242636
-3561244584
-3561245368
-3561247020
-3561254851
-3563998380
-3565060980
-3565660852
-3568877241
-3571456738
-3574117335
-3577692805
-3577970556
-3578913843
-3579474379
-3582083148
-3588951158
-3588953508
-3588957459
-3588959482
-3588966555
-3588967172
-3588986675
-3588989186
-3588992521
-3589003839
-3589082927
-3591394435
-3594368431
-3594952564
-3599743354
-3601304354
-3601466714
-3602860945
-3606550993
-3608460576
-3609689956
-3609899613
-3610013262
-3615962659
-3616575415
-3616918576
-3617308906
-3618457348
-3622300513
-3624511238
-3626225735
-3628246322
-3630119562
-3632080603
-3633105054
-3634084085
-3634412334
-3638843794
-3641936807
-3650095718
-3651640369
-3651814502
-3654938325
-3659389630
-3659390363
-3659392151
-3659400664
-3659403878
-3659405544
-3659416193
-3659417579
-3659431873
-3659447713
-3660170786
-3660909551
-3660909923
-3660918557
-3660925130
-3660936896
-3660937261
-3660951070
-3660955381
-3660956840
-3660958585
-3663141062
-3663473431
-3663482856
-3663490015
-3663490082
-3663507923
-3663513558
-3663514600
-3663520208
-3663527984
-3663529369
-3664426842
-3669304270
-3670454662
-3672509317
-3673645534
-3675396531
-3677941657
-3680419626
-3681459197
-3683659398
-3683852119
-3684526660
-3686960502
-3687099299
-3687103917
-3687108504
-3687116590
-3687128940
-3687144528
-3687146254
-3687149973
-3687150048
-3687151682
-3691181904
-3694124240
-3695637688
-3695740923
-3700103096
-3703221523
-3703489574
-3704193480
-3706942642
-3707778491
-3708203001
-3709025940
-3709718688
-3710033706
-3712243509
-3715839509
-3716297036
-3716526394
-3718969530
-3720033303
-3721547554
-3721884587
-3723173153
-3723707899
-3725450564
-3728184196
-3730253252
-3732388721
-3734384010
-3735261577
-3735685925
-3736340730
-3736352030
-3736360121
-3736372495
-3736381411
-3736384216
-3736387598
-3736389268
-3736391688
-3736397288
-3736425492
-3739333458
-3739483015
-3740174529
-3743744057
-3743745126
-3743758939
-3743759468
-3743764122
-3743764339
-3743773892
-3743790009
-3743790524
-3743801014
-3745699178
-3745703461
-3745708883
-3745710576
-3745732132
-3745736585
-3745741315
-3745741406
-3745746218
-3745746686
-3746668585
-3748457537
-3750515643
-3751201819
-3751202821
-3751207054
-3751208434
-3751212321
-3751220788
-3751232119
-3751240605
-3751248655
-3751257326
-3753365986
-3754941924
-3756063957
-3758312735
-3760296827
-3769004958
-3770026628
-3771522789
-3771742515
-3772428622
-3772454606
-3773936891
-3778541769
-3780024737
-3780959460
-3781000626
-3781006731
-3781007461
-3781017540
-3781018376
-3781028936
-3781044557
-3781051021
-3781053221
-3781053283
-3782221555
-3782233968
-3782241300
-3782242613
-3782244541
-3782245868
-3782249943
-3782255149
-3782267108
-3782271678
-3783013480
-3788095210
-3788878492
-3789144726
-3789147436
-3789152809
-3789153219
-3789161349
-3789168670
-3789185174
-3789194342
-3789197869
-3789206915
-3789982905
-3791394851
-3794540134
-3795889338
-3796749647
-3797321149
-3798266769
-3798882382
-3800151747
-3801208803
-3802486151
-3802665551
-3802690889
-3803536237
-3803583430
-3808891377
-3809497747
-3811725159
-3811827130
-3814220185
-3816389796
-3822420678
-3822648297
-3823304142
-3823309286
-3823320685
-3823322321
-3823327566
-3823337570
-3823340188
-3823345836
-3823351470
-3823353536
-3823503479
-3824748781
-3826318759
-3826321690
-3826323490
-3826324269
-3826329361
-3826347301
-3826349310
-3826351296
-3826357526
-3826357990
-3826385936
-3833762178
-3836337682
-3837568500
-3837740769
-3837856575
-3839231072
-3840734409
-3840816659
-3841218057
-3845868530
-3846674958
-3847978205
-3849270741
-3851379542
-3851475692
-3852757473
-3853084389
-3854823505
-3860929421
-3861327075
-3862573277
-3864047035
-3864776424
-3866085426
-3867605538
-3869133168
-3869244381
-3869417653
-3869741646
-3869920445
-3872270904
-3873796021
-3873801145
-3873803357
-3873804356
-3873809253
-3873812845
-3873817540
-3873821996
-3873830920
-3873834307
-3874764226
-3874765184
-3874775234
-3874782325
-3874785740
-3874793904
-3874800598
-3874816969
-3874818839
-3874820993
-3876306301
-3876339218
-3877506940
-3878341830
-3879589282
-3880197747
-3880931307
-3881541009
-3882310356
-3882312440
-3882331549
-3882332357
-3882333503
-3882338104
-3882339224
-3882352152
-3882357932
-3882359368
-3882559292
-3883468170
-3885622309
-3885622517
-3885629223
-3885642008
-3885643738
-3885647717
-3885650659
-3885651911
-3885652581
-3885671388
-3887896758
-3889437949
-3889943246
-3889943686
-3889954621
-3889962957
-3889963929
-3889967826
-3889972406
-3889978887
-3889984884
-3889989841
-3891376361
-3893516444
-3895124201
-3897428213
-3897821941
-3897989380
-3902496333
-3902964365
-3902965898
-3902967892
-3902975999
-3902979359
-3902980539
-3902987016
-3902996621
-3903019092
-3903020647
-3903488309
-3903494563
-3903498414
-3903499185
-3903499941
-3903504654
-3903512592
-3903523025
-3903528375
-3903529791
-3903797134
-3903801334
-3903828058
-3903830317
-3903832857
-3903836255
-3903849554
-3903852418
-3903858442
-3903859746
-3906587408
-3906604052
-3906604412
-3906605175
-3906611216
-3906612434
-3906615300
-3906621755
-3906624561
-3906628305
-3907284367
-3908110726
-3911999090
-3912575466
-3912878597
-3915829330
-3916510984
-3918366482
-3919281472
-3919827499
-3919840017
-3921136146
-3922159685
-3925543081
-3929134437
-3930098253
-3935750380
-3936599547
-3936694678
-3936704111
-3936704399
-3936707532
-3936720007
-3936720499
-3936724192
-3936724303
-3936744501
-3936755759
-3941964372
-3944836814
-3944840982
-3947669176
-3948191871
-3949446184
-3949528954
-3950020874
-3951995651
-3960491515
-3962060709
-3964021684
-3976247134
-3977325321
-3978788317
-3981798060
-3984679506
-3985321861
-3986142633
-3988460793
-3989156157
-3989362033
-3990882940
-3990985596
-3992455458
-3994573443
-3997253084
-3998089448
-4003388529
-4003393849
-4003402399
-4003408683
-4003414020
-4003430547
-4003432347
-4003437877
-4003438032
-4003439604
-4004394729
-4007263524
-4011933039
-4014769584
-4015233101
-4015237272
-4015239604
-4015255268
-4015259472
-4015264453
-4015266486
-4015278055
-4015287269
-4015293037
-4016707981
-4022886349
-4023296258
-4025193358
-4025869422
-4027396212
-4027410206
-4027410541
-4027414192
-4027421579
-4027424440
-4027430663
-4027434226
-4027441519
-4027445142
-4032237004
-4032387328
-4033487760
-4033975556
-4034827263
-4035153113
-4035564248
-4035572037
-4035572181
-4035576338
-4035583980
-4035594383
-4035595610
-4035599266
-4035608243
-4035613022
-4036741100
-4038446033
-4040579336
-4040832983
-4041593257
-4043714203
-4044818461
-4047125809
-4048224216
-4048226234
-4048232091
-4048236275
-4048246582
-4048249194
-4048254840
-4048257495
-4048269227
-4048269420
-4052362025
-4052430241
-4053121994
-4053141130
-4053626199
-4059380277
-4059381734
-4059385669
-4059392459
-4059409290
-4059411912
-4059413156
-4059414378
-4059427208
-4059431840
-4060258467
-4061176359
-4061866369
-4064035103
-4064127537
-4064434523
-4066371028
-4072541211
-4072593779
-4074173152
-4077205169
-4077849578
-4079864157
-4080069384
-4081047030
-4082118601
-4082352225
-4082489327
-4084914734
-4084917295
-4084923148
-4084940529
-4084942776
-4084946746
-4084947514
-4084960835
-4084962221
-4084976808
-4085349483
-4089841612
-4089849617
-4089853399
-4089856330
-4089856783
-4089874842
-4089882108
-4089883271
-4089886065
-4089903944
-4089904698
-4094837718
-4094838628
-4094848306
-4094848753
-4094859354
-4094868424
-4094872285
-4094882390
-4094887547
-4094892820
-4096305723
-4097134236
-4100463858
-4101273039
-4101274630
-4101275892
-4101315079
-4101315659
-4101318470
-4101318557
-4101327484
-4101334379
-4101335977
-4103301593
-4103305479
-4103306460
-4103308299
-4103311929
-4103313714
-4103330164
-4103335777
-4103343522
-4103348913
-4107102407
-4109567672
-4116690632
-4120554252
-4120878872
-4122990144
-4124910844
-4125021025
-4125023634
-4125026509
-4125028553
-4125034504
-4125035416
-4125046915
-4125047726
-4125048427
-4125075266
-4127753834
-4130143957
-4130151508
-4130154079
-4130165027
-4130175430
-4130180549
-4130183221
-4130183296
-4130188291
-4130203856
-4132828907
-4139683190
-4140497941
-4141194231
-4142145179
-4145076135
-4148082990
-4149380724
-4158672603
-4159538389
-4161175842
-4161186638
-4162345608
-4162673385
-4163040901
-4163046144
-4163052448
-4163054442
-4163063515
-4163065071
-4163070458
-4163071826
-4163075004
-4163081543
-4163209284
-4163549055
-4163554016
-4163554858
-4163561377
-4163574556
-4163584413
-4163588386
-4163603118
-4163603267
-4163604647
-4166453104
-4167182520
-4167323629
-4168621416
-4169092422
-4169094163
-4169096896
-4169098102
-4169124942
-4169131270
-4169134557
-4169145085
-4169145490
-4169153940
-4169876071
-4169987529
-4169990855
-4169991233
-4170004101
-4170014555
-4170016278
-4170018130
-4170033411
-4170036674
-4170036827
-4170134074
-4170620498
-4170708993
-4172093000
-4172760852
-4174218539
-4175851996
-4178859134
-4179312518
-4179360144
-4181137681
-4182375389
-4183109327
-4184789649
-4186150437
-4190562730
-4190726718
-4191303006
-4191738476
-4193775259
-4198202213
-4198216358
-4198786945
-4200996746
-4201009040
-4201021670
-4201027205
-4201034605
-4201036211
-4201036540
-4201038667
-4201047545
-4201051535
-4201827654
-4202080451
-4202445896
-4202453250
-4203138079
-4203488556
-4205313549
-4205540503
-4206297947
-4206299226
-4206299747
-4206316606
-4206317603
-4206320323
-4206324686
-4206327956
-4206333547
-4206342467
-4207049498
-4207063510
-4207066387
-4207078663
-4207081879
-4207084090
-4207092087
-4207098059
-4207102254
-4207109598
-4209110951
-4209641188
-4209881188
-4210384685
-4211102742
-4211103975
-4211114006
-4211134388
-4211135657
-4211136729
-4211139271
-4211149231
-4211161124
-4211165806
-4214081400
-4214743313
-4214748294
-4214755004
-4214761259
-4214772001
-4214776952
-4214782642
-4214785393
-4214795302
-4214798192
-4218626233
-4218997675
-4221064607
-4221550332
-4221795034
-4223351132
-4223405554
-4225162555
-4225921485
-4226045813
-4226046743
-4226050435
-4226051609
-4226061821
-4226072846
-4226075025
-4226089663
-4226096777
-4226098421
-4227789374
-4228662038
-4228664184
-4228666098
-4228666858
-4228669120
-4228683878
-4228687674
-4228692492
-4228701381
-4228716328
-4229233534
-4230937534
-4232100293
-4232264547
-4233154273
-4234742356
-4235583851
-4236249848
-4242670596
-4243534109
-4246408307
-4251091651
-4251449534
-4255029563
-4256254313
-4261819820
-4262174208
-4263156074
-4266135304
-4266890524
-4266891329
-4266893236
-4266901620
-4266908049
-4266922673
-4266929296
-4266930676
-4266931668
-4266938331
-4272128884
-4274961460
-4277126041
-4280082363
-4281518455
-4282937914
-4283563669
-4286981399
-4289977612
-4291040046
-4294034120
diff --git a/components/test/data/SafeBrowsingDb/PrefixSetVersion2 b/components/test/data/SafeBrowsingDb/PrefixSetVersion2
deleted file mode 100644
index a6752b8da..0000000
--- a/components/test/data/SafeBrowsingDb/PrefixSetVersion2
+++ /dev/null
Binary files differ
diff --git a/components/test/data/SafeBrowsingDb/PrefixSetVersion3 b/components/test/data/SafeBrowsingDb/PrefixSetVersion3
deleted file mode 100644
index fe2b34ab..0000000
--- a/components/test/data/SafeBrowsingDb/PrefixSetVersion3
+++ /dev/null
Binary files differ
diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc
index f378da9..a2ba9e05 100644
--- a/components/version_info/version_info.cc
+++ b/components/version_info/version_info.cc
@@ -12,6 +12,13 @@
 
 namespace version_info {
 
+namespace {
+
+bool g_is_channel_set = false;
+Channel g_channel = Channel::UNKNOWN;
+
+}  // namespace
+
 std::string GetProductNameAndVersionForUserAgent() {
   return "Chrome/" + GetVersionNumber();
 }
@@ -65,6 +72,23 @@
 #endif
 }
 
+bool IsChannelSet() {
+  return g_is_channel_set;
+}
+
+void SetChannel(Channel channel) {
+  if (g_is_channel_set)
+    return;
+
+  g_is_channel_set = true;
+  g_channel = channel;
+}
+
+Channel GetChannel() {
+  DCHECK(g_is_channel_set);
+  return g_channel;
+}
+
 std::string GetChannelString(Channel channel) {
   switch (channel) {
     case Channel::STABLE:
diff --git a/components/version_info/version_info.h b/components/version_info/version_info.h
index 82b4739..f41b85c 100644
--- a/components/version_info/version_info.h
+++ b/components/version_info/version_info.h
@@ -39,6 +39,19 @@
 // Returns the OS type, e.g. "Windows", "Linux", "FreeBDS", ...
 std::string GetOSType();
 
+// Returns whether SetChannel() has been called or not.
+bool IsChannelSet();
+
+// Must be called before calling GetChannel(). Subsequent calls are no-ops.
+// Ideally, there should be only one caller to SetChannel(). In situations where
+// there are multiple callers, then the first caller "wins". To prevent
+// inconsistencies with GetChannel(), all the callers should pass in the same
+// |channel| value.
+void SetChannel(Channel channel);
+
+// Gets the channel. DCHECKs if SetChannel() never got called.
+Channel GetChannel();
+
 // Returns a string equivalent of |channel|, indenpendent of whether the build
 // is branded or not and without any additional modifiers.
 std::string GetChannelString(Channel channel);
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index 5b878377..2804cd3 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -26,7 +26,7 @@
 // Enables running the display compositor as part of the viz service in the GPU
 // process. This is also referred to as out-of-process display compositor
 // (OOP-D).
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+#if defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
 const base::Feature kVizDisplayCompositor{"VizDisplayCompositor",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
 #else
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 4bdf22a..68f25c8 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -352,15 +352,14 @@
   auto* surface = id ? offscreen_surfaces_[id].get() : sk_surface_.get();
 
   SkBitmap bitmap;
-  if (request->is_scaled()) {
-    // Resolve the source for the scaling input: Initialize a SkPixmap that
-    // selects the current RenderPass's output rect within the current canvas
-    // and provides access to its pixels.
-    SkBitmap render_pass_output;
-    sk_sp<SkImage> copy_image =
-        surface->makeImageSnapshot(RectToSkIRect(copy_rect));
-    copy_image->asLegacyBitmap(&render_pass_output);
+  SkImageInfo copy_rect_info = SkImageInfo::Make(
+      copy_rect.width(), copy_rect.height(), SkColorType::kN32_SkColorType,
+      SkAlphaType::kPremul_SkAlphaType,
+      surface->getCanvas()->imageInfo().refColorSpace());
+  bitmap.allocPixels(copy_rect_info, copy_rect.width() * 4);
+  surface->readPixels(bitmap, copy_rect.x(), copy_rect.y());
 
+  if (request->is_scaled()) {
     // Execute the scaling: For downscaling, use the RESIZE_BETTER strategy
     // (appropriate for thumbnailing); and, for upscaling, use the RESIZE_BEST
     // strategy. Note that processing is only done on the subset of the
@@ -373,13 +372,9 @@
         is_downscale_in_both_dimensions ? ImageOperations::RESIZE_BETTER
                                         : ImageOperations::RESIZE_BEST;
     bitmap = ImageOperations::Resize(
-        render_pass_output, method, result_rect.width(), result_rect.height(),
+        bitmap, method, result_rect.width(), result_rect.height(),
         SkIRect{result_rect.x(), result_rect.y(), result_rect.right(),
                 result_rect.bottom()});
-  } else /* if (!request->is_scaled()) */ {
-    sk_sp<SkImage> copy_image =
-        surface->makeImageSnapshot(RectToSkIRect(copy_rect));
-    copy_image->asLegacyBitmap(&bitmap);
   }
 
   // TODO(crbug.com/795132): Plumb color space throughout SkiaRenderer up to the
diff --git a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
index c6368aa..41432e47 100644
--- a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
+++ b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
@@ -89,7 +89,6 @@
   compositor_ = std::make_unique<ui::Compositor>(
       FrameSinkId(1, 1), context_factory, nullptr,
       base::ThreadTaskRunnerHandle::Get(),
-      false /* enable_surface_synchronization */,
       false /* enable_pixel_canvas */);
   compositor_->SetAcceleratedWidget(window_delegate_.GetAcceleratedWidget());
   compositor_->SetScaleAndSize(1.0f, size, LocalSurfaceIdAllocation());
diff --git a/content/app/strings/translations/content_strings_iw.xtb b/content/app/strings/translations/content_strings_iw.xtb
index 0c66f92..2cd3a57 100644
--- a/content/app/strings/translations/content_strings_iw.xtb
+++ b/content/app/strings/translations/content_strings_iw.xtb
@@ -124,7 +124,7 @@
 <translation id="5466621249238537318">בחר קובץ אחד או יותר.</translation>
 <translation id="5468998798572797635">צא ממסך מלא</translation>
 <translation id="5516424706154626233">בוחר תאריכים</translation>
-<translation id="5537725057119320332">העבר</translation>
+<translation id="5537725057119320332">העברה</translation>
 <translation id="5546461542133609677">בטל השתקה</translation>
 <translation id="561939826962581046">time</translation>
 <translation id="5630795885300617244">הקשה כפולה בצד ימין או שמאל מדלגת על 10 שניות</translation>
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 538e91b..4075a29a8 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -1780,14 +1780,6 @@
     "wake_lock/wake_lock_service_impl.h",
     "web_contents/aura/gesture_nav_simple.cc",
     "web_contents/aura/gesture_nav_simple.h",
-    "web_contents/aura/overscroll_navigation_overlay.cc",
-    "web_contents/aura/overscroll_navigation_overlay.h",
-    "web_contents/aura/overscroll_window_animation.cc",
-    "web_contents/aura/overscroll_window_animation.h",
-    "web_contents/aura/overscroll_window_delegate.cc",
-    "web_contents/aura/overscroll_window_delegate.h",
-    "web_contents/aura/shadow_layer_delegate.cc",
-    "web_contents/aura/shadow_layer_delegate.h",
     "web_contents/aura/types.cc",
     "web_contents/aura/types.h",
     "web_contents/web_contents_getter_registry.cc",
@@ -2461,14 +2453,6 @@
       "renderer_host/render_widget_host_view_aura.h",
       "web_contents/aura/gesture_nav_simple.cc",
       "web_contents/aura/gesture_nav_simple.h",
-      "web_contents/aura/overscroll_navigation_overlay.cc",
-      "web_contents/aura/overscroll_navigation_overlay.h",
-      "web_contents/aura/overscroll_window_animation.cc",
-      "web_contents/aura/overscroll_window_animation.h",
-      "web_contents/aura/overscroll_window_delegate.cc",
-      "web_contents/aura/overscroll_window_delegate.h",
-      "web_contents/aura/shadow_layer_delegate.cc",
-      "web_contents/aura/shadow_layer_delegate.h",
       "web_contents/web_contents_view_aura.cc",
       "web_contents/web_contents_view_aura.h",
     ]
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 57358ce..ea1777e 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -733,6 +733,11 @@
   RunAriaTest(FILE_PATH_LITERAL("aria-menuitemradio.html"));
 }
 
+IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+                       AccessibilityAriaMismatchedTableAttr) {
+  RunHtmlTest(FILE_PATH_LITERAL("aria-mismatched-table-attr.html"));
+}
+
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaModal) {
   RunAriaTest(FILE_PATH_LITERAL("aria-modal.html"));
 }
@@ -1604,6 +1609,10 @@
   RunHtmlTest(FILE_PATH_LITERAL("list-markers.html"));
 }
 
+IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLongText) {
+  RunHtmlTest(FILE_PATH_LITERAL("long-text.html"));
+}
+
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMain) {
   RunHtmlTest(FILE_PATH_LITERAL("main.html"));
 }
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.cc b/content/browser/bluetooth/web_bluetooth_service_impl.cc
index e7314e8..d7afe5b 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl.cc
+++ b/content/browser/bluetooth/web_bluetooth_service_impl.cc
@@ -247,13 +247,7 @@
   if (!discovery_session_ || !discovery_session_->IsActive())
     return;
 
-  bool has_bound_client = false;
-  for (auto const& client : scanning_clients_) {
-    if (!client.is_bound())
-      continue;
-
-    has_bound_client = true;
-
+  scanning_clients_.ForAllPtrs([=](auto* client) {
     // TODO(dougt): filter out devices the client is not interested in.
     auto device = blink::mojom::WebBluetoothDevice::New();
     // TODO(dougt):
@@ -294,15 +288,13 @@
     result->service_data = std::move(services);
 
     client->ScanEvent(std::move(result));
-  }
-
-  // TODO(dougt): Instead of this we should have a connection error handler on
-  // each client and remove it from |scanning_clients_| when the pipe closes.
+  });
 
   // If we don't have any bound clients, clean things up.
-  if (!discovery_request_pending_ && !has_bound_client && discovery_session_) {
-    scanning_clients_.clear();
+  if (scanning_clients_.empty()) {
     discovery_session_->Stop(base::DoNothing(), base::DoNothing());
+    discovery_session_ = nullptr;
+    return;
   }
 }
 
@@ -932,7 +924,7 @@
   }
 
   if (discovery_session_) {
-    scanning_clients_.push_back(std::move(client));
+    scanning_clients_.AddPtr(std::move(client));
     std::move(callback).Run(blink::mojom::WebBluetoothResult::SUCCESS);
     return;
   }
@@ -958,7 +950,7 @@
 
   discovery_request_pending_ = false;
   discovery_session_ = std::move(session);
-  scanning_clients_.push_back(std::move(client));
+  scanning_clients_.AddPtr(std::move(client));
 
   for (auto& callback : discovery_callbacks_)
     std::move(callback).Run(blink::mojom::WebBluetoothResult::SUCCESS);
@@ -1406,7 +1398,7 @@
   binding_.Close();
 
   characteristic_id_to_notify_session_.clear();
-  scanning_clients_.clear();
+  scanning_clients_.CloseAll();
   pending_primary_services_requests_.clear();
   descriptor_id_to_characteristic_id_.clear();
   characteristic_id_to_service_id_.clear();
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.h b/content/browser/bluetooth/web_bluetooth_service_impl.h
index 2fbbb64..dbcdc84 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl.h
+++ b/content/browser/bluetooth/web_bluetooth_service_impl.h
@@ -22,6 +22,7 @@
 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
 #include "device/bluetooth/bluetooth_remote_gatt_service.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/interface_ptr_set.h"
 #include "third_party/blink/public/platform/modules/bluetooth/web_bluetooth.mojom.h"
 
 namespace url {
@@ -319,7 +320,7 @@
   std::vector<RequestScanningStartCallback> discovery_callbacks_;
 
   // List of clients that we must broadcast scan changes to.
-  std::vector<blink::mojom::WebBluetoothScanClientAssociatedPtr>
+  mojo::AssociatedInterfacePtrSet<blink::mojom::WebBluetoothScanClient>
       scanning_clients_;
 
   // The lifetime of this instance is exclusively managed by the RFH that
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
index 97d3236b..9d96054 100644
--- a/content/browser/compositor/gpu_process_transport_factory.cc
+++ b/content/browser/compositor/gpu_process_transport_factory.cc
@@ -550,10 +550,10 @@
       external_begin_frame_controller_client;
 
   viz::BeginFrameSource* begin_frame_source = nullptr;
-  if (compositor->external_begin_frames_enabled()) {
+  if (compositor->external_begin_frame_client()) {
     external_begin_frame_controller_client =
         std::make_unique<ui::ExternalBeginFrameControllerClientImpl>(
-            compositor.get());
+            compositor->external_begin_frame_client());
     // We don't bind the controller mojo interface, since we only use the
     // ExternalBeginFrameSourceMojo directly and not via mojo (plus, as it
     // is an associated interface, binding it would require a separate pipe).
@@ -571,12 +571,12 @@
                 compositor->task_runner().get()));
     begin_frame_source = synthetic_begin_frame_source.get();
   } else {
-      synthetic_begin_frame_source =
-          std::make_unique<viz::DelayBasedBeginFrameSource>(
-              std::make_unique<viz::DelayBasedTimeSource>(
-                  compositor->task_runner().get()),
-              viz::BeginFrameSource::kNotRestartableId);
-      begin_frame_source = synthetic_begin_frame_source.get();
+    synthetic_begin_frame_source =
+        std::make_unique<viz::DelayBasedBeginFrameSource>(
+            std::make_unique<viz::DelayBasedTimeSource>(
+                compositor->task_runner().get()),
+            viz::BeginFrameSource::kNotRestartableId);
+    begin_frame_source = synthetic_begin_frame_source.get();
   }
 
   if (data->synthetic_begin_frame_source) {
diff --git a/content/browser/devtools/devtools_instrumentation.cc b/content/browser/devtools/devtools_instrumentation.cc
index b84657e..5689802 100644
--- a/content/browser/devtools/devtools_instrumentation.cc
+++ b/content/browser/devtools/devtools_instrumentation.cc
@@ -191,36 +191,57 @@
   begin_params->headers = headers.ToString();
 }
 
+namespace {
+template <typename HandlerType>
+bool MaybeCreateProxyForInterception(
+    DevToolsAgentHostImpl* agent_host,
+    RenderFrameHostImpl* rfh,
+    bool is_navigation,
+    bool is_download,
+    network::mojom::URLLoaderFactoryRequest* target_factory_request) {
+  if (!agent_host)
+    return false;
+  bool had_interceptors = false;
+  for (auto* handler : HandlerType::ForAgentHost(agent_host)) {
+    had_interceptors =
+        handler->MaybeCreateProxyForInterception(
+            rfh, is_navigation, is_download, target_factory_request) ||
+        had_interceptors;
+  }
+  return had_interceptors;
+}
+
+}  // namespace
 bool WillCreateURLLoaderFactory(
     RenderFrameHostImpl* rfh,
     bool is_navigation,
     bool is_download,
     network::mojom::URLLoaderFactoryRequest* target_factory_request) {
   DCHECK(!is_download || is_navigation);
-  bool had_interceptors = false;
-  // TODO(caseq): assure deterministic order of browser agents (or sessions).
-  for (auto* agent_host : BrowserDevToolsAgentHost::Instances()) {
-    const auto& fetch_handlers =
-        protocol::FetchHandler::ForAgentHost(agent_host);
-    for (auto it = fetch_handlers.rbegin(); it != fetch_handlers.rend(); ++it) {
-      had_interceptors =
-          (*it)->MaybeCreateProxyForInterception(
-              rfh, is_navigation, is_download, target_factory_request) ||
-          had_interceptors;
-    }
-  }
-  DevToolsAgentHostImpl* agent_host =
+
+  // Order of targets and sessions matters -- the latter proxy is created,
+  // the closer it is to the network. So start with frame's NetworkHandler,
+  // then process frame's FetchHandler and then browser's FetchHandler.
+  // Within the target, the agents added earlier are closer to network.
+
+  DevToolsAgentHostImpl* frame_agent_host =
       RenderFrameDevToolsAgentHost::GetFor(rfh->frame_tree_node());
-  if (!agent_host)
-    return had_interceptors;
-  const auto& network_handlers =
-      protocol::NetworkHandler::ForAgentHost(agent_host);
-  for (auto it = network_handlers.rbegin(); it != network_handlers.rend();
-       ++it) {
-    had_interceptors =
-        (*it)->MaybeCreateProxyForInterception(rfh, is_navigation, is_download,
-                                               target_factory_request) ||
-        had_interceptors;
+
+  bool had_interceptors =
+      MaybeCreateProxyForInterception<protocol::NetworkHandler>(
+          frame_agent_host, rfh, is_navigation, is_download,
+          target_factory_request);
+  had_interceptors = MaybeCreateProxyForInterception<protocol::FetchHandler>(
+                         frame_agent_host, rfh, is_navigation, is_download,
+                         target_factory_request) ||
+                     had_interceptors;
+
+  // TODO(caseq): assure deterministic order of browser agents (or sessions).
+  for (auto* browser_agent_host : BrowserDevToolsAgentHost::Instances()) {
+    had_interceptors = MaybeCreateProxyForInterception<protocol::FetchHandler>(
+                           browser_agent_host, rfh, is_navigation, is_download,
+                           target_factory_request) ||
+                       had_interceptors;
   }
   return had_interceptors;
 }
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc
index 15c1505..33796a1 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -22,6 +22,7 @@
 #include "content/browser/devtools/protocol/browser_handler.h"
 #include "content/browser/devtools/protocol/dom_handler.h"
 #include "content/browser/devtools/protocol/emulation_handler.h"
+#include "content/browser/devtools/protocol/fetch_handler.h"
 #include "content/browser/devtools/protocol/input_handler.h"
 #include "content/browser/devtools/protocol/inspector_handler.h"
 #include "content/browser/devtools/protocol/io_handler.h"
@@ -288,6 +289,8 @@
       frame_tree_node_ ? frame_tree_node_->devtools_frame_token()
                        : base::UnguessableToken(),
       GetIOContext())));
+  session->AddHandler(
+      base::WrapUnique(new protocol::FetchHandler(GetIOContext())));
   session->AddHandler(base::WrapUnique(new protocol::SchemaHandler()));
   session->AddHandler(base::WrapUnique(new protocol::ServiceWorkerHandler()));
   session->AddHandler(base::WrapUnique(new protocol::StorageHandler()));
diff --git a/content/browser/frame_host/render_frame_host_feature_policy_unittest.cc b/content/browser/frame_host/render_frame_host_feature_policy_unittest.cc
index 5510718..b730cee3 100644
--- a/content/browser/frame_host/render_frame_host_feature_policy_unittest.cc
+++ b/content/browser/frame_host/render_frame_host_feature_policy_unittest.cc
@@ -84,7 +84,6 @@
     blink::ParsedFeaturePolicy result(1);
     result[0].feature = feature;
     result[0].matches_all_origins = false;
-    result[0].disposition = blink::mojom::FeaturePolicyDisposition::kEnforce;
     for (const std::string& origin : origins)
       result[0].origins.push_back(url::Origin::Create(GURL(origin)));
     return result;
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 879f1cb..6146413 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -2952,8 +2952,7 @@
     return;
   // Rebuild the feature policy for this frame.
   ResetFeaturePolicy();
-  feature_policy_->SetHeaderPolicy(*DirectivesWithDisposition(
-      blink::mojom::FeaturePolicyDisposition::kEnforce, parsed_header));
+  feature_policy_->SetHeaderPolicy(parsed_header);
 
   // Update the feature policy and sandbox flags in the frame tree. This will
   // send any updates to proxies if necessary.
@@ -5574,10 +5573,7 @@
   blink::ParsedFeaturePolicy container_policy =
       frame_tree_node()->effective_frame_policy().container_policy;
   feature_policy_ = blink::FeaturePolicy::CreateFromParentPolicy(
-      parent_policy,
-      *DirectivesWithDisposition(
-          blink::mojom::FeaturePolicyDisposition::kEnforce, container_policy),
-      last_committed_origin_);
+      parent_policy, container_policy, last_committed_origin_);
 }
 
 void RenderFrameHostImpl::CreateAudioInputStreamFactory(
diff --git a/content/browser/media/android/browser_gpu_video_accelerator_factories.cc b/content/browser/media/android/browser_gpu_video_accelerator_factories.cc
index 1b8d471..b5ab3d3 100644
--- a/content/browser/media/android/browser_gpu_video_accelerator_factories.cc
+++ b/content/browser/media/android/browser_gpu_video_accelerator_factories.cc
@@ -204,6 +204,11 @@
   return context_provider_;
 }
 
+gpu::ContextSupport*
+BrowserGpuVideoAcceleratorFactories::GetMediaContextProviderContextSupport() {
+  return GetMediaContextProvider()->ContextSupport();
+}
+
 void BrowserGpuVideoAcceleratorFactories::SetRenderingColorSpace(
     const gfx::ColorSpace& color_space) {}
 
diff --git a/content/browser/media/android/browser_gpu_video_accelerator_factories.h b/content/browser/media/android/browser_gpu_video_accelerator_factories.h
index a51a02d..332ab2bf 100644
--- a/content/browser/media/android/browser_gpu_video_accelerator_factories.h
+++ b/content/browser/media/android/browser_gpu_video_accelerator_factories.h
@@ -63,6 +63,7 @@
   GetVideoEncodeAcceleratorSupportedProfiles() override;
   scoped_refptr<ws::ContextProviderCommandBuffer> GetMediaContextProvider()
       override;
+  gpu::ContextSupport* GetMediaContextProviderContextSupport() override;
   void SetRenderingColorSpace(const gfx::ColorSpace& color_space) override;
 
   scoped_refptr<ws::ContextProviderCommandBuffer> context_provider_;
diff --git a/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc b/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
index 724aa82..6291e70 100644
--- a/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
+++ b/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
@@ -11,6 +11,7 @@
 #include "base/task/post_task.h"
 #include "build/build_config.h"
 #include "cc/test/pixel_test_utils.h"
+#include "components/viz/common/features.h"
 #include "content/browser/media/capture/content_capture_device_browsertest_base.h"
 #include "content/browser/media/capture/fake_video_capture_stack.h"
 #include "content/browser/media/capture/frame_test_util.h"
@@ -106,9 +107,12 @@
 #else
         // viz::SoftwareRenderer does not do color space management. Otherwise
         // (normal case), be strict about color differences.
-        const int max_color_diff = IsSoftwareCompositingTest()
-                                       ? kVeryLooseMaxColorDifference
-                                       : kMaxColorDifference;
+        // TODO(crbug/795132): SkiaRenderer temporarily uses same code as
+        // software compositor. Fix plumbing for SkiaRenderer.
+        const int max_color_diff =
+            (IsSoftwareCompositingTest() || features::IsUsingSkiaRenderer())
+                ? kVeryLooseMaxColorDifference
+                : kMaxColorDifference;
 #endif
 
         // Determine the average RGB color in the three regions of the frame.
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index d3bca8a..e00c8349 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -23,6 +23,7 @@
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/memory/weak_ptr.h"
+#include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
@@ -788,6 +789,10 @@
 }
 
 void CompositorImpl::TearDownDisplayAndUnregisterRootFrameSink() {
+  // TODO(ericrk): Remove this once hang issues have been debugged.
+  // https://crbug.com/899705
+  SCOPED_UMA_HISTOGRAM_LONG_TIMER("CompositorImplAndroid.TearDownDisplayTime");
+
   if (enable_viz_) {
     // Make a best effort to try to complete pending readbacks.
     // TODO(crbug.com/637035): Consider doing this in a better way,
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index 0f3bd7f..aa915d2 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -268,6 +268,7 @@
 void InputRouterImpl::SetTouchActionFromMain(cc::TouchAction touch_action) {
   if (compositor_touch_action_enabled_) {
     touch_action_filter_.OnSetTouchAction(touch_action);
+    touch_event_queue_.StopTimeoutMonitor();
     ProcessDeferredGestureEventQueue();
   }
   UpdateTouchAckTimeoutEnabled();
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 f08869f..5cb1cb8 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -436,6 +436,31 @@
     EXPECT_EQ(input_router_->touch_action_filter_.num_of_active_touches_, 0);
   }
 
+  void StopTimeoutMonitorTest(bool compositor_touch_action_enabled) {
+    ResetTouchAction();
+    PressTouchPoint(1, 1);
+    base::Optional<ui::DidOverscrollParams> overscroll;
+    base::Optional<cc::TouchAction> touch_action = cc::kTouchActionPan;
+    input_router_->SendTouchEvent(TouchEventWithLatencyInfo(touch_event_));
+    EXPECT_TRUE(input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
+    input_router_->TouchEventHandled(
+        TouchEventWithLatencyInfo(touch_event_),
+        compositor_touch_action_enabled ? InputEventAckSource::COMPOSITOR_THREAD
+                                        : InputEventAckSource::MAIN_THREAD,
+        ui::LatencyInfo(), INPUT_EVENT_ACK_STATE_NOT_CONSUMED, overscroll,
+        touch_action);
+    if (compositor_touch_action_enabled) {
+      EXPECT_TRUE(
+          input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
+      input_router_->SetTouchActionFromMain(cc::kTouchActionPan);
+      EXPECT_FALSE(
+          input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
+    } else {
+      EXPECT_FALSE(
+          input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
+    }
+  }
+
   void OnTouchEventAckWithAckState(
       InputEventAckSource source,
       InputEventAckState ack_state,
@@ -2062,6 +2087,13 @@
   }
 }
 
+TEST_P(InputRouterImplTest, TimeoutMonitorStopWithMainThreadTouchAction) {
+  SetUpForTouchAckTimeoutTest(1, 1);
+  OnHasTouchEventHandlers(true);
+
+  StopTimeoutMonitorTest(compositor_touch_action_enabled_);
+}
+
 namespace {
 
 class InputRouterImplScaleEventTest : public InputRouterImplTestBase {
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 7280e7b0..6035d8b 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.h
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
@@ -112,6 +112,7 @@
   void FlushQueue();
 
  private:
+  friend class InputRouterImplTestBase;
   friend class PassthroughTouchEventQueueTest;
   FRIEND_TEST_ALL_PREFIXES(PassthroughTouchEventQueueTest,
                            TouchScrollStartedUnfiltered);
diff --git a/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc b/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
index 11af0a0..3b9bc6d6 100644
--- a/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
+++ b/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
@@ -15,12 +15,10 @@
 #include "content/browser/renderer_host/render_widget_host_view_event_handler.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/frame_messages.h"
-#include "content/public/browser/overscroll_configuration.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/content_browser_test.h"
 #include "content/public/test/content_browser_test_utils.h"
 #include "content/public/test/hit_test_region_observer.h"
-#include "content/public/test/scoped_overscroll_modes.h"
 #include "content/public/test/test_navigation_observer.h"
 #include "content/public/test/test_utils.h"
 #include "content/shell/browser/shell.h"
@@ -866,80 +864,6 @@
   EXPECT_TRUE(ui::TouchSelectionMenuRunner::GetInstance()->IsRunning());
 }
 
-// Tests that touch selection gets deactivated after an overscroll completes.
-// This only happens in the gesture nav with parallax effect.
-IN_PROC_BROWSER_TEST_F(TouchSelectionControllerClientAuraTest,
-                       HiddenAfterOverscroll) {
-  ScopedHistoryNavigationMode scoped_mode(
-      OverscrollConfig::HistoryNavigationMode::kParallaxUi);
-
-  // Set the page up.
-  ASSERT_NO_FATAL_FAILURE(StartTestWithPage("/touch_selection.html"));
-  InitSelectionController();
-
-  RenderWidgetHostViewAura* rwhva = GetRenderWidgetHostViewAura();
-  EXPECT_EQ(ui::TouchSelectionController::INACTIVE,
-            rwhva->selection_controller()->active_status());
-  EXPECT_FALSE(ui::TouchSelectionMenuRunner::GetInstance()->IsRunning());
-
-  // Long-press on the text and wait for touch handles to appear.
-  selection_controller_client()->InitWaitForSelectionEvent(
-      ui::SELECTION_HANDLES_SHOWN);
-
-  gfx::PointF point;
-  ASSERT_TRUE(GetPointInsideText(&point));
-  ui::GestureEventDetails long_press_details(ui::ET_GESTURE_LONG_PRESS);
-  long_press_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
-  ui::GestureEvent long_press(point.x(), point.y(), 0, ui::EventTimeForNow(),
-                              long_press_details);
-  rwhva->OnGestureEvent(&long_press);
-
-  selection_controller_client()->Wait();
-
-  EXPECT_EQ(ui::TouchSelectionController::SELECTION_ACTIVE,
-            rwhva->selection_controller()->active_status());
-  EXPECT_TRUE(ui::TouchSelectionMenuRunner::GetInstance()->IsRunning());
-
-  // Scroll such that an overscroll is initiated and wait for it to complete:
-  // touch selection should not be active at the end.
-  selection_controller_client()->InitWaitForSelectionEvent(
-      ui::SELECTION_HANDLES_CLEARED);
-
-  float event_x = 10.f;
-  const float event_y = 10.f;
-  ui::GestureEventDetails scroll_begin_details(ui::ET_GESTURE_SCROLL_BEGIN);
-  scroll_begin_details.set_device_type(
-      ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
-  ui::GestureEvent scroll_begin(event_x, event_y, 0, ui::EventTimeForNow(),
-                                scroll_begin_details);
-  rwhva->OnGestureEvent(&scroll_begin);
-
-  const int window_width = rwhva->GetNativeView()->bounds().width();
-  const float overscroll_threshold = OverscrollConfig::GetThreshold(
-      OverscrollConfig::Threshold::kStartTouchscreen);
-  const float scroll_amount = window_width * overscroll_threshold + 1;
-  event_x += scroll_amount;
-  ui::GestureEventDetails scroll_update_details(ui::ET_GESTURE_SCROLL_UPDATE,
-                                                scroll_amount, 0);
-  scroll_update_details.set_device_type(
-      ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
-  ui::GestureEvent scroll_update(event_x, event_y, 0, ui::EventTimeForNow(),
-                                 scroll_update_details);
-  rwhva->OnGestureEvent(&scroll_update);
-
-  ui::GestureEventDetails scroll_end_details(ui::ET_GESTURE_SCROLL_END);
-  scroll_end_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
-  ui::GestureEvent scroll_end(event_x, event_y, 0, ui::EventTimeForNow(),
-                              scroll_end_details);
-  rwhva->OnGestureEvent(&scroll_end);
-
-  selection_controller_client()->Wait();
-
-  EXPECT_EQ(ui::TouchSelectionController::INACTIVE,
-            rwhva->selection_controller()->active_status());
-  EXPECT_FALSE(ui::TouchSelectionMenuRunner::GetInstance()->IsRunning());
-}
-
 class TouchSelectionControllerClientAuraScaleFactorTest
     : public TouchSelectionControllerClientAuraTest {
  public:
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 9a17f7f..1536a11 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -400,6 +400,14 @@
   Send(new ViewMsg_SetRendererPrefs(GetRoutingID(), renderer_preferences));
 }
 
+void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
+  Send(new ViewMsg_SetBackgroundOpaque(GetRoutingID(), opaque));
+}
+
+RenderViewHost* RenderViewHostImpl::GetRenderViewHost() {
+  return this;
+}
+
 WebPreferences RenderViewHostImpl::ComputeWebkitPrefs() {
   TRACE_EVENT0("browser", "RenderViewHostImpl::GetWebkitPrefs");
   WebPreferences prefs;
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
index 7a46a3a..49d27337 100644
--- a/content/browser/renderer_host/render_view_host_impl.h
+++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -237,6 +237,8 @@
       const NativeWebKeyboardEvent& key_event) override;
   bool ShouldContributePriorityToProcess() override;
   void RequestSetBounds(const gfx::Rect& bounds) override;
+  void SetBackgroundOpaque(bool opaque) override;
+  RenderViewHost* GetRenderViewHost() override;
 
   // IPC message handlers.
   void OnShowView(int route_id,
diff --git a/content/browser/renderer_host/render_view_host_unittest.cc b/content/browser/renderer_host/render_view_host_unittest.cc
index 67aac36..0eb0331 100644
--- a/content/browser/renderer_host/render_view_host_unittest.cc
+++ b/content/browser/renderer_host/render_view_host_unittest.cc
@@ -88,6 +88,34 @@
   test_rvh()->CreateNewFullscreenWidget(routing_id, std::move(widget));
 }
 
+// The RenderViewHost tells the renderer process about SetBackgroundOpaque()
+// changes.
+TEST_F(RenderViewHostTest, SetBackgroundOpaque) {
+  for (bool value : {true, false}) {
+    SCOPED_TRACE(value);
+    // This method is part of RenderWidgetHostOwnerDelegate, provided to the
+    // main frame RenderWidgetHost, which uses it to inform the RenderView
+    // in the renderer process of the background opaque state.
+    auto* as_owner_delegate =
+        static_cast<RenderWidgetHostOwnerDelegate*>(test_rvh());
+    as_owner_delegate->SetBackgroundOpaque(value);
+
+    // This RenderWidget(View) was a main frame, so it passes along
+    // transparent background color to the RenderView.
+    const IPC::Message* set_background =
+        process()->sink().GetUniqueMessageMatching(
+            ViewMsg_SetBackgroundOpaque::ID);
+    ASSERT_TRUE(set_background);
+    std::tuple<bool> sent_background;
+    ViewMsg_SetBackgroundOpaque::Read(set_background, &sent_background);
+    EXPECT_EQ(std::get<0>(sent_background), value);
+
+    // GetUniqueMessageMatching() on the next trip through the loop should
+    // not find the message from the current loop, so remove that one.
+    process()->sink().ClearMessages();
+  }
+}
+
 // Ensure we do not grant bindings to a process shared with unprivileged views.
 TEST_F(RenderViewHostTest, DontGrantBindingsToSharedProcess) {
   // Create another view in the same process.
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 275faba..3b357d4 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -528,18 +528,17 @@
 // static
 std::unique_ptr<RenderWidgetHostIterator>
 RenderWidgetHost::GetRenderWidgetHosts() {
-  std::unique_ptr<RenderWidgetHostIteratorImpl> hosts(
-      new RenderWidgetHostIteratorImpl());
+  auto hosts = std::make_unique<RenderWidgetHostIteratorImpl>();
   for (auto& it : g_routing_id_widget_map.Get()) {
-    RenderWidgetHost* widget = it.second;
-
-    RenderViewHost* rvh = RenderViewHost::From(widget);
+    RenderWidgetHostImpl* widget = it.second;
+    RenderViewHost* rvh = widget->GetRenderViewHost();
+    // If the widget is not for a main frame, add to |hosts|.
     if (!rvh) {
       hosts->Add(widget);
       continue;
     }
 
-    // For RenderViewHosts, add only active ones.
+    // If the widget is for a main frame, add only if active.
     if (static_cast<RenderViewHostImpl*>(rvh)->is_active())
       hosts->Add(widget);
   }
@@ -563,6 +562,10 @@
   return static_cast<RenderWidgetHostImpl*>(rwh);
 }
 
+RenderViewHost* RenderWidgetHostImpl::GetRenderViewHost() {
+  return owner_delegate_ ? owner_delegate_->GetRenderViewHost() : nullptr;
+}
+
 void RenderWidgetHostImpl::SetView(RenderWidgetHostViewBase* view) {
   if (view) {
     view_ = view->GetWeakPtr();
@@ -1092,8 +1095,8 @@
   GetWidgetInputHandler()->SetFocus(focused);
 
   // Also send page-level focus state to other SiteInstances involved in
-  // rendering the current FrameTree.
-  if (RenderViewHost::From(this) && delegate_)
+  // rendering the current FrameTree, if this widget is for a main frame.
+  if (owner_delegate_ && delegate_)
     delegate_->ReplicatePageFocus(focused);
 }
 
@@ -2719,10 +2722,6 @@
          delegate_->ShouldIgnoreInputEvents();
 }
 
-void RenderWidgetHostImpl::SetBackgroundOpaque(bool opaque) {
-  Send(new WidgetMsg_SetBackgroundOpaque(GetRoutingID(), opaque));
-}
-
 bool RenderWidgetHostImpl::GotResponseToLockMouseRequest(bool allowed) {
   if (!allowed) {
     RejectMouseLockOrUnlockIfNecessary();
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 4557cf72..005d6f0 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -101,11 +101,11 @@
 }
 
 namespace content {
-
 class BrowserAccessibilityManager;
 class FlingSchedulerBase;
 class InputRouter;
 class MockRenderWidgetHost;
+class RenderViewHost;
 class RenderWidgetHostOwnerDelegate;
 class SyntheticGestureController;
 class TimeoutMonitor;
@@ -174,6 +174,10 @@
 
   RenderWidgetHostOwnerDelegate* owner_delegate() { return owner_delegate_; }
 
+  // Gets the RenderViewHost from the owner delegate if this RenderWidgetHost
+  // is for a main frame (and thus has an owner delegate).
+  RenderViewHost* GetRenderViewHost();
+
   void set_clock_for_testing(const base::TickClock* clock) { clock_ = clock; }
 
   // Returns the viz::FrameSinkId that this object uses to put things on screen.
@@ -483,9 +487,6 @@
 
   bool has_touch_handler() const { return has_touch_handler_; }
 
-  // Set the RenderView background transparency.
-  void SetBackgroundOpaque(bool opaque);
-
   // Called when the response to a pending mouse lock request has arrived.
   // Returns true if |allowed| is true and the mouse has been successfully
   // locked.
diff --git a/content/browser/renderer_host/render_widget_host_owner_delegate.h b/content/browser/renderer_host/render_widget_host_owner_delegate.h
index 314ac7788..dc52b8e 100644
--- a/content/browser/renderer_host/render_widget_host_owner_delegate.h
+++ b/content/browser/renderer_host/render_widget_host_owner_delegate.h
@@ -11,9 +11,13 @@
 class WebMouseEvent;
 }
 
-namespace content {
+namespace gfx {
+class Rect;
+}
 
+namespace content {
 struct NativeWebKeyboardEvent;
+class RenderViewHost;
 
 //
 // RenderWidgetHostOwnerDelegate
@@ -68,6 +72,17 @@
   // the bounds of the content area.
   virtual void RequestSetBounds(const gfx::Rect& bounds) = 0;
 
+  // When false, this allows the renderer's output to be transparent. By default
+  // the renderer's background is forced to be opaque.
+  virtual void SetBackgroundOpaque(bool opaque) = 0;
+
+  // Returns the RenderViewHost, which holds the frame tree for this
+  // RenderWidgetHost.
+  // TODO(danakj): This should not exist, instead any use of RenderViewHost
+  // should go through specific methods in this delegate interface.
+  // DO NOT ADD NEW CALLS TO THIS METHOD.
+  virtual RenderViewHost* GetRenderViewHost() = 0;
+
  protected:
   virtual ~RenderWidgetHostOwnerDelegate() {}
 };
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
index b8cf7f8..7a77e94 100644
--- a/content/browser/renderer_host/render_widget_host_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -49,8 +49,10 @@
 #include "content/test/fake_renderer_compositor_frame_sink.h"
 #include "content/test/mock_widget_impl.h"
 #include "content/test/mock_widget_input_handler.h"
+#include "content/test/stub_render_widget_host_owner_delegate.h"
 #include "content/test/test_render_view_host.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/display/screen.h"
 #include "ui/events/base_event_utils.h"
@@ -86,6 +88,8 @@
 using blink::WebTouchEvent;
 using blink::WebTouchPoint;
 
+using testing::_;
+
 namespace content {
 
 // MockInputRouter -------------------------------------------------------------
@@ -652,6 +656,12 @@
   int focus_owning_web_contents_call_count = 0;
 };
 
+class MockRenderWidgetHostOwnerDelegate
+    : public StubRenderWidgetHostOwnerDelegate {
+ public:
+  MOCK_METHOD1(SetBackgroundOpaque, void(bool opaque));
+};
+
 // RenderWidgetHostTest --------------------------------------------------------
 
 class RenderWidgetHostTest : public testing::Test {
@@ -701,6 +711,8 @@
 #endif
     host_.reset(MockRenderWidgetHost::Create(delegate_.get(), process_,
                                              process_->GetNextRoutingID()));
+    // Set up the RenderWidgetHost as being for a main frame.
+    host_->set_owner_delegate(&mock_owner_delegate_);
     view_.reset(new TestView(host_.get()));
     ConfigureView(view_.get());
     host_->SetView(view_.get());
@@ -912,6 +924,7 @@
   std::unique_ptr<TestBrowserContext> browser_context_;
   RenderWidgetHostProcess* process_;  // Deleted automatically by the widget.
   std::unique_ptr<MockRenderWidgetHostDelegate> delegate_;
+  testing::NiceMock<MockRenderWidgetHostOwnerDelegate> mock_owner_delegate_;
   std::unique_ptr<MockRenderWidgetHost> host_;
   std::unique_ptr<TestView> view_;
   std::unique_ptr<display::Screen> screen_;
@@ -1182,18 +1195,34 @@
   host_->SetView(view.get());
 
   ASSERT_FALSE(view->GetBackgroundColor());
-  view->SetBackgroundColor(SK_ColorTRANSPARENT);
-  ASSERT_TRUE(view->GetBackgroundColor());
-  EXPECT_EQ(static_cast<unsigned>(SK_ColorTRANSPARENT),
-            *view->GetBackgroundColor());
 
-  const IPC::Message* set_background =
-      process_->sink().GetUniqueMessageMatching(
-          WidgetMsg_SetBackgroundOpaque::ID);
-  ASSERT_TRUE(set_background);
-  std::tuple<bool> sent_background;
-  WidgetMsg_SetBackgroundOpaque::Read(set_background, &sent_background);
-  EXPECT_FALSE(std::get<0>(sent_background));
+  {
+    // The background is assumed opaque by default, so choosing opaque won't
+    // do anything if it's not set to transparent first.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(_)).Times(0);
+    view->SetBackgroundColor(SK_ColorRED);
+    EXPECT_EQ(unsigned{SK_ColorRED}, *view->GetBackgroundColor());
+  }
+  {
+    // Another opaque color doesn't inform the view of any change.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(_)).Times(0);
+    view->SetBackgroundColor(SK_ColorBLUE);
+    EXPECT_EQ(unsigned{SK_ColorBLUE}, *view->GetBackgroundColor());
+  }
+  {
+    // The owner delegate will be called to pass it over IPC to the RenderView.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(false));
+    view->SetBackgroundColor(SK_ColorTRANSPARENT);
+    // The browser side will represent the background color as transparent
+    // immediately.
+    EXPECT_EQ(unsigned{SK_ColorTRANSPARENT}, *view->GetBackgroundColor());
+  }
+  {
+    // Setting back an opaque color informs the view.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(true));
+    view->SetBackgroundColor(SK_ColorBLUE);
+    EXPECT_EQ(unsigned{SK_ColorBLUE}, *view->GetBackgroundColor());
+  }
 
   host_->SetView(nullptr);
   static_cast<RenderWidgetHostViewBase*>(view.release())->Destroy();
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 3d7e7270..39afb7ea 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -394,10 +394,12 @@
       new TouchSelectionControllerClientAura(this));
   CreateSelectionController();
 
-  RenderViewHost* rvh = RenderViewHost::From(host());
+  RenderViewHost* rvh = host()->GetRenderViewHost();
   if (rvh) {
     // TODO(mostynb): actually use prefs.  Landing this as a separate CL
     // first to rebaseline some unreliable web tests.
+    // NOTE: This will not be run for child frame widgets, which do not have
+    // an owner delegate and won't get a RenderViewHost here.
     ignore_result(rvh->GetWebkitPreferences());
   }
 }
@@ -601,7 +603,8 @@
 }
 
 RenderFrameHostImpl* RenderWidgetHostViewAura::GetFocusedFrame() const {
-  RenderViewHost* rvh = RenderViewHost::From(host());
+  RenderViewHost* rvh = host()->GetRenderViewHost();
+  // TODO(crbug.com/689777): Child local roots do not work here?
   if (!rvh)
     return nullptr;
   FrameTreeNode* focused_frame =
@@ -1666,7 +1669,8 @@
 }
 
 bool RenderWidgetHostViewAura::RequiresDoubleTapGestureEvents() const {
-  RenderViewHost* rvh = RenderViewHost::From(host());
+  RenderViewHost* rvh = host()->GetRenderViewHost();
+  // TODO(crbug.com/916715): Child local roots do not work here?
   return rvh && rvh->GetWebkitPreferences().double_tap_to_zoom_enabled;
 }
 
@@ -2195,7 +2199,10 @@
     const ContextMenuParams& params) {
   // Use RenderViewHostDelegate to get to the WebContentsViewAura, which will
   // actually show the disambiguation popup.
-  RenderViewHost* rvh = RenderViewHost::From(host());
+  // NOTE: This only works for main frame widgets then, as child frame widgets
+  // don't have an owner delegate and won't get access to the RenderViewHost
+  // here.
+  RenderViewHost* rvh = host()->GetRenderViewHost();
   if (!rvh)
     return;
 
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index 4972538..7e2761a 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -24,6 +24,7 @@
 #include "content/browser/renderer_host/render_widget_host_delegate.h"
 #include "content/browser/renderer_host/render_widget_host_impl.h"
 #include "content/browser/renderer_host/render_widget_host_input_event_router.h"
+#include "content/browser/renderer_host/render_widget_host_owner_delegate.h"
 #include "content/browser/renderer_host/render_widget_host_view_base_observer.h"
 #include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
 #include "content/browser/renderer_host/text_input_manager.h"
@@ -319,6 +320,9 @@
 }
 
 void RenderWidgetHostViewBase::SetBackgroundColor(SkColor color) {
+  // TODO(danakj): OPAQUE colors only make sense for main frame widgets,
+  // as child frames are always transparent background. We should move this to
+  // RenderView instead.
   DCHECK(SkColorGetA(color) == SK_AlphaOPAQUE ||
          SkColorGetA(color) == SK_AlphaTRANSPARENT);
   if (default_background_color_ == color)
@@ -329,8 +333,12 @@
                     : SK_AlphaOPAQUE;
   default_background_color_ = color;
   UpdateBackgroundColor();
-  if (opaque != (SkColorGetA(color) == SK_AlphaOPAQUE))
-    host()->SetBackgroundOpaque(SkColorGetA(color) == SK_AlphaOPAQUE);
+  if (opaque != (SkColorGetA(color) == SK_AlphaOPAQUE)) {
+    if (host()->owner_delegate()) {
+      host()->owner_delegate()->SetBackgroundOpaque(SkColorGetA(color) ==
+                                                    SK_AlphaOPAQUE);
+    }
+  }
 }
 
 base::Optional<SkColor> RenderWidgetHostViewBase::GetBackgroundColor() const {
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
index 0cca8ca0..347321e 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -370,7 +370,10 @@
   SkColor color = *GetBackgroundColor();
   DCHECK(SkColorGetA(color) == SK_AlphaOPAQUE ||
          SkColorGetA(color) == SK_AlphaTRANSPARENT);
-  host()->SetBackgroundOpaque(SkColorGetA(color) == SK_AlphaOPAQUE);
+  if (host()->owner_delegate()) {
+    host()->owner_delegate()->SetBackgroundOpaque(SkColorGetA(color) ==
+                                                  SK_AlphaOPAQUE);
+  }
 }
 
 gfx::Size RenderWidgetHostViewChildFrame::GetCompositorViewportPixelSize()
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 56ca791..45bd523 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -212,12 +212,14 @@
         GetFrameSinkId(), this);
   }
 
-  RenderViewHost* rvh = RenderViewHost::From(host());
+  RenderViewHost* rvh = host()->GetRenderViewHost();
   bool needs_begin_frames = true;
 
   if (rvh) {
     // TODO(mostynb): actually use prefs.  Landing this as a separate CL
     // first to rebaseline some unreliable web tests.
+    // NOTE: This will not be run for child frame widgets, which do not have
+    // an owner delegate and won't get a RenderViewHost here.
     ignore_result(rvh->GetWebkitPreferences());
     needs_begin_frames = !rvh->GetDelegate()->IsNeverVisible();
   }
@@ -995,7 +997,7 @@
 }
 
 WebContents* RenderWidgetHostViewMac::GetWebContents() {
-  return WebContents::FromRenderViewHost(RenderViewHost::From(host()));
+  return WebContents::FromRenderViewHost(host()->GetRenderViewHost());
 }
 
 bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange(
@@ -1455,7 +1457,9 @@
 }
 
 bool RenderWidgetHostViewMac::SyncIsRenderViewHost(bool* is_render_view) {
-  *is_render_view = RenderViewHost::From(host()) != nullptr;
+  // TODO(danakj): This should return true/false if there is an owner delegate
+  // instead of checking if it is a RenderViewHost.
+  *is_render_view = host()->GetRenderViewHost() != nullptr;
   return true;
 }
 
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
index ed58d5a..7f04243d8 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -32,6 +32,7 @@
 #include "content/browser/renderer_host/text_input_manager.h"
 #include "content/common/input_messages.h"
 #include "content/common/text_input_state.h"
+#include "content/common/view_messages.h"
 #include "content/common/widget_messages.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -44,6 +45,7 @@
 #include "content/public/test/test_utils.h"
 #include "content/test/mock_render_widget_host_delegate.h"
 #include "content/test/mock_widget_impl.h"
+#include "content/test/stub_render_widget_host_owner_delegate.h"
 #include "content/test/test_render_view_host.h"
 #include "gpu/ipc/common/gpu_messages.h"
 #include "gpu/ipc/service/image_transport_surface.h"
@@ -63,6 +65,8 @@
 #include "ui/events/test/cocoa_test_event_utils.h"
 #include "ui/latency/latency_info.h"
 
+using testing::_;
+
 // Helper class with methods used to mock -[NSEvent phase], used by
 // |MockScrollWheelEventWithPhase()|.
 @interface MockPhaseMethods : NSObject {
@@ -455,6 +459,12 @@
   return MockScrollWheelEventWithMomentumPhase(@selector(phaseNone), delta);
 }
 
+class MockRenderWidgetHostOwnerDelegate
+    : public StubRenderWidgetHostOwnerDelegate {
+ public:
+  MOCK_METHOD1(SetBackgroundOpaque, void(bool opaque));
+};
+
 }  // namespace
 
 class RenderWidgetHostViewMacTest : public RenderViewHostImplTestHarness {
@@ -473,9 +483,10 @@
     process_host_ =
         std::make_unique<MockRenderProcessHost>(browser_context_.get());
     process_host_->Init();
-    host_ = MockRenderWidgetHostImpl::Create(&delegate_, process_host_.get(),
-                                             process_host_->GetNextRoutingID());
-    rwhv_mac_ = new RenderWidgetHostViewMac(host_, false);
+    host_ = base::WrapUnique(MockRenderWidgetHostImpl::Create(
+        &delegate_, process_host_.get(), process_host_->GetNextRoutingID()));
+    host_->set_owner_delegate(&mock_owner_delegate_);
+    rwhv_mac_ = new RenderWidgetHostViewMac(host_.get(), false);
     rwhv_cocoa_.reset([rwhv_mac_->cocoa_view() retain]);
 
     base::RunLoop().RunUntilIdle();
@@ -484,7 +495,10 @@
 
   void TearDown() override {
     rwhv_cocoa_.reset();
-    host_->ShutdownAndDestroyWidget(true);
+    // RenderWidgetHostImpls with an owner delegate are not expected to be self-
+    // deleting.
+    host_->ShutdownAndDestroyWidget(/*also_delete=*/false);
+    host_.reset();
     process_host_.reset();
     browser_context_.reset();
     RecycleAndWait();
@@ -518,7 +532,8 @@
 
   std::unique_ptr<TestBrowserContext> browser_context_;
   std::unique_ptr<MockRenderProcessHost> process_host_;
-  MockRenderWidgetHostImpl* host_ = nullptr;
+  testing::NiceMock<MockRenderWidgetHostOwnerDelegate> mock_owner_delegate_;
+  std::unique_ptr<MockRenderWidgetHostImpl> host_;
   RenderWidgetHostViewMac* rwhv_mac_ = nullptr;
   base::scoped_nsobject<RenderWidgetHostViewCocoa> rwhv_cocoa_;
 
@@ -888,25 +903,25 @@
 
   EXPECT_CALL(*host_, Focus());
   [window makeFirstResponder:rwhv_mac_->cocoa_view()];
-  testing::Mock::VerifyAndClearExpectations(host_);
+  testing::Mock::VerifyAndClearExpectations(host_.get());
 
   EXPECT_CALL(*host_, Blur());
   rwhv_mac_->SetActive(false);
-  testing::Mock::VerifyAndClearExpectations(host_);
+  testing::Mock::VerifyAndClearExpectations(host_.get());
 
   EXPECT_CALL(*host_, Focus());
   rwhv_mac_->SetActive(true);
-  testing::Mock::VerifyAndClearExpectations(host_);
+  testing::Mock::VerifyAndClearExpectations(host_.get());
 
   // Unsetting first responder should blur.
   EXPECT_CALL(*host_, Blur());
   [window makeFirstResponder:nil];
-  testing::Mock::VerifyAndClearExpectations(host_);
+  testing::Mock::VerifyAndClearExpectations(host_.get());
 
   // |SetActive()| shoud not focus if view is not first responder.
   EXPECT_CALL(*host_, Focus()).Times(0);
   rwhv_mac_->SetActive(true);
-  testing::Mock::VerifyAndClearExpectations(host_);
+  testing::Mock::VerifyAndClearExpectations(host_.get());
 }
 
 TEST_F(RenderWidgetHostViewMacTest, LastWheelEventLatencyInfoExists) {
@@ -1228,52 +1243,36 @@
 // RenderWidgetHostTest.Background. This test has some additional checks for
 // Mac.
 TEST_F(RenderWidgetHostViewMacTest, Background) {
-  const IPC::Message* set_background = nullptr;
-  std::tuple<bool> sent_background;
-
   // If no color has been specified then background_color is not set yet.
   ASSERT_FALSE(rwhv_mac_->GetBackgroundColor());
 
-  // Set the color to red. The background is initially assumed to be opaque, so
-  // no opacity message change should be sent.
-  rwhv_mac_->SetBackgroundColor(SK_ColorRED);
-  EXPECT_EQ(static_cast<unsigned>(SK_ColorRED),
-            *rwhv_mac_->GetBackgroundColor());
-  set_background = process_host_->sink().GetUniqueMessageMatching(
-      WidgetMsg_SetBackgroundOpaque::ID);
-  ASSERT_FALSE(set_background);
-
-  // Set the color to blue. This should not send an opacity message.
-  rwhv_mac_->SetBackgroundColor(SK_ColorBLUE);
-  EXPECT_EQ(static_cast<unsigned>(SK_ColorBLUE),
-            *rwhv_mac_->GetBackgroundColor());
-  set_background = process_host_->sink().GetUniqueMessageMatching(
-      WidgetMsg_SetBackgroundOpaque::ID);
-  ASSERT_FALSE(set_background);
-
-  // Set the color back to transparent. The background color should now be
-  // reported as the default (white), and a transparency change message should
-  // be sent.
-  process_host_->sink().ClearMessages();
-  rwhv_mac_->SetBackgroundColor(SK_ColorTRANSPARENT);
-  EXPECT_EQ(static_cast<unsigned>(SK_ColorWHITE),
-            *rwhv_mac_->GetBackgroundColor());
-  set_background = process_host_->sink().GetUniqueMessageMatching(
-      WidgetMsg_SetBackgroundOpaque::ID);
-  ASSERT_TRUE(set_background);
-  WidgetMsg_SetBackgroundOpaque::Read(set_background, &sent_background);
-  EXPECT_FALSE(std::get<0>(sent_background));
-
-  // Set the color to red. This should send an opacity message.
-  process_host_->sink().ClearMessages();
-  rwhv_mac_->SetBackgroundColor(SK_ColorBLUE);
-  EXPECT_EQ(static_cast<unsigned>(SK_ColorBLUE),
-            *rwhv_mac_->GetBackgroundColor());
-  set_background = process_host_->sink().GetUniqueMessageMatching(
-      WidgetMsg_SetBackgroundOpaque::ID);
-  ASSERT_TRUE(set_background);
-  WidgetMsg_SetBackgroundOpaque::Read(set_background, &sent_background);
-  EXPECT_TRUE(std::get<0>(sent_background));
+  {
+    // Set the color to red. The background is initially assumed to be opaque,
+    // so no opacity message change should be sent.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(_)).Times(0);
+    rwhv_mac_->SetBackgroundColor(SK_ColorRED);
+    EXPECT_EQ(unsigned{SK_ColorRED}, *rwhv_mac_->GetBackgroundColor());
+  }
+  {
+    // Set the color to blue. This should not send an opacity message.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(_)).Times(0);
+    rwhv_mac_->SetBackgroundColor(SK_ColorBLUE);
+    EXPECT_EQ(unsigned{SK_ColorBLUE}, *rwhv_mac_->GetBackgroundColor());
+  }
+  {
+    // Set the color back to transparent. The background color should now be
+    // reported as the default (white), and a transparency change message should
+    // be sent.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(false));
+    rwhv_mac_->SetBackgroundColor(SK_ColorTRANSPARENT);
+    EXPECT_EQ(unsigned{SK_ColorWHITE}, *rwhv_mac_->GetBackgroundColor());
+  }
+  {
+    // Set the color to blue. This should send an opacity message.
+    EXPECT_CALL(mock_owner_delegate_, SetBackgroundOpaque(true));
+    rwhv_mac_->SetBackgroundColor(SK_ColorBLUE);
+    EXPECT_EQ(unsigned{SK_ColorBLUE}, *rwhv_mac_->GetBackgroundColor());
+  }
 }
 
 // Scrolling with a mouse wheel device on Mac won't give phase information.
diff --git a/content/browser/service_manager/service_manager_context.cc b/content/browser/service_manager/service_manager_context.cc
index 5390419..0f8d4ba4 100644
--- a/content/browser/service_manager/service_manager_context.cc
+++ b/content/browser/service_manager/service_manager_context.cc
@@ -22,6 +22,7 @@
 #include "base/no_destructor.h"
 #include "base/process/process_handle.h"
 #include "base/single_thread_task_runner.h"
+#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "build/build_config.h"
@@ -55,7 +56,6 @@
 #include "mojo/public/cpp/system/invitation.h"
 #include "services/audio/public/mojom/constants.mojom.h"
 #include "services/audio/service_factory.h"
-#include "services/catalog/manifest_provider.h"
 #include "services/catalog/public/cpp/manifest_parsing_util.h"
 #include "services/catalog/public/mojom/constants.mojom.h"
 #include "services/data_decoder/public/mojom/constants.mojom.h"
@@ -76,6 +76,7 @@
 #include "services/service_manager/embedder/manifest_utils.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/constants.h"
+#include "services/service_manager/public/cpp/manifest.h"
 #include "services/service_manager/public/cpp/service.h"
 #include "services/service_manager/public/mojom/service.mojom.h"
 #include "services/service_manager/runner/common/client_util.h"
@@ -217,53 +218,32 @@
                                  std::move(pid_receiver));
 }
 
-// A ManifestProvider which resolves application names to builtin manifest
-// resources for the catalog service to consume.
-class BuiltinManifestProvider : public catalog::ManifestProvider {
- public:
-  BuiltinManifestProvider() {}
-  ~BuiltinManifestProvider() override {}
+service_manager::Manifest LoadServiceManifest(base::StringPiece service_name,
+                                              int resource_id) {
+  std::string contents =
+      GetContentClient()
+          ->GetDataResource(resource_id, ui::ScaleFactor::SCALE_FACTOR_NONE)
+          .as_string();
+  DCHECK(!contents.empty());
 
-  void AddServiceManifest(base::StringPiece name, int resource_id) {
-    std::string contents =
-        GetContentClient()
-            ->GetDataResource(resource_id, ui::ScaleFactor::SCALE_FACTOR_NONE)
-            .as_string();
-    DCHECK(!contents.empty());
+  service_manager::Manifest manifest =
+      service_manager::Manifest::FromValueDeprecated(
+          base::JSONReader::Read(contents));
+  base::Optional<service_manager::Manifest> overlay =
+      GetContentClient()->browser()->GetServiceManifestOverlay(service_name);
+  if (overlay)
+    manifest.Amend(*overlay);
 
-    std::unique_ptr<base::Value> manifest_value =
-        base::JSONReader::Read(contents);
-    DCHECK(manifest_value);
-
-    std::unique_ptr<base::Value> overlay_value =
-        GetContentClient()->browser()->GetServiceManifestOverlay(name);
-
-    service_manager::MergeManifestWithOverlay(manifest_value.get(),
-                                              overlay_value.get());
-
-    base::Optional<catalog::RequiredFileMap> required_files =
-        catalog::RetrieveRequiredFiles(*manifest_value);
-    if (required_files) {
-      ChildProcessLauncher::SetRegisteredFilesForService(
-          name.as_string(), std::move(*required_files));
-    }
-
-    auto result = manifests_.insert(
-        std::make_pair(name.as_string(), std::move(manifest_value)));
-    DCHECK(result.second) << "Duplicate manifest entry: " << name;
+  if (!manifest.preloaded_files.empty()) {
+    std::map<std::string, base::FilePath> preloaded_files_map;
+    for (const auto& info : manifest.preloaded_files)
+      preloaded_files_map.emplace(info.key, info.path);
+    ChildProcessLauncher::SetRegisteredFilesForService(
+        service_name.as_string(), std::move(preloaded_files_map));
   }
 
- private:
-  // catalog::ManifestProvider:
-  std::unique_ptr<base::Value> GetManifest(const std::string& name) override {
-    auto it = manifests_.find(name);
-    return it != manifests_.end() ? it->second->CreateDeepCopy() : nullptr;
-  }
-
-  std::map<std::string, std::unique_ptr<base::Value>> manifests_;
-
-  DISALLOW_COPY_AND_ASSIGN(BuiltinManifestProvider);
-};
+  return manifest;
+}
 
 class NullServiceProcessLauncherFactory
     : public service_manager::ServiceProcessLauncherFactory {
@@ -461,13 +441,12 @@
 
   void Start(
       service_manager::mojom::ServicePtrInfo packaged_services_service_info,
-      std::unique_ptr<BuiltinManifestProvider> manifest_provider) {
+      std::vector<service_manager::Manifest> manifests) {
     service_manager_thread_task_runner_->PostTask(
         FROM_HERE,
         base::BindOnce(
             &InProcessServiceManagerContext::StartOnServiceManagerThread, this,
-            std::move(manifest_provider),
-            std::move(packaged_services_service_info),
+            std::move(manifests), std::move(packaged_services_service_info),
             base::ThreadTaskRunnerHandle::Get()));
   }
 
@@ -492,10 +471,9 @@
   ~InProcessServiceManagerContext() {}
 
   void StartOnServiceManagerThread(
-      std::unique_ptr<BuiltinManifestProvider> manifest_provider,
+      std::vector<service_manager::Manifest> manifests,
       service_manager::mojom::ServicePtrInfo packaged_services_service_info,
       scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner) {
-    manifest_provider_ = std::move(manifest_provider);
     std::unique_ptr<service_manager::ServiceProcessLauncherFactory>
         service_process_launcher_factory;
     if (base::CommandLine::ForCurrentProcess()->HasSwitch(
@@ -507,8 +485,7 @@
           std::make_unique<NullServiceProcessLauncherFactory>();
     }
     service_manager_ = std::make_unique<service_manager::ServiceManager>(
-        std::move(service_process_launcher_factory), nullptr,
-        manifest_provider_.get());
+        std::move(service_process_launcher_factory), std::move(manifests));
 
     service_manager::mojom::ServicePtr packaged_services_service;
     packaged_services_service.Bind(std::move(packaged_services_service_info));
@@ -542,7 +519,6 @@
 
   void ShutDownOnServiceManagerThread() {
     service_manager_.reset();
-    manifest_provider_.reset();
   }
 
   void StartServicesOnServiceManagerThread(
@@ -556,7 +532,6 @@
 
   scoped_refptr<base::SingleThreadTaskRunner>
       service_manager_thread_task_runner_;
-  std::unique_ptr<BuiltinManifestProvider> manifest_provider_;
   std::unique_ptr<service_manager::ServiceManager> service_manager_;
 
   DISALLOW_COPY_AND_ASSIGN(InProcessServiceManagerContext);
@@ -578,13 +553,10 @@
     packaged_services_request =
         service_manager::GetServiceRequestFromCommandLine(&invitation);
   } else {
-    std::unique_ptr<BuiltinManifestProvider> manifest_provider =
-        std::make_unique<BuiltinManifestProvider>();
-
     static const struct ManifestInfo {
       const char* name;
       int resource_id;
-    } kManifests[] = {
+    } kManifestInfo[] = {
         {mojom::kBrowserServiceName, IDR_MOJO_CONTENT_BROWSER_MANIFEST},
         {mojom::kGpuServiceName, IDR_MOJO_CONTENT_GPU_MANIFEST},
         {mojom::kPackagedServicesServiceName,
@@ -594,15 +566,15 @@
         {mojom::kUtilityServiceName, IDR_MOJO_CONTENT_UTILITY_MANIFEST},
         {catalog::mojom::kServiceName, IDR_MOJO_CATALOG_MANIFEST},
     };
-
-    for (size_t i = 0; i < arraysize(kManifests); ++i) {
-      manifest_provider->AddServiceManifest(kManifests[i].name,
-                                            kManifests[i].resource_id);
+    std::vector<service_manager::Manifest> manifests;
+    for (const auto& manifest_info : kManifestInfo) {
+      manifests.push_back(
+          LoadServiceManifest(manifest_info.name, manifest_info.resource_id));
     }
     for (const auto& manifest :
          GetContentClient()->browser()->GetExtraServiceManifests()) {
-      manifest_provider->AddServiceManifest(manifest.name,
-                                            manifest.resource_id);
+      manifests.push_back(
+          LoadServiceManifest(manifest.name, manifest.resource_id));
     }
     in_process_context_ =
         new InProcessServiceManagerContext(service_manager_thread_task_runner_);
@@ -610,7 +582,7 @@
     service_manager::mojom::ServicePtr packaged_services_service;
     packaged_services_request = mojo::MakeRequest(&packaged_services_service);
     in_process_context_->Start(packaged_services_service.PassInterface(),
-                               std::move(manifest_provider));
+                               std::move(manifests));
   }
 
   packaged_services_connection_ =
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index ec4b194..166635d8 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -482,7 +482,6 @@
   blink::ParsedFeaturePolicy result(1);
   result[0].feature = feature;
   result[0].matches_all_origins = false;
-  result[0].disposition = blink::mojom::FeaturePolicyDisposition::kEnforce;
   DCHECK(!origins.empty());
   for (const GURL& origin : origins)
     result[0].origins.push_back(url::Origin::Create(origin));
@@ -499,7 +498,6 @@
   blink::ParsedFeaturePolicy result(1);
   result[0].feature = feature;
   result[0].matches_all_origins = true;
-  result[0].disposition = blink::mojom::FeaturePolicyDisposition::kEnforce;
   return result;
 }
 
diff --git a/content/browser/web_contents/aura/overscroll_navigation_overlay.cc b/content/browser/web_contents/aura/overscroll_navigation_overlay.cc
deleted file mode 100644
index ac90d33..0000000
--- a/content/browser/web_contents/aura/overscroll_navigation_overlay.cc
+++ /dev/null
@@ -1,297 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_navigation_overlay.h"
-
-#include <utility>
-#include <vector>
-
-#include "base/i18n/rtl.h"
-#include "base/macros.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/metrics/user_metrics.h"
-#include "content/browser/frame_host/navigation_entry_impl.h"
-#include "content/browser/renderer_host/render_view_host_impl.h"
-#include "content/browser/web_contents/aura/overscroll_window_delegate.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/common/view_messages.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "ui/aura/window.h"
-#include "ui/base/layout.h"
-#include "ui/compositor/layer.h"
-#include "ui/compositor/layer_animation_observer.h"
-#include "ui/compositor/paint_recorder.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/image/image_png_rep.h"
-
-namespace content {
-namespace {
-
-// Returns true if the entry's URL or any of the URLs in entry's redirect chain
-// match |url|.
-bool DoesEntryMatchURL(NavigationEntry* entry, const GURL& url) {
-  if (!entry)
-    return false;
-  if (entry->GetURL() == url)
-    return true;
-  const std::vector<GURL>& redirect_chain = entry->GetRedirectChain();
-  for (auto it = redirect_chain.begin(); it != redirect_chain.end(); it++) {
-    if (*it == url)
-      return true;
-  }
-  return false;
-}
-
-// Records UMA histogram and also user action for the cancelled overscroll.
-void RecordNavigationOverscrollCancelled(NavigationDirection direction,
-                                         OverscrollSource source) {
-  UMA_HISTOGRAM_ENUMERATION("Overscroll.Cancelled3",
-                            GetUmaNavigationType(direction, source),
-                            NAVIGATION_TYPE_COUNT);
-  if (direction == NavigationDirection::BACK)
-    RecordAction(base::UserMetricsAction("Overscroll_Cancelled.Back"));
-  else
-    RecordAction(base::UserMetricsAction("Overscroll_Cancelled.Forward"));
-}
-
-}  // namespace
-
-// Responsible for fading out and deleting the layer of the overlay window.
-class OverlayDismissAnimator : public ui::ImplicitAnimationObserver {
- public:
-  // Takes ownership of the layer.
-  explicit OverlayDismissAnimator(std::unique_ptr<ui::Layer> layer)
-      : layer_(std::move(layer)) {
-    CHECK(layer_.get());
-  }
-
-  // Starts the fadeout animation on the layer. When the animation finishes,
-  // the object deletes itself along with the layer.
-  void Animate() {
-    DCHECK(layer_.get());
-    // This makes SetOpacity() animate with default duration (which could be
-    // zero, e.g. when running tests).
-    ui::ScopedLayerAnimationSettings settings(layer_->GetAnimator());
-    settings.AddObserver(this);
-    layer_->SetOpacity(0);
-  }
-
-  // ui::ImplicitAnimationObserver:
-  void OnImplicitAnimationsCompleted() override { delete this; }
-
- private:
-  std::unique_ptr<ui::Layer> layer_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverlayDismissAnimator);
-};
-
-OverscrollNavigationOverlay::OverscrollNavigationOverlay(
-    WebContentsImpl* web_contents,
-    aura::Window* web_contents_window)
-    : direction_(NavigationDirection::NONE),
-      web_contents_(web_contents),
-      loading_complete_(false),
-      received_paint_update_(false),
-      owa_(new OverscrollWindowAnimation(this)),
-      web_contents_window_(web_contents_window) {
-}
-
-OverscrollNavigationOverlay::~OverscrollNavigationOverlay() {
-  aura::Window* event_window = GetMainWindow();
-  if (owa_->is_active() && event_window)
-    event_window->ReleaseCapture();
-}
-
-void OverscrollNavigationOverlay::StartObserving() {
-  loading_complete_ = false;
-  received_paint_update_ = false;
-  Observe(web_contents_);
-
-  // Assumes the navigation has been initiated.
-  NavigationEntry* pending_entry =
-      web_contents_->GetController().GetPendingEntry();
-  // Save url of the pending entry to identify when it loads and paints later.
-  // Under some circumstances navigation can leave a null pending entry -
-  // see comments in NavigationControllerImpl::NavigateToPendingEntry().
-  pending_entry_url_ = pending_entry ? pending_entry->GetURL() : GURL();
-}
-
-void OverscrollNavigationOverlay::StopObservingIfDone() {
-  // Normally we dismiss the overlay once we receive a paint update, however
-  // for in-page navigations DidFirstVisuallyNonEmptyPaint() does not get
-  // called, and we rely on loading_complete_ for those cases.
-  // If an overscroll gesture is in progress, then do not destroy the window.
-  if (!window_ || !(loading_complete_ || received_paint_update_) ||
-      owa_->is_active()) {
-    return;
-  }
-
-  // OverlayDismissAnimator deletes the dismiss layer and itself when the
-  // animation completes.
-  std::unique_ptr<ui::Layer> dismiss_layer = window_->AcquireLayer();
-  window_.reset();
-  (new OverlayDismissAnimator(std::move(dismiss_layer)))->Animate();
-  Observe(nullptr);
-  received_paint_update_ = false;
-  loading_complete_ = false;
-}
-
-std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateOverlayWindow(
-    const gfx::Rect& bounds) {
-  UMA_HISTOGRAM_ENUMERATION(
-      "Overscroll.Started3",
-      GetUmaNavigationType(direction_, owa_->overscroll_source()),
-      NAVIGATION_TYPE_COUNT);
-  OverscrollWindowDelegate* overscroll_delegate = new OverscrollWindowDelegate(
-      owa_.get(), GetImageForDirection(direction_));
-  std::unique_ptr<aura::Window> window(new aura::Window(overscroll_delegate));
-  window->set_owned_by_parent(false);
-  window->SetTransparent(true);
-  window->Init(ui::LAYER_TEXTURED);
-  window->layer()->SetMasksToBounds(false);
-  window->SetName("OverscrollOverlay");
-  web_contents_window_->AddChild(window.get());
-  aura::Window* event_window = GetMainWindow();
-  if (direction_ == NavigationDirection::FORWARD)
-    web_contents_window_->StackChildAbove(window.get(), event_window);
-  else
-    web_contents_window_->StackChildBelow(window.get(), event_window);
-  window->SetBounds(bounds);
-  // Set capture on the window that is receiving the overscroll events so that
-  // trackpad scroll gestures keep targetting it even if the mouse pointer moves
-  // off its bounds.
-  event_window->SetCapture();
-  window->Show();
-  return window;
-}
-
-const gfx::Image OverscrollNavigationOverlay::GetImageForDirection(
-    NavigationDirection direction) const {
-  const NavigationControllerImpl& controller = web_contents_->GetController();
-  const NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry(
-      controller.GetEntryAtOffset(
-          direction == NavigationDirection::FORWARD ? 1 : -1));
-
-  if (entry && entry->screenshot().get()) {
-    std::vector<gfx::ImagePNGRep> image_reps;
-    image_reps.push_back(gfx::ImagePNGRep(entry->screenshot(), 1.0f));
-    return gfx::Image(image_reps);
-  }
-  return gfx::Image();
-}
-
-std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateFrontWindow(
-    const gfx::Rect& bounds) {
-  if (!web_contents_->GetController().CanGoForward())
-    return nullptr;
-  direction_ = NavigationDirection::FORWARD;
-  return CreateOverlayWindow(bounds);
-}
-
-std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateBackWindow(
-    const gfx::Rect& bounds) {
-  if (!web_contents_->GetController().CanGoBack())
-    return nullptr;
-  direction_ = NavigationDirection::BACK;
-  return CreateOverlayWindow(bounds);
-}
-
-aura::Window* OverscrollNavigationOverlay::GetMainWindow() const {
-  if (window_)
-    return window_.get();
-  return web_contents_->IsBeingDestroyed()
-             ? nullptr
-             : web_contents_->GetContentNativeView();
-}
-
-void OverscrollNavigationOverlay::OnOverscrollCompleting() {
-  aura::Window* main_window = GetMainWindow();
-  if (!main_window)
-    return;
-  main_window->ReleaseCapture();
-}
-
-void OverscrollNavigationOverlay::OnOverscrollCompleted(
-    std::unique_ptr<aura::Window> window) {
-  DCHECK_NE(direction_, NavigationDirection::NONE);
-  aura::Window* main_window = GetMainWindow();
-  if (!main_window) {
-    RecordNavigationOverscrollCancelled(direction_, owa_->overscroll_source());
-    return;
-  }
-
-  main_window->SetTransform(gfx::Transform());
-  window_ = std::move(window);
-  // Make sure the window is in its default position.
-  window_->SetBounds(gfx::Rect(web_contents_window_->bounds().size()));
-  window_->SetTransform(gfx::Transform());
-  // Make sure the overlay window is on top.
-  web_contents_window_->StackChildAtTop(window_.get());
-
-  // Make sure we can navigate first, as other factors can trigger a navigation
-  // during an overscroll gesture and navigating without history produces a
-  // crash.
-  bool navigated = false;
-  if (direction_ == NavigationDirection::FORWARD &&
-      web_contents_->GetController().CanGoForward()) {
-    web_contents_->GetController().GoForward();
-    navigated = true;
-  } else if (direction_ == NavigationDirection::BACK &&
-      web_contents_->GetController().CanGoBack()) {
-    web_contents_->GetController().GoBack();
-    navigated = true;
-  } else {
-    // We need to dismiss the overlay without navigating as soon as the
-    // overscroll finishes.
-    RecordNavigationOverscrollCancelled(direction_, owa_->overscroll_source());
-    loading_complete_ = true;
-  }
-
-  if (navigated) {
-    UMA_HISTOGRAM_ENUMERATION(
-        "Overscroll.Navigated3",
-        GetUmaNavigationType(direction_, owa_->overscroll_source()),
-        NAVIGATION_TYPE_COUNT);
-    if (direction_ == NavigationDirection::BACK)
-      RecordAction(base::UserMetricsAction("Overscroll_Navigated.Back"));
-    else
-      RecordAction(base::UserMetricsAction("Overscroll_Navigated.Forward"));
-    StartObserving();
-  }
-
-  direction_ = NavigationDirection::NONE;
-  StopObservingIfDone();
-}
-
-void OverscrollNavigationOverlay::OnOverscrollCancelled() {
-  RecordNavigationOverscrollCancelled(direction_, owa_->overscroll_source());
-  aura::Window* main_window = GetMainWindow();
-  if (!main_window)
-    return;
-  main_window->ReleaseCapture();
-  direction_ = NavigationDirection::NONE;
-  StopObservingIfDone();
-}
-
-void OverscrollNavigationOverlay::DidFirstVisuallyNonEmptyPaint() {
-  NavigationEntry* visible_entry =
-      web_contents_->GetController().GetVisibleEntry();
-  if (pending_entry_url_.is_empty() ||
-      DoesEntryMatchURL(visible_entry, pending_entry_url_)) {
-    received_paint_update_ = true;
-    StopObservingIfDone();
-  }
-}
-
-void OverscrollNavigationOverlay::DidStopLoading() {
-  // Don't compare URLs in this case - it's possible they won't match if
-  // a gesture-nav initiated navigation was interrupted by some other in-site
-  // navigation (e.g., from a script, or from a bookmark).
-  loading_complete_ = true;
-  StopObservingIfDone();
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/overscroll_navigation_overlay.h b/content/browser/web_contents/aura/overscroll_navigation_overlay.h
deleted file mode 100644
index 4f69dde..0000000
--- a/content/browser/web_contents/aura/overscroll_navigation_overlay.h
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_NAVIGATION_OVERLAY_H_
-#define CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_NAVIGATION_OVERLAY_H_
-
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "content/browser/web_contents/aura/overscroll_window_animation.h"
-#include "content/browser/web_contents/aura/types.h"
-#include "content/browser/web_contents/web_contents_view_aura.h"
-#include "content/common/content_export.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "ui/gfx/image/image.h"
-
-namespace content {
-
-class OverscrollNavigationOverlayTest;
-
-// When a history navigation is triggered at the end of an overscroll
-// navigation, it is necessary to show the history-screenshot until the page is
-// done navigating and painting. This class accomplishes this by calling the
-// navigation and creating, showing and destroying the screenshot window on top
-// of the page until the page has completed loading and painting. When the
-// overscroll completes, this screenshot window is returned by
-// OnOverscrollComplete and |window_| is set to own it.
-// There are two overscroll cases, for the first one the main window is the web
-// contents window. At this stage, |window_| is null. The second case is
-// triggered if the user overscrolls after |window_| is set, before the page
-// finishes loading. When this happens, |window_| is the main window.
-class CONTENT_EXPORT OverscrollNavigationOverlay
-    : public WebContentsObserver,
-      public OverscrollWindowAnimation::Delegate {
- public:
-  OverscrollNavigationOverlay(WebContentsImpl* web_contents,
-                              aura::Window* web_contents_window);
-
-  ~OverscrollNavigationOverlay() override;
-
-  // Returns a pointer to the relay delegate we own.
-  OverscrollControllerDelegate* relay_delegate() { return owa_.get(); }
-
- private:
-  friend class OverscrollNavigationOverlayTest;
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, WithScreenshot);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, WithoutScreenshot);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, CannotNavigate);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, ForwardNavigation);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest,
-                           ForwardNavigationCancelled);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, CancelNavigation);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest,
-                           CancelAfterSuccessfulNavigation);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest, OverlayWindowSwap);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest,
-                           CloseDuringAnimation);
-  FRIEND_TEST_ALL_PREFIXES(OverscrollNavigationOverlayTest,
-                           ImmediateLoadOnNavigate);
-
-  // Resets state and starts observing |web_contents_| for page load/paint
-  // updates. This function makes sure that the screenshot window is stacked
-  // on top, so that it hides the content window behind it, and destroys the
-  // screenshot window when the page is done loading/painting.
-  // This should be called immediately after initiating the navigation,
-  // otherwise the overlay may be dismissed prematurely.
-  void StartObserving();
-
-  // Stop observing the page and start the final overlay fade-out animation if
-  // there's no active overscroll window animation.
-  void StopObservingIfDone();
-
-  // Creates a window that shows a history-screenshot and is stacked relative to
-  // the current overscroll |direction_| with the given |bounds|.
-  std::unique_ptr<aura::Window> CreateOverlayWindow(const gfx::Rect& bounds);
-
-  // Returns an image with the history-screenshot for the previous or next page,
-  // according to the given |direction|.
-  const gfx::Image GetImageForDirection(NavigationDirection direction) const;
-
-  // Overridden from OverscrollWindowAnimation::Delegate:
-  std::unique_ptr<aura::Window> CreateFrontWindow(
-      const gfx::Rect& bounds) override;
-  std::unique_ptr<aura::Window> CreateBackWindow(
-      const gfx::Rect& bounds) override;
-  aura::Window* GetMainWindow() const override;
-  void OnOverscrollCompleting() override;
-  void OnOverscrollCompleted(std::unique_ptr<aura::Window> window) override;
-  void OnOverscrollCancelled() override;
-
-  // Overridden from WebContentsObserver:
-  void DidFirstVisuallyNonEmptyPaint() override;
-  void DidStopLoading() override;
-
-  // The current overscroll direction.
-  NavigationDirection direction_;
-
-  // The web contents that are being navigated.
-  WebContentsImpl* web_contents_;
-
-  // The overlay window that shows a screenshot during an overscroll gesture and
-  // handles overscroll events during the second overscroll case.
-  std::unique_ptr<aura::Window> window_;
-
-  bool loading_complete_;
-  bool received_paint_update_;
-
-  // URL of the NavigationEntry we are navigating to. This is needed to
-  // filter on WebContentsObserver callbacks and is used to dismiss the overlay
-  // when the relevant page loads and paints.
-  GURL pending_entry_url_;
-
-  // Manages the overscroll animations.
-  std::unique_ptr<OverscrollWindowAnimation> owa_;
-
-  // The window that hosts the web contents.
-  aura::Window* web_contents_window_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollNavigationOverlay);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_NAVIGATION_OVERLAY_H_
diff --git a/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc b/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc
deleted file mode 100644
index bdaf4c8..0000000
--- a/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc
+++ /dev/null
@@ -1,558 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_navigation_overlay.h"
-
-#include <string.h>
-#include <utility>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/test/metrics/histogram_tester.h"
-#include "base/test/metrics/user_action_tester.h"
-#include "content/browser/frame_host/navigation_entry_impl.h"
-#include "content/browser/web_contents/aura/types.h"
-#include "content/browser/web_contents/web_contents_view.h"
-#include "content/common/frame_messages.h"
-#include "content/common/widget_messages.h"
-#include "content/public/browser/overscroll_configuration.h"
-#include "content/public/test/mock_render_process_host.h"
-#include "content/test/test_render_frame_host.h"
-#include "content/test/test_render_view_host.h"
-#include "content/test/test_web_contents.h"
-#include "ui/aura/test/test_windows.h"
-#include "ui/aura/window.h"
-#include "ui/aura_extra/image_window_delegate.h"
-#include "ui/compositor/scoped_animation_duration_scale_mode.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/compositor/test/layer_animator_test_controller.h"
-#include "ui/events/gesture_detection/gesture_configuration.h"
-#include "ui/events/test/event_generator.h"
-#include "ui/gfx/codec/png_codec.h"
-
-namespace content {
-namespace {
-
-const char kUmaStarted[] = "Overscroll.Started3";
-const char kUmaCancelled[] = "Overscroll.Cancelled3";
-const char kUmaNavigated[] = "Overscroll.Navigated3";
-
-const char kActionCancelledBack[] = "Overscroll_Cancelled.Back";
-const char kActionCancelledForward[] = "Overscroll_Cancelled.Forward";
-const char kActionNavigatedBack[] = "Overscroll_Navigated.Back";
-const char kActionNavigatedForward[] = "Overscroll_Navigated.Forward";
-
-}  // namespace
-
-// Forces web contents to complete web page load as soon as navigation starts.
-class ImmediateLoadObserver : WebContentsObserver {
- public:
-  explicit ImmediateLoadObserver(TestWebContents* contents)
-      : contents_(contents) {
-    Observe(contents);
-  }
-  ~ImmediateLoadObserver() override {}
-
-  void DidStartNavigationToPendingEntry(const GURL& url,
-                                        ReloadType reload_type) override {
-    // Simulate immediate web page load.
-    contents_->TestSetIsLoading(false);
-    Observe(nullptr);
-  }
-
- private:
-  TestWebContents* contents_;
-
-  DISALLOW_COPY_AND_ASSIGN(ImmediateLoadObserver);
-};
-
-// A subclass of TestWebContents that offers a fake content window.
-class OverscrollTestWebContents : public TestWebContents {
- public:
-  explicit OverscrollTestWebContents(
-      BrowserContext* browser_context,
-      std::unique_ptr<aura::Window> fake_native_view,
-      std::unique_ptr<aura::Window> fake_contents_window)
-      : TestWebContents(browser_context),
-        fake_native_view_(std::move(fake_native_view)),
-        fake_contents_window_(std::move(fake_contents_window)),
-        is_being_destroyed_(false) {}
-  ~OverscrollTestWebContents() override {}
-
-  static std::unique_ptr<OverscrollTestWebContents> Create(
-      BrowserContext* browser_context,
-      scoped_refptr<SiteInstance> instance,
-      std::unique_ptr<aura::Window> fake_native_view,
-      std::unique_ptr<aura::Window> fake_contents_window) {
-    std::unique_ptr<OverscrollTestWebContents> web_contents =
-        std::make_unique<OverscrollTestWebContents>(
-            browser_context, std::move(fake_native_view),
-            std::move(fake_contents_window));
-    web_contents->Init(
-        WebContents::CreateParams(browser_context, std::move(instance)));
-    return web_contents;
-  }
-
-  void ResetNativeView() { fake_native_view_.reset(); }
-
-  void ResetContentNativeView() { fake_contents_window_.reset(); }
-
-  void set_is_being_destroyed(bool val) { is_being_destroyed_ = val; }
-
-  gfx::NativeView GetNativeView() override { return fake_native_view_.get(); }
-
-  gfx::NativeView GetContentNativeView() override {
-    return fake_contents_window_.get();
-  }
-
-  bool IsBeingDestroyed() override { return is_being_destroyed_; }
-
- private:
-  std::unique_ptr<aura::Window> fake_native_view_;
-  std::unique_ptr<aura::Window> fake_contents_window_;
-  bool is_being_destroyed_;
-};
-
-class OverscrollNavigationOverlayTest : public RenderViewHostImplTestHarness {
- public:
-  OverscrollNavigationOverlayTest()
-      : first_("https://www.google.com"),
-        second_("http://www.chromium.org"),
-        third_("https://www.kernel.org/"),
-        fourth_("https://github.com/") {}
-
-  ~OverscrollNavigationOverlayTest() override {}
-
-  void SetDummyScreenshotOnNavEntry(NavigationEntry* entry) {
-    SkBitmap bitmap;
-    bitmap.allocN32Pixels(1, 1);
-    bitmap.eraseColor(SK_ColorWHITE);
-    std::vector<unsigned char> png_data;
-    gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, true, &png_data);
-    scoped_refptr<base::RefCountedBytes> png_bytes =
-        base::RefCountedBytes::TakeVector(&png_data);
-    NavigationEntryImpl* entry_impl =
-        NavigationEntryImpl::FromNavigationEntry(entry);
-    entry_impl->SetScreenshotPNGData(png_bytes);
-  }
-
-  void ReceivePaintUpdate() {
-    RenderViewHostTester::SimulateFirstPaint(test_rvh());
-  }
-
-  void PerformBackNavigationViaSliderCallbacks(OverscrollSource source) {
-    // Sets slide direction to BACK, sets screenshot from NavEntry at
-    // offset -1 on layer_delegate_.
-    GetOverlay()->owa_->SetOverscrollSourceForTesting(source);
-    std::unique_ptr<aura::Window> window(
-        GetOverlay()->CreateBackWindow(GetBackSlideWindowBounds()));
-    bool window_created = !!window;
-    if (window_created) {
-      histogram_tester()->ExpectTotalCount(kUmaStarted, 1);
-      histogram_tester()->ExpectBucketCount(
-          kUmaStarted, source == OverscrollSource::TOUCHPAD ? BACK_TOUCHPAD
-                                                            : BACK_TOUCHSCREEN,
-          1);
-      EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::BACK);
-      // Performs BACK navigation, sets image from layer_delegate_ on
-      // image_delegate_.
-      GetOverlay()->OnOverscrollCompleting();
-      window->SetBounds(gfx::Rect(root_window()->bounds().size()));
-
-      histogram_tester()->ExpectTotalCount(kUmaNavigated, 0);
-      EXPECT_EQ(0, action_tester()->GetActionCount(kActionNavigatedBack));
-
-      GetOverlay()->OnOverscrollCompleted(std::move(window));
-      histogram_tester()->ExpectTotalCount(kUmaNavigated, 1);
-      histogram_tester()->ExpectBucketCount(kUmaNavigated,
-                                            source == OverscrollSource::TOUCHPAD
-                                                ? BACK_TOUCHPAD
-                                                : BACK_TOUCHSCREEN,
-                                            1);
-      EXPECT_EQ(1, action_tester()->GetActionCount(kActionNavigatedBack));
-    } else {
-      EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::NONE);
-      histogram_tester()->ExpectTotalCount(kUmaStarted, 0);
-    }
-    GetOverlay()->owa_->SetOverscrollSourceForTesting(OverscrollSource::NONE);
-    main_test_rfh()->PrepareForCommit();
-    if (window_created)
-      EXPECT_TRUE(contents()->CrossProcessNavigationPending());
-    else
-      EXPECT_FALSE(contents()->CrossProcessNavigationPending());
-  }
-
-  gfx::Rect GetFrontSlideWindowBounds() {
-    gfx::Rect bounds = gfx::Rect(root_window()->bounds().size());
-    bounds.Offset(root_window()->bounds().size().width(), 0);
-    return bounds;
-  }
-
-  gfx::Rect GetBackSlideWindowBounds() {
-    return gfx::Rect(root_window()->bounds().size());
-  }
-
-  // Const accessors.
-  const GURL first() { return first_; }
-  const GURL second() { return second_; }
-  const GURL third() { return third_; }
-  const GURL fourth() { return fourth_; }
-
-  base::HistogramTester* histogram_tester() { return histogram_tester_.get(); }
-  base::UserActionTester* action_tester() { return action_tester_.get(); }
-
- protected:
-  // RenderViewHostImplTestHarness:
-  void SetUp() override {
-    RenderViewHostImplTestHarness::SetUp();
-
-    histogram_tester_.reset(new base::HistogramTester);
-    action_tester_.reset(new base::UserActionTester);
-
-    // Set up the fake web contents native view.
-    std::unique_ptr<aura::Window> fake_native_view(new aura::Window(nullptr));
-    fake_native_view->Init(ui::LAYER_SOLID_COLOR);
-    root_window()->AddChild(fake_native_view.get());
-    fake_native_view->SetBounds(gfx::Rect(root_window()->bounds().size()));
-
-    // Set up the fake contents window.
-    std::unique_ptr<aura::Window> fake_contents_window(
-        new aura::Window(nullptr));
-    fake_contents_window->Init(ui::LAYER_SOLID_COLOR);
-    root_window()->AddChild(fake_contents_window.get());
-    fake_contents_window->SetBounds(gfx::Rect(root_window()->bounds().size()));
-
-    // Replace the default test web contents with our custom class.
-    SetContents(OverscrollTestWebContents::Create(
-        browser_context(), SiteInstance::Create(browser_context()),
-        std::move(fake_native_view), std::move(fake_contents_window)));
-
-    contents()->NavigateAndCommit(first());
-    EXPECT_TRUE(controller().GetVisibleEntry());
-    EXPECT_FALSE(controller().CanGoBack());
-
-    contents()->NavigateAndCommit(second());
-    EXPECT_TRUE(controller().CanGoBack());
-
-    contents()->NavigateAndCommit(third());
-    EXPECT_TRUE(controller().CanGoBack());
-
-    contents()->NavigateAndCommit(fourth_);
-    EXPECT_TRUE(controller().CanGoBack());
-    EXPECT_FALSE(controller().CanGoForward());
-
-    // Receive a paint update. This is necessary to make sure the size is set
-    // correctly in RenderWidgetHostImpl.
-    viz::LocalSurfaceId local_surface_id(10, 10,
-                                         base::UnguessableToken::Create());
-    cc::RenderFrameMetadata metadata;
-    metadata.viewport_size_in_pixels = gfx::Size(10, 10);
-    metadata.local_surface_id_allocation =
-        viz::LocalSurfaceIdAllocation(local_surface_id, base::TimeTicks());
-    test_rvh()->GetWidget()->DidUpdateVisualProperties(metadata);
-
-    // Reset pending flags for size/paint.
-    test_rvh()->GetWidget()->ResetSentVisualProperties();
-
-    // Create the overlay, and set the contents of the overlay window.
-    overlay_.reset(new OverscrollNavigationOverlay(contents(), root_window()));
-  }
-
-  void TearDown() override {
-    overlay_.reset();
-    RenderViewHostImplTestHarness::TearDown();
-  }
-
-  OverscrollNavigationOverlay* GetOverlay() {
-    return overlay_.get();
-  }
-
- private:
-  // Tests URLs.
-  const GURL first_;
-  const GURL second_;
-  const GURL third_;
-  const GURL fourth_;
-
-  std::unique_ptr<base::HistogramTester> histogram_tester_;
-  std::unique_ptr<base::UserActionTester> action_tester_;
-
-  std::unique_ptr<OverscrollNavigationOverlay> overlay_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollNavigationOverlayTest);
-};
-
-// Tests that if a screenshot is available, it is set in the overlay window
-// delegate.
-TEST_F(OverscrollNavigationOverlayTest, WithScreenshot) {
-  SetDummyScreenshotOnNavEntry(controller().GetEntryAtOffset(-1));
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-  // Screenshot was set on NavEntry at offset -1.
-  EXPECT_TRUE(static_cast<aura_extra::ImageWindowDelegate*>(
-                  GetOverlay()->window_->delegate())->has_image());
-}
-
-// Tests that if a screenshot is not available, no image is set in the overlay
-// window delegate.
-TEST_F(OverscrollNavigationOverlayTest, WithoutScreenshot) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHSCREEN);
-  // No screenshot was set on NavEntry at offset -1.
-  EXPECT_FALSE(static_cast<aura_extra::ImageWindowDelegate*>(
-                   GetOverlay()->window_->delegate())->has_image());
-}
-
-// Tests that if a navigation is attempted but there is nothing to navigate to,
-// we return a null window.
-TEST_F(OverscrollNavigationOverlayTest, CannotNavigate) {
-  EXPECT_EQ(GetOverlay()->CreateFrontWindow(GetFrontSlideWindowBounds()),
-            nullptr);
-}
-
-// Tests that if a navigation is cancelled, no navigation is performed and the
-// state is restored.
-TEST_F(OverscrollNavigationOverlayTest, CancelNavigation) {
-  GetOverlay()->owa_->SetOverscrollSourceForTesting(
-      OverscrollSource::TOUCHSCREEN);
-  std::unique_ptr<aura::Window> window =
-      GetOverlay()->CreateBackWindow(GetBackSlideWindowBounds());
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::BACK);
-
-  histogram_tester()->ExpectTotalCount(kUmaCancelled, 0);
-  EXPECT_EQ(0, action_tester()->GetActionCount(kActionCancelledBack));
-
-  GetOverlay()->OnOverscrollCancelled();
-  EXPECT_FALSE(contents()->CrossProcessNavigationPending());
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::NONE);
-  histogram_tester()->ExpectTotalCount(kUmaCancelled, 1);
-  histogram_tester()->ExpectBucketCount(kUmaCancelled, BACK_TOUCHSCREEN, 1);
-  EXPECT_EQ(1, action_tester()->GetActionCount(kActionCancelledBack));
-}
-
-TEST_F(OverscrollNavigationOverlayTest, ForwardNavigation) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-
-  GetOverlay()->owa_->SetOverscrollSourceForTesting(OverscrollSource::TOUCHPAD);
-  std::unique_ptr<aura::Window> window =
-      GetOverlay()->CreateFrontWindow(GetBackSlideWindowBounds());
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::FORWARD);
-  histogram_tester()->ExpectTotalCount(kUmaStarted, 2);
-  histogram_tester()->ExpectBucketCount(kUmaStarted, FORWARD_TOUCHPAD, 1);
-
-  GetOverlay()->OnOverscrollCompleting();
-  histogram_tester()->ExpectTotalCount(kUmaNavigated, 1);
-  EXPECT_EQ(0, action_tester()->GetActionCount(kActionNavigatedForward));
-
-  GetOverlay()->OnOverscrollCompleted(std::move(window));
-  histogram_tester()->ExpectTotalCount(kUmaNavigated, 2);
-  histogram_tester()->ExpectBucketCount(kUmaNavigated, FORWARD_TOUCHPAD, 1);
-  EXPECT_EQ(1, action_tester()->GetActionCount(kActionNavigatedForward));
-
-  EXPECT_TRUE(contents()->CrossProcessNavigationPending());
-}
-
-TEST_F(OverscrollNavigationOverlayTest, ForwardNavigationCancelled) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-
-  GetOverlay()->owa_->SetOverscrollSourceForTesting(
-      OverscrollSource::TOUCHSCREEN);
-  std::unique_ptr<aura::Window> window =
-      GetOverlay()->CreateFrontWindow(GetBackSlideWindowBounds());
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::FORWARD);
-  histogram_tester()->ExpectTotalCount(kUmaStarted, 2);
-  histogram_tester()->ExpectBucketCount(kUmaStarted, FORWARD_TOUCHSCREEN, 1);
-
-  histogram_tester()->ExpectTotalCount(kUmaCancelled, 0);
-  EXPECT_EQ(0, action_tester()->GetActionCount(kActionCancelledForward));
-
-  GetOverlay()->OnOverscrollCancelled();
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::NONE);
-  histogram_tester()->ExpectTotalCount(kUmaCancelled, 1);
-  histogram_tester()->ExpectBucketCount(kUmaCancelled, FORWARD_TOUCHSCREEN, 1);
-  EXPECT_EQ(1, action_tester()->GetActionCount(kActionCancelledForward));
-}
-
-// Performs two navigations. The second navigation is cancelled, tests that the
-// first one worked correctly.
-TEST_F(OverscrollNavigationOverlayTest, CancelAfterSuccessfulNavigation) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-  GetOverlay()->owa_->SetOverscrollSourceForTesting(OverscrollSource::TOUCHPAD);
-  std::unique_ptr<aura::Window> wrapper =
-      GetOverlay()->CreateBackWindow(GetBackSlideWindowBounds());
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::BACK);
-  histogram_tester()->ExpectTotalCount(kUmaStarted, 2);
-  histogram_tester()->ExpectBucketCount(kUmaStarted, BACK_TOUCHPAD, 2);
-
-  GetOverlay()->OnOverscrollCancelled();
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::NONE);
-  histogram_tester()->ExpectTotalCount(kUmaCancelled, 1);
-  histogram_tester()->ExpectBucketCount(kUmaCancelled, BACK_TOUCHPAD, 1);
-  EXPECT_EQ(1, action_tester()->GetActionCount(kActionCancelledBack));
-  // Navigation metrics shouldn't change.
-  histogram_tester()->ExpectTotalCount(kUmaNavigated, 1);
-  EXPECT_EQ(1, action_tester()->GetActionCount(kActionNavigatedBack));
-
-  EXPECT_TRUE(contents()->CrossProcessNavigationPending());
-  NavigationEntry* pending = contents()->GetController().GetPendingEntry();
-  contents()->GetPendingMainFrame()->SendNavigateWithTransition(
-      pending->GetUniqueID(), false, pending->GetURL(),
-      pending->GetTransitionType());
-  EXPECT_EQ(contents()->GetURL(), third());
-}
-
-// Tests that an overscroll navigation that receives a paint update actually
-// stops observing.
-TEST_F(OverscrollNavigationOverlayTest, Navigation_PaintUpdate) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHSCREEN);
-  ReceivePaintUpdate();
-
-  // Paint updates until the navigation is committed typically represent updates
-  // for the previous page, so we should still be observing.
-  EXPECT_TRUE(GetOverlay()->web_contents());
-
-  NavigationEntry* pending = contents()->GetController().GetPendingEntry();
-  contents()->GetPendingMainFrame()->SendNavigateWithTransition(
-      pending->GetUniqueID(), false, pending->GetURL(),
-      pending->GetTransitionType());
-  ReceivePaintUpdate();
-
-  // Navigation was committed and the paint update was received - we should no
-  // longer be observing.
-  EXPECT_FALSE(GetOverlay()->web_contents());
-  EXPECT_EQ(contents()->GetURL(), third());
-}
-
-// Tests that an overscroll navigation that receives a loading update actually
-// stops observing.
-TEST_F(OverscrollNavigationOverlayTest, Navigation_LoadingUpdate) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-  EXPECT_TRUE(GetOverlay()->web_contents());
-  // DidStopLoading for any navigation should always reset the load flag and
-  // dismiss the overlay even if the pending navigation wasn't committed -
-  // this is a "safety net" in case we mis-identify the destination webpage
-  // (which can happen if a new navigation is performed while while a GestureNav
-  // navigation is in progress).
-  contents()->TestSetIsLoading(false);
-  EXPECT_FALSE(GetOverlay()->web_contents());
-  NavigationEntry* pending = contents()->GetController().GetPendingEntry();
-  contents()->GetPendingMainFrame()->SendNavigate(
-      pending->GetUniqueID(), false, pending->GetURL());
-  EXPECT_EQ(contents()->GetURL(), third());
-}
-
-TEST_F(OverscrollNavigationOverlayTest, CloseDuringAnimation) {
-  ui::ScopedAnimationDurationScaleMode normal_duration_(
-      ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
-  GetOverlay()->owa_->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                             OverscrollSource::TOUCHSCREEN,
-                                             cc::OverscrollBehavior());
-  GetOverlay()->owa_->OnOverscrollComplete(OVERSCROLL_EAST);
-  EXPECT_EQ(GetOverlay()->direction_, NavigationDirection::BACK);
-  OverscrollTestWebContents* test_web_contents =
-      static_cast<OverscrollTestWebContents*>(web_contents());
-  test_web_contents->set_is_being_destroyed(true);
-  test_web_contents->ResetContentNativeView();
-  test_web_contents->ResetNativeView();
-  // Ensure a clean close.
-}
-
-// Tests that we can handle the case when the load completes as soon as the
-// navigation is started.
-TEST_F(OverscrollNavigationOverlayTest, ImmediateLoadOnNavigate) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-  // This observer will force the page load to complete as soon as the
-  // navigation starts.
-  ImmediateLoadObserver immediate_nav(contents());
-  GetOverlay()->owa_->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                             OverscrollSource::TOUCHPAD,
-                                             cc::OverscrollBehavior());
-  // This will start and immediately complete the navigation.
-  GetOverlay()->owa_->OnOverscrollComplete(OVERSCROLL_EAST);
-  EXPECT_FALSE(GetOverlay()->window_.get());
-  histogram_tester()->ExpectTotalCount(kUmaNavigated, 2);
-  histogram_tester()->ExpectBucketCount(kUmaNavigated, BACK_TOUCHPAD, 2);
-  EXPECT_EQ(2, action_tester()->GetActionCount(kActionNavigatedBack));
-}
-
-// Tests that swapping the overlay window at the end of a gesture caused by the
-// start of a new overscroll does not crash and the events still reach the new
-// overlay window.
-TEST_F(OverscrollNavigationOverlayTest, OverlayWindowSwap) {
-  PerformBackNavigationViaSliderCallbacks(OverscrollSource::TOUCHPAD);
-  aura::Window* first_overlay_window = GetOverlay()->window_.get();
-  EXPECT_TRUE(GetOverlay()->web_contents());
-  EXPECT_TRUE(first_overlay_window);
-
-  // At this stage, the overlay window is covering the web contents. Configure
-  // the animator of the overlay window for the test.
-  ui::ScopedAnimationDurationScaleMode normal_duration(
-      ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
-  ui::LayerAnimator* animator = GetOverlay()->window_->layer()->GetAnimator();
-  animator->set_disable_timer_for_test(true);
-  ui::LayerAnimatorTestController test_controller(animator);
-
-  int overscroll_complete_distance =
-      root_window()->bounds().size().width() *
-          OverscrollConfig::GetThreshold(
-              OverscrollConfig::Threshold::kCompleteTouchscreen) +
-      ui::GestureConfiguration::GetInstance()
-          ->max_touch_move_in_pixels_for_click() +
-      1;
-
-  // Start and complete a back navigation via a gesture.
-  ui::test::EventGenerator generator(root_window());
-  generator.GestureScrollSequence(gfx::Point(0, 0),
-                                  gfx::Point(overscroll_complete_distance, 0),
-                                  base::TimeDelta::FromMilliseconds(10),
-                                  10);
-
-  ui::ScopedLayerAnimationSettings settings(animator);
-  test_controller.StartThreadedAnimationsIfNeeded();
-
-  // The overlay window should now be being animated to the edge of the screen.
-  // |first()overlay_window| is the back window.
-  // This is what the screen should look like. The X indicates where the next
-  // gesture starts for the test.
-  // +---------root_window--------+
-  // |+-back window--+--front window--+
-  // ||              |            |   |
-  // ||        1     |X       2   |   |
-  // ||              |            |   |
-  // |+--------------+------------|---+
-  // +----------------------------+
-  // |  overscroll   ||
-  // |   complete    ||
-  // |   distance    ||
-  // |<------------->||
-  // |     second     |
-  // |   overscroll   |
-  // | start distance |
-  // |<-------------->|
-  EXPECT_EQ(GetOverlay()->window_.get(), first_overlay_window);
-
-  // The overlay window is halfway through, start another animation that will
-  // cancel the first one. The event that cancels the animation will go to
-  // the slide window, which will be used as the overlay window when the new
-  // overscroll starts.
-  int second_overscroll_start_distance = overscroll_complete_distance + 1;
-  generator.GestureScrollSequence(
-      gfx::Point(second_overscroll_start_distance, 0),
-      gfx::Point(
-          second_overscroll_start_distance + overscroll_complete_distance, 0),
-      base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_TRUE(GetOverlay()->window_.get());
-  // The overlay window should be a new window.
-  EXPECT_NE(GetOverlay()->window_.get(), first_overlay_window);
-
-  // Complete the animation.
-  GetOverlay()->window_->layer()->GetAnimator()->StopAnimating();
-  EXPECT_TRUE(GetOverlay()->window_.get());
-
-  // Load the page.
-  contents()->CommitPendingNavigation();
-  ReceivePaintUpdate();
-  EXPECT_FALSE(GetOverlay()->window_.get());
-  EXPECT_EQ(contents()->GetURL(), first());
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/overscroll_window_animation.cc b/content/browser/web_contents/aura/overscroll_window_animation.cc
deleted file mode 100644
index c7cf437..0000000
--- a/content/browser/web_contents/aura/overscroll_window_animation.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_window_animation.h"
-
-#include <algorithm>
-#include <utility>
-
-#include "base/i18n/rtl.h"
-#include "content/browser/web_contents/aura/shadow_layer_delegate.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "ui/aura/window.h"
-#include "ui/compositor/layer_animation_observer.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/display/display.h"
-#include "ui/display/screen.h"
-
-namespace content {
-
-namespace {
-
-OverscrollWindowAnimation::Direction GetDirectionForMode(OverscrollMode mode) {
-  if (mode == (base::i18n::IsRTL() ? OVERSCROLL_EAST : OVERSCROLL_WEST))
-    return OverscrollWindowAnimation::SLIDE_FRONT;
-  if (mode == (base::i18n::IsRTL() ? OVERSCROLL_WEST : OVERSCROLL_EAST))
-    return OverscrollWindowAnimation::SLIDE_BACK;
-  return OverscrollWindowAnimation::SLIDE_NONE;
-}
-
-}  // namespace
-
-OverscrollWindowAnimation::OverscrollWindowAnimation(Delegate* delegate)
-    : delegate_(delegate),
-      direction_(SLIDE_NONE),
-      overscroll_cancelled_(false) {
-  DCHECK(delegate_);
-}
-
-OverscrollWindowAnimation::~OverscrollWindowAnimation() {}
-
-void OverscrollWindowAnimation::CancelSlide() {
-  overscroll_cancelled_ = true;
-  // Listen to the animation of the main window.
-  bool main_window_is_front = direction_ == SLIDE_BACK;
-  AnimateTranslation(GetBackLayer(), 0, !main_window_is_front);
-  AnimateTranslation(GetFrontLayer(), 0, main_window_is_front);
-}
-
-float OverscrollWindowAnimation::GetTranslationForOverscroll(float delta_x) {
-  DCHECK(direction_ != SLIDE_NONE);
-  const float bounds_width = GetContentSize().width();
-  if (direction_ == SLIDE_FRONT)
-    return std::max(-bounds_width, delta_x);
-  else
-    return std::min(bounds_width, delta_x);
-}
-
-gfx::Size OverscrollWindowAnimation::GetDisplaySize() const {
-  return display::Screen::GetScreen()
-      ->GetDisplayNearestView(delegate_->GetMainWindow())
-      .size();
-}
-
-bool OverscrollWindowAnimation::OnOverscrollUpdate(float delta_x,
-                                                   float delta_y) {
-  if (direction_ == SLIDE_NONE)
-    return false;
-  gfx::Transform front_transform;
-  gfx::Transform back_transform;
-  float translate_x = GetTranslationForOverscroll(delta_x);
-  front_transform.Translate(translate_x, 0);
-  back_transform.Translate(translate_x / 2, 0);
-  GetFrontLayer()->SetTransform(front_transform);
-  GetBackLayer()->SetTransform(back_transform);
-  return true;
-}
-
-void OverscrollWindowAnimation::OnImplicitAnimationsCompleted() {
-  if (overscroll_cancelled_) {
-    slide_window_.reset();
-    delegate_->OnOverscrollCancelled();
-    overscroll_cancelled_ = false;
-  } else {
-    delegate_->OnOverscrollCompleted(std::move(slide_window_));
-  }
-  overscroll_source_ = OverscrollSource::NONE;
-  direction_ = SLIDE_NONE;
-}
-
-void OverscrollWindowAnimation::OnOverscrollModeChange(
-    OverscrollMode old_mode,
-    OverscrollMode new_mode,
-    OverscrollSource source,
-    cc::OverscrollBehavior behavior) {
-  DCHECK_NE(old_mode, new_mode);
-  Direction new_direction = GetDirectionForMode(new_mode);
-  if (new_direction == SLIDE_NONE ||
-      behavior.x != cc::OverscrollBehavior::OverscrollBehaviorType::
-                        kOverscrollBehaviorTypeAuto) {
-    // The user cancelled the in progress animation.
-    if (is_active())
-      CancelSlide();
-    return;
-  }
-  if (is_active()) {
-    slide_window_->layer()->GetAnimator()->StopAnimating();
-    delegate_->GetMainWindow()->layer()->GetAnimator()->StopAnimating();
-  }
-  gfx::Rect slide_window_bounds(GetContentSize());
-  if (new_direction == SLIDE_FRONT) {
-    slide_window_bounds.Offset(base::i18n::IsRTL()
-                                   ? -slide_window_bounds.width()
-                                   : slide_window_bounds.width(),
-                               0);
-  } else {
-    slide_window_bounds.Offset(base::i18n::IsRTL()
-                                   ? slide_window_bounds.width() / 2
-                                   : -slide_window_bounds.width() / 2,
-                               0);
-  }
-
-  overscroll_source_ = source;
-  slide_window_ = new_direction == SLIDE_FRONT
-                      ? delegate_->CreateFrontWindow(slide_window_bounds)
-                      : delegate_->CreateBackWindow(slide_window_bounds);
-  if (!slide_window_) {
-    // Cannot navigate, do not start an overscroll gesture.
-    direction_ = SLIDE_NONE;
-    overscroll_source_ = OverscrollSource::NONE;
-    return;
-  }
-  overscroll_cancelled_ = false;
-  direction_ = new_direction;
-  shadow_.reset(new ShadowLayerDelegate(GetFrontLayer()));
-}
-
-base::Optional<float> OverscrollWindowAnimation::GetMaxOverscrollDelta() const {
-  return base::nullopt;
-}
-
-void OverscrollWindowAnimation::OnOverscrollComplete(
-    OverscrollMode overscroll_mode) {
-  if (!is_active())
-    return;
-  delegate_->OnOverscrollCompleting();
-  int content_width = GetContentSize().width();
-  float translate_x;
-  if ((base::i18n::IsRTL() && direction_ == SLIDE_FRONT) ||
-      (!base::i18n::IsRTL() && direction_ == SLIDE_BACK)) {
-    translate_x = content_width;
-  } else {
-    translate_x = -content_width;
-  }
-  // Listen to the animation of the main window.
-  bool main_window_is_front = direction_ == SLIDE_BACK;
-  AnimateTranslation(GetBackLayer(), translate_x / 2, !main_window_is_front);
-  AnimateTranslation(GetFrontLayer(), translate_x, main_window_is_front);
-}
-
-void OverscrollWindowAnimation::AnimateTranslation(ui::Layer* layer,
-                                                   float translate_x,
-                                                   bool listen_for_completion) {
-  gfx::Transform transform;
-  transform.Translate(translate_x, 0);
-  ui::ScopedLayerAnimationSettings settings(layer->GetAnimator());
-  settings.SetPreemptionStrategy(
-      ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
-  settings.SetTweenType(gfx::Tween::EASE_OUT);
-  if (listen_for_completion)
-    settings.AddObserver(this);
-  layer->SetTransform(transform);
-}
-
-ui::Layer* OverscrollWindowAnimation::GetFrontLayer() const {
-  DCHECK(direction_ != SLIDE_NONE);
-  if (direction_ == SLIDE_FRONT) {
-    DCHECK(slide_window_);
-    return slide_window_->layer();
-  }
-  return delegate_->GetMainWindow()->layer();
-}
-
-ui::Layer* OverscrollWindowAnimation::GetBackLayer() const {
-  DCHECK(direction_ != SLIDE_NONE);
-  if (direction_ == SLIDE_BACK) {
-    DCHECK(slide_window_);
-    return slide_window_->layer();
-  }
-  return delegate_->GetMainWindow()->layer();
-}
-
-gfx::Size OverscrollWindowAnimation::GetContentSize() const {
-  return delegate_->GetMainWindow()->bounds().size();
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/overscroll_window_animation.h b/content/browser/web_contents/aura/overscroll_window_animation.h
deleted file mode 100644
index a29cc6b..0000000
--- a/content/browser/web_contents/aura/overscroll_window_animation.h
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_ANIMATION_H_
-#define CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_ANIMATION_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "content/browser/renderer_host/overscroll_controller_delegate.h"
-#include "content/common/content_export.h"
-#include "ui/compositor/layer_animation_observer.h"
-
-namespace aura {
-class Window;
-}
-
-namespace ui {
-class Layer;
-}
-
-namespace content {
-
-class ShadowLayerDelegate;
-
-// Manages the animation of a window sliding on top or behind another one. The
-// main window, which is the one displayed before the animation starts, is not
-// owned by OverscrollWindowAnimation, while the slide window, created at the
-// start of the animation, is owned by us for its duration.
-class CONTENT_EXPORT OverscrollWindowAnimation
-    : public OverscrollControllerDelegate,
-      ui::ImplicitAnimationObserver {
- public:
-  // The direction of this animation. SLIDE_FRONT indicates that the slide
-  // window moves on top of the main window, entering the screen from the right.
-  // SLIDE_BACK means that the main window is animated to the right, revealing
-  // the slide window in the back. SLIDE_NONE means we are not animating yet.
-  // Both windows are animated at the same time but at different speeds,
-  // creating a parallax scrolling effect. Left and right are reversed for RTL
-  // languages, but stack order remains unchanged.
-  enum Direction { SLIDE_FRONT, SLIDE_BACK, SLIDE_NONE };
-
-  // Delegate class that interfaces with the window animation.
-  class CONTENT_EXPORT Delegate {
-   public:
-    virtual ~Delegate() {}
-
-    // Create a slide window with the given |bounds| relative to its parent.
-    virtual std::unique_ptr<aura::Window> CreateFrontWindow(
-        const gfx::Rect& bounds) = 0;
-    virtual std::unique_ptr<aura::Window> CreateBackWindow(
-        const gfx::Rect& bounds) = 0;
-
-    // Returns the main window that participates in the animation. The delegate
-    // does not own this window.
-    virtual aura::Window* GetMainWindow() const = 0;
-
-    // Called when we know the animation is going to complete successfully, but
-    // before it actually completes.
-    virtual void OnOverscrollCompleting() = 0;
-
-    // Called when the animation has been completed. The slide window is
-    // transferred to the delegate.
-    virtual void OnOverscrollCompleted(
-        std::unique_ptr<aura::Window> window) = 0;
-
-    // Called when the overscroll gesture has been cancelled, after the cancel
-    // animation finishes.
-    virtual void OnOverscrollCancelled() = 0;
-  };
-
-  explicit OverscrollWindowAnimation(Delegate* delegate);
-
-  ~OverscrollWindowAnimation() override;
-
-  // Returns true if we are currently animating.
-  bool is_active() const { return !!slide_window_; }
-
-  OverscrollSource overscroll_source() { return overscroll_source_; }
-
-  void SetOverscrollSourceForTesting(OverscrollSource source) {
-    overscroll_source_ = source;
-  }
-
-  // OverscrollControllerDelegate:
-  gfx::Size GetDisplaySize() const override;
-  bool OnOverscrollUpdate(float delta_x, float delta_y) override;
-  void OnOverscrollComplete(OverscrollMode overscroll_mode) override;
-  void OnOverscrollModeChange(OverscrollMode old_mode,
-                              OverscrollMode new_mode,
-                              OverscrollSource source,
-                              cc::OverscrollBehavior behavior) override;
-  base::Optional<float> GetMaxOverscrollDelta() const override;
-
- private:
-  // Cancels the slide, animating the front and back window to their original
-  // positions.
-  void CancelSlide();
-
-  // Returns a translation on the x axis for the given overscroll.
-  float GetTranslationForOverscroll(float delta_x);
-
-  // Animates a translation of the given |layer|. If |listen_for_completion| is
-  // true, adds |this| as observer of the animation.
-  void AnimateTranslation(ui::Layer* layer,
-                          float translate_x,
-                          bool listen_for_completion);
-
-  // Return the front/back layer that is involved in the animation. The caller
-  // does not own it.
-  ui::Layer* GetFrontLayer() const;
-  ui::Layer* GetBackLayer() const;
-
-  // Returns the size of the content window.
-  gfx::Size GetContentSize() const;
-
-  // ui::ImplicitAnimationObserver:
-  void OnImplicitAnimationsCompleted() override;
-
-  // We own the window created for the animation.
-  std::unique_ptr<aura::Window> slide_window_;
-
-  // Shadow shown under the animated layer.
-  std::unique_ptr<ShadowLayerDelegate> shadow_;
-
-  // Delegate that provides the animation target and is notified of the
-  // animation state.
-  Delegate* delegate_;
-
-  // The current animation direction.
-  Direction direction_;
-
-  // OverscrollSource of the current overscroll gesture. Updated when the new
-  // overscroll gesture starts, before CreateFront/BackWindow callback is called
-  // on the delegate.
-  OverscrollSource overscroll_source_ = OverscrollSource::NONE;
-
-  // Indicates if the current slide has been cancelled. True while the cancel
-  // animation is in progress.
-  bool overscroll_cancelled_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollWindowAnimation);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_ANIMATION_H_
diff --git a/content/browser/web_contents/aura/overscroll_window_animation_unittest.cc b/content/browser/web_contents/aura/overscroll_window_animation_unittest.cc
deleted file mode 100644
index 9fc3c91..0000000
--- a/content/browser/web_contents/aura/overscroll_window_animation_unittest.cc
+++ /dev/null
@@ -1,335 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_window_animation.h"
-
-#include "base/macros.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/aura/test/aura_test_base.h"
-#include "ui/aura/window.h"
-#include "ui/compositor/scoped_animation_duration_scale_mode.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/compositor/test/layer_animator_test_controller.h"
-
-namespace content {
-
-class OverscrollWindowAnimationTest
-    : public OverscrollWindowAnimation::Delegate,
-      public aura::test::AuraTestBase {
- public:
-  OverscrollWindowAnimationTest()
-      : create_window_(true),
-        overscroll_started_(false),
-        overscroll_completing_(false),
-        overscroll_completed_(false),
-        overscroll_aborted_(false),
-        main_window_(nullptr) {}
-
-  ~OverscrollWindowAnimationTest() override {}
-
-  OverscrollWindowAnimation* owa() { return owa_.get(); }
-
-  // Set to true to return a window in the Create*Window functions, false to
-  // return null.
-  void set_create_window(bool create_window) { create_window_ = create_window; }
-
-  // The following functions indicate if the events have been called on this
-  // delegate.
-  bool overscroll_started() { return overscroll_started_; }
-  bool overscroll_completing() { return overscroll_completing_; }
-  bool overscroll_completed() { return overscroll_completed_; }
-  bool overscroll_aborted() { return overscroll_aborted_; }
-
-  void ResetFlags() {
-    overscroll_started_ = false;
-    overscroll_completing_ = false;
-    overscroll_completed_ = false;
-    overscroll_aborted_ = false;
-  }
-
- protected:
-  // aura::test::AuraTestBase:
-  void SetUp() override {
-    aura::test::AuraTestBase::SetUp();
-    main_window_.reset(CreateNormalWindow(0, root_window(), nullptr));
-    ResetFlags();
-    create_window_ = true;
-    last_window_id_ = 0;
-    owa_.reset(new OverscrollWindowAnimation(this));
-  }
-
-  void TearDown() override {
-    owa_.reset();
-    main_window_.reset();
-    aura::test::AuraTestBase::TearDown();
-  }
-
-  // OverscrollWindowAnimation::Delegate:
-  std::unique_ptr<aura::Window> CreateFrontWindow(
-      const gfx::Rect& bounds) override {
-    return CreateSlideWindow(bounds);
-  }
-
-  std::unique_ptr<aura::Window> CreateBackWindow(
-      const gfx::Rect& bounds) override {
-    return CreateSlideWindow(bounds);
-  }
-
-  aura::Window* GetMainWindow() const override { return main_window_.get(); }
-
-  void OnOverscrollCompleting() override { overscroll_completing_ = true; }
-
-  void OnOverscrollCompleted(std::unique_ptr<aura::Window> window) override {
-    overscroll_completed_ = true;
-  }
-
-  void OnOverscrollCancelled() override { overscroll_aborted_ = true; }
-
- private:
-  // The overscroll window animation under test.
-  std::unique_ptr<OverscrollWindowAnimation> owa_;
-
-  std::unique_ptr<aura::Window> CreateSlideWindow(const gfx::Rect& bounds) {
-    overscroll_started_ = true;
-    if (create_window_) {
-      std::unique_ptr<aura::Window> window(
-          CreateNormalWindow(++last_window_id_, root_window(), nullptr));
-      window->SetBounds(bounds);
-      return window;
-    }
-    return nullptr;
-  }
-
-  // Controls if we return a window for the window creation callbacks or not.
-  bool create_window_;
-
-  // State flags.
-  bool overscroll_started_;
-  bool overscroll_completing_;
-  bool overscroll_completed_;
-  bool overscroll_aborted_;
-
-  int last_window_id_;
-
-  // The dummy target window we provide.
-  std::unique_ptr<aura::Window> main_window_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollWindowAnimationTest);
-};
-
-// Tests a simple overscroll gesture.
-TEST_F(OverscrollWindowAnimationTest, BasicOverscroll) {
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  // Start an OVERSCROLL_EAST gesture.
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                cc::OverscrollBehavior());
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHPAD, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  // Complete the overscroll.
-  owa()->OnOverscrollComplete(OVERSCROLL_EAST);
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_TRUE(overscroll_completing());
-  EXPECT_TRUE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-// Tests aborting an overscroll gesture.
-TEST_F(OverscrollWindowAnimationTest, BasicAbort) {
-  // Start an OVERSCROLL_EAST gesture.
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHSCREEN,
-                                cc::OverscrollBehavior());
-  EXPECT_EQ(OverscrollSource::TOUCHSCREEN, owa()->overscroll_source());
-  // Abort the overscroll.
-  owa()->OnOverscrollModeChange(OVERSCROLL_EAST, OVERSCROLL_NONE,
-                                OverscrollSource::TOUCHSCREEN,
-                                cc::OverscrollBehavior());
-  EXPECT_EQ(OverscrollSource::NONE, owa()->overscroll_source());
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_TRUE(overscroll_aborted());
-}
-
-// Tests starting an overscroll gesture when the slide window cannot be created.
-TEST_F(OverscrollWindowAnimationTest, BasicCannotNavigate) {
-  set_create_window(false);
-  // Start an OVERSCROLL_EAST gesture.
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                cc::OverscrollBehavior());
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::NONE, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-// Tests starting an overscroll gesture while another one was in progress
-// completes the first one.
-TEST_F(OverscrollWindowAnimationTest, NewOverscrollCompletesPreviousGesture) {
-  // This test requires a normal animation duration so that
-  // OnImplicitAnimationsCancelled is not called as soon as the first overscroll
-  // finishes.
-  ui::ScopedAnimationDurationScaleMode normal_duration(
-      ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
-  ui::LayerAnimator* animator = GetMainWindow()->layer()->GetAnimator();
-  ui::ScopedLayerAnimationSettings settings(animator);
-  animator->set_disable_timer_for_test(true);
-  ui::LayerAnimatorTestController test_controller(animator);
-  // Start an OVERSCROLL_EAST gesture.
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                cc::OverscrollBehavior());
-
-  // Finishes the OVERSCROLL_EAST gesture. At this point the window should be
-  // being animated to its final position.
-  owa()->OnOverscrollComplete(OVERSCROLL_EAST);
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHPAD, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_TRUE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  // Start another OVERSCROLL_EAST gesture.
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHSCREEN,
-                                cc::OverscrollBehavior());
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHSCREEN, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_TRUE(overscroll_completing());
-  EXPECT_TRUE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  // Complete the overscroll gesture.
-  ResetFlags();
-  owa()->OnOverscrollComplete(OVERSCROLL_EAST);
-
-  base::TimeDelta duration = settings.GetTransitionDuration();
-  test_controller.StartThreadedAnimationsIfNeeded();
-  base::TimeTicks start_time = base::TimeTicks::Now();
-
-  // Halfway through the animation, OverscrollCompleting should have been fired.
-  animator->Step(start_time + duration / 2);
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHSCREEN, owa()->overscroll_source());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_TRUE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  // The animation has finished, OverscrollCompleted should have been fired.
-  animator->Step(start_time + duration);
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::NONE, owa()->overscroll_source());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_TRUE(overscroll_completing());
-  EXPECT_TRUE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-TEST_F(OverscrollWindowAnimationTest, OverscrollBehaviorAutoAllowsOverscroll) {
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  cc::OverscrollBehavior overscroll_behavior;
-  overscroll_behavior.x = cc::OverscrollBehavior::OverscrollBehaviorType::
-      kOverscrollBehaviorTypeAuto;
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                overscroll_behavior);
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHPAD, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-TEST_F(OverscrollWindowAnimationTest,
-       OverscrollBehaviorContainPreventsOverscroll) {
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  cc::OverscrollBehavior overscroll_behavior;
-  overscroll_behavior.x = cc::OverscrollBehavior::OverscrollBehaviorType::
-      kOverscrollBehaviorTypeContain;
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                overscroll_behavior);
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-TEST_F(OverscrollWindowAnimationTest,
-       OverscrollBehaviorNonePreventsOverscroll) {
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  cc::OverscrollBehavior overscroll_behavior;
-  overscroll_behavior.x = cc::OverscrollBehavior::OverscrollBehaviorType::
-      kOverscrollBehaviorTypeNone;
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                overscroll_behavior);
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-TEST_F(OverscrollWindowAnimationTest,
-       OverscrollBehaviorNoneOnYAllowsOverscroll) {
-  EXPECT_FALSE(owa()->is_active());
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-
-  cc::OverscrollBehavior overscroll_behavior;
-  overscroll_behavior.x = cc::OverscrollBehavior::OverscrollBehaviorType::
-      kOverscrollBehaviorTypeAuto;
-  overscroll_behavior.y = cc::OverscrollBehavior::OverscrollBehaviorType::
-      kOverscrollBehaviorTypeNone;
-  owa()->OnOverscrollModeChange(OVERSCROLL_NONE, OVERSCROLL_EAST,
-                                OverscrollSource::TOUCHPAD,
-                                overscroll_behavior);
-  EXPECT_TRUE(owa()->is_active());
-  EXPECT_EQ(OverscrollSource::TOUCHPAD, owa()->overscroll_source());
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_FALSE(overscroll_completing());
-  EXPECT_FALSE(overscroll_completed());
-  EXPECT_FALSE(overscroll_aborted());
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/overscroll_window_delegate.cc b/content/browser/web_contents/aura/overscroll_window_delegate.cc
deleted file mode 100644
index 3e48518..0000000
--- a/content/browser/web_contents/aura/overscroll_window_delegate.cc
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_window_delegate.h"
-
-#include "base/i18n/rtl.h"
-#include "content/browser/frame_host/navigation_controller_impl.h"
-#include "content/browser/frame_host/navigation_entry_impl.h"
-#include "content/browser/renderer_host/overscroll_controller_delegate.h"
-#include "content/public/browser/overscroll_configuration.h"
-#include "ui/aura/window.h"
-#include "ui/events/event.h"
-#include "ui/gfx/image/image_png_rep.h"
-
-namespace content {
-
-OverscrollWindowDelegate::OverscrollWindowDelegate(
-    OverscrollControllerDelegate* delegate,
-    const gfx::Image& image)
-    : delegate_(delegate),
-      overscroll_mode_(OVERSCROLL_NONE),
-      delta_x_(0.f),
-      complete_threshold_ratio_touchscreen_(OverscrollConfig::GetThreshold(
-          OverscrollConfig::Threshold::kCompleteTouchscreen)),
-      complete_threshold_ratio_touchpad_(OverscrollConfig::GetThreshold(
-          OverscrollConfig::Threshold::kCompleteTouchpad)),
-      active_complete_threshold_ratio_(0.f),
-      start_threshold_touchscreen_(OverscrollConfig::GetThreshold(
-          OverscrollConfig::Threshold::kStartTouchscreen)),
-      start_threshold_touchpad_(OverscrollConfig::GetThreshold(
-          OverscrollConfig::Threshold::kStartTouchpad)),
-      active_start_threshold_(0.f) {
-  SetImage(image);
-}
-
-OverscrollWindowDelegate::~OverscrollWindowDelegate() {
-}
-
-void OverscrollWindowDelegate::StartOverscroll(OverscrollSource source) {
-  OverscrollMode old_mode = overscroll_mode_;
-  if (delta_x_ > 0)
-    overscroll_mode_ = OVERSCROLL_EAST;
-  else
-    overscroll_mode_ = OVERSCROLL_WEST;
-  delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_, source,
-                                    cc::OverscrollBehavior());
-}
-
-void OverscrollWindowDelegate::ResetOverscroll() {
-  if (overscroll_mode_ == OVERSCROLL_NONE)
-    return;
-  delegate_->OnOverscrollModeChange(overscroll_mode_, OVERSCROLL_NONE,
-                                    OverscrollSource::NONE,
-                                    cc::OverscrollBehavior());
-  overscroll_mode_ = OVERSCROLL_NONE;
-  delta_x_ = 0;
-}
-
-void OverscrollWindowDelegate::CompleteOrResetOverscroll() {
-  if (overscroll_mode_ == OVERSCROLL_NONE)
-    return;
-  gfx::Size display_size = delegate_->GetDisplaySize();
-  int max_size = std::max(display_size.width(), display_size.height());
-  float ratio = (fabs(delta_x_)) / max_size;
-  if (ratio < active_complete_threshold_ratio_) {
-    ResetOverscroll();
-    return;
-  }
-  delegate_->OnOverscrollComplete(overscroll_mode_);
-  overscroll_mode_ = OVERSCROLL_NONE;
-  delta_x_ = 0;
-}
-
-void OverscrollWindowDelegate::UpdateOverscroll(float delta_x,
-                                                OverscrollSource source) {
-  float old_delta_x = delta_x_;
-  delta_x_ += delta_x;
-  if (overscroll_mode_ == OVERSCROLL_NONE) {
-    if (fabs(delta_x_) > active_start_threshold_)
-      StartOverscroll(source);
-    return;
-  }
-  if ((old_delta_x < 0 && delta_x_ > 0) || (old_delta_x > 0 && delta_x_ < 0)) {
-    ResetOverscroll();
-    return;
-  }
-  delegate_->OnOverscrollUpdate(delta_x_, 0.f);
-}
-
-void OverscrollWindowDelegate::OnKeyEvent(ui::KeyEvent* event) {
-  ResetOverscroll();
-}
-
-void OverscrollWindowDelegate::OnMouseEvent(ui::MouseEvent* event) {
-  if (!(event->flags() & ui::EF_IS_SYNTHESIZED) &&
-      event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) {
-    ResetOverscroll();
-  }
-}
-
-void OverscrollWindowDelegate::OnScrollEvent(ui::ScrollEvent* event) {
-  active_start_threshold_ = start_threshold_touchpad_;
-  active_complete_threshold_ratio_ = complete_threshold_ratio_touchpad_;
-  if (event->type() == ui::ET_SCROLL)
-    UpdateOverscroll(event->x_offset_ordinal(), OverscrollSource::TOUCHPAD);
-  else if (event->type() == ui::ET_SCROLL_FLING_START)
-    CompleteOrResetOverscroll();
-  else
-    ResetOverscroll();
-  event->SetHandled();
-}
-
-void OverscrollWindowDelegate::OnGestureEvent(ui::GestureEvent* event) {
-  active_start_threshold_ = start_threshold_touchscreen_;
-  active_complete_threshold_ratio_ = complete_threshold_ratio_touchscreen_;
-  switch (event->type()) {
-    case ui::ET_GESTURE_SCROLL_UPDATE:
-      UpdateOverscroll(event->details().scroll_x(),
-                       OverscrollSource::TOUCHSCREEN);
-      break;
-
-    case ui::ET_GESTURE_SCROLL_END:
-      CompleteOrResetOverscroll();
-      break;
-
-    case ui::ET_SCROLL_FLING_START:
-      CompleteOrResetOverscroll();
-      break;
-
-    case ui::ET_GESTURE_PINCH_BEGIN:
-    case ui::ET_GESTURE_PINCH_UPDATE:
-    case ui::ET_GESTURE_PINCH_END:
-      ResetOverscroll();
-      break;
-
-    default:
-      break;
-  }
-  event->SetHandled();
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/overscroll_window_delegate.h b/content/browser/web_contents/aura/overscroll_window_delegate.h
deleted file mode 100644
index 7c8ca3333..0000000
--- a/content/browser/web_contents/aura/overscroll_window_delegate.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_DELEGATE_H_
-#define CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_DELEGATE_H_
-
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "content/browser/renderer_host/overscroll_controller.h"
-#include "content/browser/web_contents/aura/overscroll_navigation_overlay.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "ui/aura_extra/image_window_delegate.h"
-
-namespace content {
-
-// The window delegate for the overscroll window. This processes UI trackpad and
-// touch events and converts them to overscroll event. The delegate destroys
-// itself when the window is destroyed.
-class CONTENT_EXPORT OverscrollWindowDelegate
-    : public aura_extra::ImageWindowDelegate {
- public:
-  OverscrollWindowDelegate(OverscrollControllerDelegate* delegate,
-                           const gfx::Image& image);
-
- private:
-  FRIEND_TEST_ALL_PREFIXES(OverscrollWindowDelegateTest, BasicOverscrollModes);
-
-  ~OverscrollWindowDelegate() override;
-
-  // Starts the overscroll gesture.
-  void StartOverscroll(OverscrollSource source);
-
-  // Resets the overscroll state.
-  void ResetOverscroll();
-
-  // Completes or resets the overscroll from the current state.
-  void CompleteOrResetOverscroll();
-
-  // Updates the current horizontal overscroll.
-  void UpdateOverscroll(float delta_x, OverscrollSource source);
-
-  // Overridden from ui::EventHandler.
-  void OnKeyEvent(ui::KeyEvent* event) override;
-  void OnMouseEvent(ui::MouseEvent* event) override;
-  void OnScrollEvent(ui::ScrollEvent* event) override;
-  void OnGestureEvent(ui::GestureEvent* event) override;
-
-  // Delegate to which we forward overscroll events.
-  OverscrollControllerDelegate* delegate_;
-
-  // The current overscroll mode.
-  OverscrollMode overscroll_mode_;
-
-  // The latest delta_x scroll update.
-  float delta_x_;
-
-  // The ratio of overscroll at which we consider the overscroll completed, for
-  // touchscreen or touchpad.
-  const float complete_threshold_ratio_touchscreen_;
-  const float complete_threshold_ratio_touchpad_;
-
-  // The ratio of overscroll at which we consider the overscroll completed for
-  // the current touch input.
-  float active_complete_threshold_ratio_;
-
-  // The threshold for starting the overscroll gesture, for touchscreen or
-  // touchpads.
-  const float start_threshold_touchscreen_;
-  const float start_threshold_touchpad_;
-
-  // The threshold for starting the overscroll gesture for the current touch
-  // input.
-  float active_start_threshold_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollWindowDelegate);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_WEB_CONTENTS_AURA_OVERSCROLL_WINDOW_DELEGATE_H_
diff --git a/content/browser/web_contents/aura/overscroll_window_delegate_unittest.cc b/content/browser/web_contents/aura/overscroll_window_delegate_unittest.cc
deleted file mode 100644
index 9ad30783..0000000
--- a/content/browser/web_contents/aura/overscroll_window_delegate_unittest.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/aura/overscroll_window_delegate.h"
-
-#include "base/macros.h"
-#include "content/browser/renderer_host/overscroll_controller_delegate.h"
-#include "content/public/browser/overscroll_configuration.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/aura/test/aura_test_base.h"
-#include "ui/aura/window.h"
-#include "ui/events/gesture_detection/gesture_configuration.h"
-#include "ui/events/test/event_generator.h"
-
-namespace content {
-
-namespace {
-const int kTestDisplayWidth = 800;
-const int kTestWindowWidth = 600;
-}
-
-class OverscrollWindowDelegateTest : public aura::test::AuraTestBase,
-                                     public OverscrollControllerDelegate {
- public:
-  OverscrollWindowDelegateTest()
-      : window_(nullptr),
-        overscroll_complete_(false),
-        overscroll_started_(false),
-        mode_changed_(false),
-        current_mode_(OVERSCROLL_NONE),
-        touch_start_threshold_(OverscrollConfig::GetThreshold(
-            OverscrollConfig::Threshold::kStartTouchscreen)),
-        touch_complete_threshold_(OverscrollConfig::GetThreshold(
-            OverscrollConfig::Threshold::kCompleteTouchscreen)) {}
-
-  ~OverscrollWindowDelegateTest() override {}
-
-  void Reset() {
-    overscroll_complete_ = false;
-    overscroll_started_ = false;
-    mode_changed_ = false;
-    current_mode_ = OVERSCROLL_NONE;
-    window_.reset(CreateNormalWindow(
-        0, root_window(), new OverscrollWindowDelegate(this, gfx::Image())));
-    window_->SetBounds(gfx::Rect(0, 0, kTestWindowWidth, kTestWindowWidth));
-  }
-
-  // Accessors.
-  aura::Window* window() { return window_.get(); }
-
-  bool overscroll_complete() { return overscroll_complete_; }
-  bool overscroll_started() { return overscroll_started_; }
-  bool mode_changed() { return mode_changed_; }
-
-  OverscrollMode current_mode() { return current_mode_; }
-
-  float touch_start_threshold() { return touch_start_threshold_; }
-
-  float touch_complete_threshold() {
-    return kTestDisplayWidth * touch_complete_threshold_;
-  }
-
- protected:
-  // aura::test::AuraTestBase:
-  void SetUp() override {
-    aura::test::AuraTestBase::SetUp();
-    Reset();
-    ui::GestureConfiguration::GetInstance()
-        ->set_max_touch_move_in_pixels_for_click(0);
-  }
-
-  void TearDown() override {
-    window_.reset();
-    aura::test::AuraTestBase::TearDown();
-  }
-
- private:
-  // OverscrollControllerDelegate:
-  gfx::Size GetDisplaySize() const override {
-    return gfx::Size(kTestDisplayWidth, kTestDisplayWidth);
-  }
-
-  bool OnOverscrollUpdate(float delta_x, float delta_y) override {
-    return true;
-  }
-
-  void OnOverscrollComplete(OverscrollMode overscroll_mode) override {
-    overscroll_complete_ = true;
-  }
-
-  void OnOverscrollModeChange(OverscrollMode old_mode,
-                              OverscrollMode new_mode,
-                              OverscrollSource source,
-                              cc::OverscrollBehavior behavior) override {
-    mode_changed_ = true;
-    current_mode_ = new_mode;
-    if (current_mode_ != OVERSCROLL_NONE)
-      overscroll_started_ = true;
-  }
-
-  base::Optional<float> GetMaxOverscrollDelta() const override {
-    return base::nullopt;
-  }
-
-  // Window in which the overscroll window delegate is installed.
-  std::unique_ptr<aura::Window> window_;
-
-  // State flags.
-  bool overscroll_complete_;
-  bool overscroll_started_;
-  bool mode_changed_;
-  OverscrollMode current_mode_;
-
-  // Config defined constants.
-  const float touch_start_threshold_;
-  const float touch_complete_threshold_;
-
-  DISALLOW_COPY_AND_ASSIGN(OverscrollWindowDelegateTest);
-};
-
-// Tests that the basic overscroll gesture works and sends updates to the
-// delegate.
-TEST_F(OverscrollWindowDelegateTest, BasicOverscroll) {
-  ui::test::EventGenerator generator(root_window());
-
-  // Start an OVERSCROLL_EAST gesture.
-  generator.GestureScrollSequence(
-      gfx::Point(0, 0), gfx::Point(touch_complete_threshold() + 1, 10),
-      base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_EAST);
-  EXPECT_TRUE(overscroll_complete());
-
-  Reset();
-  // Start an OVERSCROLL_WEST gesture.
-  generator.GestureScrollSequence(gfx::Point(touch_complete_threshold() + 1, 0),
-                                  gfx::Point(0, 0),
-                                  base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_WEST);
-  EXPECT_TRUE(overscroll_complete());
-}
-
-// Verifies that the OverscrollWindowDelegate direction is set correctly during
-// an overscroll.
-TEST_F(OverscrollWindowDelegateTest, BasicOverscrollModes) {
-  ui::test::EventGenerator generator(root_window());
-  OverscrollWindowDelegate* delegate =
-      static_cast<OverscrollWindowDelegate*>(window()->delegate());
-
-  // Start pressing a touch, but do not start the gesture yet.
-  generator.MoveTouch(gfx::Point(0, 0));
-  generator.PressTouch();
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_NONE);
-
-  // Slide the touch to the right.
-  generator.MoveTouch(gfx::Point(touch_complete_threshold() + 1, 0));
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_EAST);
-
-  // Complete the gesture.
-  generator.ReleaseTouch();
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_NONE);
-  EXPECT_TRUE(overscroll_complete());
-
-  // Start another overscroll.
-  generator.MoveTouch(gfx::Point(touch_complete_threshold() + 1, 0));
-  generator.PressTouch();
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_NONE);
-
-  // Slide the touch to the left.
-  generator.MoveTouch(gfx::Point(0, 0));
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_WEST);
-
-  // Complete the gesture.
-  generator.ReleaseTouch();
-  EXPECT_EQ(delegate->overscroll_mode_, OVERSCROLL_NONE);
-  EXPECT_TRUE(overscroll_complete());
-
-  // Generate a mouse events which normally cancel the overscroll. Confirm
-  // that superfluous mode changed events are not dispatched.
-  Reset();
-  generator.PressLeftButton();
-  generator.MoveMouseTo(gfx::Point(10, 10));
-  EXPECT_FALSE(mode_changed());
-}
-
-// Tests that the overscroll does not start until the gesture gets past a
-// particular threshold.
-TEST_F(OverscrollWindowDelegateTest, OverscrollThreshold) {
-  ui::test::EventGenerator generator(root_window());
-
-  // Start an OVERSCROLL_EAST gesture.
-  generator.GestureScrollSequence(gfx::Point(0, 0),
-                                  gfx::Point(touch_start_threshold(), 0),
-                                  base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_NONE);
-  EXPECT_FALSE(overscroll_complete());
-
-  Reset();
-  // Start an OVERSCROLL_WEST gesture.
-  generator.GestureScrollSequence(gfx::Point(touch_start_threshold(), 0),
-                                  gfx::Point(0, 0),
-                                  base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_FALSE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_NONE);
-  EXPECT_FALSE(overscroll_complete());
-}
-
-// Tests that the overscroll is aborted if the gesture does not get past the
-// completion threshold.
-TEST_F(OverscrollWindowDelegateTest, AbortOverscrollThreshold) {
-  ui::test::EventGenerator generator(root_window());
-
-  // Start an OVERSCROLL_EAST gesture.
-  generator.GestureScrollSequence(gfx::Point(0, 0),
-                                  gfx::Point(touch_start_threshold() + 1, 0),
-                                  base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_NONE);
-  EXPECT_FALSE(overscroll_complete());
-
-  Reset();
-  // Start an OVERSCROLL_WEST gesture.
-  generator.GestureScrollSequence(gfx::Point(touch_start_threshold() + 1, 0),
-                                  gfx::Point(0, 0),
-                                  base::TimeDelta::FromMilliseconds(10), 10);
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_NONE);
-  EXPECT_FALSE(overscroll_complete());
-}
-
-// Tests that the overscroll is aborted if the delegate receives some other
-// event.
-TEST_F(OverscrollWindowDelegateTest, EventAbortsOverscroll) {
-  ui::test::EventGenerator generator(root_window());
-  // Start an OVERSCROLL_EAST gesture, without releasing touch.
-  generator.set_current_screen_location(gfx::Point(0, 0));
-  generator.PressTouch();
-  int touch_x = touch_start_threshold() + 1;
-  generator.MoveTouch(gfx::Point(touch_x, 0));
-  EXPECT_TRUE(overscroll_started());
-  EXPECT_EQ(current_mode(), OVERSCROLL_EAST);
-  EXPECT_FALSE(overscroll_complete());
-
-  // Dispatch a mouse event, the overscroll should be cancelled.
-  generator.PressLeftButton();
-  EXPECT_EQ(current_mode(), OVERSCROLL_NONE);
-  EXPECT_FALSE(overscroll_complete());
-
-  // We should be able to restart the overscroll without lifting the finger.
-  generator.MoveTouch(gfx::Point(touch_x + touch_start_threshold() + 1, 0));
-  EXPECT_EQ(current_mode(), OVERSCROLL_EAST);
-  EXPECT_FALSE(overscroll_complete());
-}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/shadow_layer_delegate.cc b/content/browser/web_contents/aura/shadow_layer_delegate.cc
deleted file mode 100644
index 9e6119eb..0000000
--- a/content/browser/web_contents/aura/shadow_layer_delegate.cc
+++ /dev/null
@@ -1,59 +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 "content/browser/web_contents/aura/shadow_layer_delegate.h"
-
-#include "base/macros.h"
-#include "cc/paint/paint_shader.h"
-#include "third_party/skia/include/effects/SkGradientShader.h"
-#include "ui/aura/window.h"
-#include "ui/compositor/layer.h"
-#include "ui/compositor/paint_recorder.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/skia_util.h"
-
-namespace {
-
-const SkColor kShadowLightColor = SkColorSetARGB(0x0, 0, 0, 0);
-const SkColor kShadowDarkColor = SkColorSetARGB(0x70, 0, 0, 0);
-const int kShadowThick = 7;
-
-}  // namespace
-
-namespace content {
-
-ShadowLayerDelegate::ShadowLayerDelegate(ui::Layer* shadow_for)
-    : layer_(new ui::Layer(ui::LAYER_TEXTURED)) {
-  layer_->set_delegate(this);
-  layer_->SetBounds(gfx::Rect(-kShadowThick, 0, kShadowThick,
-                              shadow_for->bounds().height()));
-  layer_->SetFillsBoundsOpaquely(false);
-  shadow_for->Add(layer_.get());
-}
-
-ShadowLayerDelegate::~ShadowLayerDelegate() {
-}
-
-void ShadowLayerDelegate::OnPaintLayer(const ui::PaintContext& context) {
-  SkPoint points[2];
-  const SkColor kShadowColors[2] = { kShadowLightColor, kShadowDarkColor };
-
-  points[0].iset(0, 0);
-  points[1].iset(kShadowThick, 0);
-
-  gfx::Rect paint_rect = gfx::Rect(0, 0, kShadowThick,
-                                   layer_->bounds().height());
-  cc::PaintFlags flags;
-  flags.setShader(cc::PaintShader::MakeLinearGradient(
-      points, kShadowColors, nullptr, arraysize(points),
-      SkShader::kRepeat_TileMode));
-  ui::PaintRecorder recorder(context, layer_->size());
-  recorder.canvas()->DrawRect(paint_rect, flags);
-}
-
-void ShadowLayerDelegate::OnDeviceScaleFactorChanged(
-    float old_device_scale_factor,
-    float new_device_scale_factor) {}
-
-}  // namespace content
diff --git a/content/browser/web_contents/aura/shadow_layer_delegate.h b/content/browser/web_contents/aura/shadow_layer_delegate.h
deleted file mode 100644
index c93e990..0000000
--- a/content/browser/web_contents/aura/shadow_layer_delegate.h
+++ /dev/null
@@ -1,44 +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 CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
-#define CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
-
-#include <memory>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "ui/compositor/layer_delegate.h"
-
-namespace ui {
-class Layer;
-}
-
-namespace content {
-
-// ShadowLayerDelegate takes care of drawing a shadow on the left edge of
-// another layer.
-class ShadowLayerDelegate : public ui::LayerDelegate {
- public:
-  explicit ShadowLayerDelegate(ui::Layer* shadow_for);
-  ~ShadowLayerDelegate() override;
-
-  // Returns the layer for the shadow. Note that the ShadowLayerDelegate owns
-  // the layer, and the layer is destroyed when the delegate is destroyed.
-  ui::Layer* layer() { return layer_.get(); }
-
- private:
-  // Overridden from ui::LayerDelegate:
-  void OnPaintLayer(const ui::PaintContext& context) override;
-  void OnDeviceScaleFactorChanged(float old_device_scale_factor,
-                                  float new_device_scale_factor) override;
-
-  std::unique_ptr<ui::Layer> layer_;
-
-  DISALLOW_COPY_AND_ASSIGN(ShadowLayerDelegate);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index e570f68..f9e2f64 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -22,7 +22,6 @@
 #include "content/browser/frame_host/interstitial_page_impl.h"
 #include "content/browser/frame_host/navigation_entry_impl.h"
 #include "content/browser/renderer_host/dip_util.h"
-#include "content/browser/renderer_host/display_util.h"
 #include "content/browser/renderer_host/input/touch_selection_controller_client_aura.h"
 #include "content/browser/renderer_host/overscroll_controller.h"
 #include "content/browser/renderer_host/render_view_host_factory.h"
@@ -31,7 +30,6 @@
 #include "content/browser/renderer_host/render_widget_host_input_event_router.h"
 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
 #include "content/browser/web_contents/aura/gesture_nav_simple.h"
-#include "content/browser/web_contents/aura/overscroll_navigation_overlay.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/browser/content_browser_client.h"
 #include "content/public/browser/guest_mode.h"
@@ -73,7 +71,6 @@
 #include "ui/base/ui_base_features.h"
 #include "ui/base/ui_base_switches_util.h"
 #include "ui/compositor/layer.h"
-#include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/events/blink/web_input_event.h"
 #include "ui/events/event.h"
@@ -570,9 +567,6 @@
                             MSG_ROUTING_NONE),
       drag_start_process_id_(ChildProcessHost::kInvalidUniqueID),
       drag_start_view_id_(ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE),
-      current_overscroll_gesture_(OVERSCROLL_NONE),
-      completed_overscroll_gesture_(OVERSCROLL_NONE),
-      navigation_overlay_(nullptr),
       init_rwhv_with_null_parent_for_testing_(false) {}
 
 void WebContentsViewAura::SetDelegateForTesting(
@@ -654,31 +648,18 @@
       OverscrollConfig::GetHistoryNavigationMode();
   switch (mode) {
     case OverscrollConfig::HistoryNavigationMode::kDisabled:
-      navigation_overlay_.reset();
+      gesture_nav_simple_.reset();
       break;
     case OverscrollConfig::HistoryNavigationMode::kParallaxUi:
-      view->overscroll_controller()->set_delegate(this);
-      if (!navigation_overlay_ && !is_mus_browser_plugin_guest_) {
-        navigation_overlay_.reset(
-            new OverscrollNavigationOverlay(web_contents_, window_.get()));
-      }
+      NOTREACHED();
       break;
     case OverscrollConfig::HistoryNavigationMode::kSimpleUi:
-      navigation_overlay_.reset();
       if (!gesture_nav_simple_)
-        gesture_nav_simple_.reset(new GestureNavSimple(web_contents_));
-      view->overscroll_controller()->set_delegate(gesture_nav_simple_.get());
+        gesture_nav_simple_ = std::make_unique<GestureNavSimple>(web_contents_);
       break;
   }
-}
-
-void WebContentsViewAura::CompleteOverscrollNavigation(OverscrollMode mode) {
-  if (!web_contents_->GetRenderWidgetHostView())
-    return;
-  navigation_overlay_->relay_delegate()->OnOverscrollComplete(mode);
-  ui::TouchSelectionController* selection_controller = GetSelectionController();
-  if (selection_controller)
-    selection_controller->HideAndDisallowShowingAutomatically();
+  if (view)
+    view->overscroll_controller()->set_delegate(gesture_nav_simple_.get());
 }
 
 ui::TouchSelectionController* WebContentsViewAura::GetSelectionController()
@@ -964,24 +945,12 @@
 void WebContentsViewAura::SetOverscrollControllerEnabled(bool enabled) {
   RenderWidgetHostViewAura* view =
       ToRenderWidgetHostViewAura(web_contents_->GetRenderWidgetHostView());
-  if (view) {
+  if (view)
     view->SetOverscrollControllerEnabled(enabled);
-    if (enabled)
-      InstallOverscrollControllerDelegate(view);
-  }
-
-  if (!enabled) {
-    navigation_overlay_.reset();
-  } else if (!navigation_overlay_) {
-    if (is_mus_browser_plugin_guest_) {
-      // |is_mus_browser_plugin_guest_| implies this WebContentsViewAura is
-      // held inside a WebContentsViewGuest, which does not forward this call.
-      NOTREACHED();
-    } else {
-      navigation_overlay_.reset(
-          new OverscrollNavigationOverlay(web_contents_, window_.get()));
-    }
-  }
+  if (enabled)
+    InstallOverscrollControllerDelegate(view);
+  else
+    gesture_nav_simple_.reset();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1091,48 +1060,6 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// WebContentsViewAura, OverscrollControllerDelegate implementation:
-
-gfx::Size WebContentsViewAura::GetDisplaySize() const {
-  RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView();
-  if (!rwhv)
-    return gfx::Size();
-
-  return display::Screen::GetScreen()
-      ->GetDisplayNearestView(rwhv->GetNativeView())
-      .size();
-}
-
-bool WebContentsViewAura::OnOverscrollUpdate(float delta_x, float delta_y) {
-  if (current_overscroll_gesture_ != OVERSCROLL_EAST &&
-      current_overscroll_gesture_ != OVERSCROLL_WEST) {
-    return false;
-  }
-
-  return navigation_overlay_->relay_delegate()->OnOverscrollUpdate(delta_x,
-                                                                   delta_y);
-}
-
-void WebContentsViewAura::OnOverscrollComplete(OverscrollMode mode) {
-  CompleteOverscrollNavigation(mode);
-}
-
-void WebContentsViewAura::OnOverscrollModeChange(
-    OverscrollMode old_mode,
-    OverscrollMode new_mode,
-    OverscrollSource source,
-    cc::OverscrollBehavior behavior) {
-  current_overscroll_gesture_ = new_mode;
-  navigation_overlay_->relay_delegate()->OnOverscrollModeChange(
-      old_mode, new_mode, source, behavior);
-  completed_overscroll_gesture_ = OVERSCROLL_NONE;
-}
-
-base::Optional<float> WebContentsViewAura::GetMaxOverscrollDelta() const {
-  return navigation_overlay_->relay_delegate()->GetMaxOverscrollDelta();
-}
-
-////////////////////////////////////////////////////////////////////////////////
 // WebContentsViewAura, aura::WindowDelegate implementation:
 
 gfx::Size WebContentsViewAura::GetMinimumSize() const {
@@ -1196,14 +1123,7 @@
     float old_device_scale_factor,
     float new_device_scale_factor) {}
 
-void WebContentsViewAura::OnWindowDestroying(aura::Window* window) {
-  // This means the destructor is going to be called soon. If there is an
-  // overscroll gesture in progress (i.e. |overscroll_window_| is not NULL),
-  // then destroying it in the WebContentsViewAura destructor can trigger other
-  // virtual functions to be called (e.g. OnImplicitAnimationsCompleted()). So
-  // destroy the overscroll window here.
-  navigation_overlay_.reset();
-}
+void WebContentsViewAura::OnWindowDestroying(aura::Window* window) {}
 
 void WebContentsViewAura::OnWindowDestroyed(aura::Window* window) {
 }
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h
index c42911d..49e2778 100644
--- a/content/browser/web_contents/web_contents_view_aura.h
+++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -12,7 +12,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "content/browser/renderer_host/overscroll_controller_delegate.h"
 #include "content/browser/renderer_host/render_view_host_delegate_view.h"
 #include "content/browser/web_contents/web_contents_view.h"
 #include "content/common/buildflags.h"
@@ -30,7 +29,6 @@
 
 namespace content {
 class GestureNavSimple;
-class OverscrollNavigationOverlay;
 class RenderWidgetHostImpl;
 class RenderWidgetHostViewAura;
 class TouchSelectionControllerClientAura;
@@ -41,7 +39,6 @@
 class CONTENT_EXPORT WebContentsViewAura
     : public WebContentsView,
       public RenderViewHostDelegateView,
-      public OverscrollControllerDelegate,
       public aura::WindowDelegate,
       public aura::client::DragDropDelegate {
  public:
@@ -76,15 +73,6 @@
 
   void InstallOverscrollControllerDelegate(RenderWidgetHostViewAura* view);
 
-  // Sets up the content window in preparation for starting an overscroll
-  // gesture.
-  void PrepareContentWindowForOverscroll();
-
-  // Completes the navigation in response to a completed overscroll gesture.
-  // The navigation happens after an animation (either the overlay window
-  // animates in, or the content window animates out).
-  void CompleteOverscrollNavigation(OverscrollMode mode);
-
   ui::TouchSelectionController* GetSelectionController() const;
   TouchSelectionControllerClientAura* GetSelectionControllerClient() const;
 
@@ -158,16 +146,6 @@
   void HidePopupMenu() override;
 #endif
 
-  // Overridden from OverscrollControllerDelegate:
-  gfx::Size GetDisplaySize() const override;
-  bool OnOverscrollUpdate(float delta_x, float delta_y) override;
-  void OnOverscrollComplete(OverscrollMode overscroll_mode) override;
-  void OnOverscrollModeChange(OverscrollMode old_mode,
-                              OverscrollMode new_mode,
-                              OverscrollSource source,
-                              cc::OverscrollBehavior behavior) override;
-  base::Optional<float> GetMaxOverscrollDelta() const override;
-
   // Overridden from aura::WindowDelegate:
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
@@ -246,17 +224,7 @@
   int drag_start_process_id_;
   GlobalRoutingID drag_start_view_id_;
 
-  // The overscroll gesture currently in progress.
-  OverscrollMode current_overscroll_gesture_;
-
-  // This is the completed overscroll gesture. This is used for the animation
-  // callback that happens in response to a completed overscroll gesture.
-  OverscrollMode completed_overscroll_gesture_;
-
-  // This manages the overlay window that shows the screenshot during a history
-  // navigation triggered by the overscroll gesture.
-  std::unique_ptr<OverscrollNavigationOverlay> navigation_overlay_;
-
+  // Responsible for handling gesture-nav and pull-to-refresh UI.
   std::unique_ptr<GestureNavSimple> gesture_nav_simple_;
 
   bool init_rwhv_with_null_parent_for_testing_;
diff --git a/content/browser/web_contents/web_contents_view_aura_browsertest.cc b/content/browser/web_contents/web_contents_view_aura_browsertest.cc
index 60ec51cd..96041ed4 100644
--- a/content/browser/web_contents/web_contents_view_aura_browsertest.cc
+++ b/content/browser/web_contents/web_contents_view_aura_browsertest.cc
@@ -20,7 +20,7 @@
 #include "build/build_config.h"
 #include "content/browser/frame_host/navigation_controller_impl.h"
 #include "content/browser/frame_host/navigation_entry_impl.h"
-#include "content/browser/frame_host/navigation_entry_screenshot_manager.h"
+#include "content/browser/renderer_host/overscroll_controller.h"
 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/browser/web_contents/web_contents_view.h"
@@ -37,7 +37,6 @@
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/content_browser_test.h"
 #include "content/public/test/content_browser_test_utils.h"
-#include "content/public/test/scoped_overscroll_modes.h"
 #include "content/public/test/test_renderer_host.h"
 #include "content/public/test/test_utils.h"
 #include "content/shell/browser/shell.h"
@@ -67,64 +66,9 @@
 
 namespace content {
 
-// This class keeps track of the RenderViewHost whose screenshot was captured.
-class ScreenshotTracker : public NavigationEntryScreenshotManager {
- public:
-  explicit ScreenshotTracker(NavigationControllerImpl* controller)
-      : NavigationEntryScreenshotManager(controller),
-        screenshot_taken_for_(nullptr),
-        waiting_for_screenshots_(0) {}
-
-  ~ScreenshotTracker() override {}
-
-  RenderViewHost* screenshot_taken_for() { return screenshot_taken_for_; }
-
-  void Reset() {
-    screenshot_taken_for_ = nullptr;
-    screenshot_set_.clear();
-  }
-
-  void SetScreenshotInterval(int interval_ms) {
-    SetMinScreenshotIntervalMS(interval_ms);
-  }
-
-  void WaitUntilScreenshotIsReady() {
-    if (!waiting_for_screenshots_)
-      return;
-    message_loop_runner_ = new content::MessageLoopRunner;
-    message_loop_runner_->Run();
-  }
-
-  bool ScreenshotSetForEntry(NavigationEntryImpl* entry) const {
-    return screenshot_set_.count(entry) > 0;
-  }
-
- private:
-  // Overridden from NavigationEntryScreenshotManager:
-  void WillTakeScreenshot(RenderViewHost* host) override {
-    ++waiting_for_screenshots_;
-    screenshot_taken_for_ = host;
-  }
-
-  void OnScreenshotSet(NavigationEntryImpl* entry) override {
-    --waiting_for_screenshots_;
-    screenshot_set_[entry] = true;
-    NavigationEntryScreenshotManager::OnScreenshotSet(entry);
-    if (waiting_for_screenshots_ == 0 && message_loop_runner_.get())
-      message_loop_runner_->Quit();
-  }
-
-  RenderViewHost* screenshot_taken_for_;
-  scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
-  int waiting_for_screenshots_;
-  std::map<NavigationEntryImpl*, bool> screenshot_set_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScreenshotTracker);
-};
-
 class WebContentsViewAuraTest : public ContentBrowserTest {
  public:
-  WebContentsViewAuraTest() : screenshot_manager_(nullptr) {}
+  WebContentsViewAuraTest() = default;
 
   // Executes the javascript synchronously and makes sure the returned value is
   // freed properly.
@@ -145,13 +89,6 @@
       test_url = GURL(embedded_test_server()->GetURL(url));
     NavigateToURL(shell(), test_url);
 
-    WebContentsImpl* web_contents =
-        static_cast<WebContentsImpl*>(shell()->web_contents());
-    NavigationControllerImpl* controller = &web_contents->GetController();
-
-    screenshot_manager_ = new ScreenshotTracker(controller);
-    controller->SetScreenshotManager(base::WrapUnique(screenshot_manager_));
-
     frame_observer_ = std::make_unique<RenderFrameSubmissionObserver>(
         shell()->web_contents());
   }
@@ -297,11 +234,6 @@
   void StopObserveringFrames() { frame_observer_.reset(); }
 
  protected:
-  ScreenshotTracker* screenshot_manager() { return screenshot_manager_; }
-  void set_min_screenshot_interval(int interval_ms) {
-    screenshot_manager_->SetScreenshotInterval(interval_ms);
-  }
-
   // ContentBrowserTest:
   void PostRunTestOnMainThread() override {
     // Delete this before the WebContents is destroyed.
@@ -310,7 +242,6 @@
   }
 
  private:
-  ScreenshotTracker* screenshot_manager_;
   std::unique_ptr<RenderFrameSubmissionObserver> frame_observer_;
 
   DISALLOW_COPY_AND_ASSIGN(WebContentsViewAuraTest);
@@ -537,220 +468,6 @@
   // Do not end the overscroll sequence.
 }
 
-// Tests that the page has has a screenshot when navigation happens:
-//  - from within the page (from a JS function)
-//  - interactively, when user does an overscroll gesture
-//  - interactively, when user navigates in history without the overscroll
-//    gesture.
-// Flaky on Windows (http://crbug.com/357311). Might be related to
-// OverscrollNavigation test.
-// Flaky on Ozone (http://crbug.com/399676).
-// Flaky on ChromeOS (http://crbug.com/405945).
-// Flaky on Linux (http://crbug.com/705599)
-#if defined(OS_WIN) || defined(USE_OZONE) || defined(OS_CHROMEOS) || \
-    defined(OS_LINUX)
-#define MAYBE_OverscrollScreenshot DISABLED_OverscrollScreenshot
-#else
-#define MAYBE_OverscrollScreenshot OverscrollScreenshot
-#endif
-IN_PROC_BROWSER_TEST_F(WebContentsViewAuraTest, MAYBE_OverscrollScreenshot) {
-  ScopedHistoryNavigationMode scoped_mode(
-      OverscrollConfig::HistoryNavigationMode::kParallaxUi);
-
-  ASSERT_NO_FATAL_FAILURE(StartTestWithPage("/overscroll_navigation.html"));
-  WebContentsImpl* web_contents =
-      static_cast<WebContentsImpl*>(shell()->web_contents());
-  RenderFrameHost* main_frame = web_contents->GetMainFrame();
-
-  set_min_screenshot_interval(0);
-
-  // Do a few navigations initiated by the page.
-  // Screenshots should never be captured since these are all in-page
-  // navigations.
-  ExecuteSyncJSFunction(main_frame, "navigate_next()");
-  EXPECT_EQ(1, GetCurrentIndex());
-  ExecuteSyncJSFunction(main_frame, "navigate_next()");
-  EXPECT_EQ(2, GetCurrentIndex());
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-
-  NavigationEntryImpl* entry = web_contents->GetController().GetEntryAtIndex(2);
-  EXPECT_FALSE(entry->screenshot().get());
-
-  entry = web_contents->GetController().GetEntryAtIndex(1);
-  EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-
-  entry = web_contents->GetController().GetEntryAtIndex(0);
-  EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-
-  ExecuteSyncJSFunction(main_frame, "navigate_next()");
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-
-  entry = web_contents->GetController().GetEntryAtIndex(2);
-  EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-
-  entry = web_contents->GetController().GetEntryAtIndex(3);
-  EXPECT_FALSE(entry->screenshot().get());
-  {
-    // Now, swipe right to navigate backwards. This should navigate away from
-    // index 3 to index 2.
-    base::string16 expected_title = base::ASCIIToUTF16("Title: #2");
-    content::TitleWatcher title_watcher(web_contents, expected_title);
-    aura::Window* content = web_contents->GetContentNativeView();
-    gfx::Rect bounds = content->GetBoundsInRootWindow();
-    ui::test::EventGenerator generator(content->GetRootWindow(), content);
-    generator.GestureScrollSequence(
-        gfx::Point(bounds.x() + 2, bounds.y() + 10),
-        gfx::Point(bounds.right() - 10, bounds.y() + 10),
-        base::TimeDelta::FromMilliseconds(20),
-        1);
-    base::string16 actual_title = title_watcher.WaitAndGetTitle();
-    EXPECT_EQ(expected_title, actual_title);
-    EXPECT_EQ(2, GetCurrentIndex());
-    screenshot_manager()->WaitUntilScreenshotIsReady();
-    entry = web_contents->GetController().GetEntryAtIndex(3);
-    EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-  }
-
-  // Navigate a couple more times.
-  ExecuteSyncJSFunction(main_frame, "navigate_next()");
-  EXPECT_EQ(3, GetCurrentIndex());
-  ExecuteSyncJSFunction(main_frame, "navigate_next()");
-  EXPECT_EQ(4, GetCurrentIndex());
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-  entry = web_contents->GetController().GetEntryAtIndex(4);
-  EXPECT_FALSE(entry->screenshot().get());
-
-  {
-    // Navigate back in history.
-    base::string16 expected_title = base::ASCIIToUTF16("Title: #3");
-    content::TitleWatcher title_watcher(web_contents, expected_title);
-    web_contents->GetController().GoBack();
-    base::string16 actual_title = title_watcher.WaitAndGetTitle();
-    EXPECT_EQ(expected_title, actual_title);
-    EXPECT_EQ(3, GetCurrentIndex());
-    screenshot_manager()->WaitUntilScreenshotIsReady();
-    entry = web_contents->GetController().GetEntryAtIndex(4);
-    EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-  }
-}
-
-// Crashes under ThreadSanitizer, http://crbug.com/356758.
-#if defined(THREAD_SANITIZER)
-#define MAYBE_ScreenshotForSwappedOutRenderViews \
-    DISABLED_ScreenshotForSwappedOutRenderViews
-#else
-#define MAYBE_ScreenshotForSwappedOutRenderViews \
-    ScreenshotForSwappedOutRenderViews
-#endif
-// Tests that screenshot is taken correctly when navigation causes a
-// RenderViewHost to be swapped out.
-IN_PROC_BROWSER_TEST_F(WebContentsViewAuraTest,
-                       MAYBE_ScreenshotForSwappedOutRenderViews) {
-  ScopedHistoryNavigationMode scoped_mode(
-      OverscrollConfig::HistoryNavigationMode::kParallaxUi);
-
-  ASSERT_NO_FATAL_FAILURE(StartTestWithPage("/overscroll_navigation.html"));
-  // Create a new server with a different site.
-  net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
-  https_server.ServeFilesFromSourceDirectory("content/test/data");
-  ASSERT_TRUE(https_server.Start());
-
-  WebContentsImpl* web_contents =
-      static_cast<WebContentsImpl*>(shell()->web_contents());
-  set_min_screenshot_interval(0);
-
-  struct {
-    GURL url;
-    int transition;
-  } navigations[] = {
-      {https_server.GetURL("/title1.html"),
-       ui::PAGE_TRANSITION_TYPED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR},
-      {embedded_test_server()->GetURL("/title2.html"),
-       ui::PAGE_TRANSITION_AUTO_BOOKMARK},
-      {https_server.GetURL("/title3.html"),
-       ui::PAGE_TRANSITION_TYPED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR},
-      {GURL(), 0}};
-
-  screenshot_manager()->Reset();
-
-  // We are about to destroy the WebContents we are observing, so stop
-  // observation.
-  StopObserveringFrames();
-
-  for (int i = 0; !navigations[i].url.is_empty(); ++i) {
-    // Navigate via the user initiating a navigation from the UI.
-    NavigationController::LoadURLParams params(navigations[i].url);
-    params.transition_type =
-        ui::PageTransitionFromInt(navigations[i].transition);
-
-    RenderViewHost* old_host = web_contents->GetRenderViewHost();
-    web_contents->GetController().LoadURLWithParams(params);
-    WaitForLoadStop(web_contents);
-    screenshot_manager()->WaitUntilScreenshotIsReady();
-
-    EXPECT_NE(old_host, web_contents->GetRenderViewHost())
-        << navigations[i].url.spec();
-    EXPECT_EQ(old_host, screenshot_manager()->screenshot_taken_for());
-
-    NavigationEntryImpl* entry =
-        web_contents->GetController().GetEntryAtOffset(-1);
-    EXPECT_TRUE(screenshot_manager()->ScreenshotSetForEntry(entry));
-
-    entry = web_contents->GetController().GetLastCommittedEntry();
-    EXPECT_FALSE(screenshot_manager()->ScreenshotSetForEntry(entry));
-    EXPECT_FALSE(entry->screenshot().get());
-    screenshot_manager()->Reset();
-  }
-
-  // Increase the minimum interval between taking screenshots.
-  set_min_screenshot_interval(60000);
-
-  // Navigate again. This should not take any screenshot because of the
-  // increased screenshot interval.
-  NavigationController::LoadURLParams params(navigations[0].url);
-  params.transition_type = ui::PageTransitionFromInt(navigations[0].transition);
-  web_contents->GetController().LoadURLWithParams(params);
-  WaitForLoadStop(web_contents);
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-
-  EXPECT_EQ(nullptr, screenshot_manager()->screenshot_taken_for());
-}
-
-// Tests that navigations resulting from reloads, history.replaceState,
-// and history.pushState do not capture screenshots.
-IN_PROC_BROWSER_TEST_F(WebContentsViewAuraTest, ReplaceStateReloadPushState) {
-  ScopedHistoryNavigationMode scoped_mode(
-      OverscrollConfig::HistoryNavigationMode::kParallaxUi);
-
-  ASSERT_NO_FATAL_FAILURE(StartTestWithPage("/overscroll_navigation.html"));
-  WebContentsImpl* web_contents =
-      static_cast<WebContentsImpl*>(shell()->web_contents());
-  RenderFrameHost* main_frame = web_contents->GetMainFrame();
-
-  set_min_screenshot_interval(0);
-  screenshot_manager()->Reset();
-  ExecuteSyncJSFunction(main_frame, "use_replace_state()");
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-  // history.replaceState shouldn't capture a screenshot
-  EXPECT_FALSE(screenshot_manager()->screenshot_taken_for());
-  screenshot_manager()->Reset();
-  web_contents->GetController().Reload(ReloadType::NORMAL, true);
-  WaitForLoadStop(web_contents);
-  // reloading the page shouldn't capture a screenshot
-  // TODO (mfomitchev): currently broken. Uncomment when
-  // FrameHostMsg_DidCommitProvisionalLoad_Params.was_within_same_document
-  // is populated properly when reloading the page.
-  // EXPECT_FALSE(screenshot_manager()->screenshot_taken_for());
-  screenshot_manager()->Reset();
-  ExecuteSyncJSFunction(main_frame, "use_push_state()");
-  screenshot_manager()->WaitUntilScreenshotIsReady();
-  // pushing a state shouldn't capture a screenshot
-  // TODO (mfomitchev): currently broken. Uncomment when
-  // FrameHostMsg_DidCommitProvisionalLoad_Params.was_within_same_document
-  // is populated properly when pushState is used.
-  // EXPECT_FALSE(screenshot_manager()->screenshot_taken_for());
-}
-
 // TODO(sadrul): This test is disabled because it reparents in a way the
 //               FocusController does not support. This code would crash in
 //               a production build. It only passed prior to this revision
diff --git a/content/browser/web_contents/web_contents_view_aura_unittest.cc b/content/browser/web_contents/web_contents_view_aura_unittest.cc
index 4fe10a15..74b88e8 100644
--- a/content/browser/web_contents/web_contents_view_aura_unittest.cc
+++ b/content/browser/web_contents/web_contents_view_aura_unittest.cc
@@ -96,9 +96,9 @@
 TEST_F(WebContentsViewAuraTest, EnableDisableOverscroll) {
   WebContentsViewAura* wcva = view();
   wcva->SetOverscrollControllerEnabled(false);
-  EXPECT_FALSE(wcva->navigation_overlay_);
+  EXPECT_FALSE(wcva->gesture_nav_simple_);
   wcva->SetOverscrollControllerEnabled(true);
-  EXPECT_TRUE(wcva->navigation_overlay_);
+  EXPECT_TRUE(wcva->gesture_nav_simple_);
 }
 
 TEST_F(WebContentsViewAuraTest, ShowHideParent) {
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 80885f9c..f46e485 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -537,7 +537,6 @@
   IPC_STRUCT_TRAITS_MEMBER(feature)
   IPC_STRUCT_TRAITS_MEMBER(matches_all_origins)
   IPC_STRUCT_TRAITS_MEMBER(matches_opaque_src)
-  IPC_STRUCT_TRAITS_MEMBER(disposition)
   IPC_STRUCT_TRAITS_MEMBER(origins)
 IPC_STRUCT_TRAITS_END()
 
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 811dab2..b5f1d18 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -131,6 +131,9 @@
 
 #endif
 
+// Make the RenderWidget background transparent or opaque.
+IPC_MESSAGE_ROUTED1(ViewMsg_SetBackgroundOpaque, bool /* opaque */)
+
 // Sends updated preferences to the renderer.
 IPC_MESSAGE_ROUTED1(ViewMsg_SetRendererPrefs,
                     content::RendererPreferences)
diff --git a/content/common/widget_messages.h b/content/common/widget_messages.h
index 48d584db..208aea8 100644
--- a/content/common/widget_messages.h
+++ b/content/common/widget_messages.h
@@ -163,9 +163,6 @@
 // accordingly, etc.).
 IPC_MESSAGE_ROUTED1(WidgetMsg_SetActive, bool /* active */)
 
-// Make the RenderWidget background transparent or opaque.
-IPC_MESSAGE_ROUTED1(WidgetMsg_SetBackgroundOpaque, bool /* opaque */)
-
 // Changes the text direction of the currently selected input field (if any).
 IPC_MESSAGE_ROUTED1(WidgetMsg_SetTextDirection,
                     blink::WebTextDirection /* direction */)
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index 0b1f48b..49aeb5f 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -648,11 +648,6 @@
 }
 #endif  // defined(OS_WIN)
 
-std::unique_ptr<base::Value> ContentBrowserClient::GetServiceManifestOverlay(
-    base::StringPiece name) {
-  return nullptr;
-}
-
 ContentBrowserClient::OutOfProcessServiceInfo::OutOfProcessServiceInfo() =
     default;
 
@@ -680,6 +675,11 @@
   return false;
 }
 
+base::Optional<service_manager::Manifest>
+ContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
+  return base::nullopt;
+}
+
 std::vector<ContentBrowserClient::ServiceManifestInfo>
 ContentBrowserClient::GetExtraServiceManifests() {
   return std::vector<ContentBrowserClient::ServiceManifestInfo>();
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 14d65047..dc15374 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -45,6 +45,7 @@
 #include "services/network/public/mojom/network_context.mojom.h"
 #include "services/network/public/mojom/websocket.mojom.h"
 #include "services/service_manager/public/cpp/binder_registry.h"
+#include "services/service_manager/public/cpp/manifest.h"
 #include "services/service_manager/public/mojom/service.mojom.h"
 #include "services/service_manager/sandbox/sandbox_type.h"
 #include "storage/browser/fileapi/file_system_context.h"
@@ -1011,11 +1012,14 @@
   virtual bool ShouldTerminateOnServiceQuit(
       const service_manager::Identity& id);
 
-  // Allow the embedder to provide a dictionary loaded from a JSON file
-  // resembling a service manifest whose capabilities section will be merged
-  // with content's own for |name|. Additional entries will be appended to their
-  // respective sections.
-  virtual std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  // Allows the embedder to amend service manifests for existing services.
+  // Specifically, the sets of exposed and required capabilities, interface
+  // filter capabilities (deprecated), packaged services, and preloaded files
+  // will be taken from the returned Manifest and appended to those of the
+  // existing Manifest for the service named |name|.
+  //
+  // If no overlay is provided for the service, this returns |base::nullopt|.
+  virtual base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name);
 
   struct ServiceManifestInfo {
diff --git a/content/public/test/test_launcher.cc b/content/public/test/test_launcher.cc
index 408ccb2c..38425c8 100644
--- a/content/public/test/test_launcher.cc
+++ b/content/public/test/test_launcher.cc
@@ -508,7 +508,8 @@
   // parsing failed.
   if (have_test_results && !parsed_results.empty()) {
     // We expect only one test result here.
-    DCHECK_EQ(1U, parsed_results.size());
+    DCHECK_EQ(1U, parsed_results.size())
+        << "Unexpectedly ran test more than once: " << test_name;
     DCHECK_EQ(test_name, parsed_results.front().full_name);
 
     result = parsed_results.front();
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index 4c15d7b..91f7578 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -483,8 +483,11 @@
   blink::WebString web_name = src.GetName(nameFrom, nameObjects);
   if ((!web_name.IsEmpty() && !web_name.IsNull()) ||
       nameFrom == ax::mojom::NameFrom::kAttributeExplicitlyEmpty) {
+    int max_length = dst->role == ax::mojom::Role::kStaticText
+                         ? kMaxStaticTextLength
+                         : kMaxStringAttributeLength;
     TruncateAndAddStringAttribute(dst, ax::mojom::StringAttribute::kName,
-                                  web_name.Utf8());
+                                  web_name.Utf8(), max_length);
     dst->SetNameFrom(nameFrom);
     AddIntListAttributeFromWebObjects(
         ax::mojom::IntListAttribute::kLabelledbyIds, nameObjects, dst);
@@ -1011,11 +1014,11 @@
 void BlinkAXTreeSource::TruncateAndAddStringAttribute(
     AXContentNodeData* dst,
     ax::mojom::StringAttribute attribute,
-    const std::string& value) const {
-  if (value.size() > BlinkAXTreeSource::kMaxStringAttributeLength) {
+    const std::string& value,
+    uint32_t max_len) const {
+  if (value.size() > max_len) {
     std::string truncated;
-    base::TruncateUTF8ToByteSize(
-        value, BlinkAXTreeSource::kMaxStringAttributeLength, &truncated);
+    base::TruncateUTF8ToByteSize(value, max_len, &truncated);
     dst->AddStringAttribute(attribute, truncated);
   } else {
     dst->AddStringAttribute(attribute, value);
diff --git a/content/renderer/accessibility/blink_ax_tree_source.h b/content/renderer/accessibility/blink_ax_tree_source.h
index 81e87f0..3ad1167 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.h
+++ b/content/renderer/accessibility/blink_ax_tree_source.h
@@ -110,10 +110,16 @@
 
   blink::WebAXObject ComputeRoot() const;
 
-  uint32_t kMaxStringAttributeLength = 10000;
-  void TruncateAndAddStringAttribute(AXContentNodeData* dst,
-                                     ax::mojom::StringAttribute attribute,
-                                     const std::string& value) const;
+  // Max length for attributes such as aria-label.
+  static const uint32_t kMaxStringAttributeLength = 10000;
+  // Max length for a static text name.
+  // Length of War and Peace (http://www.gutenberg.org/files/2600/2600-0.txt).
+  static const uint32_t kMaxStaticTextLength = 3227574;
+  void TruncateAndAddStringAttribute(
+      AXContentNodeData* dst,
+      ax::mojom::StringAttribute attribute,
+      const std::string& value,
+      uint32_t max_len = kMaxStringAttributeLength) const;
 
   RenderFrameImpl* render_frame_;
 
diff --git a/content/renderer/compositor/layer_tree_view.cc b/content/renderer/compositor/layer_tree_view.cc
index e82b0c8..e2364d4 100644
--- a/content/renderer/compositor/layer_tree_view.cc
+++ b/content/renderer/compositor/layer_tree_view.cc
@@ -301,6 +301,10 @@
   layer_tree_host_->RequestNewLocalSurfaceId();
 }
 
+void LayerTreeView::RequestForceSendMetadata() {
+  layer_tree_host_->RequestForceSendMetadata();
+}
+
 void LayerTreeView::SetViewportVisibleRect(const gfx::Rect& visible_rect) {
   layer_tree_host_->SetViewportVisibleRect(visible_rect);
 }
diff --git a/content/renderer/compositor/layer_tree_view.h b/content/renderer/compositor/layer_tree_view.h
index dbc4dc67..9ecb8e3 100644
--- a/content/renderer/compositor/layer_tree_view.h
+++ b/content/renderer/compositor/layer_tree_view.h
@@ -119,6 +119,7 @@
       float device_scale_factor,
       const viz::LocalSurfaceIdAllocation& local_surface_id_allocation);
   void RequestNewLocalSurfaceId();
+  void RequestForceSendMetadata();
   void SetViewportVisibleRect(const gfx::Rect& visible_rect);
   void SetURLForUkm(const GURL& url);
   // Call this if the compositor is becoming non-visible in a way that it won't
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
index 83ed0ba8..ba4ac31 100644
--- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
+++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
@@ -481,6 +481,12 @@
   return CheckContextLost() ? nullptr : context_provider_;
 }
 
+gpu::ContextSupport*
+GpuVideoAcceleratorFactoriesImpl::GetMediaContextProviderContextSupport() {
+  auto context_provider = GetMediaContextProvider();
+  return context_provider ? context_provider->ContextSupport() : nullptr;
+}
+
 void GpuVideoAcceleratorFactoriesImpl::SetRenderingColorSpace(
     const gfx::ColorSpace& color_space) {
   rendering_color_space_ = color_space;
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h
index c8718cd..7190217 100644
--- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h
+++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h
@@ -125,6 +125,7 @@
 
   scoped_refptr<ws::ContextProviderCommandBuffer> GetMediaContextProvider()
       override;
+  gpu::ContextSupport* GetMediaContextProviderContextSupport() override;
 
   void SetRenderingColorSpace(const gfx::ColorSpace& color_space) override;
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index f2cd719..1dedf10 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -403,9 +403,9 @@
 }
 
 // Returns the original request url. If there is no redirect, the original
-// url is the same as ds->getRequest()->url(). If the WebDocumentLoader belongs
-// to a frame was loaded by loadData, the original url will be
-// ds->unreachableURL()
+// url is the same as document loader's OriginalUrl(). If the WebDocumentLoader
+// belongs to a frame was loaded by loadData, the original url will be
+// it's UnreachableURL().
 GURL GetOriginalRequestURL(WebDocumentLoader* document_loader) {
   GURL overriden_url;
   if (MaybeGetOverriddenURL(document_loader, &overriden_url))
@@ -2774,8 +2774,8 @@
     return;
 
   // Notify the browser that we failed a provisional load with an error.
-  SendFailedProvisionalLoad(document_loader->GetRequest().HttpMethod().Ascii(),
-                            error, frame_);
+  SendFailedProvisionalLoad(document_loader->HttpMethod().Ascii(), error,
+                            frame_);
 
   if (!ShouldDisplayErrorPageForFailedLoad(error.reason(), error.url()))
     return;
@@ -2809,15 +2809,13 @@
     const base::Optional<std::string>& error_page_content,
     bool replace_current_item,
     bool inherit_document_state) {
-  WebURLRequest failed_request = document_loader->GetRequest();
-
   std::string error_html;
   if (error_page_content) {
     error_html = error_page_content.value();
   } else {
     GetContentClient()->renderer()->PrepareErrorPage(
-        this, error, failed_request.HttpMethod().Ascii(),
-        failed_request.GetCacheMode() ==
+        this, error, document_loader->HttpMethod().Ascii(),
+        document_loader->GetCacheMode() ==
             blink::mojom::FetchCacheMode::kBypassCache,
         &error_html);
   }
@@ -2843,9 +2841,10 @@
   }
 
   // Locally generated error pages should not be cached.
-  failed_request.SetCacheMode(blink::mojom::FetchCacheMode::kNoStore);
-  failed_request.SetURL(GURL(kUnreachableWebDataURL));
-  navigation_params->request = failed_request;
+  navigation_params->request = document_loader->GetRequest();
+  navigation_params->request.SetCacheMode(
+      blink::mojom::FetchCacheMode::kNoStore);
+  navigation_params->request.SetURL(GURL(kUnreachableWebDataURL));
 
   if (replace_current_item)
     navigation_params->frame_load_type = WebFrameLoadType::kReplaceCurrentItem;
@@ -4552,9 +4551,8 @@
     WebURL unreachable_url = frame_->GetDocument().Url();
     std::string error_html;
     GetContentClient()->renderer()->PrepareErrorPageForHttpStatusError(
-        this, unreachable_url,
-        document_loader->GetRequest().HttpMethod().Ascii(),
-        document_loader->GetRequest().GetCacheMode() ==
+        this, unreachable_url, document_loader->HttpMethod().Ascii(),
+        document_loader->GetCacheMode() ==
             blink::mojom::FetchCacheMode::kBypassCache,
         http_status_code, &error_html);
     // This call may run scripts, e.g. via the beforeunload event, and possibly
@@ -4590,12 +4588,12 @@
   WebDocumentLoader* document_loader = frame_->GetDocumentLoader();
   DCHECK(document_loader);
 
-  const WebURLRequest& failed_request = document_loader->GetRequest();
   base::string16 error_description;
   GetContentClient()->renderer()->GetErrorDescription(
-      error, failed_request.HttpMethod().Ascii(), &error_description);
+      error, document_loader->HttpMethod().Ascii(), &error_description);
   Send(new FrameHostMsg_DidFailLoadWithError(
-      routing_id_, failed_request.Url(), error.reason(), error_description));
+      routing_id_, document_loader->GetUrl(), error.reason(),
+      error_description));
 }
 
 void RenderFrameImpl::DidFinishLoad() {
@@ -5479,7 +5477,6 @@
     blink::WebHistoryCommitType commit_type,
     ui::PageTransition transition) {
   WebDocumentLoader* document_loader = frame_->GetDocumentLoader();
-  const WebURLRequest& request = document_loader->GetRequest();
   const WebURLResponse& response = document_loader->GetResponse();
 
   InternalDocumentStateData* internal_data =
@@ -5552,7 +5549,7 @@
 
   params->content_source_id = GetLocalRootRenderWidget()->GetContentSourceId();
 
-  params->method = request.HttpMethod().Latin1();
+  params->method = document_loader->HttpMethod().Latin1();
   if (params->method == "POST")
     params->post_id = ExtractPostId(current_history_item_);
 
@@ -5564,11 +5561,11 @@
   // set the referrer appropriately.
   if (document_loader->IsClientRedirect()) {
     params->referrer =
-        Referrer(params->redirects[0],
-                 document_loader->GetRequest().GetReferrerPolicy());
+        Referrer(params->redirects[0], document_loader->GetReferrerPolicy());
   } else {
-    params->referrer = RenderViewImpl::GetReferrerFromRequest(
-        frame_, document_loader->GetRequest());
+    params->referrer =
+        Referrer(blink::WebStringToGURL(document_loader->Referrer()),
+                 document_loader->GetReferrerPolicy());
   }
 
   if (!frame_->Parent()) {
diff --git a/content/renderer/render_frame_metadata_observer_impl.cc b/content/renderer/render_frame_metadata_observer_impl.cc
index 1f2df208..dd216915 100644
--- a/content/renderer/render_frame_metadata_observer_impl.cc
+++ b/content/renderer/render_frame_metadata_observer_impl.cc
@@ -34,7 +34,8 @@
 
 void RenderFrameMetadataObserverImpl::OnRenderFrameSubmission(
     const cc::RenderFrameMetadata& render_frame_metadata,
-    viz::CompositorFrameMetadata* compositor_frame_metadata) {
+    viz::CompositorFrameMetadata* compositor_frame_metadata,
+    bool force_send) {
   // By default only report metadata changes for fields which have a low
   // frequency of change. However if there are changes in high frequency
   // fields these can be reported while testing is enabled.
@@ -54,6 +55,7 @@
                           *last_render_frame_metadata_, render_frame_metadata,
                           &needs_activation_notification);
     }
+    send_metadata |= force_send;
   }
 
   // Allways cache the full metadata, so that it can correctly be sent upon
diff --git a/content/renderer/render_frame_metadata_observer_impl.h b/content/renderer/render_frame_metadata_observer_impl.h
index ffa830f..fc830dc9 100644
--- a/content/renderer/render_frame_metadata_observer_impl.h
+++ b/content/renderer/render_frame_metadata_observer_impl.h
@@ -35,7 +35,8 @@
   void BindToCurrentThread() override;
   void OnRenderFrameSubmission(
       const cc::RenderFrameMetadata& render_frame_metadata,
-      viz::CompositorFrameMetadata* compositor_frame_metadata) override;
+      viz::CompositorFrameMetadata* compositor_frame_metadata,
+      bool force_send) override;
 
   // mojom::RenderFrameMetadataObserver:
   void ReportAllFrameSubmissionsForTesting(bool enabled) override;
diff --git a/content/renderer/render_frame_metadata_observer_impl_unittest.cc b/content/renderer/render_frame_metadata_observer_impl_unittest.cc
index 462e639..1f5803a 100644
--- a/content/renderer/render_frame_metadata_observer_impl_unittest.cc
+++ b/content/renderer/render_frame_metadata_observer_impl_unittest.cc
@@ -98,7 +98,8 @@
   cc::RenderFrameMetadata render_frame_metadata;
   render_frame_metadata.is_mobile_optimized = true;
   observer_impl().OnRenderFrameSubmission(render_frame_metadata,
-                                          &compositor_frame_metadata);
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
   // |is_mobile_optimized| should be synchronized with frame activation so
   // RenderFrameMetadataObserverImpl should ask for the frame token from
   // Viz.
@@ -124,7 +125,8 @@
   render_frame_metadata.root_layer_size = gfx::SizeF(100.f, 100.f);
   render_frame_metadata.scrollable_viewport_size = gfx::SizeF(100.f, 50.f);
   observer_impl().OnRenderFrameSubmission(render_frame_metadata,
-                                          &compositor_frame_metadata);
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
   // The first RenderFrameMetadata will always get a corresponding frame token
   // from Viz because this is the first frame.
   EXPECT_TRUE(compositor_frame_metadata.send_frame_token_to_embedder);
@@ -140,7 +142,8 @@
   render_frame_metadata.root_scroll_offset = gfx::Vector2dF(0.f, 0.f);
 
   observer_impl().OnRenderFrameSubmission(render_frame_metadata,
-                                          &compositor_frame_metadata);
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
   // Android does not need a corresponding frame token.
   EXPECT_FALSE(compositor_frame_metadata.send_frame_token_to_embedder);
   {
@@ -155,4 +158,60 @@
 }
 #endif
 
+// This test verifies that a request to force send metadata is respected.
+TEST_F(RenderFrameMetadataObserverImplTest, ForceSendMetadata) {
+  const uint32_t expected_frame_token = 1337;
+  viz::CompositorFrameMetadata compositor_frame_metadata;
+  compositor_frame_metadata.send_frame_token_to_embedder = false;
+  compositor_frame_metadata.frame_token = expected_frame_token;
+  cc::RenderFrameMetadata render_frame_metadata;
+  observer_impl().OnRenderFrameSubmission(render_frame_metadata,
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
+  // The first RenderFrameMetadata will always get a corresponding frame token
+  // from Viz because this is the first frame.
+  EXPECT_TRUE(compositor_frame_metadata.send_frame_token_to_embedder);
+  {
+    base::RunLoop run_loop;
+    EXPECT_CALL(client(), OnRenderFrameMetadataChanged(expected_frame_token,
+                                                       render_frame_metadata))
+        .WillOnce(InvokeClosure(run_loop.QuitClosure()));
+    run_loop.Run();
+  }
+
+  // Submit twice with no changes, but once with |force_send|. We should get
+  // exactly one call to OnRenderFrameMetadataChanged.
+  observer_impl().OnRenderFrameSubmission(render_frame_metadata,
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
+  observer_impl().OnRenderFrameSubmission(
+      render_frame_metadata, &compositor_frame_metadata, true /* force_send */);
+  // Force send does not trigger sending a frame token.
+  EXPECT_FALSE(compositor_frame_metadata.send_frame_token_to_embedder);
+  {
+    base::RunLoop run_loop;
+    // The 0u frame token indicates that the client should not expect
+    // a corresponding frame token from Viz.
+    EXPECT_CALL(client(),
+                OnRenderFrameMetadataChanged(0u, render_frame_metadata))
+        .WillOnce(InvokeClosure(run_loop.QuitClosure()));
+    run_loop.Run();
+  }
+
+  // Update the metadata and send one more message to ensure that no spurious
+  // OnRenderFrameMetadataChanged messages were generated.
+  render_frame_metadata.is_scroll_offset_at_top =
+      !render_frame_metadata.is_scroll_offset_at_top;
+  observer_impl().OnRenderFrameSubmission(render_frame_metadata,
+                                          &compositor_frame_metadata,
+                                          false /* force_send */);
+  {
+    base::RunLoop run_loop;
+    EXPECT_CALL(client(), OnRenderFrameMetadataChanged(expected_frame_token,
+                                                       render_frame_metadata))
+        .WillOnce(InvokeClosure(run_loop.QuitClosure()));
+    run_loop.Run();
+  }
+}
+
 }  // namespace content
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 7e515e057..6f75ddd 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -2175,13 +2175,9 @@
   webprovider =
       GetMainFrame()->GetDocumentLoader()->GetServiceWorkerNetworkProvider();
   ASSERT_TRUE(webprovider);
-  extra_data = static_cast<RequestExtraData*>(
-      GetMainFrame()->GetDocumentLoader()->GetRequest().GetExtraData());
-  ASSERT_TRUE(extra_data);
   provider = ServiceWorkerNetworkProvider::FromWebServiceWorkerNetworkProvider(
       webprovider);
   ASSERT_TRUE(provider);
-  EXPECT_EQ(extra_data->service_worker_provider_id(), provider->provider_id());
   int provider1_id = provider->provider_id();
 
   LoadHTML("<b>New Document B Goes Here</b>");
@@ -2193,10 +2189,6 @@
       webprovider);
   ASSERT_TRUE(provider);
   EXPECT_NE(provider1_id, provider->provider_id());
-  extra_data = static_cast<RequestExtraData*>(
-      GetMainFrame()->GetDocumentLoader()->GetRequest().GetExtraData());
-  ASSERT_TRUE(extra_data);
-  EXPECT_EQ(extra_data->service_worker_provider_id(), provider->provider_id());
 
   // See that subresource requests are also tagged with the provider's id.
   EXPECT_EQ(frame(), RenderFrameImpl::FromWebFrame(GetMainFrame()));
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 966eb09..b3e7f4a 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1264,6 +1264,7 @@
     IPC_MESSAGE_HANDLER(ViewMsg_AnimateDoubleTapZoom,
                         OnAnimateDoubleTapZoomInMainFrame)
     IPC_MESSAGE_HANDLER(ViewMsg_ZoomToFindInPageRect, OnZoomToFindInPageRect)
+    IPC_MESSAGE_HANDLER(ViewMsg_SetBackgroundOpaque, OnSetBackgroundOpaque)
 
     // Page messages.
     IPC_MESSAGE_HANDLER(PageMsg_UpdateWindowScreenRect,
@@ -2160,4 +2161,17 @@
   webview()->ZoomToFindInPageRect(rect_to_zoom);
 }
 
+void RenderViewImpl::OnSetBackgroundOpaque(bool opaque) {
+  if (!webview())
+    return;
+
+  if (opaque) {
+    webview()->ClearBaseBackgroundColorOverride();
+    webview()->ClearBackgroundColorOverride();
+  } else {
+    webview()->SetBaseBackgroundColorOverride(SK_ColorTRANSPARENT);
+    webview()->SetBackgroundColorOverride(SK_ColorTRANSPARENT);
+  }
+}
+
 }  // namespace content
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 112e20f..a747496c 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -462,6 +462,7 @@
   void OnSetPageScale(float page_scale_factor);
   void OnAudioStateChanged(bool is_audio_playing);
   void OnPausePageScheduledTasks(bool paused);
+  void OnSetBackgroundOpaque(bool opaque);
 
   // Page message handlers -----------------------------------------------------
   void OnUpdateWindowScreenRect(gfx::Rect window_screen_rect);
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index c4774ecd..35051fe0 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -588,7 +588,6 @@
     IPC_MESSAGE_HANDLER(WidgetMsg_WasHidden, OnWasHidden)
     IPC_MESSAGE_HANDLER(WidgetMsg_WasShown, OnWasShown)
     IPC_MESSAGE_HANDLER(WidgetMsg_SetActive, OnSetActive)
-    IPC_MESSAGE_HANDLER(WidgetMsg_SetBackgroundOpaque, OnSetBackgroundOpaque)
     IPC_MESSAGE_HANDLER(WidgetMsg_SetTextDirection, OnSetTextDirection)
     IPC_MESSAGE_HANDLER(WidgetMsg_SetBounds_ACK, OnRequestSetBoundsAck)
     IPC_MESSAGE_HANDLER(WidgetMsg_UpdateScreenRects, OnUpdateScreenRects)
@@ -887,25 +886,6 @@
     delegate()->SetActiveForWidget(active);
 }
 
-void RenderWidget::OnSetBackgroundOpaque(bool opaque) {
-  // This IPC never sent when frozen.
-  DCHECK(!is_frozen_);
-  // Background opaque-ness modification is only supported for the main frame.
-  // The delegate() is used as proxy for this RenderWidget being attached
-  // to the main frame.
-  if (!delegate())
-    return;
-
-  blink::WebFrameWidget* web_frame_widget = GetFrameWidget();
-  if (opaque) {
-    web_frame_widget->ClearBaseBackgroundColorOverride();
-    web_frame_widget->ClearBackgroundColorOverride();
-  } else {
-    web_frame_widget->SetBaseBackgroundColorOverride(SK_ColorTRANSPARENT);
-    web_frame_widget->SetBackgroundColorOverride(SK_ColorTRANSPARENT);
-  }
-}
-
 void RenderWidget::OnSetFocus(bool enable) {
   if (delegate())
     delegate()->DidReceiveSetFocusEventForWidget();
@@ -1271,6 +1251,16 @@
     text_input_mode_ = new_mode;
     can_compose_inline_ = new_can_compose_inline;
     text_input_flags_ = new_info.flags;
+
+#if defined(OS_ANDROID)
+    // If we send a new TextInputStateChanged message, we must also deliver a
+    // new RenderFrameMetadata, as the IME will need this info to be updated.
+    // TODO(ericrk): Consider folding the above IPC into RenderFrameMetadata.
+    // https://crbug.com/912309
+    if (layer_tree_view_ && IsSurfaceSynchronizationEnabled()) {
+      layer_tree_view_->RequestForceSendMetadata();
+    }
+#endif
   }
 }
 
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index e5376e6..d35401d 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -506,7 +506,6 @@
 
   void OnSetActive(bool active);
   void OnSetFocus(bool enable);
-  void OnSetBackgroundOpaque(bool opaque);
   void OnMouseCaptureLost();
   void OnCursorVisibilityChange(bool is_visible);
   void OnSetEditCommandsForNextKeyEvent(const EditCommands& edit_commands);
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc
index a67610e..113adb6 100644
--- a/content/renderer/render_widget_unittest.cc
+++ b/content/renderer/render_widget_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/optional.h"
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
 #include "build/build_config.h"
 #include "cc/trees/layer_tree_host.h"
@@ -242,7 +243,11 @@
 
 class RenderWidgetUnittest : public testing::Test {
  public:
-  RenderWidgetUnittest() {
+  RenderWidgetUnittest() = default;
+  ~RenderWidgetUnittest() override = default;
+
+  // testing::Test implementation.
+  void SetUp() override {
     widget_ = new InteractiveRenderWidget(&compositor_deps_);
     // RenderWidget::Init does an AddRef that's balanced by a browser-initiated
     // Close IPC. That Close will never happen in this test, so do a Release
@@ -251,8 +256,6 @@
     DCHECK(widget_->HasOneRef());
   }
 
-  ~RenderWidgetUnittest() override {}
-
   InteractiveRenderWidget* widget() const { return widget_.get(); }
 
   const base::HistogramTester& histogram_tester() const {
@@ -473,7 +476,11 @@
 
 class RenderWidgetPopupUnittest : public testing::Test {
  public:
-  RenderWidgetPopupUnittest() {
+  RenderWidgetPopupUnittest() = default;
+  ~RenderWidgetPopupUnittest() override { widget_->Shutdown(); }
+
+  // testing::Test implementation.
+  void SetUp() override {
     widget_ = new PopupRenderWidget(&compositor_deps_);
     // RenderWidget::Init does an AddRef that's balanced by a browser-initiated
     // Close IPC. That Close will never happen in this test, so do a Release
@@ -481,7 +488,6 @@
     widget_->Release();
     DCHECK(widget_->HasOneRef());
   }
-  ~RenderWidgetPopupUnittest() override { widget_->Shutdown(); }
 
   PopupRenderWidget* widget() const { return widget_.get(); }
   FakeCompositorDependencies compositor_deps_;
@@ -620,6 +626,32 @@
   EXPECT_EQ(gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE,
             policy.priority_cutoff_when_visible);
 }
+#endif
+
+#if defined(OS_ANDROID)
+class RenderWidgetSurfaceSyncUnittest : public RenderWidgetUnittest {
+ public:
+  RenderWidgetSurfaceSyncUnittest() = default;
+  ~RenderWidgetSurfaceSyncUnittest() override = default;
+
+  void SetUp() override {
+    feature_list_.InitAndEnableFeature(features::kEnableSurfaceSynchronization);
+    RenderWidgetUnittest::SetUp();
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+TEST_F(RenderWidgetSurfaceSyncUnittest, ForceSendMetadataOnInput) {
+  auto* layer_tree_host = widget()->layer_tree_view()->layer_tree_host();
+  // We should not have any force send metadata requests at start.
+  EXPECT_FALSE(layer_tree_host->TakeForceSendMetadataRequest());
+  // ShowVirtualKeyboard will trigger a text input state update.
+  widget()->ShowVirtualKeyboard();
+  // We should now have a force send metadata request.
+  EXPECT_TRUE(layer_tree_host->TakeForceSendMetadataRequest());
+}
 #endif  // !defined(OS_ANDROID)
 
 }  // namespace content
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 5ad95ac..a1647a127 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -245,7 +245,7 @@
   return false;
 }
 
-std::unique_ptr<base::Value>
+base::Optional<service_manager::Manifest>
 ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
   int id = -1;
   if (name == content::mojom::kBrowserServiceName)
@@ -259,12 +259,13 @@
   else if (name == content::mojom::kUtilityServiceName)
     id = IDR_CONTENT_SHELL_UTILITY_MANIFEST_OVERLAY;
   if (id == -1)
-    return nullptr;
+    return base::nullopt;
 
   base::StringPiece manifest_contents =
       ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
           id, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 void ShellContentBrowserClient::AppendExtraCommandLineSwitches(
diff --git a/content/shell/browser/shell_content_browser_client.h b/content/shell/browser/shell_content_browser_client.h
index 7728fd64..52a837f 100644
--- a/content/shell/browser/shell_content_browser_client.h
+++ b/content/shell/browser/shell_content_browser_client.h
@@ -46,7 +46,7 @@
       service_manager::mojom::ServiceRequest request) override;
   bool ShouldTerminateOnServiceQuit(
       const service_manager::Identity& id) override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
                                       int child_process_id) override;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 4718cfc..53c2118 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -259,6 +259,8 @@
     "storage_partition_test_utils.h",
     "stub_layer_tree_view_delegate.cc",
     "stub_layer_tree_view_delegate.h",
+    "stub_render_widget_host_owner_delegate.cc",
+    "stub_render_widget_host_owner_delegate.h",
     "test_background_sync_context.cc",
     "test_background_sync_context.h",
     "test_background_sync_manager.cc",
@@ -1629,9 +1631,6 @@
     "../browser/tracing/background_tracing_config_unittest.cc",
     "../browser/tracing/tracing_ui_unittest.cc",
     "../browser/web_contents/aura/gesture_nav_simple_unittest.cc",
-    "../browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc",
-    "../browser/web_contents/aura/overscroll_window_animation_unittest.cc",
-    "../browser/web_contents/aura/overscroll_window_delegate_unittest.cc",
     "../browser/web_contents/web_contents_delegate_unittest.cc",
     "../browser/web_contents/web_contents_impl_unittest.cc",
     "../browser/web_contents/web_contents_user_data_unittest.cc",
@@ -2144,9 +2143,6 @@
     sources -= [
       "../browser/renderer_host/render_widget_host_view_aura_unittest.cc",
       "../browser/web_contents/aura/gesture_nav_simple_unittest.cc",
-      "../browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc",
-      "../browser/web_contents/aura/overscroll_window_animation_unittest.cc",
-      "../browser/web_contents/aura/overscroll_window_delegate_unittest.cc",
       "../browser/web_contents/web_contents_view_aura_unittest.cc",
     ]
   }
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt
new file mode 100644
index 0000000..46799ef8
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt
@@ -0,0 +1,26 @@
+rootWebArea
+++grid ariaColumnCount=3 ariaRowCount=3 tableRowCount=3 tableColumnCount=3
+++++row selected=false
+++++++columnHeader name='Column 1' ariaCellColumnIndex=1 ariaCellRowIndex=1 selected=false
+++++++++staticText name='Column 1'
+++++++columnHeader name='Column 2' ariaCellColumnIndex=2 ariaCellRowIndex=1 selected=false
+++++++++staticText name='Column 2'
+++++++columnHeader name='Column 3' ariaCellColumnIndex=3 ariaCellRowIndex=1 selected=false
+++++++++staticText name='Column 3'
+++++row selected=false
+++++++cell name='Cell A2' ariaCellColumnIndex=2 ariaCellRowIndex=2 selected=false
+++++++++staticText name='Cell A2'
+++++++++++inlineTextBox name='Cell A2'
+++++++cell name='Cell A3' ariaCellColumnIndex=3 ariaCellRowIndex=2 selected=false
+++++++++staticText name='Cell A3'
+++++++++++inlineTextBox name='Cell A3'
+++++row selected=false
+++++++cell name='Cell B1' ariaCellColumnIndex=1 ariaCellRowIndex=3 selected=false
+++++++++staticText name='Cell B1'
+++++++++++inlineTextBox name='Cell B1'
+++++++cell name='Cell B2' ariaCellColumnIndex=2 ariaCellRowIndex=3 selected=false
+++++++++staticText name='Cell B2'
+++++++++++inlineTextBox name='Cell B2'
+++paragraph
+++++staticText name='done'
+++++++inlineTextBox name='done'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt
new file mode 100644
index 0000000..fb7fc51
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt
@@ -0,0 +1,25 @@
+AXWebArea
+++AXTable AXARIAColumnCount='3' AXARIARowCount='3'
+++++AXRow
+++++++AXCell AXARIAColumnIndex='1' AXARIARowIndex='1'
+++++++++AXStaticText AXValue='Column 1'
+++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='1'
+++++++++AXStaticText AXValue='Column 2'
+++++++AXCell AXARIAColumnIndex='3' AXARIARowIndex='1'
+++++++++AXStaticText AXValue='Column 3'
+++++AXRow
+++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='2'
+++++++++AXStaticText AXValue='Cell A2'
+++++++AXCell AXARIAColumnIndex='3' AXARIARowIndex='2'
+++++++++AXStaticText AXValue='Cell A3'
+++++AXRow
+++++++AXCell AXARIAColumnIndex='1' AXARIARowIndex='3'
+++++++++AXStaticText AXValue='Cell B1'
+++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='3'
+++++++++AXStaticText AXValue='Cell B2'
+++++AXColumn
+++++AXColumn
+++++AXColumn
+++++AXGroup
+++AXGroup
+++++AXStaticText AXValue='done'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt
new file mode 100644
index 0000000..a963493
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt
@@ -0,0 +1,21 @@
+ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
+++ROLE_SYSTEM_TABLE colcount:3 rowcount:3
+++++ROLE_SYSTEM_ROW
+++++++ROLE_SYSTEM_COLUMNHEADER name='Column 1' colindex:1 rowindex:1
+++++++++ROLE_SYSTEM_STATICTEXT name='Column 1'
+++++++ROLE_SYSTEM_COLUMNHEADER name='Column 2' colindex:2 rowindex:1
+++++++++ROLE_SYSTEM_STATICTEXT name='Column 2'
+++++++ROLE_SYSTEM_COLUMNHEADER name='Column 3' colindex:3 rowindex:1
+++++++++ROLE_SYSTEM_STATICTEXT name='Column 3'
+++++ROLE_SYSTEM_ROW
+++++++ROLE_SYSTEM_CELL name='Cell A2' FOCUSABLE colindex:2 rowindex:2
+++++++++ROLE_SYSTEM_STATICTEXT name='Cell A2'
+++++++ROLE_SYSTEM_CELL name='Cell A3' FOCUSABLE colindex:3 rowindex:2
+++++++++ROLE_SYSTEM_STATICTEXT name='Cell A3'
+++++ROLE_SYSTEM_ROW
+++++++ROLE_SYSTEM_CELL name='Cell B1' FOCUSABLE colindex:1 rowindex:3
+++++++++ROLE_SYSTEM_STATICTEXT name='Cell B1'
+++++++ROLE_SYSTEM_CELL name='Cell B2' FOCUSABLE colindex:2 rowindex:3
+++++++++ROLE_SYSTEM_STATICTEXT name='Cell B2'
+++IA2_ROLE_PARAGRAPH
+++++ROLE_SYSTEM_STATICTEXT name='done'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr.html b/content/test/data/accessibility/aria/aria-mismatched-table-attr.html
new file mode 100644
index 0000000..17ff440
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<!--
+@WAIT-FOR:done
+@WIN-ALLOW:colcount*
+@WIN-ALLOW:colindex*
+@WIN-ALLOW:rowcount*
+@WIN-ALLOW:rowindex*
+@MAC-ALLOW:AXARIAColumn*
+@MAC-ALLOW:AXARIARow*
+@BLINK-ALLOW:*ColumnCount*
+@BLINK-ALLOW:ariaCellColumnIndex*
+@BLINK-ALLOW:*RowCount*
+@BLINK-ALLOW:ariaCellRowIndex*
+-->
+<table role="grid" aria-rowcount="1" aria-colcount="1">
+  <tbody><tr>
+    <th aria-rowindex="1" aria-colindex="1">Column 1</th>
+    <th aria-rowindex="1" aria-colindex="2">Column 2</th>
+    <th aria-rowindex="1" aria-colindex="2">Column 3</th>
+  </tr>
+  <tr>
+    <td role="gridcell" tabindex="0" aria-rowindex="2" aria-colindex="2">Cell A2</td>
+    <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="1">Cell A3</td>
+  </tr>
+  <tr>
+    <td role="gridcell" tabindex="0" aria-rowindex="2" aria-colindex="1">Cell B1</td>
+    <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="2">Cell B2</td>
+  </tr>
+  </tbody>
+</table>
+<p></p>
diff --git a/content/test/data/accessibility/aria/table-column-hidden.html b/content/test/data/accessibility/aria/table-column-hidden.html
index 85802a1..09b773d 100644
--- a/content/test/data/accessibility/aria/table-column-hidden.html
+++ b/content/test/data/accessibility/aria/table-column-hidden.html
@@ -27,10 +27,10 @@
     <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="4">Sunny</td>
   </tr>
   <tr>
-    <td role="gridcell" tabindex="0" aria-rowindex="2" aria-colindex="1">January</td>
-    <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="2">02</td>
-    <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="3">2017</td>
-    <td role="gridcell" tabindex="-1" aria-rowindex="2" aria-colindex="4">Rainy</td>
+    <td role="gridcell" tabindex="0" aria-rowindex="3" aria-colindex="1">January</td>
+    <td role="gridcell" tabindex="-1" aria-rowindex="3" aria-colindex="2">02</td>
+    <td role="gridcell" tabindex="-1" aria-rowindex="3" aria-colindex="3">2017</td>
+    <td role="gridcell" tabindex="-1" aria-rowindex="3" aria-colindex="4">Rainy</td>
   </tr>
   </tbody>
 </table>
diff --git a/content/test/data/accessibility/html/long-text-expected-blink.txt b/content/test/data/accessibility/html/long-text-expected-blink.txt
new file mode 100644
index 0000000..53331539
--- /dev/null
+++ b/content/test/data/accessibility/html/long-text-expected-blink.txt
@@ -0,0 +1,503 @@
+rootWebArea
+++pre
+++++staticText name='1. The quick brown fox jumps over the lazy dog.<newline>2. The quick brown fox jumps over the lazy dog.<newline>3. The quick brown fox jumps over the lazy dog.<newline>4. The quick brown fox jumps over the lazy dog.<newline>5. The quick brown fox jumps over the lazy dog.<newline>6. The quick brown fox jumps over the lazy dog.<newline>7. The quick brown fox jumps over the lazy dog.<newline>8. The quick brown fox jumps over the lazy dog.<newline>9. The quick brown fox jumps over the lazy dog.<newline>10. The quick brown fox jumps over the lazy dog.<newline>11. The quick brown fox jumps over the lazy dog.<newline>12. The quick brown fox jumps over the lazy dog.<newline>13. The quick brown fox jumps over the lazy dog.<newline>14. The quick brown fox jumps over the lazy dog.<newline>15. The quick brown fox jumps over the lazy dog.<newline>16. The quick brown fox jumps over the lazy dog.<newline>17. The quick brown fox jumps over the lazy dog.<newline>18. The quick brown fox jumps over the lazy dog.<newline>19. The quick brown fox jumps over the lazy dog.<newline>20. The quick brown fox jumps over the lazy dog.<newline>21. The quick brown fox jumps over the lazy dog.<newline>22. The quick brown fox jumps over the lazy dog.<newline>23. The quick brown fox jumps over the lazy dog.<newline>24. The quick brown fox jumps over the lazy dog.<newline>25. The quick brown fox jumps over the lazy dog.<newline>26. The quick brown fox jumps over the lazy dog.<newline>27. The quick brown fox jumps over the lazy dog.<newline>28. The quick brown fox jumps over the lazy dog.<newline>29. The quick brown fox jumps over the lazy dog.<newline>30. The quick brown fox jumps over the lazy dog.<newline>31. The quick brown fox jumps over the lazy dog.<newline>32. The quick brown fox jumps over the lazy dog.<newline>33. The quick brown fox jumps over the lazy dog.<newline>34. The quick brown fox jumps over the lazy dog.<newline>35. The quick brown fox jumps over the lazy dog.<newline>36. The quick brown fox jumps over the lazy dog.<newline>37. The quick brown fox jumps over the lazy dog.<newline>38. The quick brown fox jumps over the lazy dog.<newline>39. The quick brown fox jumps over the lazy dog.<newline>40. The quick brown fox jumps over the lazy dog.<newline>41. The quick brown fox jumps over the lazy dog.<newline>42. The quick brown fox jumps over the lazy dog.<newline>43. The quick brown fox jumps over the lazy dog.<newline>44. The quick brown fox jumps over the lazy dog.<newline>45. The quick brown fox jumps over the lazy dog.<newline>46. The quick brown fox jumps over the lazy dog.<newline>47. The quick brown fox jumps over the lazy dog.<newline>48. The quick brown fox jumps over the lazy dog.<newline>49. The quick brown fox jumps over the lazy dog.<newline>50. The quick brown fox jumps over the lazy dog.<newline>51. The quick brown fox jumps over the lazy dog.<newline>52. The quick brown fox jumps over the lazy dog.<newline>53. The quick brown fox jumps over the lazy dog.<newline>54. The quick brown fox jumps over the lazy dog.<newline>55. The quick brown fox jumps over the lazy dog.<newline>56. The quick brown fox jumps over the lazy dog.<newline>57. The quick brown fox jumps over the lazy dog.<newline>58. The quick brown fox jumps over the lazy dog.<newline>59. The quick brown fox jumps over the lazy dog.<newline>60. The quick brown fox jumps over the lazy dog.<newline>61. The quick brown fox jumps over the lazy dog.<newline>62. The quick brown fox jumps over the lazy dog.<newline>63. The quick brown fox jumps over the lazy dog.<newline>64. The quick brown fox jumps over the lazy dog.<newline>65. The quick brown fox jumps over the lazy dog.<newline>66. The quick brown fox jumps over the lazy dog.<newline>67. The quick brown fox jumps over the lazy dog.<newline>68. The quick brown fox jumps over the lazy dog.<newline>69. The quick brown fox jumps over the lazy dog.<newline>70. The quick brown fox jumps over the lazy dog.<newline>71. The quick brown fox jumps over the lazy dog.<newline>72. The quick brown fox jumps over the lazy dog.<newline>73. The quick brown fox jumps over the lazy dog.<newline>74. The quick brown fox jumps over the lazy dog.<newline>75. The quick brown fox jumps over the lazy dog.<newline>76. The quick brown fox jumps over the lazy dog.<newline>77. The quick brown fox jumps over the lazy dog.<newline>78. The quick brown fox jumps over the lazy dog.<newline>79. The quick brown fox jumps over the lazy dog.<newline>80. The quick brown fox jumps over the lazy dog.<newline>81. The quick brown fox jumps over the lazy dog.<newline>82. The quick brown fox jumps over the lazy dog.<newline>83. The quick brown fox jumps over the lazy dog.<newline>84. The quick brown fox jumps over the lazy dog.<newline>85. The quick brown fox jumps over the lazy dog.<newline>86. The quick brown fox jumps over the lazy dog.<newline>87. The quick brown fox jumps over the lazy dog.<newline>88. The quick brown fox jumps over the lazy dog.<newline>89. The quick brown fox jumps over the lazy dog.<newline>90. The quick brown fox jumps over the lazy dog.<newline>91. The quick brown fox jumps over the lazy dog.<newline>92. The quick brown fox jumps over the lazy dog.<newline>93. The quick brown fox jumps over the lazy dog.<newline>94. The quick brown fox jumps over the lazy dog.<newline>95. The quick brown fox jumps over the lazy dog.<newline>96. The quick brown fox jumps over the lazy dog.<newline>97. The quick brown fox jumps over the lazy dog.<newline>98. The quick brown fox jumps over the lazy dog.<newline>99. The quick brown fox jumps over the lazy dog.<newline>100. The quick brown fox jumps over the lazy dog.<newline>101. The quick brown fox jumps over the lazy dog.<newline>102. The quick brown fox jumps over the lazy dog.<newline>103. The quick brown fox jumps over the lazy dog.<newline>104. The quick brown fox jumps over the lazy dog.<newline>105. The quick brown fox jumps over the lazy dog.<newline>106. The quick brown fox jumps over the lazy dog.<newline>107. The quick brown fox jumps over the lazy dog.<newline>108. The quick brown fox jumps over the lazy dog.<newline>109. The quick brown fox jumps over the lazy dog.<newline>110. The quick brown fox jumps over the lazy dog.<newline>111. The quick brown fox jumps over the lazy dog.<newline>112. The quick brown fox jumps over the lazy dog.<newline>113. The quick brown fox jumps over the lazy dog.<newline>114. The quick brown fox jumps over the lazy dog.<newline>115. The quick brown fox jumps over the lazy dog.<newline>116. The quick brown fox jumps over the lazy dog.<newline>117. The quick brown fox jumps over the lazy dog.<newline>118. The quick brown fox jumps over the lazy dog.<newline>119. The quick brown fox jumps over the lazy dog.<newline>120. The quick brown fox jumps over the lazy dog.<newline>121. The quick brown fox jumps over the lazy dog.<newline>122. The quick brown fox jumps over the lazy dog.<newline>123. The quick brown fox jumps over the lazy dog.<newline>124. The quick brown fox jumps over the lazy dog.<newline>125. The quick brown fox jumps over the lazy dog.<newline>126. The quick brown fox jumps over the lazy dog.<newline>127. The quick brown fox jumps over the lazy dog.<newline>128. The quick brown fox jumps over the lazy dog.<newline>129. The quick brown fox jumps over the lazy dog.<newline>130. The quick brown fox jumps over the lazy dog.<newline>131. The quick brown fox jumps over the lazy dog.<newline>132. The quick brown fox jumps over the lazy dog.<newline>133. The quick brown fox jumps over the lazy dog.<newline>134. The quick brown fox jumps over the lazy dog.<newline>135. The quick brown fox jumps over the lazy dog.<newline>136. The quick brown fox jumps over the lazy dog.<newline>137. The quick brown fox jumps over the lazy dog.<newline>138. The quick brown fox jumps over the lazy dog.<newline>139. The quick brown fox jumps over the lazy dog.<newline>140. The quick brown fox jumps over the lazy dog.<newline>141. The quick brown fox jumps over the lazy dog.<newline>142. The quick brown fox jumps over the lazy dog.<newline>143. The quick brown fox jumps over the lazy dog.<newline>144. The quick brown fox jumps over the lazy dog.<newline>145. The quick brown fox jumps over the lazy dog.<newline>146. The quick brown fox jumps over the lazy dog.<newline>147. The quick brown fox jumps over the lazy dog.<newline>148. The quick brown fox jumps over the lazy dog.<newline>149. The quick brown fox jumps over the lazy dog.<newline>150. The quick brown fox jumps over the lazy dog.<newline>151. The quick brown fox jumps over the lazy dog.<newline>152. The quick brown fox jumps over the lazy dog.<newline>153. The quick brown fox jumps over the lazy dog.<newline>154. The quick brown fox jumps over the lazy dog.<newline>155. The quick brown fox jumps over the lazy dog.<newline>156. The quick brown fox jumps over the lazy dog.<newline>157. The quick brown fox jumps over the lazy dog.<newline>158. The quick brown fox jumps over the lazy dog.<newline>159. The quick brown fox jumps over the lazy dog.<newline>160. The quick brown fox jumps over the lazy dog.<newline>161. The quick brown fox jumps over the lazy dog.<newline>162. The quick brown fox jumps over the lazy dog.<newline>163. The quick brown fox jumps over the lazy dog.<newline>164. The quick brown fox jumps over the lazy dog.<newline>165. The quick brown fox jumps over the lazy dog.<newline>166. The quick brown fox jumps over the lazy dog.<newline>167. The quick brown fox jumps over the lazy dog.<newline>168. The quick brown fox jumps over the lazy dog.<newline>169. The quick brown fox jumps over the lazy dog.<newline>170. The quick brown fox jumps over the lazy dog.<newline>171. The quick brown fox jumps over the lazy dog.<newline>172. The quick brown fox jumps over the lazy dog.<newline>173. The quick brown fox jumps over the lazy dog.<newline>174. The quick brown fox jumps over the lazy dog.<newline>175. The quick brown fox jumps over the lazy dog.<newline>176. The quick brown fox jumps over the lazy dog.<newline>177. The quick brown fox jumps over the lazy dog.<newline>178. The quick brown fox jumps over the lazy dog.<newline>179. The quick brown fox jumps over the lazy dog.<newline>180. The quick brown fox jumps over the lazy dog.<newline>181. The quick brown fox jumps over the lazy dog.<newline>182. The quick brown fox jumps over the lazy dog.<newline>183. The quick brown fox jumps over the lazy dog.<newline>184. The quick brown fox jumps over the lazy dog.<newline>185. The quick brown fox jumps over the lazy dog.<newline>186. The quick brown fox jumps over the lazy dog.<newline>187. The quick brown fox jumps over the lazy dog.<newline>188. The quick brown fox jumps over the lazy dog.<newline>189. The quick brown fox jumps over the lazy dog.<newline>190. The quick brown fox jumps over the lazy dog.<newline>191. The quick brown fox jumps over the lazy dog.<newline>192. The quick brown fox jumps over the lazy dog.<newline>193. The quick brown fox jumps over the lazy dog.<newline>194. The quick brown fox jumps over the lazy dog.<newline>195. The quick brown fox jumps over the lazy dog.<newline>196. The quick brown fox jumps over the lazy dog.<newline>197. The quick brown fox jumps over the lazy dog.<newline>198. The quick brown fox jumps over the lazy dog.<newline>199. The quick brown fox jumps over the lazy dog.<newline>200. The quick brown fox jumps over the lazy dog.<newline>201. The quick brown fox jumps over the lazy dog.<newline>202. The quick brown fox jumps over the lazy dog.<newline>203. The quick brown fox jumps over the lazy dog.<newline>204. The quick brown fox jumps over the lazy dog.<newline>205. The quick brown fox jumps over the lazy dog.<newline>206. The quick brown fox jumps over the lazy dog.<newline>207. The quick brown fox jumps over the lazy dog.<newline>208. The quick brown fox jumps over the lazy dog.<newline>209. The quick brown fox jumps over the lazy dog.<newline>210. The quick brown fox jumps over the lazy dog.<newline>211. The quick brown fox jumps over the lazy dog.<newline>212. The quick brown fox jumps over the lazy dog.<newline>213. The quick brown fox jumps over the lazy dog.<newline>214. The quick brown fox jumps over the lazy dog.<newline>215. The quick brown fox jumps over the lazy dog.<newline>216. The quick brown fox jumps over the lazy dog.<newline>217. The quick brown fox jumps over the lazy dog.<newline>218. The quick brown fox jumps over the lazy dog.<newline>219. The quick brown fox jumps over the lazy dog.<newline>220. The quick brown fox jumps over the lazy dog.<newline>221. The quick brown fox jumps over the lazy dog.<newline>222. The quick brown fox jumps over the lazy dog.<newline>223. The quick brown fox jumps over the lazy dog.<newline>224. The quick brown fox jumps over the lazy dog.<newline>225. The quick brown fox jumps over the lazy dog.<newline>226. The quick brown fox jumps over the lazy dog.<newline>227. The quick brown fox jumps over the lazy dog.<newline>228. The quick brown fox jumps over the lazy dog.<newline>229. The quick brown fox jumps over the lazy dog.<newline>230. The quick brown fox jumps over the lazy dog.<newline>231. The quick brown fox jumps over the lazy dog.<newline>232. The quick brown fox jumps over the lazy dog.<newline>233. The quick brown fox jumps over the lazy dog.<newline>234. The quick brown fox jumps over the lazy dog.<newline>235. The quick brown fox jumps over the lazy dog.<newline>236. The quick brown fox jumps over the lazy dog.<newline>237. The quick brown fox jumps over the lazy dog.<newline>238. The quick brown fox jumps over the lazy dog.<newline>239. The quick brown fox jumps over the lazy dog.<newline>240. The quick brown fox jumps over the lazy dog.<newline>241. The quick brown fox jumps over the lazy dog.<newline>242. The quick brown fox jumps over the lazy dog.<newline>243. The quick brown fox jumps over the lazy dog.<newline>244. The quick brown fox jumps over the lazy dog.<newline>245. The quick brown fox jumps over the lazy dog.<newline>246. The quick brown fox jumps over the lazy dog.<newline>247. The quick brown fox jumps over the lazy dog.<newline>248. The quick brown fox jumps over the lazy dog.<newline>249. The quick brown fox jumps over the lazy dog.<newline>250. The quick brown fox jumps over the lazy dog.<newline>'
+++++++inlineTextBox name='1. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='2. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='3. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='4. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='5. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='6. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='7. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='8. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='9. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='10. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='11. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='12. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='13. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='14. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='15. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='16. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='17. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='18. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='19. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='20. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='21. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='22. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='23. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='24. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='25. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='26. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='27. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='28. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='29. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='30. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='31. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='32. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='33. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='34. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='35. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='36. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='37. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='38. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='39. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='40. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='41. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='42. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='43. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='44. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='45. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='46. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='47. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='48. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='49. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='50. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='51. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='52. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='53. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='54. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='55. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='56. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='57. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='58. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='59. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='60. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='61. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='62. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='63. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='64. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='65. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='66. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='67. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='68. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='69. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='70. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='71. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='72. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='73. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='74. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='75. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='76. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='77. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='78. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='79. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='80. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='81. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='82. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='83. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='84. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='85. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='86. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='87. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='88. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='89. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='90. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='91. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='92. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='93. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='94. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='95. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='96. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='97. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='98. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='99. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='100. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='101. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='102. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='103. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='104. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='105. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='106. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='107. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='108. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='109. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='110. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='111. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='112. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='113. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='114. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='115. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='116. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='117. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='118. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='119. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='120. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='121. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='122. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='123. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='124. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='125. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='126. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='127. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='128. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='129. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='130. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='131. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='132. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='133. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='134. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='135. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='136. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='137. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='138. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='139. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='140. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='141. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='142. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='143. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='144. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='145. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='146. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='147. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='148. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='149. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='150. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='151. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='152. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='153. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='154. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='155. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='156. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='157. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='158. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='159. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='160. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='161. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='162. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='163. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='164. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='165. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='166. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='167. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='168. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='169. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='170. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='171. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='172. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='173. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='174. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='175. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='176. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='177. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='178. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='179. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='180. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='181. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='182. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='183. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='184. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='185. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='186. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='187. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='188. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='189. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='190. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='191. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='192. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='193. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='194. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='195. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='196. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='197. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='198. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='199. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='200. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='201. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='202. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='203. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='204. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='205. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='206. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='207. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='208. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='209. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='210. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='211. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='212. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='213. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='214. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='215. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='216. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='217. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='218. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='219. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='220. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='221. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='222. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='223. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='224. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='225. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='226. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='227. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='228. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='229. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='230. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='231. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='232. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='233. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='234. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='235. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='236. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='237. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='238. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='239. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='240. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='241. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='242. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='243. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='244. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='245. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='246. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='247. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='248. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='249. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
+++++++inlineTextBox name='250. The quick brown fox jumps over the lazy dog.'
+++++++inlineTextBox name='<newline>'
diff --git a/content/test/data/accessibility/html/long-text.html b/content/test/data/accessibility/html/long-text.html
new file mode 100644
index 0000000..acee7cb2
--- /dev/null
+++ b/content/test/data/accessibility/html/long-text.html
@@ -0,0 +1,6 @@
+<body>
+<pre style="word-wrap: break-word; white-space: pre-wrap;"><script>
+for (let count = 1; count <= 250; count ++)
+  document.write('' + count + '. The quick brown fox jumps over the lazy dog.\n');
+</script></pre>
+</body>
diff --git a/content/test/stub_render_widget_host_owner_delegate.cc b/content/test/stub_render_widget_host_owner_delegate.cc
new file mode 100644
index 0000000..87dceff
--- /dev/null
+++ b/content/test/stub_render_widget_host_owner_delegate.cc
@@ -0,0 +1,24 @@
+// 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 "content/test/stub_render_widget_host_owner_delegate.h"
+
+namespace content {
+
+bool StubRenderWidgetHostOwnerDelegate::MayRenderWidgetForwardKeyboardEvent(
+    const NativeWebKeyboardEvent& key_event) {
+  return true;
+}
+
+bool StubRenderWidgetHostOwnerDelegate::ShouldContributePriorityToProcess() {
+  return false;
+}
+
+RenderViewHost* StubRenderWidgetHostOwnerDelegate::GetRenderViewHost() {
+  // TODO(danakj): This could make a StubRenderViewHost and return that if
+  // needed.
+  return nullptr;
+}
+
+}  // namespace content
diff --git a/content/test/stub_render_widget_host_owner_delegate.h b/content/test/stub_render_widget_host_owner_delegate.h
new file mode 100644
index 0000000..f48bc103
--- /dev/null
+++ b/content/test/stub_render_widget_host_owner_delegate.h
@@ -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.
+
+#ifndef CONTENT_TEST_STUB_RENDER_WIDGET_HOST_OWNER_DELEGATE_H_
+#define CONTENT_TEST_STUB_RENDER_WIDGET_HOST_OWNER_DELEGATE_H_
+
+#include "content/browser/renderer_host/render_widget_host_owner_delegate.h"
+
+namespace content {
+
+class StubRenderWidgetHostOwnerDelegate : public RenderWidgetHostOwnerDelegate {
+ public:
+  void RenderWidgetDidInit() override {}
+  void RenderWidgetDidClose() override {}
+  void RenderWidgetNeedsToRouteCloseEvent() override {}
+  void RenderWidgetWillSetIsLoading(bool is_loading) override {}
+  void RenderWidgetDidFirstVisuallyNonEmptyPaint() override {}
+  void RenderWidgetDidCommitAndDrawCompositorFrame() override {}
+  void RenderWidgetGotFocus() override {}
+  void RenderWidgetLostFocus() override {}
+  void RenderWidgetDidForwardMouseEvent(
+      const blink::WebMouseEvent& mouse_event) override {}
+  bool MayRenderWidgetForwardKeyboardEvent(
+      const NativeWebKeyboardEvent& key_event) override;
+  bool ShouldContributePriorityToProcess() override;
+  void RequestSetBounds(const gfx::Rect& bounds) override {}
+  void SetBackgroundOpaque(bool opaque) override {}
+  RenderViewHost* GetRenderViewHost() override;
+};
+
+}  // namespace content
+
+#endif  // CONTENT_TEST_STUB_RENDER_WIDGET_HOST_OWNER_DELEGATE_H_
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc
index 35c6037..8225b9f 100644
--- a/content/test/test_render_frame_host.cc
+++ b/content/test/test_render_frame_host.cc
@@ -212,7 +212,6 @@
   blink::ParsedFeaturePolicy header(1);
   header[0].feature = feature;
   header[0].matches_all_origins = false;
-  header[0].disposition = blink::mojom::FeaturePolicyDisposition::kEnforce;
   header[0].origins = whitelist;
   DidSetFramePolicyHeaders(blink::WebSandboxFlags::kNone, header);
 }
diff --git a/extensions/browser/api/messaging/message_service.cc b/extensions/browser/api/messaging/message_service.cc
index 4cf086d..a53c440 100644
--- a/extensions/browser/api/messaging/message_service.cc
+++ b/extensions/browser/api/messaging/message_service.cc
@@ -639,7 +639,8 @@
     auto pending = pending_lazy_background_page_channels_.find(channel_id);
     if (pending != pending_lazy_background_page_channels_.end()) {
       lazy_background_task_queue_->AddPendingTask(
-          LazyContextId(pending->second.first, pending->second.second),
+          LazyContextId(pending->second.browser_context(),
+                        pending->second.extension_id()),
           base::BindOnce(&MessageService::PendingLazyBackgroundPageClosePort,
                          weak_factory_.GetWeakPtr(), port_id, process_id,
                          routing_id, force_close, error_message));
@@ -739,7 +740,8 @@
   auto pending = pending_lazy_background_page_channels_.find(channel_id);
   if (pending != pending_lazy_background_page_channels_.end()) {
     lazy_background_task_queue_->AddPendingTask(
-        LazyContextId(pending->second.first, pending->second.second),
+        LazyContextId(pending->second.browser_context(),
+                      pending->second.extension_id()),
         base::BindOnce(&MessageService::PendingLazyBackgroundPagePostMessage,
                        weak_factory_.GetWeakPtr(), source_port_id, message));
   }
@@ -777,8 +779,8 @@
     return false;
 
   ChannelId channel_id = (*params)->receiver_port_id.GetChannelId();
-  pending_lazy_background_page_channels_[channel_id] =
-      PendingLazyBackgroundPageChannel(context, extension->id());
+  pending_lazy_background_page_channels_.insert(std::make_pair(
+      channel_id, PendingLazyBackgroundPageChannel(context, extension->id())));
   int source_id = (*params)->source_process_id;
   lazy_background_task_queue_->AddPendingTask(
       LazyContextId(context, extension->id()),
diff --git a/extensions/browser/api/messaging/message_service.h b/extensions/browser/api/messaging/message_service.h
index 104b6954..b23d970f 100644
--- a/extensions/browser/api/messaging/message_service.h
+++ b/extensions/browser/api/messaging/message_service.h
@@ -18,6 +18,7 @@
 #include "extensions/browser/api/messaging/message_property_provider.h"
 #include "extensions/browser/api/messaging/native_message_host.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
+#include "extensions/browser/lazy_context_id.h"
 #include "extensions/browser/lazy_context_task_queue.h"
 #include "extensions/common/api/messaging/message.h"
 #include "extensions/common/api/messaging/port_id.h"
@@ -132,8 +133,7 @@
 
   // A map of channel ID to information about the extension that is waiting
   // for that channel to open. Used for lazy background pages.
-  using PendingLazyBackgroundPageChannel =
-      std::pair<content::BrowserContext*, ExtensionId>;
+  using PendingLazyBackgroundPageChannel = LazyContextId;
   using PendingLazyBackgroundPageChannelMap =
       std::map<ChannelId, PendingLazyBackgroundPageChannel>;
 
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index fc5753b..cce7e2b5 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -501,13 +501,13 @@
 }
 
 void EventRouter::BroadcastEvent(std::unique_ptr<Event> event) {
-  DispatchEventImpl(std::string(), linked_ptr<Event>(event.release()));
+  DispatchEventImpl(std::string(), std::move(event));
 }
 
 void EventRouter::DispatchEventToExtension(const std::string& extension_id,
                                            std::unique_ptr<Event> event) {
   DCHECK(!extension_id.empty());
-  DispatchEventImpl(extension_id, linked_ptr<Event>(event.release()));
+  DispatchEventImpl(extension_id, std::move(event));
 }
 
 void EventRouter::DispatchEventWithLazyListener(const std::string& extension_id,
@@ -547,7 +547,7 @@
 }
 
 void EventRouter::DispatchEventImpl(const std::string& restrict_to_extension_id,
-                                    const linked_ptr<Event>& event) {
+                                    std::unique_ptr<Event> event) {
   // We don't expect to get events from a completely different browser context.
   DCHECK(!event->restrict_to_browser_context ||
          ExtensionsBrowserClient::Get()->IsSameContext(
@@ -560,9 +560,8 @@
       listeners_.GetEventListeners(*event));
 
   LazyEventDispatcher lazy_event_dispatcher(
-      browser_context_, event,
-      base::Bind(&EventRouter::DispatchPendingEvent,
-                 weak_factory_.GetWeakPtr()));
+      browser_context_, base::BindRepeating(&EventRouter::DispatchPendingEvent,
+                                            weak_factory_.GetWeakPtr()));
 
   // We dispatch events for lazy background pages first because attempting to do
   // so will cause those that are being suspended to cancel that suspension.
@@ -577,12 +576,12 @@
     }
     if (listener->IsLazy()) {
       if (listener->is_for_service_worker()) {
-        lazy_event_dispatcher.DispatchToServiceWorker(listener->extension_id(),
-                                                      listener->listener_url(),
-                                                      listener->filter());
+        lazy_event_dispatcher.DispatchToServiceWorker(
+            *event, listener->extension_id(), listener->listener_url(),
+            listener->filter());
       } else {
-        lazy_event_dispatcher.DispatchToEventPage(listener->extension_id(),
-                                                  listener->filter());
+        lazy_event_dispatcher.DispatchToEventPage(
+            *event, listener->extension_id(), listener->filter());
       }
     }
   }
@@ -602,7 +601,7 @@
     DispatchEventToProcess(
         listener->extension_id(), listener->listener_url(), listener->process(),
         listener->service_worker_version_id(), listener->worker_thread_id(),
-        event, listener->filter(), false /* did_enqueue */);
+        event.get(), listener->filter(), false /* did_enqueue */);
   }
 }
 
@@ -612,7 +611,7 @@
     content::RenderProcessHost* process,
     int64_t service_worker_version_id,
     int worker_thread_id,
-    const linked_ptr<Event>& event,
+    Event* event,
     const base::DictionaryValue* listener_filter,
     bool did_enqueue) {
   BrowserContext* listener_context = process->GetBrowserContext();
@@ -674,8 +673,8 @@
   }
 
   if (!event->will_dispatch_callback.is_null() &&
-      !event->will_dispatch_callback.Run(listener_context, extension,
-                                         event.get(), listener_filter)) {
+      !event->will_dispatch_callback.Run(listener_context, extension, event,
+                                         listener_filter)) {
     return;
   }
 
@@ -854,7 +853,7 @@
 }
 
 void EventRouter::DispatchPendingEvent(
-    const linked_ptr<Event>& event,
+    std::unique_ptr<Event> event,
     std::unique_ptr<LazyContextTaskQueue::ContextInfo> params) {
   if (!params)
     return;
@@ -864,8 +863,8 @@
                                     params->extension_id)) {
     DispatchEventToProcess(
         params->extension_id, params->url, params->render_process_host,
-        params->service_worker_version_id, params->worker_thread_id, event,
-        nullptr, true /* did_enqueue */);
+        params->service_worker_version_id, params->worker_thread_id,
+        event.get(), nullptr, true /* did_enqueue */);
   }
 }
 
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
index 0397e21..3e2cd3e 100644
--- a/extensions/browser/event_router.h
+++ b/extensions/browser/event_router.h
@@ -12,7 +12,6 @@
 #include "base/callback.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/linked_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
@@ -305,7 +304,7 @@
   // empty, the event is broadcast.  An event that just came off the pending
   // list may not be delayed again.
   void DispatchEventImpl(const std::string& restrict_to_extension_id,
-                         const linked_ptr<Event>& event);
+                         std::unique_ptr<Event> event);
 
   // Dispatches the event to the specified extension or URL running in
   // |process|.
@@ -314,7 +313,7 @@
                               content::RenderProcessHost* process,
                               int64_t service_worker_version_id,
                               int worker_thread_id,
-                              const linked_ptr<Event>& event,
+                              Event* event,
                               const base::DictionaryValue* listener_filter,
                               bool did_enqueue);
 
@@ -352,7 +351,7 @@
       const std::string& event_name);
 
   void DispatchPendingEvent(
-      const linked_ptr<Event>& event,
+      std::unique_ptr<Event> event,
       std::unique_ptr<LazyContextTaskQueue::ContextInfo> params);
 
   // Implementation of EventListenerMap::Delegate.
diff --git a/extensions/browser/events/lazy_event_dispatcher.cc b/extensions/browser/events/lazy_event_dispatcher.cc
index 887d171..06edb87 100644
--- a/extensions/browser/events/lazy_event_dispatcher.cc
+++ b/extensions/browser/events/lazy_event_dispatcher.cc
@@ -19,28 +19,28 @@
 
 LazyEventDispatcher::LazyEventDispatcher(
     BrowserContext* browser_context,
-    const linked_ptr<Event>& event,
     const DispatchFunction& dispatch_function)
     : browser_context_(browser_context),
-      event_(event),
       dispatch_function_(dispatch_function) {}
 
 LazyEventDispatcher::~LazyEventDispatcher() {}
 
 void LazyEventDispatcher::DispatchToEventPage(
+    const Event& event,
     const ExtensionId& extension_id,
     const base::DictionaryValue* listener_filter) {
   LazyContextId dispatch_context(browser_context_, extension_id);
-  DispatchToLazyContext(&dispatch_context, listener_filter);
+  DispatchToLazyContext(event, &dispatch_context, listener_filter);
 }
 
 void LazyEventDispatcher::DispatchToServiceWorker(
+    const Event& event,
     const ExtensionId& extension_id,
     const GURL& service_worker_scope,
     const base::DictionaryValue* listener_filter) {
   LazyContextId dispatch_context(browser_context_, extension_id,
                                  service_worker_scope);
-  DispatchToLazyContext(&dispatch_context, listener_filter);
+  DispatchToLazyContext(event, &dispatch_context, listener_filter);
 }
 
 bool LazyEventDispatcher::HasAlreadyDispatched(
@@ -59,6 +59,7 @@
 }
 
 void LazyEventDispatcher::DispatchToLazyContext(
+    const Event& event,
     LazyContextId* dispatch_context,
     const base::DictionaryValue* listener_filter) {
   const Extension* extension = ExtensionRegistry::Get(browser_context_)
@@ -71,7 +72,7 @@
   // should load a non-peristent context (a lazy background page or an
   // extension service worker) to handle the event. We need to use the incognito
   // context in the case of split-mode extensions.
-  if (QueueEventDispatch(*dispatch_context, extension, listener_filter))
+  if (QueueEventDispatch(event, *dispatch_context, extension, listener_filter))
     RecordAlreadyDispatched(*dispatch_context);
 
   BrowserContext* additional_context = GetIncognitoContext(extension);
@@ -79,16 +80,17 @@
     return;
 
   dispatch_context->set_browser_context(additional_context);
-  if (QueueEventDispatch(*dispatch_context, extension, listener_filter))
+  if (QueueEventDispatch(event, *dispatch_context, extension, listener_filter))
     RecordAlreadyDispatched(*dispatch_context);
 }
 
 bool LazyEventDispatcher::QueueEventDispatch(
+    const Event& event,
     const LazyContextId& dispatch_context,
     const Extension* extension,
     const base::DictionaryValue* listener_filter) {
   if (!EventRouter::CanDispatchEventToBrowserContext(
-          dispatch_context.browser_context(), extension, *event_)) {
+          dispatch_context.browser_context(), extension, event)) {
     return false;
   }
 
@@ -101,13 +103,14 @@
     return false;
   }
 
-  linked_ptr<Event> dispatched_event(event_);
+  // TODO(devlin): This results in a copy each time we dispatch events to
+  // ServiceWorkers and inactive event pages. It'd be nice to avoid that.
+  std::unique_ptr<Event> dispatched_event = event.DeepCopy();
 
   // If there's a dispatch callback, call it now (rather than dispatch time)
   // to avoid lifetime issues. Use a separate copy of the event args, so they
   // last until the event is dispatched.
-  if (!event_->will_dispatch_callback.is_null()) {
-    dispatched_event.reset(event_->DeepCopy().release());
+  if (!dispatched_event->will_dispatch_callback.is_null()) {
     if (!dispatched_event->will_dispatch_callback.Run(
             dispatch_context.browser_context(), extension,
             dispatched_event.get(), listener_filter)) {
@@ -118,8 +121,9 @@
     dispatched_event->will_dispatch_callback.Reset();
   }
 
-  queue->AddPendingTask(dispatch_context,
-                        base::BindOnce(dispatch_function_, dispatched_event));
+  queue->AddPendingTask(
+      dispatch_context,
+      base::BindOnce(dispatch_function_, std::move(dispatched_event)));
 
   return true;
 }
diff --git a/extensions/browser/events/lazy_event_dispatcher.h b/extensions/browser/events/lazy_event_dispatcher.h
index 9e36c06..9ef74be 100644
--- a/extensions/browser/events/lazy_event_dispatcher.h
+++ b/extensions/browser/events/lazy_event_dispatcher.h
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "base/callback.h"
-#include "base/memory/linked_ptr.h"
 #include "extensions/browser/lazy_context_task_queue.h"
 #include "extensions/common/extension_id.h"
 
@@ -32,26 +31,27 @@
 // Manages waking up lazy contexts if they are stopped.
 class LazyEventDispatcher {
  public:
-  using DispatchFunction =
-      base::Callback<void(const linked_ptr<Event>&,
-                          std::unique_ptr<LazyContextTaskQueue::ContextInfo>)>;
+  using DispatchFunction = base::RepeatingCallback<void(
+      std::unique_ptr<Event>,
+      std::unique_ptr<LazyContextTaskQueue::ContextInfo>)>;
 
   LazyEventDispatcher(content::BrowserContext* browser_context,
-                      const linked_ptr<Event>& event,
                       const DispatchFunction& dispatch_function);
   ~LazyEventDispatcher();
 
-  // Dispatches the lazy |event_| to |extension_id|.
+  // Dispatches the lazy |event| to |extension_id|.
   //
   // Ensures that all lazy background pages that are interested in the given
   // event are loaded, and queues the event if the page is not ready yet.
-  void DispatchToEventPage(const ExtensionId& extension_id,
+  void DispatchToEventPage(const Event& event,
+                           const ExtensionId& extension_id,
                            const base::DictionaryValue* listener_filter);
-  // Dispatches the lazy |event_| to |extension_id|'s service worker.
+  // Dispatches the lazy |event| to |extension_id|'s service worker.
   //
   // Service workers are started if they were stopped, before dispatching the
   // event.
-  void DispatchToServiceWorker(const ExtensionId& extension_id,
+  void DispatchToServiceWorker(const Event& event,
+                               const ExtensionId& extension_id,
                                const GURL& service_worker_scope,
                                const base::DictionaryValue* listener_filter);
 
@@ -66,13 +66,15 @@
   using ServiceWorkerDispatchIdentifier =
       std::pair<const content::BrowserContext*, GURL>;
 
-  void DispatchToLazyContext(LazyContextId* dispatch_context,
+  void DispatchToLazyContext(const Event& event,
+                             LazyContextId* dispatch_context,
                              const base::DictionaryValue* listener_filter);
 
   // Possibly loads given extension's background page or extension Service
   // Worker in preparation to dispatch an event.  Returns true if the event was
   // queued for subsequent dispatch, false otherwise.
-  bool QueueEventDispatch(const LazyContextId& dispatch_context,
+  bool QueueEventDispatch(const Event& event,
+                          const LazyContextId& dispatch_context,
                           const Extension* extension,
                           const base::DictionaryValue* listener_filter);
 
@@ -83,7 +85,6 @@
   content::BrowserContext* GetIncognitoContext(const Extension* extension);
 
   content::BrowserContext* const browser_context_;
-  linked_ptr<Event> event_;
   DispatchFunction dispatch_function_;
 
   // TODO(lazyboy): Instead of keeping these two std::sets, compbine them using
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h
index 23d5d15..b33ceb3c 100644
--- a/extensions/browser/extension_function_histogram_value.h
+++ b/extensions/browser/extension_function_histogram_value.h
@@ -1365,6 +1365,7 @@
   AUTOTESTPRIVATE_LAUNCHARCAPP = 1302,
   AUTOTESTPRIVATE_CLOSEAPP = 1303,
   ACCESSIBILITY_PRIVATE_SETSWITCHACCESSMENUSTATE = 1304,
+  AUTOTESTPRIVATE_SENDASSISTANTTEXTQUERY = 1305,
   // Last entry: Add new entries above, then run:
   // python tools/metrics/histograms/update_extension_histograms.py
   ENUM_BOUNDARY
diff --git a/extensions/browser/lazy_background_task_queue.cc b/extensions/browser/lazy_background_task_queue.cc
index 69f0db3..c0a5fe3 100644
--- a/extensions/browser/lazy_background_task_queue.cc
+++ b/extensions/browser/lazy_background_task_queue.cc
@@ -91,8 +91,7 @@
   const ExtensionId& extension_id = context_id.extension_id();
   content::BrowserContext* const browser_context = context_id.browser_context();
   PendingTasksList* tasks_list = nullptr;
-  PendingTasksKey key(browser_context, extension_id);
-  auto it = pending_tasks_.find(key);
+  auto it = pending_tasks_.find(context_id);
   if (it == pending_tasks_.end()) {
     const Extension* extension = ExtensionRegistry::Get(browser_context)
                                      ->enabled_extensions()
@@ -108,7 +107,7 @@
     }
     auto tasks_list_tmp = std::make_unique<PendingTasksList>();
     tasks_list = tasks_list_tmp.get();
-    pending_tasks_[key] = std::move(tasks_list_tmp);
+    pending_tasks_[context_id] = std::move(tasks_list_tmp);
   } else {
     tasks_list = it->second.get();
   }
diff --git a/extensions/browser/lazy_background_task_queue.h b/extensions/browser/lazy_background_task_queue.h
index 6e0ddbf..bf9f15c 100644
--- a/extensions/browser/lazy_background_task_queue.h
+++ b/extensions/browser/lazy_background_task_queue.h
@@ -7,6 +7,7 @@
 
 #include <stddef.h>
 
+#include <algorithm>
 #include <map>
 #include <string>
 
@@ -18,6 +19,7 @@
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
 #include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/lazy_context_id.h"
 #include "extensions/browser/lazy_context_task_queue.h"
 #include "extensions/common/extension_id.h"
 
@@ -29,7 +31,6 @@
 class Extension;
 class ExtensionHost;
 class ExtensionRegistry;
-class LazyContextId;
 
 // This class maintains a queue of tasks that should execute when an
 // extension's lazy background page is loaded. It is also in charge of loading
@@ -70,9 +71,9 @@
   FRIEND_TEST_ALL_PREFIXES(LazyBackgroundTaskQueueTest, ProcessPendingTasks);
   FRIEND_TEST_ALL_PREFIXES(LazyBackgroundTaskQueueTest,
                            CreateLazyBackgroundPageOnExtensionLoaded);
-  // A map between a BrowserContext/extension_id pair and the queue of tasks
-  // pending the load of its background page.
-  using PendingTasksKey = std::pair<content::BrowserContext*, ExtensionId>;
+  // A map between a LazyContextId and the queue of tasks pending the load of
+  // its background page.
+  using PendingTasksKey = LazyContextId;
   using PendingTasksList = std::vector<PendingTask>;
   using PendingTasksMap =
       std::map<PendingTasksKey, std::unique_ptr<PendingTasksList>>;
diff --git a/extensions/browser/lazy_context_id.h b/extensions/browser/lazy_context_id.h
index 6958c8e..c0b944ec 100644
--- a/extensions/browser/lazy_context_id.h
+++ b/extensions/browser/lazy_context_id.h
@@ -5,6 +5,8 @@
 #ifndef EXTENSIONS_BROWSER_LAZY_CONTEXT_ID_H_
 #define EXTENSIONS_BROWSER_LAZY_CONTEXT_ID_H_
 
+#include <tuple>
+
 #include "extensions/common/extension_id.h"
 #include "url/gurl.h"
 
@@ -31,6 +33,13 @@
                 const ExtensionId& extension_id,
                 const GURL& service_worker_scope);
 
+  // Copy and move constructors.
+  LazyContextId(const LazyContextId& other) = default;
+  LazyContextId(LazyContextId&& other) = default;
+
+  LazyContextId& operator=(const LazyContextId&) noexcept = default;
+  LazyContextId& operator=(LazyContextId&&) noexcept = default;
+
   bool is_for_event_page() const { return type_ == Type::kEventPage; }
   bool is_for_service_worker() const { return type_ == Type::kServiceWorker; }
 
@@ -48,13 +57,18 @@
 
   LazyContextTaskQueue* GetTaskQueue() const;
 
- private:
-  const Type type_;
-  content::BrowserContext* context_;
-  const ExtensionId extension_id_;
-  const GURL service_worker_scope_;
+  bool operator<(const LazyContextId& rhs) const {
+    return std::make_tuple(type_, context_, extension_id_,
+                           service_worker_scope_) <
+           std::make_tuple(rhs.type_, rhs.context_, rhs.extension_id_,
+                           rhs.service_worker_scope_);
+  }
 
-  DISALLOW_COPY_AND_ASSIGN(LazyContextId);
+ private:
+  Type type_;
+  content::BrowserContext* context_;
+  ExtensionId extension_id_;
+  GURL service_worker_scope_;
 };
 
 }  // namespace extensions
diff --git a/extensions/browser/user_script_loader.cc b/extensions/browser/user_script_loader.cc
index 7c346d33..7936c6e8 100644
--- a/extensions/browser/user_script_loader.cc
+++ b/extensions/browser/user_script_loader.cc
@@ -296,6 +296,39 @@
   removed_script_hosts_.clear();
 }
 
+bool UserScriptLoader::HasLoadedScripts(const HostID& host_id) const {
+  // If there are no loaded scripts (which can happen if either the initial
+  // load hasn't completed or if the loader is currently re-fetching scripts),
+  // then the scripts have not been loaded.
+  if (!loaded_scripts_)
+    return false;
+
+  // If there is a pending change for scripts associated with the |host_id|
+  // (either addition or removal of a script), the scripts haven't finished
+  // loading.
+  for (const auto& key_value : added_scripts_map_) {
+    if (key_value.second->host_id() == host_id)
+      return false;
+  }
+  for (const UserScriptIDPair& id_pair : removed_script_hosts_) {
+    if (id_pair.host_id == host_id)
+      return false;
+  }
+
+  // Find if we have any scripts associated with the |host_id|.
+  bool has_loaded_script = false;
+  for (const auto& script : *loaded_scripts_) {
+    if (script->host_id() == host_id) {
+      has_loaded_script = true;
+      break;
+    }
+  }
+
+  // Assume that if any script associated with |host_id| is present (and there
+  // aren't any pending changes), then the scripts have successfully loaded.
+  return has_loaded_script;
+}
+
 // static
 std::unique_ptr<base::SharedMemory> UserScriptLoader::Serialize(
     const UserScriptList& scripts) {
diff --git a/extensions/browser/user_script_loader.h b/extensions/browser/user_script_loader.h
index 89530dd..de6309c3 100644
--- a/extensions/browser/user_script_loader.h
+++ b/extensions/browser/user_script_loader.h
@@ -83,6 +83,9 @@
   // Initiates procedure to start loading scripts on the file thread.
   void StartLoad();
 
+  // Returns true if the scripts for the given |host_id| have been loaded.
+  bool HasLoadedScripts(const HostID& host_id) const;
+
   // Returns true if we have any scripts ready.
   bool initial_load_complete() const { return shared_memory_.get() != nullptr; }
 
diff --git a/extensions/common/api/_manifest_features.json b/extensions/common/api/_manifest_features.json
index 1898bc7..159cbb5 100644
--- a/extensions/common/api/_manifest_features.json
+++ b/extensions/common/api/_manifest_features.json
@@ -114,6 +114,8 @@
     "extension_types": ["extension", "legacy_packaged_app"]
   },
   "content_security_policy.extension_pages": {
+    // TODO(crbug.com/914224): Keep the channel in sync with the check in
+    // csp_info.cc.
     "channel": "trunk",
     "extension_types": ["extension"]
   },
diff --git a/extensions/common/manifest_handlers/csp_info.cc b/extensions/common/manifest_handlers/csp_info.cc
index 09f244f..1c33a84 100644
--- a/extensions/common/manifest_handlers/csp_info.cc
+++ b/extensions/common/manifest_handlers/csp_info.cc
@@ -9,8 +9,10 @@
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
+#include "components/version_info/channel.h"
 #include "extensions/common/csp_validator.h"
 #include "extensions/common/error_utils.h"
+#include "extensions/common/features/feature_channel.h"
 #include "extensions/common/install_warning.h"
 #include "extensions/common/manifest_constants.h"
 #include "extensions/common/manifest_handlers/sandboxed_page_info.h"
@@ -127,7 +129,14 @@
   //  }
   const base::DictionaryValue* csp_dict = nullptr;
   std::string content_security_policy;
-  if (!is_platform_app_ && extension->manifest()->GetDictionary(key, &csp_dict))
+
+  // TODO(crbug.com/914224): Remove the channel check once the support for the
+  // dictionary key is launched to other channels.
+  bool csp_dictionary_supported =
+      !is_platform_app_ &&
+      GetCurrentChannel() == version_info::Channel::UNKNOWN;
+  if (csp_dictionary_supported &&
+      extension->manifest()->GetDictionary(key, &csp_dict))
     return ParseCSPDictionary(extension, error, *csp_dict);
 
   if (extension->manifest()->GetString(key, &content_security_policy)) {
diff --git a/extensions/common/manifest_handlers/csp_info_unittest.cc b/extensions/common/manifest_handlers/csp_info_unittest.cc
index a28a4360..763e840 100644
--- a/extensions/common/manifest_handlers/csp_info_unittest.cc
+++ b/extensions/common/manifest_handlers/csp_info_unittest.cc
@@ -3,13 +3,25 @@
 // found in the LICENSE file.
 
 #include "extensions/common/manifest_handlers/csp_info.h"
+#include "base/strings/stringprintf.h"
+#include "components/version_info/channel.h"
 #include "extensions/common/error_utils.h"
+#include "extensions/common/features/feature_channel.h"
 #include "extensions/common/manifest_constants.h"
 #include "extensions/common/manifest_test.h"
 
 namespace extensions {
 
+namespace {
+
 namespace errors = manifest_errors;
+namespace keys = manifest_keys;
+
+std::string GetInvalidManifestKeyError(base::StringPiece key) {
+  return ErrorUtils::FormatErrorMessage(errors::kInvalidManifestKey, key);
+};
+
+}  // namespace
 
 using CSPInfoUnitTest = ManifestTest;
 
@@ -73,41 +85,68 @@
   RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR);
 }
 
-TEST_F(CSPInfoUnitTest, CSPKey) {
+TEST_F(CSPInfoUnitTest, CSPStringKey) {
+  scoped_refptr<Extension> extension =
+      LoadAndExpectSuccess("csp_string_valid.json");
+  ASSERT_TRUE(extension);
+  EXPECT_EQ("script-src 'self'; default-src 'none';",
+            CSPInfo::GetContentSecurityPolicy(extension.get()));
+
+  RunTestcase(Testcase("csp_invalid_1.json", GetInvalidManifestKeyError(
+                                                 keys::kContentSecurityPolicy)),
+              EXPECT_TYPE_ERROR);
+}
+
+TEST_F(CSPInfoUnitTest, CSPDictionaryKey) {
   const char kDefaultCSP[] =
       "script-src 'self' blob: filesystem: chrome-extension-resource:; "
       "object-src 'self' blob: filesystem:;";
   struct {
     const char* file_name;
     const char* csp;
-  } success_cases[] = {
-      {"csp_string_valid.json", "script-src 'self'; default-src 'none';"},
+  } cases[] = {
       {"csp_dictionary_valid.json", "default-src 'none';"},
       {"csp_empty_valid.json", "script-src 'self'; object-src 'self';"},
       {"csp_empty_dictionary_valid.json", kDefaultCSP}};
 
-  for (const auto& test_case : success_cases) {
-    SCOPED_TRACE(test_case.file_name);
-    scoped_refptr<Extension> extension =
-        LoadAndExpectSuccess(test_case.file_name);
-    ASSERT_TRUE(extension.get());
-    EXPECT_EQ(test_case.csp,
-              CSPInfo::GetContentSecurityPolicy(extension.get()));
+  // Verify that "content_security_policy" key can be used as a dictionary on
+  // trunk.
+  {
+    ScopedCurrentChannel channel(version_info::Channel::UNKNOWN);
+    for (const auto& test_case : cases) {
+      SCOPED_TRACE(
+          base::StringPrintf("%s on channel %s", test_case.file_name, "trunk"));
+      scoped_refptr<Extension> extension =
+          LoadAndExpectSuccess(test_case.file_name);
+      ASSERT_TRUE(extension.get());
+      EXPECT_EQ(test_case.csp,
+                CSPInfo::GetContentSecurityPolicy(extension.get()));
+    }
   }
 
-  auto get_invalid_manifest_key_error = [](base::StringPiece key) {
-    return ErrorUtils::FormatErrorMessage(errors::kInvalidManifestKey, key);
-  };
+  // Verify that "content_security_policy" key can't be used as a dictionary on
+  // Stable.
+  {
+    ScopedCurrentChannel channel(version_info::Channel::STABLE);
+    for (const auto& test_case : cases) {
+      SCOPED_TRACE(base::StringPrintf("%s on channel %s", test_case.file_name,
+                                      "stable"));
+      LoadAndExpectError(
+          test_case.file_name,
+          GetInvalidManifestKeyError(keys::kContentSecurityPolicy));
+    }
+  }
 
-  const char* kExtensionPagesKey = "content_security_policy.extension_pages";
-  const char* kCSPKey = "content_security_policy";
-  Testcase testcases[] = {
-      Testcase("csp_invalid_1.json", get_invalid_manifest_key_error(kCSPKey)),
-      Testcase("csp_invalid_2.json",
-               get_invalid_manifest_key_error(kExtensionPagesKey)),
-      Testcase("csp_invalid_3.json",
-               get_invalid_manifest_key_error(kExtensionPagesKey))};
-  RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR);
+  {
+    ScopedCurrentChannel channel(version_info::Channel::UNKNOWN);
+    const char* kExtensionPagesKey = "content_security_policy.extension_pages";
+    Testcase testcases[] = {
+        Testcase("csp_invalid_2.json",
+                 GetInvalidManifestKeyError(kExtensionPagesKey)),
+        Testcase("csp_invalid_3.json",
+                 GetInvalidManifestKeyError(kExtensionPagesKey))};
+    RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR);
+  }
 }
 
 }  // namespace extensions
diff --git a/google_apis/gaia/fake_gaia.cc b/google_apis/gaia/fake_gaia.cc
index 9a047e78..13c7eac 100644
--- a/google_apis/gaia/fake_gaia.cc
+++ b/google_apis/gaia/fake_gaia.cc
@@ -14,7 +14,6 @@
 #include "base/files/file_util.h"
 #include "base/json/json_writer.h"
 #include "base/logging.h"
-#include "base/memory/linked_ptr.h"
 #include "base/path_service.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
index c34caa6..abb9a89 100644
--- a/gpu/config/software_rendering_list.json
+++ b/gpu/config/software_rendering_list.json
@@ -1657,7 +1657,7 @@
       ]
     },
     {
-      "id":156,
+      "id": 156,
       "cr_bugs": [870964],
       "description": "Frequent crashes on Adreno (TM) on L and below",
       "os": {
@@ -1690,13 +1690,40 @@
       ]
     },
     {
-      "id":158,
+      "id": 158,
       "cr_bugs": [829435],
       "description": "OOP rasterization on top of ANGLE not supported",
       "gl_renderer": "ANGLE.*",
       "features": [
         "oop_rasterization"
       ]
+    },
+    {
+      "id": 159,
+      "cr_bugs": [902247],
+      "description": "Disallow OpenGL use on Mac with old NVIDIA GPUs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0861", "0x0866", "0x0867", "0x0869", "0x08a0", "0x08a2",
+                    "0x08a4", "0x0a29"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 160,
+      "cr_bugs": [902247],
+      "description": "Disallow OpenGL use on Mac with old AMD GPUs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x1002",
+      "device_id": ["0x944a", "0x9488", "0x94c8", "0x9583"],
+      "features": [
+        "all"
+      ]
     }
   ]
 }
diff --git a/gpu/ipc/common/BUILD.gn b/gpu/ipc/common/BUILD.gn
index 94cbe348..3550340 100644
--- a/gpu/ipc/common/BUILD.gn
+++ b/gpu/ipc/common/BUILD.gn
@@ -139,8 +139,6 @@
 
   if (is_android) {
     sources += [
-      "android/android_image_reader_utils.cc",
-      "android/android_image_reader_utils.h",
       "android/scoped_surface_request_conduit.cc",
       "android/scoped_surface_request_conduit.h",
       "android/surface_owner_android.cc",
@@ -151,6 +149,7 @@
       "gpu_surface_tracker.h",
     ]
     libs = [ "android" ]
+    deps += [ ":android_image_reader_utils" ]
   }
 
   if (use_ozone) {
@@ -158,6 +157,23 @@
   }
 }
 
+if (is_android) {
+  source_set("android_image_reader_utils") {
+    sources = [
+      "android/android_image_reader_utils.cc",
+      "android/android_image_reader_utils.h",
+    ]
+    deps = [
+      "//base",
+      "//ui/gl",
+    ]
+    visibility = [
+      "//gpu/*",
+      "//media/gpu:gpu",
+    ]
+  }
+}
+
 # Depend on this to use surface_handle.h without pulling in all of gpu ipc.
 source_set("surface_handle_type") {
   public = [
diff --git a/headless/lib/browser/headless_browser_impl_aura.cc b/headless/lib/browser/headless_browser_impl_aura.cc
index 3a1878b..5ab8eca 100644
--- a/headless/lib/browser/headless_browser_impl_aura.cc
+++ b/headless/lib/browser/headless_browser_impl_aura.cc
@@ -39,7 +39,8 @@
 void HeadlessBrowserImpl::PlatformInitializeWebContents(
     HeadlessWebContentsImpl* web_contents) {
   auto window_tree_host = std::make_unique<HeadlessWindowTreeHost>(
-      gfx::Rect(), web_contents->begin_frame_control_enabled());
+      gfx::Rect(),
+      web_contents->begin_frame_control_enabled() ? web_contents : nullptr);
   window_tree_host->InitHost();
   gfx::NativeWindow parent_window = window_tree_host->window();
   parent_window->Show();
diff --git a/headless/lib/browser/headless_content_browser_client.cc b/headless/lib/browser/headless_content_browser_client.cc
index c7db1a2..a8a32a3 100644
--- a/headless/lib/browser/headless_content_browser_client.cc
+++ b/headless/lib/browser/headless_content_browser_client.cc
@@ -147,17 +147,25 @@
   return new HeadlessDevToolsManagerDelegate(browser_->GetWeakPtr());
 }
 
-std::unique_ptr<base::Value>
+base::Optional<service_manager::Manifest>
 HeadlessContentBrowserClient::GetServiceManifestOverlay(
     base::StringPiece name) {
-  if (name == content::mojom::kBrowserServiceName)
-    return GetBrowserServiceManifestOverlay();
-  if (name == content::mojom::kRendererServiceName)
-    return GetRendererServiceManifestOverlay();
-  if (name == content::mojom::kPackagedServicesServiceName)
-    return GetPackagedServicesServiceManifestOverlay();
+  if (name == content::mojom::kBrowserServiceName) {
+    return service_manager::Manifest::FromValueDeprecated(
+        GetBrowserServiceManifestOverlay());
+  }
 
-  return nullptr;
+  if (name == content::mojom::kRendererServiceName) {
+    return service_manager::Manifest::FromValueDeprecated(
+        GetRendererServiceManifestOverlay());
+  }
+
+  if (name == content::mojom::kPackagedServicesServiceName) {
+    return service_manager::Manifest::FromValueDeprecated(
+        GetPackagedServicesServiceManifestOverlay());
+  }
+
+  return base::nullopt;
 }
 
 void HeadlessContentBrowserClient::RegisterOutOfProcessServices(
diff --git a/headless/lib/browser/headless_content_browser_client.h b/headless/lib/browser/headless_content_browser_client.h
index 8d719d5..8e4e1f70 100644
--- a/headless/lib/browser/headless_content_browser_client.h
+++ b/headless/lib/browser/headless_content_browser_client.h
@@ -24,7 +24,7 @@
   void OverrideWebkitPrefs(content::RenderViewHost* render_view_host,
                            content::WebPreferences* prefs) override;
   content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
   content::QuotaPermissionContext* CreateQuotaPermissionContext() override;
diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc
index b5e473a..105509da 100644
--- a/headless/lib/browser/headless_web_contents_impl.cc
+++ b/headless/lib/browser/headless_web_contents_impl.cc
@@ -271,12 +271,6 @@
 
   browser()->PlatformInitializeWebContents(this);
   SetBounds(initial_bounds);
-
-  if (begin_frame_control_enabled_) {
-    ui::Compositor* compositor = browser()->PlatformGetCompositor(this);
-    DCHECK(compositor);
-    compositor->SetExternalBeginFrameClient(this);
-  }
 }
 
 void HeadlessWebContentsImpl::SetBounds(const gfx::Rect& bounds) {
@@ -311,11 +305,6 @@
   agent_host_->RemoveObserver(this);
   if (render_process_host_)
     render_process_host_->RemoveObserver(this);
-  if (begin_frame_control_enabled_) {
-    ui::Compositor* compositor = browser()->PlatformGetCompositor(this);
-    DCHECK(compositor);
-    compositor->SetExternalBeginFrameClient(nullptr);
-  }
 }
 
 void HeadlessWebContentsImpl::RenderFrameCreated(
@@ -557,7 +546,8 @@
       frame_timeticks, deadline, interval, viz::BeginFrameArgs::NORMAL);
   args.animate_only = animate_only;
 
-  compositor->IssueExternalBeginFrame(args);
+  compositor->context_factory_private()->IssueExternalBeginFrame(compositor,
+                                                                 args);
 }
 
 HeadlessWebContents::Builder::Builder(
diff --git a/headless/lib/browser/headless_window_tree_host.cc b/headless/lib/browser/headless_window_tree_host.cc
index 600716e7..63ed82f 100644
--- a/headless/lib/browser/headless_window_tree_host.cc
+++ b/headless/lib/browser/headless_window_tree_host.cc
@@ -16,9 +16,9 @@
 
 HeadlessWindowTreeHost::HeadlessWindowTreeHost(
     const gfx::Rect& bounds,
-    bool external_begin_frames_enabled)
+    ui::ExternalBeginFrameClient* external_begin_frame_client)
     : bounds_(bounds) {
-  CreateCompositor(viz::FrameSinkId(), false, external_begin_frames_enabled);
+  CreateCompositor(viz::FrameSinkId(), false, external_begin_frame_client);
   OnAcceleratedWidgetAvailable();
 
   focus_client_.reset(new HeadlessFocusClient());
diff --git a/headless/lib/browser/headless_window_tree_host.h b/headless/lib/browser/headless_window_tree_host.h
index 1a11047b..5eaf7d6b 100644
--- a/headless/lib/browser/headless_window_tree_host.h
+++ b/headless/lib/browser/headless_window_tree_host.h
@@ -30,8 +30,9 @@
 class HeadlessWindowTreeHost : public aura::WindowTreeHost,
                                public ui::PlatformEventDispatcher {
  public:
-  HeadlessWindowTreeHost(const gfx::Rect& bounds,
-                         bool external_begin_frames_enabled);
+  HeadlessWindowTreeHost(
+      const gfx::Rect& bounds,
+      ui::ExternalBeginFrameClient* external_begin_frame_client);
   ~HeadlessWindowTreeHost() override;
 
   void SetParentWindow(gfx::NativeWindow window);
diff --git a/ios/build/bots/scripts/run.py b/ios/build/bots/scripts/run.py
index 9b9622e..56e2b96 100755
--- a/ios/build/bots/scripts/run.py
+++ b/ios/build/bots/scripts/run.py
@@ -86,6 +86,8 @@
           shards=args.shards,
           test_args=test_args,
           test_cases=args.test_cases,
+          use_trusted_cert=args.use_trusted_cert,
+          wpr_tools_path=args.wpr_tools_path,
           xcode_path=args.xcode_path,
           xctest=args.xctest,
       )
@@ -142,6 +144,13 @@
     required='-x' not in sys.argv and '--xcode-parallelization' not in sys.argv,
   )
   parser.add_argument(
+    '-b',
+    '--xcode-build-version',
+    help='Xcode build version to install.',
+    required=True,
+    metavar='build_id',
+  )
+  parser.add_argument(
     '-e',
     '--env-var',
     action='append',
@@ -162,6 +171,12 @@
     metavar='{}',
   )
   parser.add_argument(
+    '--mac-toolchain-cmd',
+    help='Command to run mac_toolchain tool. Default: %(default)s.',
+    default='mac_toolchain',
+    metavar='mac_toolchain',
+  )
+  parser.add_argument(
     '-o',
     '--out-dir',
     help='Directory to store all test data in.',
@@ -175,6 +190,14 @@
     metavar='sim',
   )
   parser.add_argument(
+    '--replay-path',
+    help=('Path to a directory containing WPR replay and recipe files, for '
+          'use with WprProxySimulatorTestRunner to replay a test suite'
+          ' against multiple saved website interactions. Default: %(default)s'),
+    default='NO_PATH',
+    metavar='replay-path',
+  )
+  parser.add_argument(
     '--restart',
     action='store_true',
     help=argparse.SUPPRESS,
@@ -202,25 +225,23 @@
     metavar='testcase',
   )
   parser.add_argument(
+    '--use-trusted-cert',
+    action='store_true',
+    help=('Whether to install a cert to the simulator to allow for local HTTPS'
+         'testing.'),
+  )
+  parser.add_argument(
     '-v',
     '--version',
     help='Version of iOS the simulator should run.',
     metavar='ver',
   )
   parser.add_argument(
-    '-b',
-    '--xcode-build-version',
-    help='Xcode build version to install.',
-    required=True,
-    metavar='build_id',
-  )
-  parser.add_argument(
-    '--replay-path',
-    help=('Path to a directory containing WPR replay and recipe files, for '
-          'use with WprProxySimulatorTestRunner to replay a test suite'
-          ' against multiple saved website interactions. Default: %(default)s'),
+    '--wpr-tools-path',
+    help=('Location of WPR test tools (should be preinstalled, e.g. as part of '
+         'a swarming task requirement). Default: %(default)s.'),
     default='NO_PATH',
-    metavar='replay-path',
+    metavar='wpr-tools-path',
   )
   parser.add_argument(
     '--xcode-path',
@@ -232,19 +253,6 @@
     default='Xcode.app',
   )
   parser.add_argument(
-    '--mac-toolchain-cmd',
-    help='Command to run mac_toolchain tool. Default: %(default)s.',
-    default='mac_toolchain',
-    metavar='mac_toolchain',
-  )
-  parser.add_argument(
-    '--wpr-tools-path',
-    help=('Location of WPR test tools (should be preinstalled, e.g. as part of '
-         'a swarming task requirement). Default: %(default)s.'),
-    default='NO_PATH',
-    metavar='wpr-tools-path',
-  )
-  parser.add_argument(
     '--xctest',
     action='store_true',
     help='Whether or not the given app should be run as an XCTest.',
diff --git a/ios/build/bots/scripts/test_runner.py b/ios/build/bots/scripts/test_runner.py
index d6134ac..3788c99c 100644
--- a/ios/build/bots/scripts/test_runner.py
+++ b/ios/build/bots/scripts/test_runner.py
@@ -118,11 +118,16 @@
 
 
 class ReplayPathNotFoundError(TestRunnerError):
-  """The requested app was not found."""
+  """The replay path was not found."""
   def __init__(self, replay_path):
     super(ReplayPathNotFoundError, self).__init__(
         'Replay path does not exist: %s' % replay_path)
 
+class CertPathNotFoundError(TestRunnerError):
+  """The certificate path was not found."""
+  def __init__(self, replay_path):
+    super(CertPathNotFoundError, self).__init__(
+        'Cert path does not exist: %s' % replay_path)
 
 class WprToolsNotFoundError(TestRunnerError):
   """wpr_tools_path is not specified."""
@@ -637,6 +642,8 @@
       shards=None,
       test_args=None,
       test_cases=None,
+      use_trusted_cert=False,
+      wpr_tools_path='',
       xcode_path='',
       xctest=False,
   ):
@@ -658,6 +665,9 @@
         launching.
       test_cases: List of tests to be included in the test run. None or [] to
         include all tests.
+      use_trusted_cert: Whether to install to the sim a cert that allows for
+        HTTPS tests to run locally.
+      wpr_tools_path: Path to pre-installed WPR-related tools
       xcode_path: Path to Xcode.app folder where its contents will be installed.
       xctest: Whether or not this is an XCTest.
 
@@ -690,6 +700,8 @@
     self.start_time = None
     self.version = version
     self.shards = shards
+    self.use_trusted_cert = use_trusted_cert
+    self.wpr_tools_path = wpr_tools_path
 
   @staticmethod
   def kill_simulators():
@@ -868,6 +880,14 @@
     udid = subprocess.check_output([
       'xcrun', 'simctl', 'create', name, device_type_id, runtime_id]).rstrip()
     print udid
+
+    if self.use_trusted_cert:
+      if not os.path.exists(self.wpr_tools_path):
+        raise WprToolsNotFoundError(self.wpr_tools_path)
+
+      cert_path = "{}/TrustStore_trust.sqlite3".format(self.wpr_tools_path)
+      self.copy_trusted_certificate(cert_path)
+
     return udid
 
   def deleteSimulator(self, udid=None):
@@ -943,6 +963,9 @@
         cert_path: Path to the certificate to copy to all emulators
     '''
 
+    if not os.path.exists(cert_path):
+      raise CertPathNotFoundError(cert_path)
+
     trustStores = glob.glob(
         '{}/Library/Developer/CoreSimulator/Devices/*/data/Library'.
         format(os.path.expanduser('~')))
@@ -985,6 +1008,7 @@
         by running "iossim -l". e.g. "iPhone 5s", "iPad Retina".
       version: Version of iOS the platform should be running. Supported values
         can be found by running "iossim -l". e.g. "9.3", "8.2", "7.1".
+      wpr_tools_path: Path to pre-installed (from CIPD) WPR-related tools
       xcode_build_version: Xcode build version to install before running tests.
       out_dir: Directory to emit test data into.
       env_vars: List of environment variables to pass to the test itself.
@@ -994,7 +1018,6 @@
         launching.
       test_cases: List of tests to be included in the test run. None or [] to
         include all tests.
-      wpr_tools_path: Path to pre-installed (from CIPD) WPR-related tools
       xcode_path: Path to Xcode.app folder where its contents will be installed.
       xctest: Whether or not this is an XCTest.
 
@@ -1017,9 +1040,11 @@
       shards=shards,
       test_args=test_args,
       test_cases=test_cases,
+      wpr_tools_path=wpr_tools_path,
       xcode_path=xcode_path,
       xctest=xctest,
     )
+    self.use_trusted_cert = True
 
     replay_path = os.path.abspath(replay_path)
     if not os.path.exists(replay_path):
@@ -1028,7 +1053,6 @@
 
     if not os.path.exists(wpr_tools_path):
       raise WprToolsNotFoundError(wpr_tools_path)
-    self.wpr_tools_path = wpr_tools_path
 
     self.proxy_process = None
     self.wprgo_process = None
@@ -1164,7 +1188,6 @@
     result = gtest_utils.GTestResult(cmd)
     completed_without_failure = True
     total_returncode = 0
-
     if shards > 1:
       # TODO(crbug.com/881096): reimplement sharding in the future
       raise ShardingDisabledError()
@@ -1175,8 +1198,6 @@
       # Create a simulator for these tests, and prepare it with the
       # certificate needed for HTTPS proxying.
       udid = self.getSimulator()
-      cert_path = "{}/TrustStore_trust.sqlite3".format(self.wpr_tools_path)
-      self.copy_trusted_certificate(cert_path)
 
       for recipe_path in glob.glob('{}/*.test'.format(self.replay_path)):
         base_name = os.path.basename(recipe_path)
diff --git a/ios/chrome/app/application_delegate/app_state.mm b/ios/chrome/app/application_delegate/app_state.mm
index 36a35e8..d6f2b0b8 100644
--- a/ios/chrome/app/application_delegate/app_state.mm
+++ b/ios/chrome/app/application_delegate/app_state.mm
@@ -35,6 +35,8 @@
 #import "ios/chrome/browser/device_sharing/device_sharing_manager.h"
 #include "ios/chrome/browser/feature_engagement/tracker_factory.h"
 #import "ios/chrome/browser/geolocation/omnibox_geolocation_config.h"
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service.h"
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h"
 #import "ios/chrome/browser/metrics/previous_session_info.h"
 #import "ios/chrome/browser/tabs/tab_model.h"
 #import "ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.h"
@@ -364,6 +366,12 @@
     [currentInterface.bvc presentBubblesIfEligible];
   }
 
+  IOSProfileSessionDurationsService* psdService =
+      IOSProfileSessionDurationsServiceFactory::GetForBrowserState(
+          currentInterface.browserState);
+  if (psdService)
+    psdService->OnSessionStarted(_sessionStartTime);
+
   [MetricsMediator logStartupDuration:_startupInformation];
 }
 
@@ -422,13 +430,22 @@
   // time the app becomes active.
   [_startupInformation setIsColdStart:NO];
 
+  id<BrowserInterface> currentInterface =
+      _browserLauncher.interfaceProvider.currentInterface;
   base::TimeDelta duration = base::TimeTicks::Now() - _sessionStartTime;
   UMA_HISTOGRAM_LONG_TIMES("Session.TotalDuration", duration);
   UMA_HISTOGRAM_CUSTOM_TIMES("Session.TotalDurationMax1Day", duration,
                              base::TimeDelta::FromMilliseconds(1),
                              base::TimeDelta::FromHours(24), 50);
-  [_browserLauncher.interfaceProvider.currentInterface
-          .tabModel recordSessionMetrics];
+  [currentInterface.tabModel recordSessionMetrics];
+
+  if (currentInterface.browserState) {
+    IOSProfileSessionDurationsService* psdService =
+        IOSProfileSessionDurationsServiceFactory::GetForBrowserState(
+            currentInterface.browserState);
+    if (psdService)
+      psdService->OnSessionEnded(duration);
+  }
 }
 
 - (BOOL)requiresHandlingAfterLaunchWithOptions:(NSDictionary*)launchOptions
diff --git a/ios/chrome/app/application_delegate/app_state_unittest.mm b/ios/chrome/app/application_delegate/app_state_unittest.mm
index 28025ce..8aed8f11 100644
--- a/ios/chrome/app/application_delegate/app_state_unittest.mm
+++ b/ios/chrome/app/application_delegate/app_state_unittest.mm
@@ -30,6 +30,8 @@
 #import "ios/chrome/browser/device_sharing/device_sharing_manager.h"
 #include "ios/chrome/browser/experimental_flags.h"
 #import "ios/chrome/browser/geolocation/omnibox_geolocation_config.h"
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service.h"
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h"
 #include "ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
 #import "ios/chrome/browser/signin/authentication_service_fake.h"
@@ -121,6 +123,36 @@
   DISALLOW_COPY_AND_ASSIGN(FakeChromeBrowserProvider);
 };
 
+class FakeProfileSessionDurationsService
+    : public IOSProfileSessionDurationsService {
+ public:
+  FakeProfileSessionDurationsService()
+      : IOSProfileSessionDurationsService(nullptr, nullptr) {}
+  ~FakeProfileSessionDurationsService() override = default;
+
+  static std::unique_ptr<KeyedService> Create(
+      web::BrowserState* browser_state) {
+    return std::make_unique<FakeProfileSessionDurationsService>();
+  }
+
+  void OnSessionStarted(base::TimeTicks session_start) override {
+    ++session_started_count_;
+  }
+  void OnSessionEnded(base::TimeDelta session_length) override {
+    ++session_ended_count_;
+  };
+
+  // IOSProfileSessionDurationsService:
+  int session_started_count() const { return session_started_count_; }
+  int session_ended_count() const { return session_ended_count_; }
+
+ private:
+  int session_started_count_ = 0;
+  int session_ended_count_ = 0;
+
+  DISALLOW_COPY_AND_ASSIGN(FakeProfileSessionDurationsService);
+};
+
 }  // namespace
 
 @interface CallTrackingStubBrowserInterfaceProvider
@@ -163,6 +195,9 @@
         AuthenticationServiceFactory::GetInstance(),
         base::BindRepeating(
             &AuthenticationServiceFake::CreateAuthenticationService));
+    test_cbs_builder.AddTestingFactory(
+        IOSProfileSessionDurationsServiceFactory::GetInstance(),
+        base::BindRepeating(&FakeProfileSessionDurationsService::Create));
     browser_state_ = test_cbs_builder.Build();
   }
 
@@ -298,6 +333,12 @@
 
   BOOL metricsMediatorHasBeenCalled() { return metrics_mediator_called_; }
 
+  FakeProfileSessionDurationsService* getProfileSessionDurationsService() {
+    return static_cast<FakeProfileSessionDurationsService*>(
+        IOSProfileSessionDurationsServiceFactory::GetForBrowserState(
+            getBrowserState()));
+  }
+
  private:
   web::TestWebThreadBundle thread_bundle_;
   AppState* app_state_;
@@ -623,6 +664,8 @@
 
   // Test.
   EXPECT_EQ(NSUInteger(0), [window subviews].count);
+  EXPECT_EQ(1, getProfileSessionDurationsService()->session_started_count());
+  EXPECT_EQ(0, getProfileSessionDurationsService()->session_ended_count());
   EXPECT_OCMOCK_VERIFY(mainTabModel);
 }
 
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 99dd6363..b86c140 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
@@ -1,17 +1,17 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="te">
-<translation id="102360288709523007">Googleకి వినియోగ గణాంకాలు, క్రాష్ నివేదికలు పంపి Chromiumను మెరుగుపరచడంలో సహాయపడండి.</translation>
+<translation id="102360288709523007">Googleకు వినియోగ గణాంకాలు, క్రాష్ నివేదికలు పంపి Chromiumను మెరుగుపరచడంలో సహాయపడండి.</translation>
 <translation id="1185134272377778587">Chromium గురించి</translation>
 <translation id="1289966288285062467">Chromium గోప్యతా ప్రకటన</translation>
 <translation id="1341317949260424055">సిస్టమ్ మరియు వినియోగ డేటాని Googleకి పంపడం ద్వారా Chromium మరియు దాని భద్రతను మెరుగుపరచండి</translation>
-<translation id="1472013873724362412">మీ ఖాతా Chromiumలో పని చేయదు. దయచేసి మీ డొమైన్ నిర్వాహకుడిని సంప్రదించండి లేదా సైన్ ఇన్ చేయడానికి సాధారణ Google ఖాతాని ఉపయోగించండి.</translation>
+<translation id="1472013873724362412">మీ ఖాతా Chromiumలో పని చేయదు. దయచేసి మీ డొమైన్ నిర్వాహకుడిని సంప్రదించండి. లేదా సైన్ ఇన్ చేయడానికి సాధారణ Google ఖాతాను ఉపయోగించండి.</translation>
 <translation id="1736662517232558588">Chromium డేటా తీసేసింది</translation>
 <translation id="1838412507805038478">Chromium ఈ వెబ్‌సైట్ ప్రమాణపత్రాన్ని <ph name="ISSUER" /> జారీ చేసినట్లు ధృవీకరించింది.</translation>
 <translation id="1843424232666537147">ఇంటర్నెట్ డేటాను నిర్వహించడంలో, వెబ్ పేజీలను త్వరగా లోడ్ చేయగలగడంలో మీకు సహాయపడే ఫీచ‌ర్‌లను Chromium కలిగి ఉంది.
 <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="2075400798887076382">మీరు మీ కంప్యూటర్‌లో తెరిచిన ట్యాబ్‌లను ఇక్కడి నుండే యాక్సెస్ చేయండి. మీ కంప్యూటర్‌లో Chromiumని తెరిచి, మెనూకి వెళ్లి, “Chromiumకి సైన్ ఇన్ చేయి…” ఎంచుకోండి</translation>
-<translation id="2168108852149185974">కొన్ని యాడ్-ఆన్‌లు Chromium క్రాష్ అయ్యేలా చేసాయి. దయచేసి వీటిని అన్‌ఇన్‌స్టాల్ చేయండి:</translation>
+<translation id="2168108852149185974">కొన్ని యాడ్-ఆన్‌లు Chromium క్రాష్ అయ్యేలా చేశాయి. దయచేసి వీటిని అన్‌ఇన్‌స్టాల్ చేయండి:</translation>
 <translation id="2178608107313874732">Chromium ప్రస్తుతం మీ కెమెరాను ఉపయోగించలేదు</translation>
 <translation id="2195025571279539885">మీరు తదుపరి సారి సందర్శించినప్పుడు Chromium ఈ సైట్‌లోని <ph name="LANGUAGE_NAME" /> పేజీలను అనువదించే సదుపాయాన్ని అందించాలని కోరుకుంటున్నారా?</translation>
 <translation id="2647554856022461007">Chromium మీ బ్రౌజింగ్ అనుభవాన్ని మెరుగుపరచడానికి వెబ్ సేవలను ఉపయోగించవచ్చు. మీరు ఈ సేవలను ఐచ్ఛికంగా నిలిపివేయవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
@@ -41,9 +41,9 @@
 <translation id="6626296268883197964">ఈ యాప్‌ని ఉపయోగించడం ద్వారా, మీరు Chromium <ph name="BEGIN_LINK_TOS" />సేవా నిబంధనలు<ph name="END_LINK_TOS" /> మరియు <ph name="BEGIN_LINK_PRIVACY" />గోప్యతా ప్రకటన<ph name="END_LINK_PRIVACY" />ని అంగీకరిస్తున్నారు.</translation>
 <translation id="7099326575020694068">Chromium విభజన వీక్షణ మోడ్‌లో మీ కెమెరాను ఉపయోగించలేదు</translation>
 <translation id="7208566199746267865">మీ ఖాతాలను వెబ్‌లో అందించడం ద్వారా Chromium మీ సమయాన్ని ఆదా చేస్తుంది. మీరు సెట్టింగ్‌లలో ఖాతాలను జోడించవచ్చు లేదా తీసివేయవచ్చు.</translation>
-<translation id="7269362888766543920">కొన్ని యాడ్-ఆన్‌లు Chromium క్రాష్ అయ్యేలా చేసాయి. దయచేసి వాటిని అన్‌ఇన్‌స్టాల్ చేయడానికి ప్రయత్నించండి.</translation>
+<translation id="7269362888766543920">కొన్ని యాడ్-ఆన్‌లు Chromium క్రాష్ అయ్యేలా చేశాయి. దయచేసి వాటిని అన్‌ఇన్‌స్టాల్ చేయడానికి ప్రయత్నించండి.</translation>
 <translation id="7337881442233988129">Chromium</translation>
-<translation id="7357211569052832586">ఎంచుకోబడిన డేటా Chromium, సమకాలీకరించిన పరికరాల నుండి తీసివేయబడింది. మీ Google ఖాతా history.google.comలో ఇతర Google సేవలకు సంబంధించిన శోధనలు, కార్య‌క‌లాపాలు వంటి ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
+<translation id="7357211569052832586">ఎంచుకోబడిన డేటా Chromium నుండి, సింక్ చేసిన‌ పరికరాల నుండి తీసివేయబడింది. history.google.comలో మీ Google ఖాతా, ఇతర Google సేవలకు సంబంధించిన శోధనలు, కార్య‌క‌లాపాల వంటి ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="7400689562045506105">Chromiumని అంతటా ఉపయోగించండి</translation>
 <translation id="7674213385180944843">సెట్టింగ్‌లు &gt; గోప్యత &gt; కెమెరా &gt; Chromium తెరిచి, కెమెరాను ఆన్ చేయండి.</translation>
 <translation id="7746854981345936341">Chromium చిట్కా. వెనకకు, ముందుకు మరియు శోధన వంటి కొన్ని బటన్‌లు ఇప్పుడు మీ స్క్రీన్ దిగువన ఉన్నాయి.</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 9d361c8..a9e9c4d6 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
@@ -25,12 +25,12 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3980220367029651214">మీరు సమకాలీకరణ ఖాతాలను <ph name="USER_EMAIL1" /> నుండి <ph name="USER_EMAIL2" />కి మారుస్తున్నారు. ఇప్పటికే ఉన్న మీ Chrome డేటా <ph name="DOMAIN" /> నిర్వహణలో ఉంది. దీని వలన మీ డేటా ఈ పరికరం నుండి తొలగించబడుతుంది, కానీ మీ డేటా <ph name="USER_EMAIL1" />లో అలాగే ఉంటుంది.</translation>
 <translation id="3988789688219830639">మీ ఫోటోలు లేదా వీడియోలకు Google Chrome యాక్సెస్‌ను కలిగి లేదు. iOS సెట్టింగ్‌లు &gt; గోప్యత &gt; ఫోటోలులో యాక్సెస్‌ను ప్రారంభించండి.</translation>
-<translation id="4099578267706723511">Googleకి వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపడం ద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి.</translation>
+<translation id="4099578267706723511">Googleకు వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపడం ద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి.</translation>
 <translation id="415767770115540173">మీ స్థానం ఆధారంగా Chromeలో మెరుగైన Google అనుభవాన్ని పొందండి.</translation>
 <translation id="424864128008805179">Chrome నుండి సైన్ అవుట్ చేయాలా?</translation>
 <translation id="447252321002412580">Chrome ఫీచర్‌లు మరియు పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation>
-<translation id="4523886039239821078">కొన్ని యాడ్-ఆన్‌లు Chrome క్రాష్ అయ్యేలా చేసాయి. దయచేసి వీటిని అన్‌ఇన్‌స్టాల్ చేయండి:</translation>
-<translation id="4615174829807303908">మీరు <ph name="SIGNOUT_MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ చేస్తున్నారు. దీని వలన మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది, కానీ మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
+<translation id="4523886039239821078">కొన్ని యాడ్-ఆన్‌లు Chrome క్రాష్ అయ్యేలా చేశాయి. దయచేసి వీటిని అన్‌ఇన్‌స్టాల్ చేయండి:</translation>
+<translation id="4615174829807303908">మీరు <ph name="SIGNOUT_MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ చేస్తున్నారు. దీని వ‌ల్ల మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది. కానీ మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation>
 <translation id="5389212809648216794">మీ కెమెరాను మరొక అప్లికేషన్‌ ఉపయోగిస్తున్నందున Google Chrome దాన్ని ఉపయోగించలేదు</translation>
 <translation id="5489543008378040943"><ph name="BEGIN_LINK" />సెట్టింగ్‌లను<ph name="END_LINK" /> ఎప్పుడైనా అనుకూలీకరించవచ్చు. Google మీరు సందర్శించే సైట్‌ల్లోని కంటెంట్, బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపం ఉపయోగించడం ద్వారా Chromeని మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి Google సేవలను వ్యక్తిగతీకరించవచ్చు.</translation>
 <translation id="5639704535586432836">సెట్టింగ్‌లు &gt; గోప్యత &gt; కెమెరా &gt; Google Chromeని తెరిచి, కెమెరాను ఆన్ చేయండి.</translation>
@@ -40,7 +40,7 @@
 <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="6573431926118603307">మీరు మీ ఇతర పరికరాల్లోని Chromeలో తెరిచిన ట్యాబ్‌లు ఇక్కడ చూపబడతాయి.</translation>
 <translation id="6600954340915313787">Chromeకి కాపీ చేయబడింది</translation>
-<translation id="6648150602980899529">మీరు <ph name="DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు మరియు దీని నిర్వాహకుడికి మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వలన ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది, కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</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>
@@ -52,8 +52,8 @@
 <translation id="7437998757836447326">Chrome నుండి సైన్ అవుట్ చేయండి</translation>
 <translation id="756809126120519699">Chrome డేటా తీసివేయబడింది</translation>
 <translation id="7626032353295482388">Chromeకు స్వాగతం</translation>
-<translation id="840168496893712993">కొన్ని యాడ్-ఆన్‌లు Chrome క్రాష్ అయ్యేలా చేసాయి. దయచేసి వాటిని అన్‌ఇన్‌స్టాల్ చేయడాన్ని ప్రయత్నించండి.</translation>
-<translation id="8459495907675268833">ఎంచుకోబడిన డేటా Chrome నుండి, సమకాలీకరించిన పరికరాల నుండి తీసివేయబడింది. మీ Google ఖాతా, శోధనల‌ వంటి బ్రౌజింగ్ చరిత్రను, ఇతర Google సేవలకు సంబంధించిన కార్యకలాపాలను history.google.comలో కలిగి ఉండవచ్చు.</translation>
+<translation id="840168496893712993">కొన్ని యాడ్-ఆన్‌లు Chrome క్రాష్ అయ్యేలా చేశాయి. దయచేసి వాటిని అన్‌ఇన్‌స్టాల్ చేయడాన్ని ప్రయత్నించండి.</translation>
+<translation id="8459495907675268833">ఎంచుకోబడిన డేటా Chromeతో పాటు, సింక్ చేసిన‌ పరికరాల నుండి తీసివేయబడింది. మీ Google ఖాతా history.google.comలో ఇతర Google సేవలకు సంబంధించిన శోధనలు, కార్య‌క‌లాపాల‌ వంటి ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8606668294522778825">Google Chrome మీ బ్రౌజింగ్ అనుభవాన్ని మెరుగుపరచడానికి వెబ్ సేవలను ఉపయోగించవచ్చు. మీరు ఈ సేవలను ఐచ్ఛికంగా నిలిపివేయవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="96145293669295453">Chrome చిట్కా. మరిన్ని ట్యాబ్ ఎంపికల కోసం, మీ స్క్రీన్‌లో పైన కానీ దిగువన కానీ ఉండే సాధనాల బార్‌లో ట్యాబ్‌లను చూపు బటన్‌ను నొక్కి పట్టుకోండి.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index d1f6516..96dfca6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -46,6 +46,7 @@
 <translation id="1605658421715042784">Copy image</translation>
 <translation id="1612730193129642006">Show Tab Grid</translation>
 <translation id="1644574205037202324">History</translation>
+<translation id="1650222530560417226">Tap the 'Start Logging' button to collect future JavaScript console logs and errors from all tabs. Logs will be collected (and stored only in memory) until this page is closed or 'Stop Logging' is tapped.</translation>
 <translation id="1657011748321897393">Sharing failed because you are not connected to the network.</translation>
 <translation id="165877110639533037">No Open Tabs</translation>
 <translation id="168715261339224929">To get your bookmarks on all your devices, turn on sync.</translation>
@@ -61,6 +62,7 @@
 <translation id="1813414402673211292">Clear Browsing Data</translation>
 <translation id="1820259098641718022">Added to Reading List</translation>
 <translation id="1821253160463689938">Uses cookies to remember your preferences, even if you don't visit those pages</translation>
+<translation id="1828824471510190776">Suggest  Password…</translation>
 <translation id="1876721852596493031">Send usage data</translation>
 <translation id="1886928167269928266">Beginning of Time</translation>
 <translation id="1911619930368729126">Upload to Google Drive</translation>
@@ -172,6 +174,7 @@
 <translation id="3638472932233958418">Pre-load Web Pages</translation>
 <translation id="3691593122358196899">Bookmarked to <ph name="FOLDER_TITLE" /></translation>
 <translation id="3771033907050503522">Incognito Tabs</translation>
+<translation id="3771149149411027381">Search Copied Text</translation>
 <translation id="3779810277399252432">No Internet connection.</translation>
 <translation id="3783017676699494206">Save Image</translation>
 <translation id="3789841737615482174">Install</translation>
@@ -196,6 +199,7 @@
 <translation id="4112644173421521737">Search</translation>
 <translation id="4121993058175073134">To send net-export data, please configure your email account in the Settings app.</translation>
 <translation id="4124987746317609294">Time Range</translation>
+<translation id="4155190233692914060">Visit Copied Link</translation>
 <translation id="4172051516777682613">Always show</translation>
 <translation id="418156467088430727">View Offline Version in New Tab</translation>
 <translation id="4237682350741091554">Manage Chrome Sync and personalisation in <ph name="BEGIN_LINK" />Settings<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index bdb896e..709eb23 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -65,7 +65,7 @@
 <translation id="1886928167269928266">ప్రారంభ సమయం</translation>
 <translation id="1911619930368729126">Google డిస్క్‌కి అప్‌. చే.</translation>
 <translation id="1941314575388338491">కాపీ చేయడానికి రెండుసార్లు నొక్కండి.</translation>
-<translation id="1952728750904661634">నిర్వహిత ఖాతాతో సైన్ ఇన్ చేయండి</translation>
+<translation id="1952728750904661634">నిర్వాహిత‌ ఖాతాతో సైన్ ఇన్ చేయండి</translation>
 <translation id="1974060860693918893">ఆధునిక</translation>
 <translation id="1989112275319619282">బ్రౌజ్ చేయి</translation>
 <translation id="2015722694326466240">పాస్‌వర్డ్‌లను చూడటానికి, మీరు ముందుగా తప్పక మీ పరికరంలో పాస్‌కోడ్‌ని సెట్ చేయాలి.</translation>
@@ -271,7 +271,7 @@
 <translation id="5525269841082836315">రహస్య పదబంధాన్ని సృష్టించండి</translation>
 <translation id="5548760955356983418">ఈ పరికరంలో వెబ్‌సైట్‌ను బ్రౌజ్ చేయడాన్ని ప్రారంభించి, ఆ తర్వాత దాన్ని మీ Macలో సులభంగా కొనసాగించడానికి హ్యాండ్‌ఆఫ్ మిమ్మల్ని అనుమతిస్తుంది. ప్రస్తుతం తెరిచిన వెబ్‌సైట్ మీ Mac డాక్‌లో కనిపిస్తుంది.
 
-హ్యాండ్‌ఆఫ్‌ను తప్పనిసరిగా సాధారణ సెట్టింగ్‌ల విభాగంలో కూడా ప్రారంభించాలి మరియు మీ పరికరాలు తప్పనిసరిగా ఒకే iCloud ఖాతాను ఉపయోగించాలి.</translation>
+హ్యాండ్‌ఆఫ్‌ను తప్పనిసరిగా సాధారణ సెట్టింగ్‌ల విభాగంలో కూడా ప్రారంభించాలి. మీ పరికరాలు తప్పనిసరిగా ఒకే iCloud ఖాతాను ఉపయోగించాలి.</translation>
 <translation id="5556459405103347317">రీలోడ్</translation>
 <translation id="5614553682702429503">పాస్‌వర్డ్‌ను సేవ్ చేయాలా?</translation>
 <translation id="5626245204502895507">ఫైల్‌ను ఈ సమయంలో డౌన్‌‌లోడ్ చేయడం సాధ్యపడలేదు.</translation>
@@ -279,7 +279,7 @@
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783"><ph name="PRODUCT_VERSION" /> సంస్కరణ</translation>
 <translation id="5728700505257787410">క్షమించండి, మీ ఖాతాకు సైన్ ఇన్ చేయడంలో సమస్య ఉంది.</translation>
-<translation id="5737974891429562743">ఖాతా సైన్-ఇన్ వివరాలు పాతవి. సింక్‌ను ప్రారంభించడానికి వాటిని అప్‌డేట్ చేయండి.</translation>
+<translation id="5737974891429562743">ఖాతా సైన్-ఇన్ వివరాలు పాతవి. సింక్‌ను ప్రారంభించడానికి అప్‌డేట్ చేయండి.</translation>
 <translation id="5738887413654608789">దీని వలన మీరు మీ పరిసరాల ఆధారంగా సంబంధిత వెబ్‌ పేజీలను కనుగొనగలుగుతారు.</translation>
 <translation id="5771816112378578655">సెటప్ పురోగమనంలో ఉంది...</translation>
 <translation id="5816228676161003208">దీని వలన మీ వాయిస్‌ని ఉపయోగించి వేగంగా శోధించగలుగుతారు.</translation>
@@ -288,7 +288,7 @@
 <translation id="5857090052475505287">క్రొత్త ఫోల్డర్</translation>
 <translation id="5857770089550859117">సమకాలీకరణను ప్రారంభించడానికి రహస్య పదబంధం అవసరం.</translation>
 <translation id="5860033963881614850">ఆఫ్ అయ్యింది</translation>
-<translation id="5865733239029070421">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలు, క్రాష్ నివేదికలను పంపుతుంది</translation>
+<translation id="5865733239029070421">Googleకు ఆటోమేటిక్‌గా వినియోగ గణాంకాలను, క్రాష్ నివేదికలను పంపుతుంది</translation>
 <translation id="5869029295770560994">సరే, అర్థమైంది</translation>
 <translation id="5871497086027727873">1 అంశం తరలించబడింది</translation>
 <translation id="5911030830365207728">Google అనువాదం</translation>
@@ -321,7 +321,7 @@
 <translation id="6255097610484507482">క్రెడిట్ కార్డ్‌ను సవరించు</translation>
 <translation id="6303969859164067831">సైన్ అవుట్ చేసి, సమకాలీకరణను ఆఫ్ చేయండి</translation>
 <translation id="6308436439357671616">దీని వలన మీరు ఫోటోలను తీసి, అప్‌లోడ్ చేయగలుగుతారు.</translation>
-<translation id="6324528485781869530">సమకాలీకరణ ఖాతాను మార్చండి</translation>
+<translation id="6324528485781869530">సింక్‌ ఖాతాను మార్చండి</translation>
 <translation id="6324669097367352121">సైన్ ఇన్ సెట్టింగ్‌లు</translation>
 <translation id="6337234675334993532">గుప్తీకరణ</translation>
 <translation id="633809752005859102">వాస్తవంగా ఏదో తప్పు జరిగింది. మేము దానిపై పని చేస్తాము.</translation>
@@ -390,7 +390,7 @@
 <translation id="7346909386216857016">సరే, అర్థమైంది</translation>
 <translation id="7383797227493018512">పఠన జాబితా</translation>
 <translation id="7400418766976504921">URL</translation>
-<translation id="7425346204213733349">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లకు చేసే మార్పులు ఇకపై మీ Google ఖాతాకు సమకాలీకరించబడవు. అయితే, ఇప్పటికే ఉన్న మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
+<translation id="7425346204213733349">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లకు చేసే మార్పులు ఇకపై మీ Google ఖాతాకు సింక్ చేయ‌బడవు. అయితే, ఇప్పటికే ఉన్న మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
 <translation id="744343212394640790"><ph name="EMAIL" /> కాదు</translation>
 <translation id="7454057999980797137">రాష్ట్రం / దేశం</translation>
 <translation id="7456847797759667638">స్థానాన్ని తెరువు...</translation>
@@ -477,7 +477,7 @@
 <translation id="8981454092730389528">Google కార్యాచరణ నియంత్రణలు</translation>
 <translation id="8985320356172329008">Googleకి ఇలా సైన్ ఇన్ చేసారు</translation>
 <translation id="902659348151742535">శోధన, ప్రకటనలు మరియు ఇతర Google సేవలను వ్యక్తిగతీకరించడం కోసం Google మీ బ్రౌజింగ్ చరిత్రను ఉపయోగించవచ్చు.</translation>
-<translation id="9034759925968272072">మీరు మీ Google ఖాతా నుండి సైన్ అవుట్ చేయబడరు. మీ Google ఖాతా <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />లో ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
+<translation id="9034759925968272072">మీరు మీ Google ఖాతా నుండి సైన్ అవుట్ చేయబడరు. <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />లో మీ Google ఖాతా ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="9039373489628511875">బ్యాండ్‌విడ్త్</translation>
 <translation id="9055772144595778347">సైన్ ఇన్ చేయలేరు</translation>
 <translation id="9065203028668620118">సవరించు</translation>
@@ -491,7 +491,7 @@
 <translation id="9188680907066685419">నిర్వహిత ఖాతా నుండి సైన్ అవుట్ చేయండి</translation>
 <translation id="9203116392574189331">హ్యాండ్ఆఫ్</translation>
 <translation id="9223358826628549784">క్రాష్ నివేదిక పంపబడింది.</translation>
-<translation id="935490618240037774">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు.</translation>
+<translation id="935490618240037774">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సింక్ చేయ‌బడతాయి. కాబ‌ట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు.</translation>
 <translation id="976982866697960176">సమకాలీకరించిన డేటాను నిర్వహించండి…</translation>
 <translation id="988141524645182168">ఇతర పరికరాలు</translation>
 <translation id="989988560359834682">చిరునామాను సవరించు</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 50fb823..702cf71 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -224,6 +224,7 @@
 <translation id="4666531726415300315">目前登入的帳戶是 <ph name="EMAIL" />。
 
 您已使用同步通關密語對資料進行加密,請輸入通關密語開始進行同步。</translation>
+<translation id="4689564913179979534">管理付款方式...</translation>
 <translation id="473775607612524610">更新</translation>
 <translation id="4747097190499141774">通關密語加密保護的資料不包括 Google Pay 的付款方式和地址。只有知道你通關密語的人,才能讀取加密保護的資料。系統不會將通關密語傳送給 Google,Google 也不會儲存通關密語。如果你忘記自己的通關密語,或是想變更這項設定,則必須重設同步功能。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="4749030437873592350">在網頁中尋找...</translation>
@@ -345,6 +346,7 @@
 <translation id="6482629121755362506">已刪除 <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> 個項目</translation>
 <translation id="6541915733953096570">過去 1 小時</translation>
 <translation id="6548479190262846511">找不到這個網站的密碼</translation>
+<translation id="6642362222295953972">切換至現有分頁</translation>
 <translation id="6643016212128521049">清除</translation>
 <translation id="6656103420185847513">編輯資料夾</translation>
 <translation id="6657585470893396449">密碼</translation>
diff --git a/ios/chrome/browser/browser_state/BUILD.gn b/ios/chrome/browser/browser_state/BUILD.gn
index 7a5f01b..914e9dc 100644
--- a/ios/chrome/browser/browser_state/BUILD.gn
+++ b/ios/chrome/browser/browser_state/BUILD.gn
@@ -94,6 +94,7 @@
     "//ios/chrome/browser/history",
     "//ios/chrome/browser/invalidation",
     "//ios/chrome/browser/language",
+    "//ios/chrome/browser/metrics",
     "//ios/chrome/browser/net",
     "//ios/chrome/browser/ntp_snippets",
     "//ios/chrome/browser/passwords",
diff --git a/ios/chrome/browser/browser_state/browser_state_keyed_service_factories.mm b/ios/chrome/browser/browser_state/browser_state_keyed_service_factories.mm
index d768ece..7a9ac73 100644
--- a/ios/chrome/browser/browser_state/browser_state_keyed_service_factories.mm
+++ b/ios/chrome/browser/browser_state/browser_state_keyed_service_factories.mm
@@ -29,6 +29,7 @@
 #include "ios/chrome/browser/invalidation/ios_chrome_deprecated_profile_invalidation_provider_factory.h"
 #include "ios/chrome/browser/language/language_model_manager_factory.h"
 #include "ios/chrome/browser/language/url_language_histogram_factory.h"
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h"
 #include "ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.h"
 #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h"
 #include "ios/chrome/browser/reading_list/reading_list_model_factory.h"
@@ -116,6 +117,7 @@
   IOSChromeLargeIconCacheFactory::GetInstance();
   IOSChromeLargeIconServiceFactory::GetInstance();
   IOSChromePasswordStoreFactory::GetInstance();
+  IOSProfileSessionDurationsServiceFactory::GetInstance();
   IOSUserEventServiceFactory::GetInstance();
   LanguageModelManagerFactory::GetInstance();
   ModelTypeStoreServiceFactory::GetInstance();
diff --git a/ios/chrome/browser/metrics/BUILD.gn b/ios/chrome/browser/metrics/BUILD.gn
index d49c7ee..36be492 100644
--- a/ios/chrome/browser/metrics/BUILD.gn
+++ b/ios/chrome/browser/metrics/BUILD.gn
@@ -31,6 +31,10 @@
     "ios_chrome_metrics_services_manager_client.mm",
     "ios_chrome_stability_metrics_provider.h",
     "ios_chrome_stability_metrics_provider.mm",
+    "ios_profile_session_durations_service.h",
+    "ios_profile_session_durations_service.mm",
+    "ios_profile_session_durations_service_factory.h",
+    "ios_profile_session_durations_service_factory.mm",
     "mobile_session_shutdown_metrics_provider.h",
     "mobile_session_shutdown_metrics_provider.mm",
     "previous_session_info.h",
diff --git a/ios/chrome/browser/metrics/ios_profile_session_durations_service.h b/ios/chrome/browser/metrics/ios_profile_session_durations_service.h
new file mode 100644
index 0000000..eb276647
--- /dev/null
+++ b/ios/chrome/browser/metrics/ios_profile_session_durations_service.h
@@ -0,0 +1,47 @@
+// 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 IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_H_
+#define IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_H_
+
+#include "base/time/time.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "components/sync/driver/sync_session_durations_metrics_recorder.h"
+
+namespace identity {
+class IdentityManager;
+}
+namespace syncer {
+class SyncService;
+}
+
+// Tracks the active browsing time that the user spends signed in and/or syncing
+// as fraction of their total browsing time.
+class IOSProfileSessionDurationsService : public KeyedService {
+ public:
+  // Callers must ensure that the parameters outlive this object.
+  // If |sync_service| and |identity_manager| are null, then this object does
+  // not monitor profile session durations.
+  IOSProfileSessionDurationsService(
+      syncer::SyncService* sync_service,
+      identity::IdentityManager* identity_manager);
+  ~IOSProfileSessionDurationsService() override;
+
+  // KeyedService:
+  void Shutdown() override;
+
+  // A session is defined as the time spent with the application in foreground
+  // (the time duration between the application enters foreground until the
+  // application enters background).
+  virtual void OnSessionStarted(base::TimeTicks session_start);
+  virtual void OnSessionEnded(base::TimeDelta session_length);
+
+ private:
+  std::unique_ptr<syncer::SyncSessionDurationsMetricsRecorder>
+      metrics_recorder_;
+
+  DISALLOW_COPY_AND_ASSIGN(IOSProfileSessionDurationsService);
+};
+
+#endif  // IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_H_
diff --git a/ios/chrome/browser/metrics/ios_profile_session_durations_service.mm b/ios/chrome/browser/metrics/ios_profile_session_durations_service.mm
new file mode 100644
index 0000000..60c93a97
--- /dev/null
+++ b/ios/chrome/browser/metrics/ios_profile_session_durations_service.mm
@@ -0,0 +1,44 @@
+// 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.
+
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+IOSProfileSessionDurationsService::IOSProfileSessionDurationsService(
+    syncer::SyncService* sync_service,
+    identity::IdentityManager* identity_manager)
+    : KeyedService() {
+  if (!sync_service && !identity_manager) {
+    // |sync_service| and |identity_maanger| may be null for testing.
+    return;
+  }
+
+  metrics_recorder_ =
+      std::make_unique<syncer::SyncSessionDurationsMetricsRecorder>(
+          sync_service, identity_manager);
+
+  // |IOSProfileSessionDurationsService| is called explicitly each time a
+  // session starts or ends. So there is no need to mimic what is done on
+  // Android and to start a session in the constuctor of the service.
+}
+
+IOSProfileSessionDurationsService::~IOSProfileSessionDurationsService() =
+    default;
+
+void IOSProfileSessionDurationsService::Shutdown() {
+  metrics_recorder_.reset();
+}
+
+void IOSProfileSessionDurationsService::OnSessionStarted(
+    base::TimeTicks session_start) {
+  metrics_recorder_->OnSessionStarted(session_start);
+}
+
+void IOSProfileSessionDurationsService::OnSessionEnded(
+    base::TimeDelta session_length) {
+  metrics_recorder_->OnSessionEnded(session_length);
+}
diff --git a/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h b/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h
new file mode 100644
index 0000000..bfbcfcc
--- /dev/null
+++ b/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h
@@ -0,0 +1,49 @@
+// 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 IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_FACTORY_H_
+#define IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_FACTORY_H_
+
+#include "base/macros.h"
+
+#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+
+namespace base {
+template <typename T>
+struct DefaultSingletonTraits;
+}  // namespace base
+
+class IOSProfileSessionDurationsService;
+namespace ios {
+class ChromeBrowserState;
+}
+
+class IOSProfileSessionDurationsServiceFactory
+    : public BrowserStateKeyedServiceFactory {
+ public:
+  // Creates the service if it doesn't exist already for |browser_state|.
+  static IOSProfileSessionDurationsService* GetForBrowserState(
+      ios::ChromeBrowserState* browser_state);
+
+  static IOSProfileSessionDurationsServiceFactory* GetInstance();
+
+ private:
+  friend struct base::DefaultSingletonTraits<
+      IOSProfileSessionDurationsServiceFactory>;
+
+  IOSProfileSessionDurationsServiceFactory();
+  ~IOSProfileSessionDurationsServiceFactory() override;
+
+  // BrowserContextKeyedServiceFactory:
+  // BrowserStateKeyedServiceFactory implementation.
+  std::unique_ptr<KeyedService> BuildServiceInstanceFor(
+      web::BrowserState* context) const override;
+  web::BrowserState* GetBrowserStateToUse(
+      web::BrowserState* context) const override;
+  bool ServiceIsNULLWhileTesting() const override;
+
+  DISALLOW_COPY_AND_ASSIGN(IOSProfileSessionDurationsServiceFactory);
+};
+
+#endif  // IOS_CHROME_BROWSER_METRICS_IOS_PROFILE_SESSION_DURATIONS_SERVICE_FACTORY_H_
diff --git a/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.mm b/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.mm
new file mode 100644
index 0000000..aa26a02
--- /dev/null
+++ b/ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.mm
@@ -0,0 +1,73 @@
+// 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.
+
+#import "ios/chrome/browser/metrics/ios_profile_session_durations_service_factory.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+#include <memory>
+
+#include "components/browser_sync/profile_sync_service.h"
+#include "components/keyed_service/ios/browser_state_dependency_manager.h"
+#include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/metrics/ios_profile_session_durations_service.h"
+#include "ios/chrome/browser/signin/identity_manager_factory.h"
+#include "ios/chrome/browser/sync/profile_sync_service_factory.h"
+
+// static
+IOSProfileSessionDurationsService*
+IOSProfileSessionDurationsServiceFactory::GetForBrowserState(
+    ios::ChromeBrowserState* browser_state) {
+  return static_cast<IOSProfileSessionDurationsService*>(
+      GetInstance()->GetServiceForBrowserState(browser_state, true));
+}
+
+// static
+IOSProfileSessionDurationsServiceFactory*
+IOSProfileSessionDurationsServiceFactory::GetInstance() {
+  return base::Singleton<IOSProfileSessionDurationsServiceFactory>::get();
+}
+
+IOSProfileSessionDurationsServiceFactory::
+    IOSProfileSessionDurationsServiceFactory()
+    : BrowserStateKeyedServiceFactory(
+          "IOSProfileSessionDurationsService",
+          BrowserStateDependencyManager::GetInstance()) {
+  DependsOn(ProfileSyncServiceFactory::GetInstance());
+  DependsOn(IdentityManagerFactory::GetInstance());
+}
+
+IOSProfileSessionDurationsServiceFactory::
+    ~IOSProfileSessionDurationsServiceFactory() = default;
+
+std::unique_ptr<KeyedService>
+IOSProfileSessionDurationsServiceFactory::BuildServiceInstanceFor(
+    web::BrowserState* context) const {
+  ios::ChromeBrowserState* browser_state =
+      ios::ChromeBrowserState::FromBrowserState(context);
+  syncer::SyncService* sync_service =
+      ProfileSyncServiceFactory::GetForBrowserState(browser_state);
+  identity::IdentityManager* identity_manager =
+      IdentityManagerFactory::GetForBrowserState(browser_state);
+  return std::make_unique<IOSProfileSessionDurationsService>(sync_service,
+                                                             identity_manager);
+}
+
+web::BrowserState*
+IOSProfileSessionDurationsServiceFactory::GetBrowserStateToUse(
+    web::BrowserState* context) const {
+  // Session time in incognito is counted towards the session time in the
+  // regular profile. That means that for a user that is signed in and syncing
+  // in their regular profile and that is browsing in incognito profile,
+  // Chromium will record the session time as being signed in and syncing.
+  return GetBrowserStateRedirectedInIncognito(context);
+}
+
+bool IOSProfileSessionDurationsServiceFactory::ServiceIsNULLWhileTesting()
+    const {
+  return true;
+}
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index 49dee40..de05eb0 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -937,7 +937,6 @@
     return;
 
   _visible = visible;
-  [self updateBroadcastState];
 }
 
 - (void)setViewVisible:(BOOL)viewVisible {
@@ -946,6 +945,7 @@
   _viewVisible = viewVisible;
   self.visible = viewVisible;
   [self updateDialogPresenterActiveState];
+  [self updateBroadcastState];
 }
 
 - (void)setBroadcasting:(BOOL)broadcasting {
@@ -2467,7 +2467,7 @@
 }
 
 - (void)updateBroadcastState {
-  self.broadcasting = self.active && self.visible;
+  self.broadcasting = self.active && self.viewVisible;
 }
 
 - (void)updateDialogPresenterActiveState {
diff --git a/ios/chrome/browser/web/chrome_web_client.h b/ios/chrome/browser/web/chrome_web_client.h
index 01c716f..e83add6 100644
--- a/ios/chrome/browser/web/chrome_web_client.h
+++ b/ios/chrome/browser/web/chrome_web_client.h
@@ -32,7 +32,7 @@
       int resource_id,
       ui::ScaleFactor scale_factor) const override;
   base::RefCountedMemory* GetDataResourceBytes(int resource_id) const override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   void GetAdditionalWebUISchemes(
       std::vector<std::string>* additional_schemes) override;
diff --git a/ios/chrome/browser/web/chrome_web_client.mm b/ios/chrome/browser/web/chrome_web_client.mm
index 9343a37..2007648 100644
--- a/ios/chrome/browser/web/chrome_web_client.mm
+++ b/ios/chrome/browser/web/chrome_web_client.mm
@@ -148,8 +148,8 @@
       resource_id);
 }
 
-std::unique_ptr<base::Value> ChromeWebClient::GetServiceManifestOverlay(
-    base::StringPiece name) {
+base::Optional<service_manager::Manifest>
+ChromeWebClient::GetServiceManifestOverlay(base::StringPiece name) {
   int identifier = -1;
   if (name == web::mojom::kBrowserServiceName)
     identifier = IDR_CHROME_BROWSER_MANIFEST_OVERLAY;
@@ -157,12 +157,13 @@
     identifier = IDR_CHROME_PACKAGED_SERVICES_MANIFEST_OVERLAY;
 
   if (identifier == -1)
-    return nullptr;
+    return base::nullopt;
 
   base::StringPiece manifest_contents =
       ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
           identifier, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 void ChromeWebClient::GetAdditionalWebUISchemes(
diff --git a/ios/web/ios_web_resources.grd b/ios/web/ios_web_resources.grd
index 8009b7e..2adab0b 100644
--- a/ios/web/ios_web_resources.grd
+++ b/ios/web/ios_web_resources.grd
@@ -10,7 +10,6 @@
   <release seq="1">
     <includes>
       <include name="IDR_IOS_MOJO_BINDINGS_JS" file="${root_gen_dir}/mojo/public/js/mojo_bindings.js" flattenhtml="true" type="BINDATA" use_base_dir="false" compress="gzip" />
-      <include name="IDR_MOJO_CATALOG_MANIFEST" file="../../services/catalog/manifest.json" type="BINDATA" />
       <include name="IDR_MOJO_WEB_BROWSER_MANIFEST" file="${root_gen_dir}/ios/web/public/app/browser_manifest.json" use_base_dir="false" type="BINDATA" />
       <include name="IDR_MOJO_WEB_PACKAGED_SERVICES_MANIFEST" file="${root_gen_dir}/ios/web/public/app/packaged_services_manifest.json" use_base_dir="false" type="BINDATA" />
     </includes>
diff --git a/ios/web/public/web_client.h b/ios/web/public/web_client.h
index 719e402..f1397ba 100644
--- a/ios/web/public/web_client.h
+++ b/ios/web/public/web_client.h
@@ -11,12 +11,14 @@
 #include <vector>
 
 #include "base/callback.h"
+#include "base/optional.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_piece.h"
 #include "base/task/task_scheduler/task_scheduler.h"
 #include "base/values.h"
 #include "ios/web/public/user_agent.h"
 #include "mojo/public/cpp/system/message_pipe.h"
+#include "services/service_manager/public/cpp/manifest.h"
 #include "services/service_manager/public/mojom/service.mojom.h"
 #include "ui/base/layout.h"
 #include "url/url_util.h"
@@ -145,11 +147,14 @@
       const std::string& service_name,
       service_manager::mojom::ServiceRequest request);
 
-  // Allows the embedder to provide a dictionary loaded from a JSON file
-  // resembling a service manifest whose capabilities section will be merged
-  // with web's own for |name|. Additional entries will be appended to their
-  // respective sections.
-  virtual std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  // Allows the embedder to augment service manifests for existing services.
+  // Specifically, the sets of exposed and required capabilities, interface
+  // filter capabilities (deprecated), and packaged services will be taken from
+  // the returned Manifest and amended to those of the existing Manifest for the
+  // service named |name|.
+  //
+  // If no overlay is provided for the service, this returns |base::nullopt|.
+  virtual base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name);
 
   // Allows the embedder to bind an interface request for a WebState-scoped
diff --git a/ios/web/service_manager_context.mm b/ios/web/service_manager_context.mm
index 4718238..3f10f2b9 100644
--- a/ios/web/service_manager_context.mm
+++ b/ios/web/service_manager_context.mm
@@ -4,6 +4,7 @@
 
 #include "ios/web/service_manager_context.h"
 
+#include <algorithm>
 #include <memory>
 #include <string>
 #include <utility>
@@ -25,13 +26,13 @@
 #include "ios/web/public/web_task_traits.h"
 #include "ios/web/public/web_thread.h"
 #include "ios/web/service_manager_connection_impl.h"
-#include "services/catalog/manifest_provider.h"
 #include "services/catalog/public/cpp/manifest_parsing_util.h"
 #include "services/catalog/public/mojom/constants.mojom.h"
 #include "services/service_manager/connect_params.h"
 #include "services/service_manager/embedder/manifest_utils.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/constants.h"
+#include "services/service_manager/public/cpp/manifest.h"
 #include "services/service_manager/public/cpp/service.h"
 #include "services/service_manager/public/mojom/service.mojom.h"
 #include "services/service_manager/service_manager.h"
@@ -49,45 +50,25 @@
   int resource_id;
 };
 
-// A ManifestProvider which resolves application names to builtin manifest
-// resources for the catalog service to consume.
-class BuiltinManifestProvider : public catalog::ManifestProvider {
- public:
-  BuiltinManifestProvider() {}
-  ~BuiltinManifestProvider() override {}
+service_manager::Manifest LoadServiceManifest(base::StringPiece service_name,
+                                              int resource_id) {
+  std::string contents =
+      GetWebClient()
+          ->GetDataResource(resource_id, ui::ScaleFactor::SCALE_FACTOR_NONE)
+          .as_string();
+  DCHECK(!contents.empty());
 
-  void AddServiceManifest(base::StringPiece name, int resource_id) {
-    std::string contents =
-        GetWebClient()
-            ->GetDataResource(resource_id, ui::ScaleFactor::SCALE_FACTOR_NONE)
-            .as_string();
-    DCHECK(!contents.empty());
+  service_manager::Manifest manifest =
+      service_manager::Manifest::FromValueDeprecated(
+          base::JSONReader::Read(contents));
 
-    std::unique_ptr<base::Value> manifest_value =
-        base::JSONReader::Read(contents);
-    DCHECK(manifest_value);
+  base::Optional<service_manager::Manifest> overlay =
+      GetWebClient()->GetServiceManifestOverlay(service_name);
+  if (overlay)
+    manifest.Amend(*overlay);
 
-    std::unique_ptr<base::Value> overlay_value =
-        GetWebClient()->GetServiceManifestOverlay(name);
-
-    service_manager::MergeManifestWithOverlay(manifest_value.get(),
-                                              overlay_value.get());
-    auto insertion_result = manifests_.insert(
-        std::make_pair(name.as_string(), std::move(manifest_value)));
-    DCHECK(insertion_result.second) << "Duplicate manifest entry: " << name;
-  }
-
- private:
-  // catalog::ManifestProvider:
-  std::unique_ptr<base::Value> GetManifest(const std::string& name) override {
-    auto it = manifests_.find(name);
-    return it != manifests_.end() ? it->second->CreateDeepCopy() : nullptr;
-  }
-
-  std::map<std::string, std::unique_ptr<base::Value>> manifests_;
-
-  DISALLOW_COPY_AND_ASSIGN(BuiltinManifestProvider);
-};
+  return manifest;
+}
 
 }  // namespace
 
@@ -99,12 +80,12 @@
 
   void Start(
       service_manager::mojom::ServicePtrInfo packaged_services_service_info,
-      std::unique_ptr<BuiltinManifestProvider> manifest_provider) {
+      std::vector<service_manager::Manifest> manifests) {
     base::PostTaskWithTraits(
         FROM_HERE, {WebThread::IO},
         base::BindOnce(&InProcessServiceManagerContext::StartOnIOThread, this,
-                       base::Passed(&manifest_provider),
-                       base::Passed(&packaged_services_service_info)));
+                       std::move(manifests),
+                       std::move(packaged_services_service_info)));
   }
 
   void ShutDown() {
@@ -123,11 +104,10 @@
   // with it, connecting the other end of the packaged services serviceto
   // |packaged_services_service_info|.
   void StartOnIOThread(
-      std::unique_ptr<BuiltinManifestProvider> manifest_provider,
+      std::vector<service_manager::Manifest> manifests,
       service_manager::mojom::ServicePtrInfo packaged_services_service_info) {
-    manifest_provider_ = std::move(manifest_provider);
-    service_manager_ = std::make_unique<service_manager::ServiceManager>(
-        nullptr, nullptr, manifest_provider_.get());
+    service_manager_ =
+        std::make_unique<service_manager::ServiceManager>(nullptr, manifests);
 
     service_manager::mojom::ServicePtr packaged_services_service;
     packaged_services_service.Bind(std::move(packaged_services_service_info));
@@ -140,35 +120,27 @@
 
   void ShutDownOnIOThread() {
     service_manager_.reset();
-    manifest_provider_.reset();
   }
 
-  std::unique_ptr<BuiltinManifestProvider> manifest_provider_;
   std::unique_ptr<service_manager::ServiceManager> service_manager_;
 
   DISALLOW_COPY_AND_ASSIGN(InProcessServiceManagerContext);
 };
 
 ServiceManagerContext::ServiceManagerContext() {
-  service_manager::mojom::ServiceRequest packaged_services_request;
-  std::unique_ptr<BuiltinManifestProvider> manifest_provider =
-      std::make_unique<BuiltinManifestProvider>();
+  std::vector<service_manager::Manifest> manifests = {
+      LoadServiceManifest(mojom::kBrowserServiceName,
+                          IDR_MOJO_WEB_BROWSER_MANIFEST),
+      LoadServiceManifest(mojom::kPackagedServicesServiceName,
+                          IDR_MOJO_WEB_PACKAGED_SERVICES_MANIFEST),
+  };
 
-  const std::array<ManifestInfo, 3> manifests = {{
-      {mojom::kBrowserServiceName, IDR_MOJO_WEB_BROWSER_MANIFEST},
-      {mojom::kPackagedServicesServiceName,
-       IDR_MOJO_WEB_PACKAGED_SERVICES_MANIFEST},
-      {catalog::mojom::kServiceName, IDR_MOJO_CATALOG_MANIFEST},
-  }};
-  for (const ManifestInfo& manifest : manifests) {
-    manifest_provider->AddServiceManifest(manifest.name, manifest.resource_id);
-  }
   in_process_context_ = base::MakeRefCounted<InProcessServiceManagerContext>();
-
   service_manager::mojom::ServicePtr packaged_services_service;
-  packaged_services_request = mojo::MakeRequest(&packaged_services_service);
+  service_manager::mojom::ServiceRequest packaged_services_request =
+      mojo::MakeRequest(&packaged_services_service);
   in_process_context_->Start(packaged_services_service.PassInterface(),
-                             std::move(manifest_provider));
+                             std::move(manifests));
 
   packaged_services_connection_ = ServiceManagerConnection::Create(
       std::move(packaged_services_request),
diff --git a/ios/web/shell/shell_web_client.h b/ios/web/shell/shell_web_client.h
index e6a2a39..686081b 100644
--- a/ios/web/shell/shell_web_client.h
+++ b/ios/web/shell/shell_web_client.h
@@ -32,7 +32,7 @@
   std::unique_ptr<service_manager::Service> HandleServiceRequest(
       const std::string& service_name,
       service_manager::mojom::ServiceRequest request) override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
+  base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   void BindInterfaceRequestFromMainFrame(
       WebState* web_state,
diff --git a/ios/web/shell/shell_web_client.mm b/ios/web/shell/shell_web_client.mm
index f33cdc1..294da48 100644
--- a/ios/web/shell/shell_web_client.mm
+++ b/ios/web/shell/shell_web_client.mm
@@ -97,8 +97,8 @@
   return nullptr;
 }
 
-std::unique_ptr<base::Value> ShellWebClient::GetServiceManifestOverlay(
-    base::StringPiece name) {
+base::Optional<service_manager::Manifest>
+ShellWebClient::GetServiceManifestOverlay(base::StringPiece name) {
   int identifier = -1;
   if (name == mojom::kBrowserServiceName)
     identifier = IDR_WEB_SHELL_BROWSER_MANIFEST_OVERLAY;
@@ -106,12 +106,13 @@
     identifier = IDR_WEB_SHELL_PACKAGED_SERVICES_MANIFEST_OVERLAY;
 
   if (identifier == -1)
-    return nullptr;
+    return base::nullopt;
 
   base::StringPiece manifest_contents =
       ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
           identifier, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
+  return service_manager::Manifest::FromValueDeprecated(
+      base::JSONReader::Read(manifest_contents));
 }
 
 void ShellWebClient::BindInterfaceRequestFromMainFrame(
diff --git a/ios/web/web_client.mm b/ios/web/web_client.mm
index 4b072baa..3b51bc7 100644
--- a/ios/web/web_client.mm
+++ b/ios/web/web_client.mm
@@ -87,9 +87,9 @@
   return nullptr;
 }
 
-std::unique_ptr<base::Value> WebClient::GetServiceManifestOverlay(
+base::Optional<service_manager::Manifest> WebClient::GetServiceManifestOverlay(
     base::StringPiece name) {
-  return nullptr;
+  return base::nullopt;
 }
 
 void WebClient::AllowCertificateError(
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
index d74f0c767..f266697 100644
--- a/media/blink/webmediaplayer_impl_unittest.cc
+++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -49,6 +49,7 @@
 #include "third_party/blink/public/platform/web_fullscreen_video_status.h"
 #include "third_party/blink/public/platform/web_media_player.h"
 #include "third_party/blink/public/platform/web_media_player_client.h"
+#include "third_party/blink/public/platform/web_media_player_encrypted_media_client.h"
 #include "third_party/blink/public/platform/web_media_player_source.h"
 #include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/platform/web_size.h"
@@ -65,8 +66,10 @@
 #include "media/blink/renderer_media_player_interface.h"
 #endif
 
+using ::testing::_;
 using ::testing::AnyNumber;
 using ::testing::Eq;
+using ::testing::Gt;
 using ::testing::InSequence;
 using ::testing::Invoke;
 using ::testing::NiceMock;
@@ -74,12 +77,12 @@
 using ::testing::Return;
 using ::testing::ReturnRef;
 using ::testing::StrictMock;
-using ::testing::_;
 
 namespace media {
 
 constexpr char kAudioOnlyTestFile[] = "sfx-opus-441.webm";
 constexpr char kVideoOnlyTestFile[] = "bear-320x240-video-only.webm";
+constexpr char kEncryptedVideoOnlyTestFile[] = "bear-320x240-av_enc-v.webm";
 
 MATCHER(WmpiDestroyed, "") {
   return CONTAINS_STRING(arg, "WEBMEDIAPLAYER_DESTROYED {}");
@@ -183,6 +186,22 @@
   DISALLOW_COPY_AND_ASSIGN(MockWebMediaPlayerClient);
 };
 
+class MockWebMediaPlayerEncryptedMediaClient
+    : public blink::WebMediaPlayerEncryptedMediaClient {
+ public:
+  MockWebMediaPlayerEncryptedMediaClient() = default;
+
+  MOCK_METHOD3(Encrypted,
+               void(blink::WebEncryptedMediaInitDataType,
+                    const unsigned char*,
+                    unsigned));
+  MOCK_METHOD0(DidBlockPlaybackWaitingForKey, void());
+  MOCK_METHOD0(DidResumePlaybackBlockedForKey, void());
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockWebMediaPlayerEncryptedMediaClient);
+};
+
 class MockWebMediaPlayerDelegate : public WebMediaPlayerDelegate {
  public:
   MockWebMediaPlayerDelegate() = default;
@@ -398,7 +417,7 @@
     compositor_ = compositor.get();
 
     wmpi_ = std::make_unique<WebMediaPlayerImpl>(
-        web_local_frame_, &client_, nullptr, &delegate_,
+        web_local_frame_, &client_, &encrypted_client_, &delegate_,
         std::move(factory_selector), url_index_.get(), std::move(compositor),
         std::move(params));
 
@@ -489,6 +508,8 @@
 
   void OnMetadata(PipelineMetadata metadata) { wmpi_->OnMetadata(metadata); }
 
+  void OnWaiting(WaitingReason reason) { wmpi_->OnWaiting(reason); }
+
   void OnVideoNaturalSizeChange(const gfx::Size& size) {
     wmpi_->OnVideoNaturalSizeChange(size);
   }
@@ -597,7 +618,7 @@
     return wmpi_->pipeline_metadata_.natural_size;
   }
 
-  void LoadAndWaitForMetadata(std::string data_file) {
+  void Load(std::string data_file) {
     // URL doesn't matter, it's value is unknown to the underlying demuxer.
     const GURL kTestURL("file://example.com/sample.webm");
 
@@ -638,6 +659,10 @@
     client->DidReceiveData(reinterpret_cast<const char*>(data->data()),
                            data->data_size());
     client->DidFinishLoading();
+  }
+
+  void LoadAndWaitForMetadata(std::string data_file) {
+    Load(data_file);
 
     // This runs until we reach the have current data state. Attempting to wait
     // for states < kReadyStateHaveCurrentData is unreliable due to asynchronous
@@ -693,6 +718,7 @@
 
   // The client interface used by |wmpi_|.
   NiceMock<MockWebMediaPlayerClient> client_;
+  MockWebMediaPlayerEncryptedMediaClient encrypted_client_;
 
 #if defined(OS_ANDROID)
   NiceMock<MockRendererMediaPlayerManager> mock_media_player_manager_;
@@ -1334,6 +1360,38 @@
   OnMetadata(metadata);
 }
 
+// TODO(xhwang): Use MockCdm in encrypted media related tests.
+
+TEST_F(WebMediaPlayerImplTest, Encrypted) {
+  InitializeWebMediaPlayerImpl();
+
+  base::RunLoop loop;
+  EXPECT_CALL(
+      encrypted_client_,
+      Encrypted(blink::WebEncryptedMediaInitDataType::kWebm, NotNull(), Gt(0u)))
+      .WillOnce(RunClosure(loop.QuitClosure()));
+
+  // Cannot wait for metadata since we don't have a CDM and pipeline
+  // initialization will stall waiting for a CDM to be set. But Encrypted()
+  // should still be called.
+  Load(kEncryptedVideoOnlyTestFile);
+
+  loop.Run();
+}
+
+TEST_F(WebMediaPlayerImplTest, Waiting_NoDecryptionKey) {
+  InitializeWebMediaPlayerImpl();
+
+  // Use non-encrypted file here since we don't have a CDM. Otherwise pipeline
+  // initialization will stall waiting for a CDM to be set.
+  LoadAndWaitForMetadata(kVideoOnlyTestFile);
+
+  EXPECT_CALL(encrypted_client_, DidBlockPlaybackWaitingForKey());
+  EXPECT_CALL(encrypted_client_, DidResumePlaybackBlockedForKey());
+
+  OnWaiting(WaitingReason::kNoDecryptionKey);
+}
+
 TEST_F(WebMediaPlayerImplTest, NaturalSizeChange) {
   InitializeWebMediaPlayerImpl();
   PipelineMetadata metadata;
diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc
index 47dcb7e..71789da 100644
--- a/media/filters/gpu_video_decoder.cc
+++ b/media/filters/gpu_video_decoder.cc
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cinttypes>
 #include <utility>
 
 #include "base/bind.h"
@@ -17,9 +18,13 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/single_thread_task_runner.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "base/trace_event/memory_dump_manager.h"
+#include "base/trace_event/process_memory_dump.h"
 #include "build/build_config.h"
+#include "gpu/command_buffer/client/context_support.h"
 #include "gpu/command_buffer/common/mailbox_holder.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/cdm_context.h"
@@ -31,6 +36,7 @@
 #include "media/base/video_util.h"
 #include "media/media_buildflags.h"
 #include "media/video/gpu_video_accelerator_factories.h"
+#include "media/video/trace_util.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 
 #if defined(OS_ANDROID) && BUILDFLAG(USE_PROPRIETARY_CODECS)
@@ -91,6 +97,8 @@
       bitstream_buffer_id_of_last_gc_(0),
       weak_factory_(this) {
   DCHECK(factories_);
+  base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
+      this, "media::GpuVideoDecoder", base::ThreadTaskRunnerHandle::Get());
 }
 
 void GpuVideoDecoder::Reset(const base::Closure& closure) {
@@ -814,6 +822,9 @@
   DVLOG(3) << __func__;
   DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent();
 
+  base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
+      this);
+
   if (vda_)
     DestroyVDA();
   DCHECK(assigned_picture_buffers_.empty());
@@ -889,6 +900,44 @@
   DestroyVDA();
 }
 
+bool GpuVideoDecoder::OnMemoryDump(
+    const base::trace_event::MemoryDumpArgs& args,
+    base::trace_event::ProcessMemoryDump* pmd) {
+  using base::trace_event::MemoryAllocatorDump;
+  DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent();
+  if (assigned_picture_buffers_.empty())
+    return false;
+
+  if (!factories_)
+    return false;
+  auto* context_support = factories_->GetMediaContextProviderContextSupport();
+  if (!context_support)
+    return false;
+  const uint64_t context_group_tracing_id =
+      context_support->ShareGroupTracingGUID();
+
+  for (const auto& picture_buffer : assigned_picture_buffers_) {
+    PictureBuffer::TextureIds texture_ids =
+        picture_buffer.second.client_texture_ids();
+
+    for (uint32_t id : texture_ids) {
+      const auto dump_name = base::StringPrintf(
+          "gpu/video_decoding/context_group_0x%" PRIx64 "/texture_0x%" PRIX32,
+          context_group_tracing_id, id);
+      MemoryAllocatorDump* dump = pmd->CreateAllocatorDump(dump_name);
+      dump->AddScalar(
+          MemoryAllocatorDump::kNameSize, MemoryAllocatorDump::kUnitsBytes,
+          static_cast<uint64_t>(picture_buffer.second.size().GetArea() * 4));
+
+      const auto client_guid =
+          GetGLTextureClientGUIDForTracing(context_group_tracing_id, id);
+      pmd->CreateSharedGlobalAllocatorDump(client_guid);
+      pmd->AddOwnershipEdge(dump->guid(), client_guid, 2 /* importance */);
+    }
+  }
+  return true;
+}
+
 bool GpuVideoDecoder::IsProfileSupported(
     const VideoDecodeAccelerator::Capabilities& capabilities,
     VideoCodecProfile profile,
diff --git a/media/filters/gpu_video_decoder.h b/media/filters/gpu_video_decoder.h
index da98102..1f2ae7f 100644
--- a/media/filters/gpu_video_decoder.h
+++ b/media/filters/gpu_video_decoder.h
@@ -17,6 +17,7 @@
 #include "base/containers/flat_set.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "base/trace_event/memory_dump_provider.h"
 #include "gpu/command_buffer/common/sync_token.h"
 #include "media/base/overlay_info.h"
 #include "media/base/pipeline_status.h"
@@ -45,7 +46,8 @@
 // GetMessageLoop().
 class MEDIA_EXPORT GpuVideoDecoder
     : public VideoDecoder,
-      public VideoDecodeAccelerator::Client {
+      public VideoDecodeAccelerator::Client,
+      public base::trace_event::MemoryDumpProvider {
  public:
   GpuVideoDecoder(GpuVideoAcceleratorFactories* factories,
                   const RequestOverlayInfoCB& request_overlay_info_cb,
@@ -83,6 +85,10 @@
   void NotifyResetDone() override;
   void NotifyError(media::VideoDecodeAccelerator::Error error) override;
 
+  // base::trace_event::MemoryDumpProvider implementation.
+  bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
+                    base::trace_event::ProcessMemoryDump* pmd) override;
+
   static const char kDecoderName[];
 
  private:
diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
index 6384fc3b..a2d24d47 100644
--- a/media/gpu/BUILD.gn
+++ b/media/gpu/BUILD.gn
@@ -178,6 +178,8 @@
     ]
     libs += [ "android" ]
     deps += [
+      "//gpu/ipc/common:android_image_reader_utils",
+
       # TODO(crbug.com/789435): This can be removed once CdmManager is removed.
       "//gpu/ipc/common:ipc_common_sources",
       "//media/mojo:buildflags",
diff --git a/media/video/BUILD.gn b/media/video/BUILD.gn
index 23e5ace..77e6410 100644
--- a/media/video/BUILD.gn
+++ b/media/video/BUILD.gn
@@ -35,6 +35,8 @@
     "jpeg_encode_accelerator.h",
     "picture.cc",
     "picture.h",
+    "trace_util.cc",
+    "trace_util.h",
     "video_decode_accelerator.cc",
     "video_decode_accelerator.h",
     "video_encode_accelerator.cc",
diff --git a/media/video/gpu_video_accelerator_factories.h b/media/video/gpu_video_accelerator_factories.h
index 25e0dbba..63b8f37 100644
--- a/media/video/gpu_video_accelerator_factories.h
+++ b/media/video/gpu_video_accelerator_factories.h
@@ -35,6 +35,7 @@
 }
 
 namespace gpu {
+class ContextSupport;
 struct SyncToken;
 }
 
@@ -154,6 +155,7 @@
 
   virtual scoped_refptr<ws::ContextProviderCommandBuffer>
   GetMediaContextProvider() = 0;
+  virtual gpu::ContextSupport* GetMediaContextProviderContextSupport() = 0;
 
   // Sets the current pipeline rendering color space.
   virtual void SetRenderingColorSpace(const gfx::ColorSpace& color_space) = 0;
diff --git a/media/video/mock_gpu_video_accelerator_factories.h b/media/video/mock_gpu_video_accelerator_factories.h
index b16cd0c..121c95d7 100644
--- a/media/video/mock_gpu_video_accelerator_factories.h
+++ b/media/video/mock_gpu_video_accelerator_factories.h
@@ -67,6 +67,7 @@
                VideoEncodeAccelerator::SupportedProfiles());
   MOCK_METHOD0(GetMediaContextProvider,
                scoped_refptr<ws::ContextProviderCommandBuffer>());
+  MOCK_METHOD0(GetMediaContextProviderContextSupport, gpu::ContextSupport*());
   MOCK_METHOD1(SetRenderingColorSpace, void(const gfx::ColorSpace&));
 
   std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBuffer(
diff --git a/media/video/trace_util.cc b/media/video/trace_util.cc
new file mode 100644
index 0000000..7557ff6
--- /dev/null
+++ b/media/video/trace_util.cc
@@ -0,0 +1,19 @@
+// 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 "media/video/trace_util.h"
+
+#include "base/trace_event/memory_allocator_dump_guid.h"
+#include "ui/gl/trace_util.h"
+
+namespace media {
+
+base::trace_event::MemoryAllocatorDumpGuid GetGLTextureClientGUIDForTracing(
+    uint64_t context_group_tracing_id,
+    uint32_t texture_id) {
+  return gl::GetGLTextureClientGUIDForTracing(context_group_tracing_id,
+                                              texture_id);
+}
+
+}  // namespace media
diff --git a/media/video/trace_util.h b/media/video/trace_util.h
new file mode 100644
index 0000000..8389250
--- /dev/null
+++ b/media/video/trace_util.h
@@ -0,0 +1,24 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_VIDEO_TRACE_UTIL_H_
+#define MEDIA_VIDEO_TRACE_UTIL_H_
+
+#include <stdint.h>
+
+namespace base {
+namespace trace_event {
+class MemoryAllocatorDumpGuid;
+}
+}  // namespace base
+
+namespace media {
+
+base::trace_event::MemoryAllocatorDumpGuid GetGLTextureClientGUIDForTracing(
+    uint64_t context_group_tracing_id,
+    uint32_t texture_id);
+
+}  // namespace media
+
+#endif  // MEDIA_VIDEO_TRACE_UTIL_H_
diff --git a/ppapi/proxy/serialized_var.h b/ppapi/proxy/serialized_var.h
index b7c3714..ebdce45 100644
--- a/ppapi/proxy/serialized_var.h
+++ b/ppapi/proxy/serialized_var.h
@@ -62,7 +62,7 @@
 // some cases, so our system must be designed so that this stuff will work.
 // This is challenging when the SerializedVar must do some cleanup after the
 // message is sent. To work around this, we create an inner class using a
-// linked_ptr so all copies of a SerializedVar can share and we can guarantee
+// scoped_refptr so all copies of a SerializedVar can share and we can guarantee
 // that the actual data will get cleaned up on shutdown.
 //
 // Constness
diff --git a/printing/print_job_constants.cc b/printing/print_job_constants.cc
index f224515f..6eb7fc7 100644
--- a/printing/print_job_constants.cc
+++ b/printing/print_job_constants.cc
@@ -161,6 +161,9 @@
 // Additional printer options.
 const char kSettingPrinterOptions[] = "printerOptions";
 
+// Print to Google Drive option: true if selected, false if not.
+const char kSettingPrintToGoogleDrive[] = "printToGoogleDrive";
+
 // Print to PDF option: true if selected, false if not.
 const char kSettingPrintToPDF[] = "printToPDF";
 
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index eb91c24f..86438c3d 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -57,6 +57,7 @@
 PRINTING_EXPORT extern const char kSettingPagesPerSheet[];
 PRINTING_EXPORT extern const char kSettingPolicies[];
 PRINTING_EXPORT extern const char kSettingPreviewModifiable[];
+PRINTING_EXPORT extern const char kSettingPrintToGoogleDrive[];
 PRINTING_EXPORT extern const char kSettingPrintToPDF[];
 PRINTING_EXPORT extern const char kSettingPrintWithPrivet[];
 PRINTING_EXPORT extern const char kSettingPrintWithExtension[];
diff --git a/remoting/resources/remoting_strings_ar.xtb b/remoting/resources/remoting_strings_ar.xtb
index e7f5049..c4b7c52 100644
--- a/remoting/resources/remoting_strings_ar.xtb
+++ b/remoting/resources/remoting_strings_ar.xtb
@@ -244,7 +244,7 @@
 <translation id="6198252989419008588">تغيير رقم التعريف الشخصي</translation>
 <translation id="6204583485351780592"><ph name="HOSTNAME" /> (قديم)</translation>
 <translation id="6221358653751391898">‏لم يتم تسجيل دخولك إلى Chrome، يُرجى تسجيل الدخول وإعادة المحاولة.</translation>
-<translation id="6227369581881558336">‏يتوفر الآن "سطح المكتب البعيد من Chrome" على الويب بميزات جديدة، بما في ذلك نقل ملف. يمكنك التحقُّق من <ph name="LINK_BEGIN" />تطبيق الويب<ph name="LINK_END" />.</translation>
+<translation id="6227369581881558336">‏يتوفر الآن "سطح المكتب البعيد من Chrome" على الويب بميزات جديدة، بما في ذلك نقل ملف. يمكنك الاطّلاع على <ph name="LINK_BEGIN" />تطبيق الويب<ph name="LINK_END" />.</translation>
 <translation id="6284412385303060032">‏تم إيقاف المضيف الذي يعمل على شاشة تسجيل لوحة التحكم لدعم الوضع Curtain من خلال التبديل إلى مضيف يعمل في جلسة خاصة بالمستخدم.</translation>
 <translation id="629730747756840877">الحساب</translation>
 <translation id="6304318647555713317">العميل</translation>
diff --git a/remoting/resources/remoting_strings_ro.xtb b/remoting/resources/remoting_strings_ro.xtb
index f77875e1..de8778d 100644
--- a/remoting/resources/remoting_strings_ro.xtb
+++ b/remoting/resources/remoting_strings_ro.xtb
@@ -24,7 +24,7 @@
 <translation id="1520828917794284345">Redimensionați desktopul pentru a încăpea</translation>
 <translation id="154040539590487450">Pornirea serviciului de acces la distanță nu a reușit.</translation>
 <translation id="1546934824884762070">A apărut o eroare neașteptată. Raportați această problemă dezvoltatorilor.</translation>
-<translation id="1624185583382384493">Aplicația Desktop la distanță Chrome este acum pe web. Încearcă <ph name="LINK_BEGIN" />aplicația web<ph name="LINK_END" /> - este rapidă, gratuită și are multe funcții, inclusiv asistență îmbunătățită pentru monitoare multiple.</translation>
+<translation id="1624185583382384493">Aplicația Desktop la distanță Chrome este acum pe web. Încearcă <ph name="LINK_BEGIN" />aplicația web<ph name="LINK_END" />. Este rapidă, gratuită și are multe funcții, inclusiv compatibilitate îmbunătățită pentru mai monitoare multiple.</translation>
 <translation id="1643640058022401035">Părăsind această pagină, veți încheia sesiunea Chromoting.</translation>
 <translation id="1654128982815600832">Se activează conexiunile la distanță pentru acest computer…</translation>
 <translation id="170207782578677537">Înregistrarea acestui computer nu a reușit.</translation>
diff --git a/remoting/resources/remoting_strings_te.xtb b/remoting/resources/remoting_strings_te.xtb
index 7b3cd123..e36547de 100644
--- a/remoting/resources/remoting_strings_te.xtb
+++ b/remoting/resources/remoting_strings_te.xtb
@@ -29,7 +29,7 @@
 <translation id="1654128982815600832">ఈ కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభిస్తోంది…</translation>
 <translation id="170207782578677537">ఈ కంప్యూటర్‌ను నమోదు చేయడంలో విఫలమైంది.</translation>
 <translation id="1727412735341161734">Chrome రిమోట్ డెస్క్‌టాప్</translation>
-<translation id="174018511426417793">మీరు నమోదు అయిన కంప్యూటర్‌లను కలిగి లేరు. కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభించడానికి, అక్కడ Chrome రిమోట్ డెస్క్‌టాప్‌ను ఇన్‌స్టాల్ చేసి “<ph name="BUTTON_NAME" />”ను క్లిక్ చేయండి.</translation>
+<translation id="174018511426417793">మీరు నమోదు అయిన కంప్యూటర్‌లను కలిగి ఉండలేదు. కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభించడానికి, అక్కడ Chrome రిమోట్ డెస్క్‌టాప్‌ను ఇన్‌స్టాల్ చేసి “<ph name="BUTTON_NAME" />”ను క్లిక్ చేయండి.</translation>
 <translation id="1742469581923031760">కనెక్ట్ చేస్తోంది…</translation>
 <translation id="1770394049404108959">నేను అప్లికేషన్‌ను తెరవలేకపోతున్నాను.</translation>
 <translation id="177096447311351977">ఈ క్లయింట్ కోసం ఛానెల్ IP: <ph name="CLIENT_GAIA_IDENTIFIER" /> ip='<ph name="CLIENT_IP_ADDRESS_AND_PORT" />' host_ip='<ph name="HOST_IP_ADDRESS_AND_PORT" />' channel='<ph name="CHANNEL_TYPE" />' connection='<ph name="CONNECTION_TYPE" />'.</translation>
@@ -41,7 +41,7 @@
 <translation id="2009755455353575666">కనెక్షన్ విఫలమైంది</translation>
 <translation id="2013884659108657024">Chrome రిమోట్ డెస్క్‌టాప్ హోస్ట్ ఇన్‌స్టాలర్‌ను Chrome డౌన్‌లోడ్ చేస్తోంది.  డౌన్‌లోడ్ పూర్తయిన తర్వాత, దయచేసి కొనసాగడానికి ముందు ఇన్‌స్టాలర్‌ను అమలు చేయండి.</translation>
 <translation id="2013996867038862849">జత చేయబడిన క్లయింట్‌లు అందరు తొలగించబడ్డారు.</translation>
-<translation id="2038229918502634450">విధాన మార్పుని అనుమతించడానికి హోస్ట్ పునఃప్రారంభించబడుతోంది.</translation>
+<translation id="2038229918502634450">విధాన మార్పును అనుమతించడానికి హోస్ట్ పునఃప్రారంభించబడుతోంది.</translation>
 <translation id="2046651113449445291">కింది క్లయింట్‌లు ఈ కంప్యూటర్‌కు జత చేయబడ్డాయి కాబట్టి PINని అందించకుండానే అవి కనెక్ట్ కాగలవు. మీరు ఈ అనుమతిని ఎప్పుడైనా ఒక్కొక్కరి కోసం లేదా క్లయింట్‌లు అందరి కోసం ఉపసంహరించవచ్చు.</translation>
 <translation id="2078880767960296260">హోస్ట్ ప్రక్రియ</translation>
 <translation id="20876857123010370">ట్రాక్ ప్యాడ్ మోడ్</translation>
@@ -60,7 +60,7 @@
 <translation id="2246783206985865117">ఈ సెట్టింగ్ మీ డొమైన్ విధానం ద్వారా నిర్వహించబడుతోంది.</translation>
 <translation id="2256115617011615191">ఇప్పుడే పునఃప్రారంభించు</translation>
 <translation id="225614027745146050">స్వాగతం</translation>
-<translation id="228809120910082333">దయచేసి Chromoting ద్వారా ప్రాప్యతను అనుమతించడానికి దిగువ మీ ఖాతా మరియు PINను నిర్ధారించండి.</translation>
+<translation id="228809120910082333">దయచేసి Chromoting ద్వారా యాక్సెస్‌ను అనుమతించడానికి దిగువ మీ ఖాతా, PINను నిర్ధారించండి.</translation>
 <translation id="2314101195544969792">మీ <ph name="APPLICATION_NAME" /> సెషన్ కొద్ది సమయం నుండి నిష్క్రియంగా ఉంది, కనుక కాసేపటిలో డిస్‌కనెక్ట్ చేయబడుతుంది.</translation>
 <translation id="2317666076142640974">కొత్త <ph name="LINK_BEGIN" />Chrome రిమోట్ డెస్క్‌టాప్ వెబ్ యాప్‌‌<ph name="LINK_END" />ని పరిశీలించండి. మేము మీ అభిప్రాయాన్ని తెలుసుకోవాలనుకుంటున్నాము.</translation>
 <translation id="2320166752086256636">కీబోర్డ్‌ను దాచు</translation>
@@ -70,7 +70,7 @@
 <translation id="2366718077645204424">హోస్ట్‌కు చేరుకోవడం సాధ్యపడలేదు. ఇది బహుశా మీరు ఉపయోగిస్తున్న నెట్‌వర్క్ యొక్క కాన్ఫిగరేషన్ వల్ల సంభవించి ఉండవచ్చు.</translation>
 <translation id="2370754117186920852"><ph name="OPTIONAL_OFFLINE_REASON" /> ఆన్‌లైన్‌లో చివరిగా కనిపించినది <ph name="RELATIVE_TIMESTAMP" />.</translation>
 <translation id="2405928220797050937">ఈ యాప్‌కు మద్దతు లేదు. మీరు తాజా ఫీచర్‌లు మరియు భద్రతా అప్‌డేట్‌లను పొందుతున్నట్లు నిర్ధారించుకోవడం కోసం, దయచేసి <ph name="LINK_BEGIN" />Chrome రిమోట్ డెస్క్‌టాప్ వెబ్ యాప్‌‌<ph name="LINK_END" /> ఉపయోగించండి.</translation>
-<translation id="2499160551253595098">వినియోగ గణాంకాలు, క్రాష్ నివేదికలను సేకరించడానికి మమ్మల్ని అనుమతించడం ద్వారా Chrome రిమోట్ డెస్క్‌టాప్‌ను మెరుగుపరచడంలో మాకు సహాయపడండి.</translation>
+<translation id="2499160551253595098">వినియోగ గణాంకాలను, క్రాష్ నివేదికలను సేకరించడానికి మమ్మల్ని అనుమతించడం ద్వారా Chrome రిమోట్ డెస్క్‌టాప్‌ను మెరుగుపరచడంలో మాకు సహాయపడండి.</translation>
 <translation id="2509394361235492552"><ph name="HOSTNAME" />కి కనెక్ట్ అయ్యింది</translation>
 <translation id="2512228156274966424">గమనిక: అన్ని కీబోర్డ్ సత్వరమార్గాలు అందుబాటులో ఉన్నాయని నిర్ధారించుకోవడానికి, మీరు Chrome రిమోట్ డెస్క్‌టాప్‌ను ‘విండోగా తెరువు’కు కాన్ఫిగర్ చేయవచ్చు.</translation>
 <translation id="2540992418118313681">మీరు ఈ కంప్యూటర్‌ను మరో వినియోగదారు చూడటానికి, నియంత్రించడానికి దీన్ని షేర్‌ చేయాలనుకుంటున్నారా?</translation>
@@ -93,9 +93,9 @@
 • మీ 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>
+<translation id="2921543551052660690">మీరు మునుపు <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)గా సైన్ ఇన్ చేశారు. ఆ ఖాతాలో మీ కంప్యూటర్‌లను యాక్సెస్‌ చేయడానికి, ఆ ఖాతాతో <ph name="LINK_BEGIN" />Chromiumకు సైన్ ఇన్ చేయండి<ph name="LINK_END" />. Chromotingను మళ్లీ ఇన్‌స్టాల్ చేయండి.</translation>
 <translation id="2926340305933667314">ఈ కంప్యూటర్‌కు రిమోట్ యాక్సెస్‌ను నిలిపివేయడంలో విఫలమైంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
-<translation id="2930135165929238380">అవసరమైన కొన్ని భాగాలు లేవు. దయచేసి chrome://pluginsకి వెళ్లి, స్థానిక క్లయింట్ ప్రారంభించి ఉన్నట్లు నిర్ధారించుకోండి.</translation>
+<translation id="2930135165929238380">అవసరమైన కొన్ని భాగాలు లేవు. దయచేసి chrome://pluginsకు వెళ్లి, స్థానిక క్లయింట్ ప్రారంభించి ఉన్నట్లు నిర్ధారించుకోండి.</translation>
 <translation id="2939145106548231838">హోస్ట్ చేయడానికి ప్రామాణీకరించండి</translation>
 <translation id="3020807351229499221">PINను అప్‌డేట్ చేయడంలో విఫలమైంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="3025388528294795783">మీ సమస్యను పరిష్కరించడంలో మాకు సహాయపడటానికి, దయచేసి ఏమి తప్పు జరిగిందో మాకు చెప్పండి:</translation>
@@ -103,7 +103,7 @@
 <translation id="3106379468611574572">కనెక్షన్ అభ్యర్థనలకు రిమోట్ కంప్యూటర్ ప్రతిస్పందించడం లేదు. దయచేసి ఇది ఆన్‌లైన్‌లో ఉందని ధృవీకరించుకుని, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="310979712355504754">అందరినీ తొలగించండి</translation>
 <translation id="3150823315463303127">విధానాన్ని చదవడంలో హోస్ట్ విఫలమైంది.</translation>
-<translation id="3171922709365450819">ఈ పరికరానికి మూడవ పక్షం ప్రమాణీకరణ అవసరమైనందున దీనికి ఈ క్లయింట్ మద్దతు లేదు.</translation>
+<translation id="3171922709365450819">ఈ పరికరానికి మూడవ పక్షం ప్రామాణీకరణ అవసరమైనందున దీనికి ఈ క్లయింట్ మద్దతు లేదు.</translation>
 <translation id="3194245623920924351">Chrome రిమోట్ డెస్క్‌టాప్</translation>
 <translation id="3197730452537982411">రిమోట్ డెస్క్‌టాప్</translation>
 <translation id="324272851072175193">ఈ సూచనలను ఇమెయిల్ ద్వారా పంపు</translation>
@@ -129,7 +129,7 @@
 <translation id="3846148461359626420">• iPhone Xలో మరింత మెరుగ్గా ప్యాన్ చేసే, జూమ్ చేసే అనుభవం.
 • స్థిరత్వ మెరుగుదలలు మరియు బగ్ పరిష్కారాలు.</translation>
 <translation id="3870154837782082782">Google Inc.</translation>
-<translation id="3884839335308961732">దయచేసి Chrome రిమోట్ డెస్క్‌టాప్ ద్వారా ప్రాప్యతను అనుమతించడానికి దిగువ మీ ఖాతా మరియు PINను నిర్ధారించండి.</translation>
+<translation id="3884839335308961732">దయచేసి Chrome రిమోట్ డెస్క్‌టాప్ ద్వారా యాక్సెస్‌ను అనుమతించడానికి దిగువ మీ ఖాతాను, PINను నిర్ధారించండి.</translation>
 <translation id="3897092660631435901">మెను</translation>
 <translation id="3905196214175737742">చెల్లని హోస్ట్ యజమాని డొమైన్.</translation>
 <translation id="3908017899227008678">సరిపోయేలా కుదించు</translation>
@@ -158,7 +158,7 @@
 <translation id="4430435636878359009">ఈ కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను నిలిపివేయి</translation>
 <translation id="4430915108080446161">ప్రాప్యత కోడ్‌ను రూపొందిస్తోంది...</translation>
 <translation id="4472575034687746823">ప్రారంభించండి</translation>
-<translation id="4481276415609939789">మీరు నమోదు అయిన కంప్యూటర్‌లను కలిగి లేరు. కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభించడానికి, అక్కడ Chromotingను ఇన్‌స్టాల్ చేసి “<ph name="BUTTON_NAME" />”ను క్లిక్ చేయండి.</translation>
+<translation id="4481276415609939789">మీరు నమోదు అయిన కంప్యూటర్‌లను కలిగి ఉండలేదు. కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభించడానికి, అక్కడ Chromotingను ఇన్‌స్టాల్ చేసి “<ph name="BUTTON_NAME" />”ను క్లిక్ చేయండి.</translation>
 <translation id="4513946894732546136">అభిప్రాయం</translation>
 <translation id="4517233780764084060">గమనిక: అన్ని కీబోర్డ్ సత్వరమార్గాలు అందుబాటులో ఉన్నాయని నిర్ధారించుకోవడానికి, మీరు Chromotingను ‘విండోగా తెరువు’కు కాన్ఫిగర్ చేయవచ్చు.</translation>
 <translation id="4563926062592110512">ఈ క్లయింట్ డిస్‌కనెక్ట్ చేయబడ్డారు: <ph name="CLIENT_USERNAME" />.</translation>
@@ -207,7 +207,7 @@
 <translation id="5254120496627797685">ఈ పేజీ నుండి నిష్క్రమించడం వలన మీ Chrome రిమోట్ డెస్క్‌టాప్ సెషన్ ముగుస్తుంది.</translation>
 <translation id="5308380583665731573">కనెక్ట్ చేయండి</translation>
 <translation id="533625276787323658">కనెక్ట్ చేయడానికి ఏదీ లేదు</translation>
-<translation id="5363265567587775042">మీరు ఎవరి కంప్యూటర్‌ను అయితే యాక్సెస్ చేయాలని కోరుకుంటున్నారో ఆ వినియోగదారుడిని ఆ కంప్యూటర్‌లో “<ph name="SHARE" />” క్లిక్ చేసి, మీకు యాక్సెస్ కోడ్ ఇవ్వమని అడగండి.</translation>
+<translation id="5363265567587775042">మీరు యాక్సెస్‌ చేయాలని కోరుకునే కంప్యూటర్‌లో “<ph name="SHARE" />” క్లిక్ చేసి, మీకు యాక్సెస్‌ కోడ్ ఇవ్వమని వినియోగదారును అడగండి.</translation>
 <translation id="5379087427956679853">మీ కంప్యూటర్‌ను వెబ్ ద్వారా సురక్షితంగా షేర్ చేయడానికి Chrome రిమోట్ డెస్క్‌టాప్ మిమ్మల్ని అనుమతిస్తుంది. <ph name="URL" /> వద్ద ఉన్న Chrome రిమోట్ డెస్క్‌టాప్ యాప్‌ని వినియోగదారులు ఇద్దరూ తప్పనిసరిగా అమలు చేస్తుండాలి.</translation>
 <translation id="5397086374758643919">Chrome రిమోట్ డెస్క్‌టాప్ హోస్ట్ అన్‌ఇన్‌స్టాలర్</translation>
 <translation id="5419185025274123272">అప్లికేషన్‌ను రీసెట్ చేయలేకపోయింది. మీరు ఇప్పటికీ బగ్ నివేదికను పంపవచ్చు.</translation>
@@ -279,7 +279,7 @@
 <translation id="7019153418965365059">గుర్తుపట్టని హోస్ట్ లోపం: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">రిమోట్ సహాయం</translation>
 <translation id="7026930240735156896">మీ కంప్యూటర్‌ను రిమోట్ యాక్సెస్ కోసం సెటప్ చేయడానికి సూచనలను పాటించండి</translation>
-<translation id="7038683108611689168">వినియోగ గణాంకాలు, క్రాష్ నివేదికలను సేకరించడానికి మమ్మల్ని అనుమతించడం ద్వారా Chromotingను మెరుగుపరచడంలో మాకు సహాయపడండి.</translation>
+<translation id="7038683108611689168">వినియోగ గణాంకాలను, క్రాష్ నివేదికలను సేకరించడానికి మమ్మల్ని అనుమతించడం ద్వారా Chromotingను మెరుగుపరచడంలో మాకు సహాయపడండి.</translation>
 <translation id="7067321367069083429">స్క్రీన్, టచ్ స్క్రీన్ లాగా పని చేస్తుంది</translation>
 <translation id="7116737094673640201">Chrome రిమోట్ డెస్క్‌టాప్‌కు స్వాగతం</translation>
 <translation id="7144878232160441200">మళ్లీ ప్రయత్నించండి</translation>
@@ -288,14 +288,14 @@
 <translation id="7312846573060934304">హోస్ట్ ఆఫ్‌లైన్‌లో ఉంది.</translation>
 <translation id="7319983568955948908">భాగస్వామ్యం చేయడాన్ని ఆపివేయి</translation>
 <translation id="7401733114166276557">Chrome రిమోట్ డెస్క్‌టాప్</translation>
-<translation id="7434397035092923453">ఈ క్లయింట్‌కి ప్రాప్యత తిరస్కరించబడింది: <ph name="CLIENT_USERNAME" />.</translation>
+<translation id="7434397035092923453">ఈ క్లయింట్‌కు యాక్సెస్‌ తిరస్కరించబడింది: <ph name="CLIENT_USERNAME" />.</translation>
 <translation id="7444276978508498879">ఈ క్లయింట్ కనెక్ట్ చేయబడ్డారు: <ph name="CLIENT_USERNAME" />.</translation>
 <translation id="7526139040829362392">ఖాతాను మార్చు</translation>
 <translation id="7606912958770842224">రిమోట్ కనెక్షన్‌లను ప్రారంభించు</translation>
 <translation id="7628469622942688817">ఈ పరికరంలో నా PINను గుర్తుంచుకో.</translation>
 <translation id="7649070708921625228">సహాయం</translation>
 <translation id="7658239707568436148">రద్దు చెయ్యి</translation>
-<translation id="7665369617277396874">ఖాతాను జోడించు</translation>
+<translation id="7665369617277396874">ఖాతాను జోడించండి</translation>
 <translation id="7672203038394118626">ఈ కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లు నిలిపివేయబడ్డాయి.</translation>
 <translation id="7678209621226490279">ఎడమవైపున ఉంచు</translation>
 <translation id="7693372326588366043">హోస్ట్‌ల జాబితాను రీఫ్రెష్ చేయి</translation>
diff --git a/remoting/resources/remoting_strings_tr.xtb b/remoting/resources/remoting_strings_tr.xtb
index 09ec918..03ee56e 100644
--- a/remoting/resources/remoting_strings_tr.xtb
+++ b/remoting/resources/remoting_strings_tr.xtb
@@ -243,7 +243,7 @@
 <translation id="6198252989419008588">PIN'i değiştir</translation>
 <translation id="6204583485351780592"><ph name="HOSTNAME" /> (eski)</translation>
 <translation id="6221358653751391898">Chrome'da oturum açmadınız. Lütfen oturum açın ve tekrar deneyin.</translation>
-<translation id="6227369581881558336">Chrome Remote Desktop, dosya aktarımı gibi yeni özelliklerle artık web'de de kullanılabiliyor. <ph name="LINK_BEGIN" />Web uygulamamıza<ph name="LINK_END" /> göz atın.</translation>
+<translation id="6227369581881558336">Chrome Uzaktan Masaüstü, dosya aktarımı gibi yeni özelliklerle artık web'de de kullanılabiliyor. <ph name="LINK_BEGIN" />Web uygulamamıza<ph name="LINK_END" /> göz atın.</translation>
 <translation id="6284412385303060032">Konsol mantık ekranında çalışan ana makine, kullanıcı tanımlı oturumda çalışan bir ana makineye geçerek perde modunu desteklemek için kapandı.</translation>
 <translation id="629730747756840877">Hesap</translation>
 <translation id="6304318647555713317">İstemci</translation>
diff --git a/remoting/resources/remoting_strings_zh-TW.xtb b/remoting/resources/remoting_strings_zh-TW.xtb
index dd97d0b..1000b8d 100644
--- a/remoting/resources/remoting_strings_zh-TW.xtb
+++ b/remoting/resources/remoting_strings_zh-TW.xtb
@@ -24,6 +24,7 @@
 <translation id="1520828917794284345">將桌面調整為合適大小</translation>
 <translation id="154040539590487450">無法啟動遠端存取服務。</translation>
 <translation id="1546934824884762070">發生未預期的錯誤,請向開發人員回報這個問題。</translation>
+<translation id="1624185583382384493">Chrome 遠端桌面現已推出網路版。歡迎試試我們的<ph name="LINK_BEGIN" />網路應用程式<ph name="LINK_END" />!不僅快速、免費,還提供更多功能,包括更完善的多螢幕支援。</translation>
 <translation id="1643640058022401035">如果離開這個頁面,你的 Chromoting 工作階段也會結束。</translation>
 <translation id="1654128982815600832">正在啟用這台電腦的遠端連線...</translation>
 <translation id="170207782578677537">無法註冊這台電腦。</translation>
@@ -242,6 +243,7 @@
 <translation id="6198252989419008588">變更 PIN</translation>
 <translation id="6204583485351780592"><ph name="HOSTNAME" /> (版本過舊)</translation>
 <translation id="6221358653751391898">您尚未登入 Chrome,請登入並再試一次。</translation>
+<translation id="6227369581881558336">Chrome 遠端桌面現已推出網路版,並增加了檔案傳輸等新功能!歡迎試試我們的<ph name="LINK_BEGIN" />網路應用程式<ph name="LINK_END" />。</translation>
 <translation id="6284412385303060032">在控制台登入畫面執行的主機已關閉。這樣才能切換成在個別使用者工作階段中執行的主機,以支援帷幕模式。</translation>
 <translation id="629730747756840877">帳戶</translation>
 <translation id="6304318647555713317">用戶端</translation>
diff --git a/sandbox/linux/bpf_dsl/linux_syscall_ranges.h b/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
index 334a00b..73c26c4b 100644
--- a/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
+++ b/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
@@ -5,6 +5,8 @@
 #ifndef SANDBOX_LINUX_BPF_DSL_LINUX_SYSCALL_RANGES_H_
 #define SANDBOX_LINUX_BPF_DSL_LINUX_SYSCALL_RANGES_H_
 
+#include "build/build_config.h"
+
 #if defined(__x86_64__)
 
 #define MIN_SYSCALL         0u
@@ -33,14 +35,14 @@
 #define MIN_GHOST_SYSCALL   (MIN_PRIVATE_SYSCALL + 0xfff0u)
 #define MAX_SYSCALL         (MIN_GHOST_SYSCALL + 4u)
 
-#elif defined(__mips32__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)
 
 #include <asm/unistd.h>  // for __NR_O32_Linux and __NR_Linux_syscalls
 #define MIN_SYSCALL         __NR_O32_Linux
 #define MAX_PUBLIC_SYSCALL  (MIN_SYSCALL + __NR_Linux_syscalls)
 #define MAX_SYSCALL         MAX_PUBLIC_SYSCALL
 
-#elif defined(__mips64__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
 
 #include <asm/unistd.h>  // for __NR_64_Linux and __NR_64_Linux_syscalls
 #define MIN_SYSCALL         __NR_64_Linux
diff --git a/sandbox/linux/bpf_dsl/seccomp_macros.h b/sandbox/linux/bpf_dsl/seccomp_macros.h
index e4e8142..1a407b9 100644
--- a/sandbox/linux/bpf_dsl/seccomp_macros.h
+++ b/sandbox/linux/bpf_dsl/seccomp_macros.h
@@ -19,6 +19,7 @@
 #endif
 #endif
 
+#include "build/build_config.h"
 #include "sandbox/linux/system_headers/linux_seccomp.h"  // For AUDIT_ARCH_*
 
 // Impose some reasonable maximum BPF program size. Realistically, the
@@ -190,7 +191,7 @@
 #define SECCOMP_PT_PARM5(_regs)   (_regs).REG_r4
 #define SECCOMP_PT_PARM6(_regs)   (_regs).REG_r5
 
-#elif defined(__mips32__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)
 #define SECCOMP_ARCH        AUDIT_ARCH_MIPSEL
 #define SYSCALL_EIGHT_ARGS
 // MIPS sigcontext_t is different from i386/x86_64 and ARM.
@@ -244,7 +245,7 @@
 #define SECCOMP_PT_PARM3(_regs)   (_regs).REG_a2
 #define SECCOMP_PT_PARM4(_regs)   (_regs).REG_a3
 
-#elif defined(__mips64__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
 #define SECCOMP_ARCH        AUDIT_ARCH_MIPSEL64
 #define SYSCALL_EIGHT_ARGS
 // MIPS sigcontext_t is different from i386/x86_64 and ARM.
diff --git a/sandbox/linux/bpf_dsl/syscall_set.cc b/sandbox/linux/bpf_dsl/syscall_set.cc
index b975a2b..55b2d5a 100644
--- a/sandbox/linux/bpf_dsl/syscall_set.cc
+++ b/sandbox/linux/bpf_dsl/syscall_set.cc
@@ -8,16 +8,17 @@
 
 #include "base/logging.h"
 #include "base/macros.h"
+#include "build/build_config.h"
 #include "sandbox/linux/bpf_dsl/linux_syscall_ranges.h"
 
 namespace sandbox {
 
 namespace {
 
-#if defined(__mips32__)
+#if defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)
 // This is true for Mips O32 ABI.
 static_assert(MIN_SYSCALL == __NR_Linux, "min syscall number should be 4000");
-#elif defined(__mips64__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
 // This is true for MIPS N64 ABI.
 static_assert(MIN_SYSCALL == __NR_Linux, "min syscall number should be 5000");
 #else
diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
index 426ea075..f33aa90 100644
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -86,7 +86,8 @@
          SyscallSets::IsNuma(sysno) ||
          SyscallSets::IsPrctl(sysno) ||
          SyscallSets::IsProcessGroupOrSession(sysno) ||
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
          SyscallSets::IsSocketCall(sysno) ||
 #endif
 #if defined(__arm__)
@@ -147,7 +148,8 @@
   if (sysno == __NR_fcntl)
     return RestrictFcntlCommands();
 
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   if (sysno == __NR_fcntl64)
     return RestrictFcntlCommands();
 #endif
@@ -193,7 +195,8 @@
     return RestrictMmapFlags();
 #endif
 
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   if (sysno == __NR_mmap2)
     return RestrictMmapFlags();
 #endif
@@ -244,7 +247,8 @@
     return Error(EPERM);
   }
 
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   if (SyscallSets::IsSocketCall(sysno))
     return RestrictSocketcallCommand();
 #endif
diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc
index a5d7035..fc0647f 100644
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc
@@ -76,13 +76,15 @@
     case __NR_flock:
     case __NR_fsync:
     case __NR_ftruncate:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_ftruncate64:
 #endif
 #if defined(__x86_64__) || defined(__aarch64__)
     case __NR_newfstatat:
     case __NR_fstatfs:
-#elif defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#elif defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_fstatat64:
     case __NR_fstatfs64:
 #endif
diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
index 8386b0f..1515d528 100644
--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
@@ -99,7 +99,7 @@
     sysno_base10[i] = '0' + mod;
   }
 
-#if defined(__mips32__)
+#if defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)
   static const char kSeccompErrorPrefix[] = __FILE__
       ":**CRASHING**:" SECCOMP_MESSAGE_COMMON_CONTENT " in syscall 4000 + ";
 #else
diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
index f9da613..03e3747c1 100644
--- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
@@ -28,7 +28,8 @@
 bool SyscallSets::IsAllowedGettime(int sysno) {
   switch (sysno) {
     case __NR_gettimeofday:
-#if defined(__i386__) || defined(__x86_64__) || defined(__mips32__)
+#if defined(__i386__) || defined(__x86_64__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_time:
 #endif
       return true;
@@ -38,11 +39,13 @@
     case __NR_clock_gettime:
     case __NR_clock_nanosleep:  // Could be allowed.
     case __NR_clock_settime:    // Privileged.
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_ftime:  // Obsolete.
 #endif
     case __NR_settimeofday:  // Privileged.
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_stime:
 #endif
     default:
@@ -97,7 +100,7 @@
     case __NR_stat:  // EPERM not a valid errno.
     case __NR_symlink:
     case __NR_unlink:
-#if !defined(__mips64__)
+#if !defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
     case __NR_uselib:  // Neither EPERM, nor ENOENT are valid errno.
 #endif
     case __NR_ustat:   // Same as above. Deprecated.
@@ -110,7 +113,8 @@
     case __NR_fchownat:  // Should be called chownat ?
 #if defined(__x86_64__) || defined(__aarch64__)
     case __NR_newfstatat:  // fstatat(). EPERM not a valid errno.
-#elif defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#elif defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_fstatat64:
 #endif
 #if defined(__i386__) || defined(__arm__)
@@ -119,7 +123,8 @@
     case __NR_linkat:
     case __NR_lookup_dcookie:  // ENOENT not a valid errno.
 
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_lstat64:
 #endif
     case __NR_memfd_create:
@@ -133,16 +138,19 @@
     case __NR_readlinkat:
     case __NR_renameat:
     case __NR_renameat2:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_stat64:
 #endif
     case __NR_statfs:  // EPERM not a valid errno.
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_statfs64:
 #endif
     case __NR_symlinkat:
     case __NR_truncate:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_truncate64:
 #endif
     case __NR_unlinkat:
@@ -159,7 +167,8 @@
 bool SyscallSets::IsAllowedFileSystemAccessViaFd(int sysno) {
   switch (sysno) {
     case __NR_fstat:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_fstat64:
 #endif
       return true;
@@ -176,7 +185,8 @@
     case __NR_fdatasync:  // EPERM not a valid errno.
     case __NR_flock:      // EPERM not a valid errno.
     case __NR_fstatfs:    // Give information about the whole filesystem.
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_fstatfs64:
 #endif
     case __NR_fsync:  // EPERM not a valid errno.
@@ -204,14 +214,16 @@
 #if defined(__i386__) || defined(__arm__)
     case __NR_fchown32:
 #endif
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_ftruncate64:
 #endif
 #if !defined(__aarch64__)
     case __NR_getdents:    // EPERM not a valid errno.
 #endif
     case __NR_getdents64:  // EPERM not a valid errno.
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_readdir:
 #endif
       return true;
@@ -301,7 +313,8 @@
     case __NR_rt_sigaction:
     case __NR_rt_sigprocmask:
     case __NR_rt_sigreturn:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_sigaction:
     case __NR_sigprocmask:
     case __NR_sigreturn:
@@ -317,11 +330,13 @@
     case __NR_signalfd:
 #endif
     case __NR_signalfd4:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_sigpending:
     case __NR_sigsuspend:
 #endif
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_signal:
     case __NR_sgetmask:  // Obsolete.
     case __NR_ssetmask:
@@ -345,7 +360,8 @@
 #endif
       return true;
     case __NR_fcntl:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_fcntl64:
 #endif
     default:
@@ -462,11 +478,12 @@
   }
 }
 
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
 // Big multiplexing system call for sockets.
 bool SyscallSets::IsSocketCall(int sysno) {
   switch (sysno) {
-#if !defined(__mips64__)
+#if !defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
     case __NR_socketcall:
       return true;
 #endif
@@ -504,10 +521,12 @@
     defined(__aarch64__)
     case __NR_mmap:
 #endif
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_mmap2:
 #endif
-#if defined(__i386__) || defined(__x86_64__) || defined(__mips32__)
+#if defined(__i386__) || defined(__x86_64__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_modify_ldt:
 #endif
     case __NR_mprotect:
@@ -528,7 +547,8 @@
 bool SyscallSets::IsAllowedGeneralIo(int sysno) {
   switch (sysno) {
     case __NR_lseek:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR__llseek:
 #endif
 #if !defined(__aarch64__)
@@ -539,7 +559,8 @@
     case __NR_read:
     case __NR_readv:
     case __NR_pread64:
-#if defined(__arm__) || defined(__mips32__)
+#if defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_recv:
 #endif
 #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \
@@ -553,7 +574,8 @@
 #if defined(__i386__) || defined(__arm__) || defined(__mips__)
     case __NR__newselect:
 #endif
-#if defined(__arm__) || defined(__mips32__)
+#if defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_send:
 #endif
 #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \
@@ -570,7 +592,8 @@
     case __NR_pwritev:
     case __NR_recvmmsg:  // Could specify source.
     case __NR_sendfile:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_sendfile64:
 #endif
     case __NR_sendmmsg:  // Could specify destination.
@@ -612,7 +635,8 @@
     case __NR_nanosleep:
       return true;
     case __NR_getpriority:
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_nice:
 #endif
     case __NR_setpriority:
@@ -623,7 +647,8 @@
 
 bool SyscallSets::IsAdminOperation(int sysno) {
   switch (sysno) {
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_bdflush:
 #endif
     case __NR_kexec_load:
@@ -671,7 +696,8 @@
     case __NR_quotactl:
     case __NR_swapoff:
     case __NR_swapon:
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_umount:
 #endif
     case __NR_umount2:
@@ -722,7 +748,8 @@
 #if defined(__i386__) || defined(__arm__)
     case __NR_ugetrlimit:
 #endif
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_ulimit:
 #endif
     case __NR_getrusage:
@@ -804,8 +831,10 @@
 }
 
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
-bool SyscallSets::IsSystemVSemaphores(int sysno) { switch (sysno) { case __NR_semctl:
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
+bool SyscallSets::IsSystemVSemaphores(int sysno) {
+  switch (sysno) {
+    case __NR_semctl:
     case __NR_semget:
     case __NR_semop:
     case __NR_semtimedop:
@@ -817,7 +846,7 @@
 #endif
 
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
 // These give a lot of ambient authority and bypass the setuid sandbox.
 bool SyscallSets::IsSystemVSharedMemory(int sysno) {
   switch (sysno) {
@@ -833,7 +862,7 @@
 #endif
 
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
 bool SyscallSets::IsSystemVMessageQueue(int sysno) {
   switch (sysno) {
     case __NR_msgctl:
@@ -847,11 +876,12 @@
 }
 #endif
 
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
 // Big system V multiplexing system call.
 bool SyscallSets::IsSystemVIpc(int sysno) {
   switch (sysno) {
-#if !defined(__mips64__)
+#if !defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
     case __NR_ipc:
       return true;
 #endif
@@ -862,11 +892,12 @@
 #endif
 
 bool SyscallSets::IsAnySystemV(int sysno) {
-#if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) \
-    || defined(__mips64__)
+#if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
   return IsSystemVMessageQueue(sysno) || IsSystemVSemaphores(sysno) ||
          IsSystemVSharedMemory(sysno);
-#elif defined(__i386__) || defined(__mips32__)
+#elif defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   return IsSystemVIpc(sysno);
 #endif
 }
@@ -981,13 +1012,15 @@
 #if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
     case __NR_afs_syscall:
 #endif
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_break:
 #endif
 #if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
     case __NR_getpmsg:
 #endif
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_gtty:
     case __NR_idle:
     case __NR_lock:
@@ -1001,7 +1034,8 @@
 #if defined(__x86_64__)
     case __NR_security:
 #endif
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_stty:
 #endif
 #if defined(__x86_64__)
@@ -1056,7 +1090,7 @@
 bool SyscallSets::IsMipsMisc(int sysno) {
   switch (sysno) {
     case __NR_sysmips:
-#if !defined(__mips64__)
+#if !defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
     case __NR_unused150:
 #endif
       return true;
diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h
index c31d5e9c..acd92da 100644
--- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h
+++ b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h
@@ -42,7 +42,8 @@
   static bool IsAllowedGetOrModifySocket(int sysno);
   static bool IsDeniedGetOrModifySocket(int sysno);
 
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   // Big multiplexing system call for sockets.
   static bool IsSocketCall(int sysno);
 #endif
@@ -71,21 +72,22 @@
   static bool IsAsyncIo(int sysno);
   static bool IsKeyManagement(int sysno);
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
   static bool IsSystemVSemaphores(int sysno);
 #endif
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
   // These give a lot of ambient authority and bypass the setuid sandbox.
   static bool IsSystemVSharedMemory(int sysno);
 #endif
 
 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || \
-    defined(__mips64__)
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS))
   static bool IsSystemVMessageQueue(int sysno);
 #endif
 
-#if defined(__i386__) || defined(__mips32__)
+#if defined(__i386__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
   // Big system V multiplexing system call.
   static bool IsSystemVIpc(int sysno);
 #endif
diff --git a/sandbox/linux/seccomp-bpf/syscall.cc b/sandbox/linux/seccomp-bpf/syscall.cc
index d6db70f..34edabd2 100644
--- a/sandbox/linux/seccomp-bpf/syscall.cc
+++ b/sandbox/linux/seccomp-bpf/syscall.cc
@@ -8,6 +8,7 @@
 #include <stdint.h>
 
 #include "base/logging.h"
+#include "build/build_config.h"
 #include "sandbox/linux/bpf_dsl/seccomp_macros.h"
 
 namespace sandbox {
@@ -188,7 +189,7 @@
     ".fnend\n"
 #endif
     "9:.size SyscallAsm, 9b-SyscallAsm\n"
-#elif defined(__mips32__)
+#elif (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     ".text\n"
     ".option pic2\n"
     ".align 4\n"
@@ -240,7 +241,7 @@
     ".set    pop\n"
     ".end    SyscallAsm\n"
     ".size   SyscallAsm,.-SyscallAsm\n"
-#elif defined(__mips64__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
     ".text\n"
     ".option pic2\n"
     ".global SyscallAsm\n"
diff --git a/sandbox/linux/syscall_broker/broker_process.cc b/sandbox/linux/syscall_broker/broker_process.cc
index 82ab4a76..56d4964 100644
--- a/sandbox/linux/syscall_broker/broker_process.cc
+++ b/sandbox/linux/syscall_broker/broker_process.cc
@@ -156,7 +156,8 @@
 #endif
       return !fast_check_in_client_ || allowed_command_set_.test(COMMAND_STAT);
 
-#if defined(__i386__) || defined(__arm__) || defined(__mips32__)
+#if defined(__i386__) || defined(__arm__) || \
+    (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
     case __NR_stat64:
     case __NR_lstat64:
       // For security purposes, map stat64 to COMMAND_STAT permission. The
diff --git a/sandbox/linux/system_headers/linux_signal.h b/sandbox/linux/system_headers/linux_signal.h
index e4fd3461..f5a7367 100644
--- a/sandbox/linux/system_headers/linux_signal.h
+++ b/sandbox/linux/system_headers/linux_signal.h
@@ -7,6 +7,8 @@
 
 #include <stdint.h>
 
+#include "build/build_config.h"
+
 // NOTE: On some toolchains, signal related ABI is incompatible with Linux's
 // (not undefined, but defined different values and in different memory
 // layouts). So, fill the gap here.
@@ -111,14 +113,14 @@
 #endif  // !defined(__native_client_nonsfi__)
 
 // struct sigset_t is different size in PNaCl from the Linux's.
-#if defined(__mips32__)
+#if (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
 #if !defined(_NSIG_WORDS)
 #define _NSIG_WORDS 4
 #endif
 struct LinuxSigSet {
   unsigned long sig[_NSIG_WORDS];
 };
-#elif defined(__mips64__)
+#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
 #if !defined(_NSIG_WORDS)
 #define _NSIG_WORDS 2
 #endif
diff --git a/sandbox/linux/system_headers/linux_syscalls.h b/sandbox/linux/system_headers/linux_syscalls.h
index 761c08a..2b78a0c 100644
--- a/sandbox/linux/system_headers/linux_syscalls.h
+++ b/sandbox/linux/system_headers/linux_syscalls.h
@@ -9,6 +9,8 @@
 #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
 #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
 
+#include "build/build_config.h"
+
 #if defined(__x86_64__)
 #include "sandbox/linux/system_headers/x86_64_linux_syscalls.h"
 #endif
@@ -21,11 +23,11 @@
 #include "sandbox/linux/system_headers/arm_linux_syscalls.h"
 #endif
 
-#if defined(__mips32__)
+#if (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
 #include "sandbox/linux/system_headers/mips_linux_syscalls.h"
 #endif
 
-#if defined(__mips64__)
+#if defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)
 #include "sandbox/linux/system_headers/mips64_linux_syscalls.h"
 #endif
 
diff --git a/services/catalog/entry_cache.cc b/services/catalog/entry_cache.cc
index 44ae9b2..79062bf 100644
--- a/services/catalog/entry_cache.cc
+++ b/services/catalog/entry_cache.cc
@@ -32,8 +32,7 @@
     const service_manager::Manifest& manifest) {
   auto entry = std::make_unique<Entry>();
   entry->set_name(manifest.service_name);
-  if (manifest.display_name.raw_string)
-    entry->set_display_name(manifest.display_name.raw_string);
+  entry->set_display_name(manifest.display_name.raw_string);
 
   base::FilePath service_exe_root;
   CHECK(base::PathService::Get(base::DIR_ASSETS, &service_exe_root));
@@ -64,14 +63,10 @@
   entry->AddOptions(options);
 
   service_manager::InterfaceProviderSpec main_spec;
-  for (const auto& entry : manifest.exposed_capabilities) {
-    std::set<std::string> interfaces;
-    for (const char* name : entry.interface_names)
-      interfaces.emplace(name);
-    main_spec.provides.emplace(entry.capability_name, std::move(interfaces));
-  }
+  for (const auto& entry : manifest.exposed_capabilities)
+    main_spec.provides.emplace(entry.capability_name, entry.interface_names);
   for (const auto& entry : manifest.required_capabilities) {
-    main_spec.requires[entry.service_name].emplace(entry.capability_name);
+    main_spec.requires[entry.service_name].insert(entry.capability_name);
   }
 
   entry->AddInterfaceProviderSpec(
@@ -80,15 +75,12 @@
 
   std::map<std::string, service_manager::InterfaceProviderSpec> other_specs;
   for (const auto& entry : manifest.exposed_interface_filter_capabilities) {
-    std::set<std::string> interfaces;
-    for (const char* name : entry.interface_names)
-      interfaces.emplace(name);
     other_specs[entry.filter_name].provides.emplace(entry.capability_name,
-                                                    std::move(interfaces));
+                                                    entry.interface_names);
   }
 
   for (const auto& entry : manifest.required_interface_filter_capabilities) {
-    other_specs[entry.filter_name].requires[entry.service_name].emplace(
+    other_specs[entry.filter_name].requires[entry.service_name].insert(
         entry.capability_name);
   }
 
diff --git a/services/service_manager/public/cpp/BUILD.gn b/services/service_manager/public/cpp/BUILD.gn
index 5eca0029..08524d3 100644
--- a/services/service_manager/public/cpp/BUILD.gn
+++ b/services/service_manager/public/cpp/BUILD.gn
@@ -111,6 +111,7 @@
     ":cpp",
     "//base",
     "//services/service_manager/public/mojom",
+    "//testing/gmock",
     "//testing/gtest",
   ]
 }
diff --git a/services/service_manager/public/cpp/manifest.cc b/services/service_manager/public/cpp/manifest.cc
index f99619d9..e018583d 100644
--- a/services/service_manager/public/cpp/manifest.cc
+++ b/services/service_manager/public/cpp/manifest.cc
@@ -4,6 +4,8 @@
 
 #include "services/service_manager/public/cpp/manifest.h"
 
+#include "build/build_config.h"
+
 namespace service_manager {
 
 Manifest::Manifest() = default;
@@ -25,10 +27,10 @@
     default;
 Manifest::ExposedCapability::ExposedCapability(ExposedCapability&&) = default;
 Manifest::ExposedCapability::ExposedCapability(
-    const char* capability_name,
+    const std::string& capability_name,
     std::set<const char*> interface_names)
     : capability_name(capability_name),
-      interface_names(std::move(interface_names)) {}
+      interface_names(interface_names.begin(), interface_names.end()) {}
 Manifest::ExposedCapability::~ExposedCapability() = default;
 Manifest::ExposedCapability& Manifest::ExposedCapability::operator=(
     const ExposedCapability&) = default;
@@ -42,12 +44,12 @@
 Manifest::ExposedInterfaceFilterCapability::ExposedInterfaceFilterCapability(
     const ExposedInterfaceFilterCapability&) = default;
 Manifest::ExposedInterfaceFilterCapability::ExposedInterfaceFilterCapability(
-    const char* filter_name,
-    const char* capability_name,
+    const std::string& filter_name,
+    const std::string& capability_name,
     std::set<const char*> interface_names)
     : filter_name(filter_name),
       capability_name(capability_name),
-      interface_names(std::move(interface_names)) {}
+      interface_names(interface_names.begin(), interface_names.end()) {}
 Manifest::ExposedInterfaceFilterCapability::
     ~ExposedInterfaceFilterCapability() = default;
 Manifest::ExposedInterfaceFilterCapability&
@@ -57,4 +59,219 @@
 Manifest::ExposedInterfaceFilterCapability::operator=(
     ExposedInterfaceFilterCapability&&) = default;
 
+// static
+Manifest Manifest::FromValueDeprecated(std::unique_ptr<base::Value> value_ptr) {
+  DCHECK(value_ptr);
+  base::Value value(std::move(*value_ptr));
+
+  Manifest manifest;
+  if (!value.is_dict())
+    return manifest;
+
+  const base::Value* name_value = value.FindKey("name");
+  if (name_value && name_value->is_string())
+    manifest.service_name = name_value->GetString();
+
+  const base::Value* display_name_value = value.FindKey("display_name");
+  if (display_name_value && display_name_value->is_string())
+    manifest.display_name.raw_string = display_name_value->GetString();
+
+  const base::Value* sandbox_type_value = value.FindKey("sandbox_type");
+  if (sandbox_type_value && sandbox_type_value->is_string()) {
+    manifest.options.sandbox_type = sandbox_type_value->GetString();
+  } else {
+    // This is kind of weird, but the default when processing packaged service
+    // manifests (which is all we care about now, in practice) is "utility". So
+    // assume that if no "sandbox_type" key is present.
+    manifest.options.sandbox_type = "utility";
+  }
+
+  const base::Value* options_value = value.FindKey("options");
+  if (options_value && options_value->is_dict()) {
+    const base::Value* can_connect_to_services_as_any_user_value =
+        options_value->FindKey("can_connect_to_other_services_as_any_user");
+    manifest.options.can_connect_to_instances_in_any_group =
+        can_connect_to_services_as_any_user_value &&
+        can_connect_to_services_as_any_user_value->is_bool() &&
+        can_connect_to_services_as_any_user_value->GetBool();
+
+    const base::Value*
+        can_connect_to_other_services_with_any_instance_name_value =
+            options_value->FindKey(
+                "can_connect_to_other_services_with_any_instance_name");
+    manifest.options.can_connect_to_instances_with_any_id =
+        can_connect_to_other_services_with_any_instance_name_value &&
+        can_connect_to_other_services_with_any_instance_name_value->is_bool() &&
+        can_connect_to_other_services_with_any_instance_name_value->GetBool();
+
+    const base::Value* can_create_other_service_instances_value =
+        options_value->FindKey("can_create_other_service_instances");
+    manifest.options.can_register_other_service_instances =
+        can_create_other_service_instances_value &&
+        can_create_other_service_instances_value->is_bool() &&
+        can_create_other_service_instances_value->GetBool();
+
+    const base::Value* instance_sharing_value =
+        options_value->FindKey("instance_sharing");
+    if (instance_sharing_value && instance_sharing_value->is_string()) {
+      if (instance_sharing_value->GetString() == "singleton") {
+        manifest.options.instance_sharing_policy =
+            InstanceSharingPolicy::kSingleton;
+      } else if (instance_sharing_value->GetString() ==
+                     "shared_instance_across_users" ||
+                 instance_sharing_value->GetString() ==
+                     "shared_across_instance_groups") {
+        manifest.options.instance_sharing_policy =
+            InstanceSharingPolicy::kSharedAcrossGroups;
+      }
+    }
+  }
+
+  const base::Value* interface_provider_specs_value =
+      value.FindKey("interface_provider_specs");
+  if (interface_provider_specs_value &&
+      interface_provider_specs_value->is_dict()) {
+    for (const auto& spec : interface_provider_specs_value->DictItems()) {
+      if (!spec.second.is_dict())
+        continue;
+      const std::string& spec_name = spec.first;
+      const bool is_main_spec = (spec_name == "service_manager:connector");
+      const base::Value* provides_value = spec.second.FindKey("provides");
+      if (provides_value && provides_value->is_dict()) {
+        for (const auto& capability : provides_value->DictItems()) {
+          if (!capability.second.is_list())
+            continue;
+          const std::string& capability_name = capability.first;
+          std::set<std::string> interface_names;
+          for (const auto& interface_name : capability.second.GetList())
+            interface_names.insert(interface_name.GetString());
+          if (is_main_spec) {
+            ExposedCapability capability;
+            capability.capability_name = capability_name;
+            capability.interface_names = std::move(interface_names);
+            manifest.exposed_capabilities.emplace_back(std::move(capability));
+          } else {
+            ExposedInterfaceFilterCapability capability;
+            capability.filter_name = spec_name;
+            capability.capability_name = capability_name;
+            capability.interface_names = std::move(interface_names);
+            manifest.exposed_interface_filter_capabilities.emplace_back(
+                std::move(capability));
+          }
+        }
+      }
+
+      const base::Value* requires_value = spec.second.FindKey("requires");
+      if (requires_value && requires_value->is_dict()) {
+        for (const auto& entry : requires_value->DictItems()) {
+          if (!entry.second.is_list())
+            continue;
+          const std::string& from_service_name = entry.first;
+          if (is_main_spec) {
+            if (entry.second.GetList().empty()) {
+              manifest.required_capabilities.push_back({from_service_name, ""});
+            } else {
+              for (const auto& capability_name : entry.second.GetList()) {
+                manifest.required_capabilities.push_back(
+                    {from_service_name, capability_name.GetString()});
+              }
+            }
+          } else {
+            for (const auto& capability_name : entry.second.GetList()) {
+              manifest.required_interface_filter_capabilities.push_back(
+                  {from_service_name, spec_name, capability_name.GetString()});
+            }
+          }
+        }
+      }
+    }
+  }
+
+  const base::Value* required_values_value = value.FindKey("required_files");
+  if (required_values_value && required_values_value->is_dict()) {
+#if defined(OS_LINUX)
+    constexpr const char kRequiredPlatform[] = "linux";
+#elif defined(OS_ANDROID)
+    constexpr const char kRequiredPlatform[] = "android";
+#else
+    constexpr const char kRequiredPlatform[] = "none";
+#endif
+    for (const auto& item : required_values_value->DictItems()) {
+      const std::string& key = item.first;
+      if (!item.second.is_list())
+        continue;
+
+      for (const auto& entry : item.second.GetList()) {
+        if (!entry.is_dict())
+          continue;
+        const base::Value* path_value = entry.FindKey("path");
+        const base::Value* platform_value = entry.FindKey("platform");
+        if (platform_value && platform_value->is_string() && path_value &&
+            path_value->is_string() &&
+            platform_value->GetString() == kRequiredPlatform) {
+          PreloadedFileInfo info;
+          info.key = key;
+          info.path = base::FilePath().AppendASCII(path_value->GetString());
+          manifest.preloaded_files.emplace_back(std::move(info));
+        }
+      }
+    }
+  }
+
+  constexpr const char kServicesKey[] = "services";
+  base::Value* services_value = value.FindKey(kServicesKey);
+  if (services_value && services_value->is_list()) {
+    for (auto& manifest_value : services_value->GetList()) {
+      manifest.packaged_services.emplace_back(FromValueDeprecated(
+          std::make_unique<base::Value>(std::move(manifest_value))));
+    }
+  }
+
+  return manifest;
+}
+
+void Manifest::Amend(Manifest other) {
+  for (auto& other_capability : other.exposed_capabilities) {
+    auto it = std::find_if(
+        exposed_capabilities.begin(), exposed_capabilities.end(),
+        [&other_capability](const ExposedCapability& capability) {
+          return capability.capability_name == other_capability.capability_name;
+        });
+    if (it != exposed_capabilities.end()) {
+      for (auto& name : other_capability.interface_names)
+        it->interface_names.emplace(std::move(name));
+    } else {
+      exposed_capabilities.emplace_back(std::move(other_capability));
+    }
+  }
+
+  for (auto& other_capability : other.exposed_interface_filter_capabilities) {
+    auto it = std::find_if(
+        exposed_interface_filter_capabilities.begin(),
+        exposed_interface_filter_capabilities.end(),
+        [&other_capability](
+            const ExposedInterfaceFilterCapability& capability) {
+          return capability.capability_name ==
+                     other_capability.capability_name &&
+                 capability.filter_name == other_capability.filter_name;
+        });
+    if (it != exposed_interface_filter_capabilities.end()) {
+      for (auto& name : other_capability.interface_names)
+        it->interface_names.emplace(std::move(name));
+    } else {
+      exposed_interface_filter_capabilities.emplace_back(
+          std::move(other_capability));
+    }
+  }
+
+  for (auto& capability : other.required_capabilities)
+    required_capabilities.emplace_back(std::move(capability));
+  for (auto& capability : other.required_interface_filter_capabilities)
+    required_interface_filter_capabilities.emplace_back(std::move(capability));
+  for (auto& manifest : other.packaged_services)
+    packaged_services.emplace_back(std::move(manifest));
+  for (auto& file_info : other.preloaded_files)
+    preloaded_files.emplace_back(std::move(file_info));
+}
+
 }  // namespace service_manager
diff --git a/services/service_manager/public/cpp/manifest.h b/services/service_manager/public/cpp/manifest.h
index d47922b6c..684a60eb 100644
--- a/services/service_manager/public/cpp/manifest.h
+++ b/services/service_manager/public/cpp/manifest.h
@@ -11,6 +11,7 @@
 
 #include "base/component_export.h"
 #include "base/files/file_path.h"
+#include "base/values.h"
 
 namespace service_manager {
 
@@ -22,8 +23,8 @@
 }
 
 template <typename... InterfaceTypes>
-std::set<const char*> GetInterfaceNames() {
-  return std::set<const char*>({GetInterfaceName<InterfaceTypes>()...});
+std::set<std::string> GetInterfaceNames() {
+  return std::set<std::string>({GetInterfaceName<InterfaceTypes>()...});
 }
 
 }  // namespace internal
@@ -48,11 +49,11 @@
   // TODO(https://crbug.com/915806): Extend this to support resource IDs in
   // addition to raw strings.
   struct COMPONENT_EXPORT(SERVICE_MANAGER_CPP) DisplayName {
-    constexpr DisplayName() : raw_string(nullptr) {}
-    explicit constexpr DisplayName(const char* raw_string)
+    DisplayName() = default;
+    explicit DisplayName(const std::string& raw_string)
         : raw_string(raw_string) {}
 
-    const char* raw_string;
+    std::string raw_string;
   };
 
   enum class InstanceSharingPolicy {
@@ -110,7 +111,7 @@
     // The type of sandboxing required by instances of this service.
     //
     // TODO(https://crbug.com/915806): Make this field a SandboxType enum.
-    const char* sandbox_type = "none";
+    std::string sandbox_type{"none"};
   };
 
   // Represents a file required by instances of the service despite being
@@ -120,7 +121,7 @@
   struct PreloadedFileInfo {
     // A key which can be used by the service implementation to locate the
     // file's open descriptor via |base::FileDescriptorStore|.
-    const char* key;
+    std::string key;
 
     // The path to the file. On Linux this is relative to the main Service
     // Manager embedder's executable (i.e. relative to base::DIR_EXE.) On
@@ -146,13 +147,13 @@
     ExposedCapability(ExposedCapability&&);
 
     template <typename... InterfaceTypes>
-    ExposedCapability(const char* capability_name,
+    ExposedCapability(const std::string& capability_name,
                       InterfaceList<InterfaceTypes...> interfaces)
         : capability_name(capability_name),
           interface_names(internal::GetInterfaceNames<InterfaceTypes...>()) {}
 
     // Prefer the above constructor. This exists to support genenerated code.
-    ExposedCapability(const char* capability_name,
+    ExposedCapability(const std::string& capability_name,
                       std::set<const char*> interface_names);
 
     ~ExposedCapability();
@@ -161,10 +162,10 @@
     ExposedCapability& operator=(ExposedCapability&&);
 
     // The name of this capability.
-    const char* capability_name;
+    std::string capability_name;
 
     // The list of interfaces accessible to clients granted this capability.
-    std::set<const char*> interface_names;
+    std::set<std::string> interface_names;
   };
 
   // Represents a capability required by a service. Every required capability
@@ -179,11 +180,11 @@
   // it to an instance of the target service.
   struct RequiredCapability {
     // The name of the service which exposes this required capability.
-    const char* service_name;
+    std::string service_name;
 
     // The name of the capability to require. This must match the name of a
     // capability exposed by |service_name|'s own Manifest.
-    const char* capability_name;
+    std::string capability_name;
   };
 
   // DEPRECATED: This will be removed soon. Don't add new uses of interface
@@ -211,16 +212,16 @@
 
     template <typename... InterfaceTypes>
     ExposedInterfaceFilterCapability(
-        const char* filter_name,
-        const char* capability_name,
+        const std::string& filter_name,
+        const std::string& capability_name,
         InterfaceList<InterfaceTypes...> interfaces)
         : filter_name(filter_name),
           capability_name(capability_name),
           interface_names(internal::GetInterfaceNames<InterfaceTypes...>()) {}
 
     // Prefer the above constructor. This exists to support genenerated code.
-    ExposedInterfaceFilterCapability(const char* filter_name,
-                                     const char* capability_name,
+    ExposedInterfaceFilterCapability(const std::string& filter_name,
+                                     const std::string& capability_name,
                                      std::set<const char*> interface_names);
 
     ~ExposedInterfaceFilterCapability();
@@ -230,9 +231,9 @@
     ExposedInterfaceFilterCapability& operator=(
         ExposedInterfaceFilterCapability&&);
 
-    const char* filter_name;
-    const char* capability_name;
-    std::set<const char*> interface_names;
+    std::string filter_name;
+    std::string capability_name;
+    std::set<std::string> interface_names;
   };
 
   // DEPRECATED: This will be removed soon. Don't add new uses of interface
@@ -244,9 +245,9 @@
   // ExposedInterfaceFilterCapability in that service's manifest. See notes on
   // ExposedInterfaceFilterCapability.
   struct RequiredInterfaceFilterCapability {
-    const char* service_name;
-    const char* filter_name;
-    const char* capability_name;
+    std::string service_name;
+    std::string filter_name;
+    std::string capability_name;
   };
 
   Manifest();
@@ -258,7 +259,17 @@
   Manifest& operator=(const Manifest&);
   Manifest& operator=(Manifest&&);
 
-  const char* service_name = nullptr;
+  // Creates a new Manifest object from a |base::Value| representation of the
+  // deprecated JSON manifest format. This is a temporary function and should
+  // only be used to transition services away from JSON manifests.
+  static Manifest FromValueDeprecated(std::unique_ptr<base::Value> value_ptr);
+
+  // Amends this Manifest with a subset of |other|. Namely, exposed and required
+  // capabilities, exposed and required interface filter capabilities, packaged
+  // services, and preloaded files are all added from |other| if present.
+  void Amend(Manifest other);
+
+  std::string service_name;
   DisplayName display_name;
   Options options;
   std::vector<ExposedCapability> exposed_capabilities;
diff --git a/services/service_manager/public/cpp/manifest_unittest.cc b/services/service_manager/public/cpp/manifest_unittest.cc
index e3e0ed6..729e3c1 100644
--- a/services/service_manager/public/cpp/manifest_unittest.cc
+++ b/services/service_manager/public/cpp/manifest_unittest.cc
@@ -3,12 +3,22 @@
 // found in the LICENSE file.
 
 #include "services/service_manager/public/cpp/manifest.h"
+
+#include <set>
+#include <string>
+
 #include "base/files/file_path.h"
+#include "base/json/json_reader.h"
 #include "base/no_destructor.h"
+#include "base/stl_util.h"
+#include "base/values.h"
 #include "services/service_manager/public/cpp/manifest_builder.h"
 #include "services/service_manager/public/mojom/connector.mojom.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using ::testing::ElementsAre;
+
 namespace service_manager {
 
 const char kTestServiceName[] = "test_service";
@@ -70,8 +80,8 @@
 
 TEST(ManifestTest, BasicBuilder) {
   const auto& manifest = GetManifest();
-  EXPECT_EQ(std::string(kTestServiceName), manifest.service_name);
-  EXPECT_EQ(std::string("none"), manifest.options.sandbox_type);
+  EXPECT_EQ(kTestServiceName, manifest.service_name);
+  EXPECT_EQ("none", manifest.options.sandbox_type);
   EXPECT_TRUE(manifest.options.can_connect_to_instances_in_any_group);
   EXPECT_TRUE(manifest.options.can_connect_to_instances_with_any_id);
   EXPECT_FALSE(manifest.options.can_register_other_service_instances);
@@ -87,4 +97,165 @@
   EXPECT_EQ(3u, manifest.preloaded_files.size());
 }
 
+TEST(ManifestTest, FromValueDeprecated) {
+  constexpr const char kTestManifestJson[] = R"(
+    {
+      "name": "foo",
+      "display_name": "bar",
+      "sandbox_type": "utility",
+      "services": [
+        { "name": "packaged1" },
+        { "name": "packaged2" }
+      ],
+      "options": {
+        "can_connect_to_other_services_as_any_user": true,
+        "can_connect_to_other_services_with_any_instance_name": true,
+        "can_create_other_service_instances": true,
+        "instance_sharing": "singleton"
+      },
+      "interface_provider_specs": {
+        "service_manager:connector": {
+          "provides": {
+            "cap1": ["interface1", "interface2"],
+            "cap2": ["interface3"],
+            "cap3": []
+          },
+          "requires": {
+            "a_service": ["cap3"],
+            "another_service": ["cap4", "cap5"],
+            "one_more_service": []
+          }
+        },
+        "navigation:frame": {
+          "provides": {
+            "cap6": ["interface4"]
+          },
+          "requires": {
+            "yet_another_service": ["cap7", "cap8"]
+          }
+        }
+      }
+    }
+  )";
+  const Manifest manifest{
+      Manifest::FromValueDeprecated(base::JSONReader::Read(kTestManifestJson))};
+
+  EXPECT_EQ("foo", manifest.service_name);
+  EXPECT_EQ("bar", manifest.display_name.raw_string);
+
+  EXPECT_EQ("utility", manifest.options.sandbox_type);
+  EXPECT_EQ(Manifest::InstanceSharingPolicy::kSingleton,
+            manifest.options.instance_sharing_policy);
+  EXPECT_EQ(true, manifest.options.can_connect_to_instances_in_any_group);
+  EXPECT_EQ(true, manifest.options.can_connect_to_instances_with_any_id);
+  EXPECT_EQ(true, manifest.options.can_register_other_service_instances);
+
+  const auto& exposed_capabilities = manifest.exposed_capabilities;
+  ASSERT_EQ(3u, exposed_capabilities.size());
+  EXPECT_EQ("cap1", exposed_capabilities[0].capability_name);
+  EXPECT_THAT(exposed_capabilities[0].interface_names,
+              ElementsAre("interface1", "interface2"));
+  EXPECT_EQ("cap2", exposed_capabilities[1].capability_name);
+  EXPECT_THAT(exposed_capabilities[1].interface_names,
+              ElementsAre("interface3"));
+  EXPECT_EQ("cap3", exposed_capabilities[2].capability_name);
+  EXPECT_TRUE(exposed_capabilities[2].interface_names.empty());
+
+  const auto& required_capabilities = manifest.required_capabilities;
+  ASSERT_EQ(4u, required_capabilities.size());
+  EXPECT_EQ("a_service", required_capabilities[0].service_name);
+  EXPECT_EQ("cap3", required_capabilities[0].capability_name);
+  EXPECT_EQ("another_service", required_capabilities[1].service_name);
+  EXPECT_EQ("cap4", required_capabilities[1].capability_name);
+  EXPECT_EQ("another_service", required_capabilities[2].service_name);
+  EXPECT_EQ("cap5", required_capabilities[2].capability_name);
+  EXPECT_EQ("one_more_service", required_capabilities[3].service_name);
+  EXPECT_EQ("", required_capabilities[3].capability_name);
+
+  const auto& exposed_filters = manifest.exposed_interface_filter_capabilities;
+  ASSERT_EQ(1u, exposed_filters.size());
+  EXPECT_EQ("navigation:frame", exposed_filters[0].filter_name);
+  EXPECT_EQ("cap6", exposed_filters[0].capability_name);
+  EXPECT_THAT(exposed_filters[0].interface_names, ElementsAre("interface4"));
+
+  const auto& required_filters =
+      manifest.required_interface_filter_capabilities;
+  ASSERT_EQ(2u, required_filters.size());
+  EXPECT_EQ("navigation:frame", required_filters[0].filter_name);
+  EXPECT_EQ("yet_another_service", required_filters[0].service_name);
+  EXPECT_EQ("cap7", required_filters[0].capability_name);
+  EXPECT_EQ("navigation:frame", required_filters[1].filter_name);
+  EXPECT_EQ("yet_another_service", required_filters[1].service_name);
+  EXPECT_EQ("cap8", required_filters[1].capability_name);
+
+  ASSERT_EQ(2u, manifest.packaged_services.size());
+  EXPECT_EQ("packaged1", manifest.packaged_services[0].service_name);
+  EXPECT_EQ("packaged2", manifest.packaged_services[1].service_name);
+}
+
+TEST(ManifestTest, Amend) {
+  // Verify that everything is properly merged when amending potentially
+  // overlapping capability metadata.
+  Manifest manifest =
+      ManifestBuilder()
+          .ExposeCapability("cap1", {"interface1", "interface2"})
+          .RequireCapability("service1", "cap2")
+          .RequireCapability("service2", "cap3")
+          .ExposeInterfaceFilterCapability_Deprecated(
+              "filter1", "filtercap1", {"interface3", "interface4"})
+          .RequireInterfaceFilterCapability_Deprecated("service3", "filter2",
+                                                       "filtercap2")
+          .Build();
+
+  Manifest overlay = ManifestBuilder()
+                         .ExposeCapability("cap1", {"xinterface1"})
+                         .ExposeCapability("xcap1", {"xinterface2"})
+                         .RequireCapability("xservice1", "xcap2")
+                         .ExposeInterfaceFilterCapability_Deprecated(
+                             "filter1", "filtercap1", {"xinterface3"})
+                         .ExposeInterfaceFilterCapability_Deprecated(
+                             "xfilter1", "xfiltercap1", {"xinterface4"})
+                         .RequireInterfaceFilterCapability_Deprecated(
+                             "xservice2", "xfilter2", "xfiltercap2")
+                         .Build();
+
+  manifest.Amend(std::move(overlay));
+
+  const auto& exposed_capabilities = manifest.exposed_capabilities;
+  ASSERT_EQ(2u, exposed_capabilities.size());
+  EXPECT_EQ("cap1", exposed_capabilities[0].capability_name);
+  EXPECT_THAT(exposed_capabilities[0].interface_names,
+              ElementsAre("interface1", "interface2", "xinterface1"));
+
+  const auto& required_capabilities = manifest.required_capabilities;
+  ASSERT_EQ(3u, required_capabilities.size());
+  EXPECT_EQ("service1", required_capabilities[0].service_name);
+  EXPECT_EQ("cap2", required_capabilities[0].capability_name);
+  EXPECT_EQ("service2", required_capabilities[1].service_name);
+  EXPECT_EQ("cap3", required_capabilities[1].capability_name);
+  EXPECT_EQ("xservice1", required_capabilities[2].service_name);
+  EXPECT_EQ("xcap2", required_capabilities[2].capability_name);
+
+  const auto& exposed_filters = manifest.exposed_interface_filter_capabilities;
+  ASSERT_EQ(2u, exposed_filters.size());
+  EXPECT_EQ("filter1", exposed_filters[0].filter_name);
+  EXPECT_EQ("filtercap1", exposed_filters[0].capability_name);
+  EXPECT_THAT(exposed_filters[0].interface_names,
+              ElementsAre("interface3", "interface4", "xinterface3"));
+
+  EXPECT_EQ("xfilter1", exposed_filters[1].filter_name);
+  EXPECT_EQ("xfiltercap1", exposed_filters[1].capability_name);
+  EXPECT_THAT(exposed_filters[1].interface_names, ElementsAre("xinterface4"));
+
+  const auto& required_filters =
+      manifest.required_interface_filter_capabilities;
+  ASSERT_EQ(2u, required_filters.size());
+  EXPECT_EQ("service3", required_filters[0].service_name);
+  EXPECT_EQ("filter2", required_filters[0].filter_name);
+  EXPECT_EQ("filtercap2", required_filters[0].capability_name);
+  EXPECT_EQ("xservice2", required_filters[1].service_name);
+  EXPECT_EQ("xfilter2", required_filters[1].filter_name);
+  EXPECT_EQ("xfiltercap2", required_filters[1].capability_name);
+}
+
 }  // namespace service_manager
diff --git a/services/service_manager/service_manager.h b/services/service_manager/service_manager.h
index f6bc4ea..2a046f9 100644
--- a/services/service_manager/service_manager.h
+++ b/services/service_manager/service_manager.h
@@ -50,10 +50,11 @@
   // |service_process_launcher_factory| is an instance of an object capable of
   // vending implementations of ServiceProcessLauncher, e.g. for out-of-process
   // execution.
-  explicit ServiceManager(std::unique_ptr<ServiceProcessLauncherFactory>
-                              service_process_launcher_factory,
-                          const std::vector<Manifest>& manifests,
-                          catalog::ManifestProvider* manifest_provider);
+  explicit ServiceManager(
+      std::unique_ptr<ServiceProcessLauncherFactory>
+          service_process_launcher_factory,
+      const std::vector<Manifest>& manifests,
+      catalog::ManifestProvider* manifest_provider = nullptr);
 
   // |service_process_launcher_factory| is an instance of an object capable of
   // vending implementations of ServiceProcessLauncher, e.g. for out-of-process
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index 424d0099..386b696 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -1060,18 +1060,6 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
-        "test": "views_mus_interactive_ui_tests"
-      },
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
-        "test": "views_mus_unittests"
-      },
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
         "test": "views_unittests"
       },
       {
@@ -1765,18 +1753,6 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
-        "test": "views_mus_interactive_ui_tests"
-      },
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
-        "test": "views_mus_unittests"
-      },
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
         "test": "views_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index e16362b..32b6db6 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -3873,6 +3873,9 @@
     ],
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.base_unittests.filter"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -3922,6 +3925,12 @@
         "test": "base_unittests"
       },
       {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "castrunner_tests"
+      },
+      {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter"
         ],
@@ -4021,6 +4030,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "webrunner_smoketests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "webrunner_unittests"
       }
     ]
@@ -4042,6 +4057,17 @@
         "test": "base_unittests"
       },
       {
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
+        "test": "castrunner_tests"
+      },
+      {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter"
         ],
@@ -4216,6 +4242,17 @@
             }
           ]
         },
+        "test": "webrunner_smoketests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
         "test": "webrunner_unittests"
       }
     ]
@@ -4237,6 +4274,17 @@
         "test": "base_unittests"
       },
       {
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
+        "test": "castrunner_tests"
+      },
+      {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter"
         ],
@@ -4425,6 +4473,17 @@
             }
           ]
         },
+        "test": "webrunner_smoketests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
         "test": "webrunner_unittests"
       }
     ]
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index dc32b28..5c78ebb 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -2226,26 +2226,6 @@
     "isolated_scripts": [
       {
         "args": [
-          "-v",
-          "--one-frame-only",
-          "--shard-timeout=500"
-        ],
-        "isolate_name": "angle_perftests",
-        "name": "angle_perftests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "L",
-              "device_type": "hammerhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        }
-      },
-      {
-        "args": [
           "context_lost",
           "--show-stdout",
           "--browser=android-chromium",
@@ -8666,6 +8646,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -8683,7 +8664,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -8703,7 +8685,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -8721,6 +8704,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "dawn_end2end_tests"
@@ -8738,7 +8722,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -8754,7 +8739,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -8770,7 +8756,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -8783,7 +8770,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -8800,7 +8788,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "services_unittests"
       }
@@ -8827,6 +8816,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8851,6 +8841,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8875,6 +8866,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8899,6 +8891,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8927,6 +8920,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8958,6 +8952,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -8997,6 +8992,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9022,6 +9018,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9046,6 +9043,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9072,6 +9070,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -9097,6 +9096,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -9120,6 +9120,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -9138,7 +9139,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -9159,7 +9161,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -9178,6 +9181,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "dawn_end2end_tests"
@@ -9196,7 +9200,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -9213,7 +9218,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -9230,7 +9236,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -9244,7 +9251,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -9262,7 +9270,8 @@
               "os": "Mac-10.13.6",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "services_unittests"
       }
@@ -9290,6 +9299,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9315,6 +9325,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9340,6 +9351,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9365,6 +9377,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9394,6 +9407,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9426,6 +9440,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9466,6 +9481,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9492,6 +9508,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9517,6 +9534,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -9544,6 +9562,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -9570,6 +9589,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16036,6 +16056,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -16052,7 +16073,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests"
       },
@@ -16069,7 +16091,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -16085,7 +16108,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       },
@@ -16105,7 +16129,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -16123,6 +16148,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "dawn_end2end_tests"
@@ -16140,7 +16166,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -16158,7 +16185,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -16174,7 +16202,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -16190,7 +16219,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -16208,7 +16238,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -16227,7 +16258,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -16240,7 +16272,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -16253,7 +16286,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests"
       },
@@ -16272,7 +16306,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -16291,7 +16326,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -16305,7 +16341,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "xr_browser_tests"
       }
@@ -16332,6 +16369,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16356,6 +16394,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16380,6 +16419,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16404,6 +16444,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16432,6 +16473,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16463,6 +16505,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16502,6 +16545,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16527,6 +16571,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16551,6 +16596,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -16577,6 +16623,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -16604,6 +16651,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -16631,6 +16679,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -16656,6 +16705,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16681,6 +16731,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16706,6 +16757,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16731,6 +16783,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16756,6 +16809,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16781,6 +16835,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -16803,6 +16858,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -16819,7 +16875,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests"
       },
@@ -16836,7 +16893,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -16852,7 +16910,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       },
@@ -16872,7 +16931,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -16890,6 +16950,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "dawn_end2end_tests"
@@ -16907,7 +16968,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -16925,7 +16987,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -16941,7 +17004,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -16957,7 +17021,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -16975,7 +17040,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -16994,7 +17060,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -17007,7 +17074,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -17020,7 +17088,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests"
       },
@@ -17039,7 +17108,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -17058,7 +17128,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -17077,7 +17148,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -17091,7 +17163,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "xr_browser_tests"
       }
@@ -17112,7 +17185,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         }
       },
       {
@@ -17136,6 +17210,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17160,6 +17235,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17184,6 +17260,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17208,6 +17285,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17236,6 +17314,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17267,6 +17346,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17287,7 +17367,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         }
       },
       {
@@ -17326,6 +17407,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17351,6 +17433,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17375,6 +17458,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -17395,7 +17479,8 @@
               "os": "Windows-10",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         }
       },
       {
@@ -17421,6 +17506,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -17448,6 +17534,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -17475,6 +17562,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -17500,6 +17588,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -17525,6 +17614,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -17550,6 +17640,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -17575,6 +17666,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -17600,6 +17692,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -17625,6 +17718,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -19826,6 +19920,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -19842,7 +19937,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       }
@@ -19869,6 +19965,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -19894,6 +19991,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -19919,6 +20017,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -19941,6 +20040,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -19957,7 +20057,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests"
       },
@@ -19974,7 +20075,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -19990,7 +20092,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       },
@@ -20007,7 +20110,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -20025,7 +20129,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -20041,7 +20146,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -20057,7 +20163,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20075,7 +20182,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20094,7 +20202,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20107,7 +20216,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -20120,7 +20230,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests"
       },
@@ -20139,7 +20250,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -20158,7 +20270,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -20177,7 +20290,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       }
@@ -20204,6 +20318,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20228,6 +20343,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20252,6 +20368,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20276,6 +20393,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20304,6 +20422,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20335,6 +20454,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20374,6 +20494,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20399,6 +20520,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20423,6 +20545,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20447,6 +20570,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -20472,6 +20596,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -20497,6 +20622,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -20522,6 +20648,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -20544,6 +20671,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -20560,7 +20688,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests"
       },
@@ -20577,7 +20706,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -20593,7 +20723,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       },
@@ -20613,7 +20744,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -20630,7 +20762,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -20648,7 +20781,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -20664,7 +20798,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -20680,7 +20815,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20698,7 +20834,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20717,7 +20854,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -20730,7 +20868,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -20743,7 +20882,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests"
       },
@@ -20762,7 +20902,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -20781,7 +20922,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -20800,7 +20942,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       }
@@ -20827,6 +20970,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20851,6 +20995,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20875,6 +21020,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20899,6 +21045,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20927,6 +21074,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20958,6 +21106,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -20997,6 +21146,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -21022,6 +21172,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -21046,6 +21197,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -21072,6 +21224,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -21097,6 +21250,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -21122,6 +21276,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -21147,6 +21302,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -21172,6 +21328,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -21197,6 +21354,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -21219,6 +21377,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests",
@@ -21244,7 +21403,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests",
         "trigger_script": {
@@ -21270,7 +21430,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests",
         "trigger_script": {
@@ -21295,7 +21456,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests",
         "trigger_script": {
@@ -21324,7 +21486,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests",
         "trigger_script": {
@@ -21350,7 +21513,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests",
         "trigger_script": {
@@ -21377,7 +21541,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests",
         "trigger_script": {
@@ -21402,7 +21567,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests",
         "trigger_script": {
@@ -21427,7 +21593,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test",
         "trigger_script": {
@@ -21454,7 +21621,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test",
         "trigger_script": {
@@ -21482,7 +21650,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test",
         "trigger_script": {
@@ -21504,7 +21673,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests",
         "trigger_script": {
@@ -21526,7 +21696,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests",
         "trigger_script": {
@@ -21554,7 +21725,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest",
         "trigger_script": {
@@ -21582,7 +21754,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest",
         "trigger_script": {
@@ -21610,7 +21783,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest",
         "trigger_script": {
@@ -21646,6 +21820,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21679,6 +21854,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21712,6 +21888,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21745,6 +21922,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21782,6 +21960,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21822,6 +22001,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21870,6 +22050,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21904,6 +22085,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21937,6 +22119,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         },
         "trigger_script": {
@@ -21972,6 +22155,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         },
@@ -22006,6 +22190,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22040,6 +22225,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22074,6 +22260,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22108,6 +22295,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22142,6 +22330,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22176,6 +22365,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         },
@@ -22208,6 +22398,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_deqp_gles2_tests"
@@ -22227,6 +22418,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_deqp_gles2_tests"
@@ -22249,6 +22441,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "shards": 4
         },
         "test": "angle_end2end_tests"
@@ -22265,7 +22458,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_gles1_conformance_tests"
       },
@@ -22282,7 +22476,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_unittests"
       },
@@ -22298,7 +22493,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "angle_white_box_tests"
       },
@@ -22318,7 +22514,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "browser_tests"
       },
@@ -22335,7 +22532,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -22353,7 +22551,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_tests"
       },
@@ -22369,7 +22568,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gl_unittests"
       },
@@ -22385,7 +22585,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -22403,7 +22604,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -22422,7 +22624,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gles2_conform_test"
       },
@@ -22435,7 +22638,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "gpu_unittests"
       },
@@ -22448,7 +22652,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "swiftshader_unittests"
       },
@@ -22467,7 +22672,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -22486,7 +22692,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       },
@@ -22505,7 +22712,8 @@
               "os": "Windows-2008ServerR2-SP1",
               "pool": "Chrome-GPU"
             }
-          ]
+          ],
+          "expiration": 21600
         },
         "test": "video_decode_accelerator_unittest"
       }
@@ -22532,6 +22740,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22556,6 +22765,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22580,6 +22790,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22604,6 +22815,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22632,6 +22844,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22663,6 +22876,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22702,6 +22916,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22727,6 +22942,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22751,6 +22967,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false
         }
       },
@@ -22777,6 +22994,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 20
         }
@@ -22802,6 +23020,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -22827,6 +23046,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -22852,6 +23072,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -22877,6 +23098,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -22902,6 +23124,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
@@ -22927,6 +23150,7 @@
               "pool": "Chrome-GPU"
             }
           ],
+          "expiration": 21600,
           "idempotent": false,
           "shards": 2
         }
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index f1f2c1e..8112d09 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -665,6 +665,20 @@
       },
       {
         "args": [
+          "--qemu-require-kvm"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
+        "test": "castrunner_tests"
+      },
+      {
+        "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter",
           "--qemu-require-kvm"
         ],
@@ -875,6 +889,20 @@
             }
           ]
         },
+        "test": "webrunner_smoketests"
+      },
+      {
+        "args": [
+          "--qemu-require-kvm"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "kvm": "1"
+            }
+          ]
+        },
         "test": "webrunner_unittests"
       }
     ]
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index d6324176..cce41ad7 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -5035,24 +5035,6 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
-        "test": "views_mus_interactive_ui_tests"
-      },
-      {
-        "args": [
-          "--test-launcher-print-test-stdio=always"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
-        "test": "views_mus_unittests"
-      },
-      {
-        "args": [
-          "--test-launcher-print-test-stdio=always"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
         "test": "views_unittests"
       },
       {
@@ -6577,36 +6559,6 @@
             }
           ]
         },
-        "test": "views_mus_interactive_ui_tests"
-      },
-      {
-        "args": [
-          "--test-launcher-print-test-stdio=always"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "views_mus_unittests"
-      },
-      {
-        "args": [
-          "--test-launcher-print-test-stdio=always"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
         "test": "views_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index 384be7e..9aeff90 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -6,48 +6,6 @@
       {
         "args": [
           "--gtest-benchmark-name",
-          "angle_perftests",
-          "--non-telemetry=true",
-          "--migrated-test=true",
-          "--shard-timeout=300"
-        ],
-        "isolate_name": "angle_perftests",
-        "merge": {
-          "script": "//tools/perf/process_perf_results.py"
-        },
-        "name": "angle_perftests",
-        "override_compile_targets": [
-          "angle_perftests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 7200,
-          "hard_timeout": 36000,
-          "ignore_task_failure": false,
-          "io_timeout": 1800,
-          "shards": 1,
-          "upload_test_results": true
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/perf_device_trigger.py"
-        }
-      },
-      {
-        "args": [
-          "--gtest-benchmark-name",
           "components_perftests",
           "--non-telemetry=true",
           "--migrated-test=true"
diff --git a/testing/buildbot/filters/BUILD.gn b/testing/buildbot/filters/BUILD.gn
index c229657..915471b 100644
--- a/testing/buildbot/filters/BUILD.gn
+++ b/testing/buildbot/filters/BUILD.gn
@@ -31,6 +31,7 @@
 
 source_set("chromeos_filters") {
   data = [
+    "//testing/buildbot/filters/chromeos.base_unittests.filter",
     "//testing/buildbot/filters/chromeos.media_unittests.filter",
     "//testing/buildbot/filters/chromeos.services_unittests.filter",
   ]
diff --git a/testing/buildbot/filters/chromeos.base_unittests.filter b/testing/buildbot/filters/chromeos.base_unittests.filter
new file mode 100644
index 0000000..17f608a0
--- /dev/null
+++ b/testing/buildbot/filters/chromeos.base_unittests.filter
@@ -0,0 +1,2 @@
+# TODO(crbug.com/917086): Enable this.
+-SysInfoTest.GetHardwareInfo
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index c9ba17b6..b8683ce 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -411,6 +411,10 @@
     "label": "//media/capture:capture_unittests",
     "type": "windowed_test_launcher",
   },
+  "castrunner_tests": {
+    "label": "//webrunner:castrunner_tests",
+    "type": "console_test_launcher",
+  },
   "cast_audio_backend_unittests": {
     "label": "//chromecast/media/cma/backend:cast_audio_backend_unittests",
     "type": "console_test_launcher",
@@ -2556,14 +2560,6 @@
     "label": "//media/gpu:video_decode_accelerator_unittest",
     "type": "raw",
   },
-  "views_mus_interactive_ui_tests": {
-    "label": "//ui/views/mus:views_mus_interactive_ui_tests",
-    "type": "windowed_test_launcher",
-  },
-  "views_mus_unittests": {
-    "label": "//ui/views/mus:views_mus_unittests",
-    "type": "windowed_test_launcher",
-  },
   "views_perftests": {
     "args": [
       "--xvfb",
@@ -2731,6 +2727,10 @@
     "label": "//webrunner:webrunner_browsertests",
     "type": "console_test_launcher",
   },
+  "webrunner_smoketests": {
+    "label": "//webrunner:webrunner_smoketests",
+    "type": "console_test_launcher",
+  },
   "webrunner_unittests": {
     "label": "//webrunner:webrunner_unittests",
     "type": "console_test_launcher",
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 957da86..2cf7daea 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -39,6 +39,7 @@
   },
   'angle_perftests': {
     'remove_from': [
+      'Android FYI Release (Nexus 5)',  # crbug.com/915429
       'Android FYI Release (Nexus 6)',  # anglebug.com/2433
     ],
   },
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index eb7b9a9..8a64d7d 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -462,7 +462,11 @@
     },
 
     'chromeos_device_kevin_tests': {
-      'base_unittests': {},
+      'base_unittests': {
+        'args': [
+          '--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.base_unittests.filter',
+        ],
+      },
       'chrome_kevin_tast_tests': {},
       'cros_vm_sanity_test': {},
     },
@@ -2711,6 +2715,7 @@
 
     'fuchsia_gtests': {
       'base_unittests': {},
+      'castrunner_tests': {},
       'content_unittests': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter',
@@ -2746,6 +2751,7 @@
         ],
       },
       'webrunner_browsertests': {},
+      'webrunner_smoketests': {},
       'webrunner_unittests': {},
     },
 
@@ -3554,8 +3560,6 @@
         ],
       },
       'ui_chromeos_unittests': {},
-      'views_mus_unittests': {},
-      'views_mus_interactive_ui_tests': {},
       'wayland_client_perftests': {},
     },
 
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 8f51f6a1..47905f26 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -2443,6 +2443,7 @@
         'os_type': 'mac',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'mac_mini_intel_gpu_experimental',
         ],
         'test_suites': {
@@ -2454,6 +2455,7 @@
         'os_type': 'mac',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'mac_retina_amd_gpu_experimental',
         ],
         'test_suites': {
@@ -2696,6 +2698,7 @@
         'os_type': 'win',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'win10_intel_hd_630_experimental',
         ],
         'test_suites': {
@@ -2709,6 +2712,7 @@
         'os_type': 'win',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'win10_nvidia_quadro_p400_experimental',
         ],
         'test_suites': {
@@ -2767,6 +2771,7 @@
         'os_type': 'win',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'win7_amd_r7_240',
         ],
         'test_suites': {
@@ -2778,6 +2783,7 @@
         'os_type': 'win',
         'browser_config': 'debug',
         'mixins': [
+          'limited_capacity_bot',
           'win7_amd_r7_240',
         ],
         'test_suites': {
@@ -2789,6 +2795,7 @@
         'os_type': 'win',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'win7_amd_r7_240',
         ],
         'test_suites': {
@@ -2800,6 +2807,7 @@
         'os_type': 'win',
         'browser_config': 'release',
         'mixins': [
+          'limited_capacity_bot',
           'win7_nvidia_quadro_p400',
         ],
         'test_suites': {
@@ -2811,6 +2819,7 @@
       'Win7 FYI dEQP Release (AMD)': {
         'os_type': 'win',
         'mixins': [
+          'limited_capacity_bot',
           'win7_amd_r7_240',
         ],
         'test_suites': {
@@ -2821,6 +2830,7 @@
         'os_type': 'win',
         'browser_config': 'release_x64',
         'mixins': [
+          'limited_capacity_bot',
           'win7_nvidia_quadro_p400',
         ],
         'test_suites': {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 33c43dab..607dc7e 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2122,7 +2122,7 @@
             ]
         }
     ],
-    "HTTPBadPhase3": [
+    "HTTPReallyBadFinal": [
         {
             "platforms": [
                 "android",
@@ -2134,9 +2134,9 @@
             ],
             "experiments": [
                 {
-                    "name": "NotSecureWarning",
+                    "name": "enabled",
                     "params": {
-                        "treatment": "warning"
+                        "treatment": "dangerous"
                     },
                     "enable_features": [
                         "MarkHttpAs"
diff --git a/third_party/blink/common/feature_policy/feature_policy.cc b/third_party/blink/common/feature_policy/feature_policy.cc
index 6bdfacf3..d56b1580 100644
--- a/third_party/blink/common/feature_policy/feature_policy.cc
+++ b/third_party/blink/common/feature_policy/feature_policy.cc
@@ -34,12 +34,10 @@
     mojom::FeaturePolicyFeature feature,
     bool matches_all_origins,
     bool matches_opaque_src,
-    mojom::FeaturePolicyDisposition disposition,
     std::vector<url::Origin> origins)
     : feature(feature),
       matches_all_origins(matches_all_origins),
       matches_opaque_src(matches_opaque_src),
-      disposition(disposition),
       origins(std::move(origins)) {}
 
 ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration(
@@ -54,25 +52,11 @@
                 const ParsedFeaturePolicyDeclaration& rhs) {
   if (lhs.feature != rhs.feature)
     return false;
-  if (lhs.disposition != rhs.disposition)
-    return false;
   if (lhs.matches_all_origins != rhs.matches_all_origins)
     return false;
   return lhs.matches_all_origins || (lhs.origins == rhs.origins);
 }
 
-std::unique_ptr<ParsedFeaturePolicy> DirectivesWithDisposition(
-    mojom::FeaturePolicyDisposition disposition,
-    const ParsedFeaturePolicy& policy) {
-  std::unique_ptr<ParsedFeaturePolicy> filtered_policy =
-      std::make_unique<ParsedFeaturePolicy>();
-  for (const auto& directive : policy) {
-    if (directive.disposition == disposition)
-      filtered_policy->push_back(directive);
-  }
-  return filtered_policy;
-}
-
 FeaturePolicy::Allowlist::Allowlist() : matches_all_origins_(false) {}
 
 FeaturePolicy::Allowlist::Allowlist(const Allowlist& rhs) = default;
diff --git a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc
index d96a6b5..468be4c 100644
--- a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc
+++ b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc
@@ -13,7 +13,6 @@
     Read(blink::mojom::ParsedFeaturePolicyDeclarationDataView in,
          blink::ParsedFeaturePolicyDeclaration* out) {
   out->matches_all_origins = in.matches_all_origins();
-  out->disposition = in.disposition();
 
   return in.ReadOrigins(&out->origins) && in.ReadFeature(&out->feature);
 }
diff --git a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h
index c0fe8ee..8f8bfb9 100644
--- a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h
+++ b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h
@@ -83,10 +83,6 @@
       const blink::ParsedFeaturePolicyDeclaration& policy) {
     return policy.matches_all_origins;
   }
-  static blink::mojom::FeaturePolicyDisposition disposition(
-      const blink::ParsedFeaturePolicyDeclaration& policy) {
-    return policy.disposition;
-  }
   static const std::vector<url::Origin>& origins(
       const blink::ParsedFeaturePolicyDeclaration& policy) {
     return policy.origins;
diff --git a/third_party/blink/common/feature_policy/feature_policy_unittest.cc b/third_party/blink/common/feature_policy/feature_policy_unittest.cc
index 1f8294f..ccbfdd9 100644
--- a/third_party/blink/common/feature_policy/feature_policy_unittest.cc
+++ b/third_party/blink/common/feature_policy/feature_policy_unittest.cc
@@ -146,7 +146,6 @@
   policy2->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature));
 }
@@ -172,7 +171,6 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_a_);
@@ -208,7 +206,6 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -239,7 +236,6 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -261,7 +257,6 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultOnFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultOnFeature));
 }
@@ -279,7 +274,6 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultOnFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_a_);
@@ -301,7 +295,6 @@
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultOnFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature));
 }
@@ -328,7 +321,6 @@
   policy2->SetHeaderPolicy({{{kDefaultOnFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_c_);
@@ -349,7 +341,6 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultOnFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -373,7 +364,6 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -403,7 +393,6 @@
   policy1->SetHeaderPolicy({{{kDefaultOnFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -436,7 +425,6 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -469,14 +457,12 @@
   policy1->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_b_);
@@ -485,7 +471,6 @@
   policy4->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_c_}}}});
   EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultOffFeature));
   EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOffFeature));
@@ -510,12 +495,10 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_a_);
@@ -543,12 +526,10 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_a_);
@@ -579,14 +560,12 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_, origin_c_}}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_c_);
@@ -614,7 +593,6 @@
   policy1->SetHeaderPolicy({{{kDefaultOnFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -648,7 +626,6 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
@@ -684,21 +661,16 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}},
                              {kDefaultOnFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentPolicy(policy1.get(), origin_b_);
   policy2->SetHeaderPolicy(
-      {{{kDefaultSelfFeature, true, false,
-         mojom::FeaturePolicyDisposition::kEnforce, std::vector<url::Origin>()},
-        {kDefaultOnFeature, true, false,
-         mojom::FeaturePolicyDisposition::kEnforce,
-         std::vector<url::Origin>()}}});
+      {{{kDefaultSelfFeature, true, false, std::vector<url::Origin>()},
+        {kDefaultOnFeature, true, false, std::vector<url::Origin>()}}});
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentPolicy(policy2.get(), origin_c_);
   EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature));
@@ -721,7 +693,6 @@
   policy1->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}}}});
   EXPECT_TRUE(
       policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_));
@@ -754,7 +725,6 @@
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_);
@@ -791,7 +761,6 @@
       CreateFromParentPolicy(nullptr, origin_a_);
   ParsedFeaturePolicy frame_policy = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_);
@@ -841,7 +810,6 @@
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_);
@@ -849,7 +817,6 @@
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_c_}}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_);
@@ -892,13 +859,11 @@
       CreateFromParentPolicy(nullptr, origin_a_);
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultOnFeature, false, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_);
   ParsedFeaturePolicy frame_policy2 = {
       {{kDefaultOnFeature, false, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_);
@@ -943,13 +908,11 @@
   policy1->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultOffFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_a_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_);
@@ -957,7 +920,6 @@
       {{kDefaultOffFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_);
@@ -1006,33 +968,28 @@
   policy1->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultOffFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_a_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_);
   policy2->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_}}}});
   ParsedFeaturePolicy frame_policy2 = {
       {{kDefaultOffFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_);
   policy3->SetHeaderPolicy({{{kDefaultOffFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   EXPECT_TRUE(
       policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_));
@@ -1080,24 +1037,20 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_a_, origin_b_}}}});
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultSelfFeature, false, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_);
   ParsedFeaturePolicy frame_policy2 = {
       {{kDefaultSelfFeature, false, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_);
   policy3->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   EXPECT_FALSE(
       policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_));
@@ -1136,16 +1089,13 @@
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_);
   policy2->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   ParsedFeaturePolicy frame_policy2 = {
       {{kDefaultSelfFeature, false, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_);
@@ -1182,19 +1132,16 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_);
   ParsedFeaturePolicy frame_policy2 = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_a_);
@@ -1236,13 +1183,11 @@
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature,
                               false,
                               false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               {origin_b_}}}});
   ParsedFeaturePolicy frame_policy1 = {
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_a_}}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_);
@@ -1250,13 +1195,11 @@
       {{kDefaultSelfFeature,
         false,
         false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         {origin_b_}}}};
   std::unique_ptr<FeaturePolicy> policy3 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_);
   ParsedFeaturePolicy frame_policy3 = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy4 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy3, origin_b_);
@@ -1324,7 +1267,6 @@
   url::Origin sandboxed_origin = url::Origin();
   ParsedFeaturePolicy frame_policy = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy(
       policy1.get(), frame_policy, sandboxed_origin);
@@ -1357,7 +1299,6 @@
   url::Origin sandboxed_origin = url::Origin();
   ParsedFeaturePolicy frame_policy = {
       {{kDefaultSelfFeature, false, true,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy(
       policy1.get(), frame_policy, sandboxed_origin);
@@ -1387,12 +1328,10 @@
   std::unique_ptr<FeaturePolicy> policy1 =
       CreateFromParentPolicy(nullptr, origin_a_);
   policy1->SetHeaderPolicy({{{kDefaultSelfFeature, true, false,
-                              mojom::FeaturePolicyDisposition::kEnforce,
                               std::vector<url::Origin>()}}});
   url::Origin sandboxed_origin = url::Origin();
   ParsedFeaturePolicy frame_policy = {
       {{kDefaultSelfFeature, false, true,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy(
       policy1.get(), frame_policy, sandboxed_origin);
@@ -1427,7 +1366,6 @@
   url::Origin sandboxed_origin_2 = url::Origin();
   ParsedFeaturePolicy frame_policy = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy(
       policy1.get(), frame_policy, sandboxed_origin_1);
@@ -1473,13 +1411,11 @@
   url::Origin sandboxed_origin_2 = sandboxed_origin_1.DeriveNewOpaqueOrigin();
   ParsedFeaturePolicy frame_policy_1 = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy(
       policy1.get(), frame_policy_1, sandboxed_origin_1);
   ParsedFeaturePolicy frame_policy_2 = {
       {{kDefaultSelfFeature, true, false,
-        mojom::FeaturePolicyDisposition::kEnforce,
         std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy3 = CreateFromParentWithFramePolicy(
       policy2.get(), frame_policy_2, sandboxed_origin_2);
@@ -1512,10 +1448,8 @@
       CreateFromParentPolicy(nullptr, origin_a_);
   ParsedFeaturePolicy frame_policy = {
       {{mojom::FeaturePolicyFeature::kNotFound, false, true,
-        mojom::FeaturePolicyDisposition::kEnforce, std::vector<url::Origin>()},
-       {kUnavailableFeature, false, true,
-        mojom::FeaturePolicyDisposition::kEnforce,
-        std::vector<url::Origin>()}}};
+        std::vector<url::Origin>()},
+       {kUnavailableFeature, false, true, std::vector<url::Origin>()}}};
   std::unique_ptr<FeaturePolicy> policy2 =
       CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_);
   EXPECT_FALSE(PolicyContainsInheritedValue(
@@ -1528,19 +1462,4 @@
       PolicyContainsInheritedValue(policy2.get(), kUnavailableFeature));
 }
 
-TEST_F(FeaturePolicyTest, TestReportOnlyFeaturesIncludedInHeader) {
-  // +---------------------------------------------------+
-  // |(1)Origin A                                        |
-  // |Feature-Policy: default-self-report-only 'none'    |
-  // +---------------------------------------------------+
-  // A feature which is tagged as '-report-only' should be included in the
-  // reporting policy.
-  std::unique_ptr<FeaturePolicy> policy1 =
-      CreateFromParentPolicy(nullptr, origin_a_);
-  policy1->SetHeaderPolicy({{{kDefaultSelfFeature, false, false,
-                              mojom::FeaturePolicyDisposition::kReport,
-                              std::vector<url::Origin>()}}});
-  EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultSelfFeature));
-}
-
 }  // namespace blink
diff --git a/third_party/blink/public/common/feature_policy/feature_policy.h b/third_party/blink/public/common/feature_policy/feature_policy.h
index 0359048..fbaf0e1 100644
--- a/third_party/blink/public/common/feature_policy/feature_policy.h
+++ b/third_party/blink/public/common/feature_policy/feature_policy.h
@@ -93,7 +93,6 @@
   ParsedFeaturePolicyDeclaration(mojom::FeaturePolicyFeature feature,
                                  bool matches_all_origins,
                                  bool matches_opaque_src,
-                                 mojom::FeaturePolicyDisposition disposition,
                                  std::vector<url::Origin> origins);
   ParsedFeaturePolicyDeclaration(const ParsedFeaturePolicyDeclaration& rhs);
   ParsedFeaturePolicyDeclaration& operator=(
@@ -108,7 +107,6 @@
   // of the iframe to be present in |origins|, but for sandboxed iframes, this
   // flag is set instead.
   bool matches_opaque_src;
-  mojom::FeaturePolicyDisposition disposition;
   // An alphabetically sorted list of all the origins allowed.
   std::vector<url::Origin> origins;
 };
@@ -118,13 +116,6 @@
 bool BLINK_COMMON_EXPORT operator==(const ParsedFeaturePolicyDeclaration& lhs,
                                     const ParsedFeaturePolicyDeclaration& rhs);
 
-// ParsedFeaturePolicy objects can contain directives of both enforcing and
-// report-only dispositions. This utility function will extract just the items
-// of one disposition or the other.
-BLINK_COMMON_EXPORT std::unique_ptr<ParsedFeaturePolicy>
-DirectivesWithDisposition(mojom::FeaturePolicyDisposition disposition,
-                          const ParsedFeaturePolicy& policy);
-
 class BLINK_COMMON_EXPORT FeaturePolicy {
  public:
   // Represents a collection of origins which make up an allowlist in a feature
diff --git a/third_party/blink/public/mojom/feature_policy/feature_policy.mojom b/third_party/blink/public/mojom/feature_policy/feature_policy.mojom
index da11cfd5..d05fe59 100644
--- a/third_party/blink/public/mojom/feature_policy/feature_policy.mojom
+++ b/third_party/blink/public/mojom/feature_policy/feature_policy.mojom
@@ -121,6 +121,5 @@
 struct ParsedFeaturePolicyDeclaration {
   FeaturePolicyFeature feature;
   bool matches_all_origins;
-  FeaturePolicyDisposition disposition;
   array<url.mojom.Origin> origins;
 };
diff --git a/third_party/blink/public/mojom/payments/payment_request.mojom b/third_party/blink/public/mojom/payments/payment_request.mojom
index f79685d..46e0d56 100644
--- a/third_party/blink/public/mojom/payments/payment_request.mojom
+++ b/third_party/blink/public/mojom/payments/payment_request.mojom
@@ -44,11 +44,22 @@
   QUERY_QUOTA_EXCEEDED,
 
   // Used only on localhost and file:// schemes to warn web developer that the
-  // query quota has exceeded, but Chrome is returning an answer anyway.
+  // query quota has been exceeded, but Chrome is returning an answer anyway.
   WARNING_CAN_MAKE_PAYMENT,
   WARNING_CANNOT_MAKE_PAYMENT,
 };
 
+enum HasEnrolledInstrumentQueryResult {
+  HAS_ENROLLED_INSTRUMENT,
+  HAS_NO_ENROLLED_INSTRUMENT,
+  QUERY_QUOTA_EXCEEDED,
+
+  // Used only on localhost and file:// schemes to warn web developer that the
+  // query quota has been exceeded, but Chrome is returning an answer anyway.
+  WARNING_HAS_ENROLLED_INSTRUMENT,
+  WARNING_HAS_NO_ENROLLED_INSTRUMENT,
+};
+
 interface PaymentRequestClient {
   OnShippingAddressChange(PaymentAddress address);
   OnShippingOptionChange(string shipping_option_id);
@@ -58,6 +69,7 @@
   OnComplete();
   OnAbort(bool aborted_successfully);
   OnCanMakePayment(CanMakePaymentQueryResult result);
+  OnHasEnrolledInstrument(HasEnrolledInstrumentQueryResult result);
   WarnNoFavicon();
 };
 
@@ -219,6 +231,14 @@
   // the payment response.
   Retry(PaymentValidationErrors errors);
 
-  // Queries whether the user has a form of payment on file.
+  // Queries whether support for the merchant-specified payment method is
+  // available, either because the user has a registered payment handler for
+  // that method, or because the browser can do just-in-time registration for a
+  // suitable payment handler.
   CanMakePayment();
+
+  // Queries whether support for the merchant-specified payment method is
+  // available and the user has an enrolled instrument for that payment method
+  // that is ready to pay.
+  HasEnrolledInstrument();
 };
diff --git a/third_party/blink/public/platform/web_feature.mojom b/third_party/blink/public/platform/web_feature.mojom
index 42e3179..82de52a3 100644
--- a/third_party/blink/public/platform/web_feature.mojom
+++ b/third_party/blink/public/platform/web_feature.mojom
@@ -2158,6 +2158,7 @@
   kCanvasCaptureStream = 2717,
   kV8HTMLMediaElement_CanPlayType_Method = 2718,
   kHistoryLength = 2719,
+  kFeaturePolicyReportOnlyHeader = 2720,
 
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/web/web_document_loader.h b/third_party/blink/public/web/web_document_loader.h
index 9a380bd..2cffdc8 100644
--- a/third_party/blink/public/web/web_document_loader.h
+++ b/third_party/blink/public/web/web_document_loader.h
@@ -34,6 +34,7 @@
 #include <memory>
 
 #include "base/time/time.h"
+#include "services/network/public/mojom/referrer_policy.mojom-shared.h"
 #include "third_party/blink/public/platform/web_archive_info.h"
 #include "third_party/blink/public/platform/web_common.h"
 #include "third_party/blink/public/platform/web_source_location.h"
@@ -50,6 +51,10 @@
 template <typename T>
 class WebVector;
 
+namespace mojom {
+enum class FetchCacheMode : int32_t;
+}  // namespace mojom
+
 // An interface to expose the blink::DocumentLoader to the content layer,
 // including SetExtraData() and GetExtraData() to allow the content layer to
 // store data that isn't relevant to Blink.
@@ -72,6 +77,18 @@
   // specified by a redirect that was followed.
   virtual WebURL GetUrl() const = 0;
 
+  // Returns the http method of the request corresponding to this load.
+  virtual WebString HttpMethod() const = 0;
+
+  // Returns the cache mode of the request corresponding to this load.
+  virtual mojom::FetchCacheMode GetCacheMode() const = 0;
+
+  // Returns the http referrer of the request corresponding to this load.
+  virtual WebString Referrer() const = 0;
+
+  // Returns the referrer policy of the request corresponding to this load.
+  virtual network::mojom::ReferrerPolicy GetReferrerPolicy() const = 0;
+
   // Returns the request corresponding to this datasource.  It may
   // include additional request headers added by WebKit that were not
   // present in the original request.  This request may also correspond
diff --git a/third_party/blink/public/web/web_frame_widget.h b/third_party/blink/public/web/web_frame_widget.h
index 9cd623e..bbc30ef 100644
--- a/third_party/blink/public/web/web_frame_widget.h
+++ b/third_party/blink/public/web/web_frame_widget.h
@@ -57,24 +57,6 @@
       WebWidgetClient*,
       WebLocalFrame* local_root);
 
-  // Overrides the WebFrameWidget's background and base background color. You
-  // can use this to enforce a transparent background, which is useful if you
-  // want to have some custom background rendered behind the widget.
-  virtual void SetBackgroundColorOverride(SkColor) = 0;
-  virtual void ClearBackgroundColorOverride() = 0;
-  virtual void SetBaseBackgroundColorOverride(SkColor) = 0;
-  virtual void ClearBaseBackgroundColorOverride() = 0;
-
-  // Sets the base color used for this WebFrameWidget's background. This is in
-  // effect the default background color used for pages with no
-  // background-color style in effect, or used as the alpha-blended basis for
-  // any pages with translucent background-color style. (For pages with opaque
-  // background-color style, this property is effectively ignored).
-  // Setting this takes effect for the currently loaded page, if any, and
-  // persists across subsequent navigations. Defaults to white prior to the
-  // first call to this method.
-  virtual void SetBaseBackgroundColor(SkColor) = 0;
-
   // Returns the local root of this WebFrameWidget.
   virtual WebLocalFrame* LocalRoot() const = 0;
 
diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h
index 7d14bb6..8d273373 100644
--- a/third_party/blink/public/web/web_view.h
+++ b/third_party/blink/public/web/web_view.h
@@ -365,6 +365,19 @@
                                   unsigned inactive_background_color,
                                   unsigned inactive_foreground_color) = 0;
 
+  // Sets the default background color when the page has not loaded enough to
+  // know a background colour. This can be overridden by the methods below as
+  // well.
+  virtual void SetBaseBackgroundColor(SkColor) {}
+
+  // Overrides the page's background and base background color. You
+  // can use this to enforce a transparent background, which is useful if you
+  // want to have some custom background rendered behind the widget.
+  virtual void SetBackgroundColorOverride(SkColor) {}
+  virtual void ClearBackgroundColorOverride() {}
+  virtual void SetBaseBackgroundColorOverride(SkColor) {}
+  virtual void ClearBaseBackgroundColorOverride() {}
+
   // Modal dialog support ------------------------------------------------
 
   // Call these methods before and after running a nested, modal event loop
diff --git a/third_party/blink/public/web/web_view_client.h b/third_party/blink/public/web/web_view_client.h
index 52839fc..94f99aa 100644
--- a/third_party/blink/public/web/web_view_client.h
+++ b/third_party/blink/public/web/web_view_client.h
@@ -200,6 +200,8 @@
 
   virtual bool CanHandleGestureEvent() { return false; }
 
+  // TODO(danakj): Remove this, there is not going to always be a
+  // Widget+WidgetClient for the view (when the main frame is a proxy).
   virtual WebWidgetClient* WidgetClient() = 0;
 };
 
diff --git a/third_party/blink/public/web/web_widget.h b/third_party/blink/public/web/web_widget.h
index 5cd7278..62a3bf4 100644
--- a/third_party/blink/public/web/web_widget.h
+++ b/third_party/blink/public/web/web_widget.h
@@ -230,12 +230,6 @@
   // reasons such as the user exiting lock, window focus changing, etc.
   virtual void DidLosePointerLock() {}
 
-  // The page background color. Can be used for filling in areas without
-  // content.
-  virtual SkColor BackgroundColor() const {
-    return 0xFFFFFFFF; /* SK_ColorWHITE */
-  }
-
   // Called by client to request showing the context menu.
   virtual void ShowContextMenu(WebMenuSourceType) {}
 
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 1ddb96a..d5b2c06 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -6289,23 +6289,25 @@
   }
 }
 
+const ParsedFeaturePolicy Document::GetOwnerContainerPolicy() const {
+  // If this frame is not the main frame, then get the container policy from its
+  // owner.
+  if (frame_ && frame_->Owner())
+    return frame_->Owner()->ContainerPolicy();
+  return ParsedFeaturePolicy();
+}
+
+const FeaturePolicy* Document::GetParentFeaturePolicy() const {
+  // If this frame is not the main frame, then get the feature policy from its
+  // parent.
+  if (frame_ && !frame_->IsMainFrame())
+    return frame_->Tree().Parent()->GetSecurityContext()->GetFeaturePolicy();
+  return nullptr;
+}
+
 void Document::ApplyFeaturePolicy(const ParsedFeaturePolicy& declared_policy) {
-  FeaturePolicy* parent_feature_policy = nullptr;
-  ParsedFeaturePolicy container_policy;
-
-  // If this frame is not the main frame, then get the appropriate parent policy
-  // and container policy to construct the policy for this frame.
-  if (frame_) {
-    if (!frame_->IsMainFrame()) {
-      parent_feature_policy =
-          frame_->Tree().Parent()->GetSecurityContext()->GetFeaturePolicy();
-    }
-    if (frame_->Owner())
-      container_policy = frame_->Owner()->ContainerPolicy();
-  }
-
-  InitializeFeaturePolicy(declared_policy, container_policy,
-                          parent_feature_policy);
+  InitializeFeaturePolicy(declared_policy, GetOwnerContainerPolicy(),
+                          GetParentFeaturePolicy());
 
   // At this point, the document will not have been installed in the frame's
   // LocalDOMWindow, so we cannot call frame_->IsFeatureEnabled. This calls
@@ -6318,6 +6320,23 @@
           mojom::FeaturePolicyFeature::kVerticalScroll);
 }
 
+void Document::ApplyReportOnlyFeaturePolicyFromHeader(
+    const String& feature_policy_report_only_header) {
+  if (!feature_policy_report_only_header.IsEmpty())
+    UseCounter::Count(*this, WebFeature::kFeaturePolicyReportOnlyHeader);
+  Vector<String> messages;
+  const ParsedFeaturePolicy& report_only_policy = ParseFeaturePolicyHeader(
+      feature_policy_report_only_header, GetSecurityOrigin(), &messages);
+  for (auto& message : messages) {
+    AddConsoleMessage(ConsoleMessage::Create(
+        kSecurityMessageSource, kErrorMessageLevel,
+        "Error with Feature-Policy-Report-Only header: " + message));
+  }
+
+  AddReportOnlyFeaturePolicy(report_only_policy, GetOwnerContainerPolicy(),
+                             GetParentFeaturePolicy());
+}
+
 bool Document::AllowedToUseDynamicMarkUpInsertion(
     const char* api_name,
     ExceptionState& exception_state) {
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 11aaef2..4784c1da3 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -1380,10 +1380,15 @@
   service_manager::InterfaceProvider* GetInterfaceProvider() final;
 
   // Set an explicit feature policy on this document in response to an HTTP
-  // Feature Policy header. This will be relayed to the embedder through the
+  // Feature-Policy header. This will be relayed to the embedder through the
   // LocalFrameClient.
   void ApplyFeaturePolicyFromHeader(const String& feature_policy_header);
 
+  // Set the report-only feature policy on this document in response to an HTTP
+  // Feature-Policy-Report-Only header.
+  void ApplyReportOnlyFeaturePolicyFromHeader(
+      const String& feature_policy_report_only_header);
+
   const AtomicString& bgColor() const;
   void setBgColor(const AtomicString&);
   const AtomicString& fgColor() const;
@@ -1614,6 +1619,9 @@
   const AtomicString& BodyAttributeValue(const QualifiedName&) const;
   void SetBodyAttribute(const QualifiedName&, const AtomicString&);
 
+  const ParsedFeaturePolicy GetOwnerContainerPolicy() const;
+  const FeaturePolicy* GetParentFeaturePolicy() const;
+
   // Set the feature policy on this document, inheriting as necessary from the
   // parent document and frame owner (if they exist). The caller must ensure
   // that any changes to the declared policy are relayed to the embedder through
diff --git a/third_party/blink/renderer/core/execution_context/security_context.cc b/third_party/blink/renderer/core/execution_context/security_context.cc
index adf6235..8133657 100644
--- a/third_party/blink/renderer/core/execution_context/security_context.cc
+++ b/third_party/blink/renderer/core/execution_context/security_context.cc
@@ -111,9 +111,6 @@
   feature_policy_ = std::move(feature_policy);
 }
 
-// Uses the parent enforcing policy; parsed_header and container_policy can
-// both contain report-only directives, which will be used to construct the
-// report-only policy for this context.
 void SecurityContext::InitializeFeaturePolicy(
     const ParsedFeaturePolicy& parsed_header,
     const ParsedFeaturePolicy& container_policy,
@@ -126,21 +123,21 @@
   }
 
   feature_policy_ = FeaturePolicy::CreateFromParentPolicy(
-      parent_feature_policy,
-      *DirectivesWithDisposition(mojom::FeaturePolicyDisposition::kEnforce,
-                                 container_policy),
-      security_origin_->ToUrlOrigin());
-  feature_policy_->SetHeaderPolicy(*DirectivesWithDisposition(
-      mojom::FeaturePolicyDisposition::kEnforce, parsed_header));
-  if (RuntimeEnabledFeatures::FeaturePolicyReportingEnabled()) {
-    report_only_feature_policy_ = FeaturePolicy::CreateFromParentPolicy(
-        parent_feature_policy,
-        *DirectivesWithDisposition(mojom::FeaturePolicyDisposition::kReport,
-                                   container_policy),
-        security_origin_->ToUrlOrigin());
-    report_only_feature_policy_->SetHeaderPolicy(*DirectivesWithDisposition(
-        mojom::FeaturePolicyDisposition::kReport, parsed_header));
-  }
+      parent_feature_policy, container_policy, security_origin_->ToUrlOrigin());
+  feature_policy_->SetHeaderPolicy(parsed_header);
+}
+
+// Uses the parent enforcing policy as the basis for the report-only policy.
+void SecurityContext::AddReportOnlyFeaturePolicy(
+    const ParsedFeaturePolicy& parsed_report_only_header,
+    const ParsedFeaturePolicy& container_policy,
+    const FeaturePolicy* parent_feature_policy) {
+  if (!RuntimeEnabledFeatures::FeaturePolicyReportingEnabled())
+    return;
+
+  report_only_feature_policy_ = FeaturePolicy::CreateFromParentPolicy(
+      parent_feature_policy, container_policy, security_origin_->ToUrlOrigin());
+  report_only_feature_policy_->SetHeaderPolicy(parsed_report_only_header);
 }
 
 bool SecurityContext::IsFeatureEnabled(mojom::FeaturePolicyFeature feature,
diff --git a/third_party/blink/renderer/core/execution_context/security_context.h b/third_party/blink/renderer/core/execution_context/security_context.h
index 05ea0eb..d98f8402 100644
--- a/third_party/blink/renderer/core/execution_context/security_context.h
+++ b/third_party/blink/renderer/core/execution_context/security_context.h
@@ -140,6 +140,10 @@
   void InitializeFeaturePolicy(const ParsedFeaturePolicy& parsed_header,
                                const ParsedFeaturePolicy& container_policy,
                                const FeaturePolicy* parent_feature_policy);
+  void AddReportOnlyFeaturePolicy(
+      const ParsedFeaturePolicy& parsed_report_only_header,
+      const ParsedFeaturePolicy& container_policy,
+      const FeaturePolicy* parent_feature_policy);
 
   // Tests whether the policy-controlled feature is enabled in this frame.
   // Optionally sends a report to any registered reporting observers or
diff --git a/third_party/blink/renderer/core/exported/web_document_loader_impl.cc b/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
index 955b59da..a406461 100644
--- a/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
@@ -65,6 +65,23 @@
   return request_wrapper_.Url();
 }
 
+WebString WebDocumentLoaderImpl::HttpMethod() const {
+  return request_wrapper_.HttpMethod();
+}
+
+mojom::FetchCacheMode WebDocumentLoaderImpl::GetCacheMode() const {
+  return request_wrapper_.GetCacheMode();
+}
+
+WebString WebDocumentLoaderImpl::Referrer() const {
+  return DocumentLoader::Referrer();
+}
+
+network::mojom::ReferrerPolicy WebDocumentLoaderImpl::GetReferrerPolicy()
+    const {
+  return request_wrapper_.GetReferrerPolicy();
+}
+
 const WebURLRequest& WebDocumentLoaderImpl::GetRequest() const {
   return request_wrapper_;
 }
diff --git a/third_party/blink/renderer/core/exported/web_document_loader_impl.h b/third_party/blink/renderer/core/exported/web_document_loader_impl.h
index aee6f16..dc6a4afe 100644
--- a/third_party/blink/renderer/core/exported/web_document_loader_impl.h
+++ b/third_party/blink/renderer/core/exported/web_document_loader_impl.h
@@ -61,6 +61,10 @@
   WebURL OriginalUrl() const override;
   WebString OriginalReferrer() const override;
   WebURL GetUrl() const override;
+  WebString HttpMethod() const override;
+  mojom::FetchCacheMode GetCacheMode() const override;
+  WebString Referrer() const override;
+  network::mojom::ReferrerPolicy GetReferrerPolicy() const override;
   const WebURLRequest& GetRequest() const override;
   const WebURLResponse& GetResponse() const override;
   bool HasUnreachableURL() const override;
diff --git a/third_party/blink/renderer/core/exported/web_frame_serializer.cc b/third_party/blink/renderer/core/exported/web_frame_serializer.cc
index 277218c..55cf81a 100644
--- a/third_party/blink/renderer/core/exported/web_frame_serializer.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_serializer.cc
@@ -62,6 +62,7 @@
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/layout/layout_box.h"
 #include "third_party/blink/renderer/core/loader/document_loader.h"
+#include "third_party/blink/renderer/core/loader/frame_loader.h"
 #include "third_party/blink/renderer/core/page/chrome_client.h"
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/platform/histogram.h"
@@ -407,9 +408,9 @@
   if (response.CacheControlContainsNoStore())
     return true;
 
-  const ResourceRequest& request =
-      web_local_frame.GetDocumentLoader()->GetRequest().ToResourceRequest();
-  return request.CacheControlContainsNoStore();
+  DocumentLoader* document_loader =
+      web_local_frame.GetFrame()->Loader().GetDocumentLoader();
+  return document_loader->CacheControlContainsNoStore();
 }
 
 bool FrameShouldBeSerializedAsMHTML(
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc
index db616e7..cb3816c 100644
--- a/third_party/blink/renderer/core/exported/web_frame_test.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -7483,7 +7483,7 @@
 
   frame_test_helpers::ReloadFrame(frame);
   EXPECT_EQ(mojom::FetchCacheMode::kValidateCache,
-            frame->GetDocumentLoader()->GetRequest().GetCacheMode());
+            frame->GetDocumentLoader()->GetCacheMode());
 }
 
 TEST_F(WebFrameTest, BackDuringChildFrameReload) {
@@ -7533,11 +7533,11 @@
   frame_test_helpers::PumpPendingRequestsForFrameToLoad(
       web_view_helper.LocalMainFrame());
   EXPECT_EQ(WebString::FromUTF8("POST"),
-            frame->GetDocumentLoader()->GetRequest().HttpMethod());
+            frame->GetDocumentLoader()->HttpMethod());
 
   frame_test_helpers::ReloadFrame(frame);
   EXPECT_EQ(mojom::FetchCacheMode::kValidateCache,
-            frame->GetDocumentLoader()->GetRequest().GetCacheMode());
+            frame->GetDocumentLoader()->GetCacheMode());
   EXPECT_EQ(kWebNavigationTypeFormResubmitted,
             frame->GetDocumentLoader()->GetNavigationType());
 }
@@ -7564,7 +7564,7 @@
   EXPECT_EQ(first_item.Get(),
             main_frame_loader.GetDocumentLoader()->GetHistoryItem());
   EXPECT_EQ(mojom::FetchCacheMode::kValidateCache,
-            frame->GetDocumentLoader()->GetRequest().GetCacheMode());
+            frame->GetDocumentLoader()->GetCacheMode());
 }
 
 class TestCachePolicyWebFrameClient
@@ -8901,7 +8901,7 @@
   WebLocalFrame* frame = web_view_helper.LocalMainFrame();
   frame_test_helpers::ReloadFrameBypassingCache(frame);
   EXPECT_EQ(mojom::FetchCacheMode::kBypassCache,
-            frame->GetDocumentLoader()->GetRequest().GetCacheMode());
+            frame->GetDocumentLoader()->GetCacheMode());
 }
 
 static void NodeImageTestValidation(const IntSize& reference_bitmap_size,
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index c0da348..f779ae2 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -295,8 +295,8 @@
                          bool is_hidden,
                          bool does_composite,
                          WebViewImpl* opener)
-    : client_(client),
-      widget_client_(widget_client),
+    : as_view_(client),
+      as_widget_(widget_client),
       chrome_client_(ChromeClientImpl::Create(this)),
       should_auto_resize_(false),
       zoom_level_(0),
@@ -333,8 +333,8 @@
       display_mode_(kWebDisplayModeBrowser),
       elastic_overscroll_(FloatSize()),
       mutator_dispatcher_(nullptr) {
-  DCHECK_EQ(!!client_, !!widget_client_);
-  if (!client_) {
+  DCHECK_EQ(!!AsView().client, !!AsWidget().client);
+  if (!AsView().client) {
     DCHECK(!does_composite_);
   }
   Page::PageClients page_clients;
@@ -342,7 +342,7 @@
 
   page_ =
       Page::CreateOrdinary(page_clients, opener ? opener->GetPage() : nullptr);
-  CoreInitializer::GetInstance().ProvideModulesToPage(*page_, client_);
+  CoreInitializer::GetInstance().ProvideModulesToPage(*page_, AsView().client);
   SetIsHidden(is_hidden, /*is_initial_state=*/true);
 
   // When not compositing, keep the Page in the loop so that it will paint all
@@ -386,7 +386,7 @@
 
 void WebViewImpl::HandleMouseLeave(LocalFrame& main_frame,
                                    const WebMouseEvent& event) {
-  client_->SetMouseOverURL(WebURL());
+  AsView().client->SetMouseOverURL(WebURL());
   PageWidgetEventHandler::HandleMouseLeave(main_frame, event);
 }
 
@@ -513,7 +513,7 @@
 
 WebInputEventResult WebViewImpl::HandleGestureEvent(
     const WebGestureEvent& event) {
-  if (!client_ || !WidgetClient() || !client_->CanHandleGestureEvent()) {
+  if (!AsView().client || !AsView().client->CanHandleGestureEvent()) {
     return WebInputEventResult::kNotHandled;
   }
 
@@ -543,7 +543,7 @@
         }
       }
       event_result = WebInputEventResult::kHandledSystem;
-      WidgetClient()->DidHandleGestureEvent(event, event_cancelled);
+      AsWidget().client->DidHandleGestureEvent(event, event_cancelled);
       return event_result;
     case WebInputEvent::kGestureScrollBegin:
     case WebInputEvent::kGestureScrollEnd:
@@ -557,7 +557,7 @@
                          ->GetFrame()
                          ->GetEventHandler()
                          .HandleGestureScrollEvent(scaled_event);
-      WidgetClient()->DidHandleGestureEvent(event, event_cancelled);
+      AsWidget().client->DidHandleGestureEvent(event, event_cancelled);
       return event_result;
     default:
       break;
@@ -660,7 +660,7 @@
     }
     default: { NOTREACHED(); }
   }
-  WidgetClient()->DidHandleGestureEvent(event, event_cancelled);
+  AsWidget().client->DidHandleGestureEvent(event, event_cancelled);
   return event_result;
 }
 
@@ -740,8 +740,8 @@
 }
 
 void WebViewImpl::AcceptLanguagesChanged() {
-  if (client_)
-    FontCache::AcceptLanguagesChanged(client_->AcceptLanguages());
+  if (AsView().client)
+    FontCache::AcceptLanguagesChanged(AsView().client->AcceptLanguages());
 
   if (!GetPage())
     return;
@@ -1223,7 +1223,7 @@
 
   WebLocalFrameImpl* frame = WebLocalFrameImpl::FromFrame(
       client->OwnerElement().GetDocument().GetFrame()->LocalFrameRoot());
-  WebPagePopup* popup_widget = client_->CreatePopup(frame);
+  WebPagePopup* popup_widget = AsView().client->CreatePopup(frame);
   // CreatePopup returns nullptr if this renderer process is about to die.
   if (!popup_widget)
     return nullptr;
@@ -1303,7 +1303,7 @@
 
   // Reset the delegate to prevent notifications being sent as we're being
   // deleted.
-  client_ = nullptr;
+  AsView().client = nullptr;
 
   Release();  // Balances a reference acquired in WebView::Create
 }
@@ -1911,21 +1911,6 @@
   return true;
 }
 
-SkColor WebViewImpl::BackgroundColor() const {
-  if (background_color_override_enabled_)
-    return background_color_override_;
-  if (!page_)
-    return BaseBackgroundColor().Rgb();
-  if (!page_->MainFrame())
-    return BaseBackgroundColor().Rgb();
-  if (!page_->MainFrame()->IsLocalFrame())
-    return BaseBackgroundColor().Rgb();
-  LocalFrameView* view = page_->DeprecatedLocalMainFrame()->View();
-  if (!view)
-    return BaseBackgroundColor().Rgb();
-  return view->DocumentBackgroundColor().Rgb();
-}
-
 bool WebViewImpl::IsAcceleratedCompositingActive() const {
   return !!root_layer_;
 }
@@ -2324,7 +2309,7 @@
                                     double maximum_zoom_level) {
   minimum_zoom_level_ = minimum_zoom_level;
   maximum_zoom_level_ = maximum_zoom_level;
-  client_->ZoomLimitsChanged(minimum_zoom_level_, maximum_zoom_level_);
+  AsView().client->ZoomLimitsChanged(minimum_zoom_level_, maximum_zoom_level_);
 }
 
 float WebViewImpl::TextZoomFactor() {
@@ -2754,12 +2739,12 @@
     MainFrameImpl()->GetFrame()->GetDocument()->EnqueueResizeEvent();
   }
 
-  if (client_) {
+  if (AsWidget().client) {
     if (layer_tree_view_) {
       UpdateLayerTreeViewport();
     } else {
       WebRect damaged_rect(0, 0, size_.width, size_.height);
-      client_->WidgetClient()->DidInvalidateRect(damaged_rect);
+      AsWidget().client->DidInvalidateRect(damaged_rect);
     }
   }
 }
@@ -2848,6 +2833,21 @@
   return local_frame ? local_frame->GetInputMethodController() : nullptr;
 }
 
+SkColor WebViewImpl::BackgroundColor() const {
+  if (background_color_override_enabled_)
+    return background_color_override_;
+  if (!page_)
+    return BaseBackgroundColor().Rgb();
+  if (!page_->MainFrame())
+    return BaseBackgroundColor().Rgb();
+  if (!page_->MainFrame()->IsLocalFrame())
+    return BaseBackgroundColor().Rgb();
+  LocalFrameView* view = page_->DeprecatedLocalMainFrame()->View();
+  if (!view)
+    return BaseBackgroundColor().Rgb();
+  return view->DocumentBackgroundColor().Rgb();
+}
+
 Color WebViewImpl::BaseBackgroundColor() const {
   return base_background_color_override_enabled_
              ? base_background_color_override_
@@ -2960,7 +2960,7 @@
 
 void WebViewImpl::ResizeAfterLayout() {
   DCHECK(MainFrameImpl());
-  if (!client_ || !client_->CanUpdateLayout())
+  if (!AsView().client || !AsView().client->CanUpdateLayout())
     return;
 
   if (should_auto_resize_) {
@@ -2973,7 +2973,7 @@
       GetPageScaleConstraintsSet().DidChangeInitialContainingBlockSize(size_);
       view->SetInitialViewportSize(size_);
 
-      client_->DidAutoResize(size_);
+      AsView().client->DidAutoResize(size_);
       SendResizeEventAndRepaint();
     }
   }
@@ -2986,10 +2986,10 @@
 
 void WebViewImpl::MainFrameLayoutUpdated() {
   DCHECK(MainFrameImpl());
-  if (!client_)
+  if (!AsView().client)
     return;
 
-  client_->DidUpdateMainFrameLayout();
+  AsView().client->DidUpdateMainFrameLayout();
 }
 
 void WebViewImpl::DidChangeContentsSize() {
@@ -3012,7 +3012,7 @@
 void WebViewImpl::PageScaleFactorChanged() {
   GetPageScaleConstraintsSet().SetNeedsReset(false);
   UpdateLayerTreeViewport();
-  client_->PageScaleFactorChanged();
+  AsView().client->PageScaleFactorChanged();
   dev_tools_emulator_->MainFrameScrollOrScaleChanged();
 }
 
@@ -3203,9 +3203,9 @@
 void WebViewImpl::InvalidateRect(const IntRect& rect) {
   if (layer_tree_view_) {
     UpdateLayerTreeViewport();
-  } else if (client_) {
+  } else if (AsWidget().client) {
     // This is only for WebViewPlugin.
-    client_->WidgetClient()->DidInvalidateRect(rect);
+    AsWidget().client->DidInvalidateRect(rect);
   }
 }
 
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
index 91bbab2c..c258d4b 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.h
+++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -161,7 +161,6 @@
   void AnimateDoubleTapZoom(const gfx::Point&,
                             const WebRect& block_bounds) override;
   void ZoomToFindInPageRect(const WebRect&) override;
-
   void SetDeviceScaleFactor(float) override;
   void SetZoomFactorForDeviceScaleFactor(float) override;
   float ZoomFactorForDeviceScaleFactor() override {
@@ -197,6 +196,11 @@
   void AcceptLanguagesChanged() override;
   void SetPageFrozen(bool frozen) override;
   WebWidget* MainFrameWidget() override;
+  void SetBaseBackgroundColor(SkColor) override;
+  void SetBackgroundColorOverride(SkColor) override;
+  void ClearBackgroundColorOverride() override;
+  void SetBaseBackgroundColorOverride(SkColor) override;
+  void ClearBaseBackgroundColorOverride() override;
 
   void DidUpdateFullscreenSize();
 
@@ -208,16 +212,12 @@
   HitTestResult CoreHitTestResultAt(const gfx::Point&);
   void InvalidateRect(const IntRect&);
 
-  void SetBaseBackgroundColor(SkColor);
-  void SetBaseBackgroundColorOverride(SkColor);
-  void ClearBaseBackgroundColorOverride();
-  void SetBackgroundColorOverride(SkColor);
-  void ClearBackgroundColorOverride();
   void SetZoomFactorOverride(float);
   void SetCompositorDeviceScaleFactorOverride(float);
   void SetDeviceEmulationTransform(const TransformationMatrix&);
   TransformationMatrix GetDeviceEmulationTransformForTesting() const;
 
+  SkColor BackgroundColor() const;
   Color BaseBackgroundColor() const;
   bool BackgroundColorOverrideEnabled() const {
     return background_color_override_enabled_;
@@ -229,10 +229,10 @@
   // Returns the currently focused Element or null if no element has focus.
   Element* FocusedElement() const;
 
-  WebViewClient* Client() { return client_; }
+  WebViewClient* Client() { return AsView().client; }
   // TODO(dcheng): This client should be acquirable from the MainFrameImpl
   // in some cases? We need to know how to get it in all cases.
-  WebWidgetClient* WidgetClient() { return widget_client_; }
+  WebWidgetClient* WidgetClient() { return AsWidget().client; }
 
   // Returns the page object associated with this view. This may be null when
   // the page is shutting down, but will be valid at all other times.
@@ -414,6 +414,14 @@
   FRIEND_TEST_ALL_PREFIXES(WebFrameTest,
                            DivScrollIntoEditableTestWithDeviceScaleFactor);
 
+  // TODO(danakj): DCHECK in these that we're not inside a wrong API stackframe.
+  struct ViewData;
+  ViewData& AsView() { return as_view_; }
+  const ViewData& AsView() const { return as_view_; }
+  struct WidgetData;
+  WidgetData& AsWidget() { return as_widget_; }
+  const WidgetData& AsWidget() const { return as_widget_; }
+
   // WebWidget methods:
   void SetLayerTreeView(WebLayerTreeView*) override;
   void Close() override;
@@ -422,7 +430,6 @@
   void ResizeVisualViewport(const WebSize&) override;
   void DidEnterFullscreen() override;
   void DidExitFullscreen() override;
-
   void SetSuppressFrameRequestsWorkaroundFor704763Only(bool) override;
   void BeginFrame(base::TimeTicks last_frame_time) override;
   void RecordEndOfFrameMetrics(base::TimeTicks frame_begin_time) override;
@@ -446,7 +453,6 @@
                                          bool has_scrolled_by_touch) override;
   void MouseCaptureLost() override;
   void SetFocus(bool enable) override;
-  SkColor BackgroundColor() const override;
   bool SelectionBounds(WebRect& anchor, WebRect& focus) const override;
   bool IsAcceleratedCompositingActive() const override;
   void WillCloseLayerTreeView() override;
@@ -544,8 +550,24 @@
       IntPoint& scroll,
       bool& need_animation);
 
-  WebViewClient* client_;  // Can be null (e.g. unittests, shared workers, etc.)
-  WebWidgetClient* widget_client_;  // Can also be null.
+  // These member variables should not be accessed within calls to WebWidget
+  // APIs. They can be called from within WebView APIs, and internal methods,
+  // though these need to be sorted as being for the view or the widget also.
+  struct ViewData {
+    ViewData(WebViewClient* client) : client(client) {}
+
+    // Can be null (e.g. unittests, shared workers, etc.)
+    WebViewClient* client;
+  } as_view_;
+
+  // These member variables should not be accessed within calls to WebView
+  // APIs. They can be called from within WebWidget APIs, and internal methods,
+  // though these need to be sorted as being for the view or the widget also.
+  struct WidgetData {
+    WidgetData(WebWidgetClient* client) : client(client) {}
+
+    WebWidgetClient* client;  // Can also be null.
+  } as_widget_;
 
   Persistent<ChromeClient> chrome_client_;
 
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc
index a687847..1ed18690 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -432,10 +432,10 @@
   const SkColor kTranslucentPutty = SkColorSetARGB(0x80, 0xBF, 0xB1, 0x96);
 
   WebViewImpl* web_view = web_view_helper_.Initialize();
-  EXPECT_EQ(SK_ColorWHITE, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorWHITE, web_view->BackgroundColor());
 
   web_view->SetBaseBackgroundColor(SK_ColorBLUE);
-  EXPECT_EQ(SK_ColorBLUE, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorBLUE, web_view->BackgroundColor());
 
   WebURL base_url = url_test_helpers::ToKURL("http://example.com/");
   frame_test_helpers::LoadHTMLString(
@@ -444,7 +444,7 @@
       "{background-color:#227788}</style></head></"
       "html>",
       base_url);
-  EXPECT_EQ(kDarkCyan, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(kDarkCyan, web_view->BackgroundColor());
 
   frame_test_helpers::LoadHTMLString(web_view->MainFrameImpl(),
                                      "<html><head><style>body "
@@ -452,11 +452,11 @@
                                      "style></head></html>",
                                      base_url);
   // Expected: red (50% alpha) blended atop base of SK_ColorBLUE.
-  EXPECT_EQ(0xFF80007F, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(0xFF80007F, web_view->BackgroundColor());
 
   web_view->SetBaseBackgroundColor(kTranslucentPutty);
   // Expected: red (50% alpha) blended atop kTranslucentPutty. Note the alpha.
-  EXPECT_EQ(0xBFE93A31, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(0xBFE93A31, web_view->BackgroundColor());
 
   web_view->SetBaseBackgroundColor(SK_ColorTRANSPARENT);
   frame_test_helpers::LoadHTMLString(web_view->MainFrameImpl(),
@@ -465,8 +465,7 @@
                                      "head></html>",
                                      base_url);
   // Expected: transparent on top of transparent will still be transparent.
-  EXPECT_EQ(SK_ColorTRANSPARENT,
-            web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorTRANSPARENT, web_view->BackgroundColor());
 
   LocalFrame* frame = web_view->MainFrameImpl()->GetFrame();
   // The shutdown() calls are a hack to prevent this test
@@ -492,11 +491,11 @@
       WebView::Create(&web_view_client, web_view_client.WidgetClient(),
                       /*is_hidden=*/false,
                       /*compositing_enabled=*/true, nullptr));
-  EXPECT_NE(SK_ColorBLUE, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_NE(SK_ColorBLUE, web_view->BackgroundColor());
   // webView does not have a frame yet, but we should still be able to set the
   // background color.
   web_view->SetBaseBackgroundColor(SK_ColorBLUE);
-  EXPECT_EQ(SK_ColorBLUE, web_view->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorBLUE, web_view->BackgroundColor());
   frame_test_helpers::TestWebFrameClient web_frame_client;
   WebLocalFrame* frame = WebLocalFrame::CreateMainFrame(
       web_view, &web_frame_client, nullptr, nullptr);
@@ -2391,7 +2390,7 @@
       web_view_helper_.InitializeAndLoad(base_url_ + "fullscreen_style.html");
   web_view_impl->MainFrameWidget()->Resize(WebSize(800, 600));
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(SK_ColorWHITE, web_view_impl->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorWHITE, web_view_impl->BackgroundColor());
 
   // Enter fullscreen.
   LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame();
@@ -2403,8 +2402,7 @@
   web_view_impl->MainFrameWidget()->DidEnterFullscreen();
   UpdateAllLifecyclePhases();
 
-  EXPECT_EQ(SK_ColorYELLOW,
-            web_view_impl->MainFrameWidget()->BackgroundColor());
+  EXPECT_EQ(SK_ColorYELLOW, web_view_impl->BackgroundColor());
 }
 
 class PrintWebViewClient : public frame_test_helpers::TestWebViewClient {
@@ -5590,4 +5588,27 @@
 
   web_view_helper_.Reset();  // Remove dependency on locally scoped client.
 }
+
+TEST_F(WebViewTest, RootLayerAttachment) {
+  WebView* web_view = web_view_helper_.InitializeAndLoad("about:blank");
+
+  // Do a lifecycle update that includes compositing but not paint. Hit test
+  // events are an example of a real case where this occurs
+  // (see: WebViewTest::ClientTapHandling).
+  web_view->MainFrameWidget()->UpdateLifecycle(
+      WebFrameWidget::LifecycleUpdate::kPrePaint,
+      WebWidget::LifecycleUpdateReason::kTest);
+
+  // With BlinkGenPropertyTrees, layers (including the root layer) should not be
+  // attached until the paint lifecycle phase.
+  auto* layer_tree_view = web_view_helper_.GetLayerTreeView();
+  EXPECT_FALSE(layer_tree_view->GetRootLayer());
+
+  // Do a full lifecycle update and ensure that the root layer has been added.
+  web_view->MainFrameWidget()->UpdateLifecycle(
+      WebFrameWidget::LifecycleUpdate::kAll,
+      WebWidget::LifecycleUpdateReason::kTest);
+  EXPECT_TRUE(layer_tree_view->GetRootLayer());
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy.cc b/third_party/blink/renderer/core/feature_policy/feature_policy.cc
index d713c7d3..79e2187 100644
--- a/third_party/blink/renderer/core/feature_policy/feature_policy.cc
+++ b/third_party/blink/renderer/core/feature_policy/feature_policy.cc
@@ -18,9 +18,6 @@
 
 namespace blink {
 
-constexpr char kReportOnlySuffix[] = "-report-only";
-constexpr size_t kReportOnlySuffixLength = 12;
-
 ParsedFeaturePolicy ParseFeaturePolicyHeader(
     const String& policy,
     scoped_refptr<const SecurityOrigin> origin,
@@ -68,21 +65,9 @@
       // Empty policy. Skip.
       if (tokens.IsEmpty())
         continue;
-      mojom::FeaturePolicyDisposition disposition =
-          mojom::FeaturePolicyDisposition::kEnforce;
-      String feature_name;
-      if (RuntimeEnabledFeatures::FeaturePolicyReportingEnabled() &&
-          tokens[0].EndsWith(kReportOnlySuffix)) {
-        feature_name = tokens[0].Substring(
-            0, tokens[0].length() - kReportOnlySuffixLength);
-        disposition = mojom::FeaturePolicyDisposition::kReport;
-      } else {
-        feature_name = tokens[0];
-      }
+      String feature_name = tokens[0];
       if (!feature_names.Contains(feature_name)) {
         if (messages) {
-          // Console message should display the entire string, with
-          // "-report-only" suffix if it was originally included.
           messages->push_back("Unrecognized feature: '" + tokens[0] + "'.");
         }
         continue;
@@ -91,8 +76,6 @@
       mojom::FeaturePolicyFeature feature = feature_names.at(feature_name);
       // If a policy has already been specified for the current feature, drop
       // the new policy.
-      // TODO(crbug.com/904880): Allow a report-only and an enforcing version in
-      // the same parsed policy.
       if (features_specified.QuickGet(static_cast<int>(feature)))
         continue;
 
@@ -112,7 +95,6 @@
 
       ParsedFeaturePolicyDeclaration allowlist;
       allowlist.feature = feature;
-      allowlist.disposition = disposition;
       features_specified.QuickSet(static_cast<int>(feature));
       std::vector<url::Origin> origins;
       // If a policy entry has no (optional) values (e,g,
@@ -206,7 +188,6 @@
   allowlist.feature = feature;
   allowlist.matches_all_origins = false;
   allowlist.matches_opaque_src = false;
-  allowlist.disposition = mojom::FeaturePolicyDisposition::kEnforce;
   policy.push_back(allowlist);
   return true;
 }
@@ -219,7 +200,6 @@
   allowlist.feature = feature;
   allowlist.matches_all_origins = true;
   allowlist.matches_opaque_src = true;
-  allowlist.disposition = mojom::FeaturePolicyDisposition::kEnforce;
   policy.push_back(allowlist);
   return true;
 }
diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_test.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_test.cc
index 73edac5..6e90a55 100644
--- a/third_party/blink/renderer/core/feature_policy/feature_policy_test.cc
+++ b/third_party/blink/renderer/core/feature_policy/feature_policy_test.cc
@@ -439,12 +439,10 @@
   ParsedFeaturePolicy test_policy = {{mojom::FeaturePolicyFeature::kFullscreen,
                                       false,
                                       false,
-                                      mojom::FeaturePolicyDisposition::kEnforce,
                                       {url_origin_a_, url_origin_b_}},
                                      {mojom::FeaturePolicyFeature::kGeolocation,
                                       false,
                                       false,
-                                      mojom::FeaturePolicyDisposition::kEnforce,
                                       {url_origin_a_}}};
   ParsedFeaturePolicy empty_policy = {};
 };
diff --git a/third_party/blink/renderer/core/feature_policy/iframe_policy.h b/third_party/blink/renderer/core/feature_policy/iframe_policy.h
index d4645da..e53ec64 100644
--- a/third_party/blink/renderer/core/feature_policy/iframe_policy.h
+++ b/third_party/blink/renderer/core/feature_policy/iframe_policy.h
@@ -33,9 +33,7 @@
       const ParsedFeaturePolicy& container_policy,
       scoped_refptr<const SecurityOrigin> src_origin) override {
     policy_ = FeaturePolicy::CreateFromParentPolicy(
-        parent_document_->GetFeaturePolicy(),
-        *DirectivesWithDisposition(mojom::FeaturePolicyDisposition::kEnforce,
-                                   container_policy),
+        parent_document_->GetFeaturePolicy(), container_policy,
         src_origin->ToUrlOrigin());
   }
 
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index ebb437c0..664ceba41 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2855,6 +2855,8 @@
             // The layer being scrolled is destroyed before the
             // ScrollingCoordinator.
             WrapWeakPersistent(page->GetScrollingCoordinator())));
+    if (RuntimeEnabledFeatures::BlinkGenPropertyTreesEnabled())
+      GetLayoutView()->Compositor()->AttachRootLayerViaChromeClient();
     page->GetChromeClient().AttachRootLayer(
         paint_artifact_compositor_->RootLayer(), &GetFrame());
   }
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
index 1b06b355..ded7dd5f 100644
--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -159,10 +159,6 @@
       is_accelerated_compositing_active_(false),
       layer_tree_view_closed_(false),
       suppress_next_keypress_event_(false),
-      background_color_override_enabled_(false),
-      background_color_override_(Color::kTransparent),
-      base_background_color_override_enabled_(false),
-      base_background_color_override_(Color::kTransparent),
       ime_accept_events_(true),
       self_keep_alive_(this) {}
 
@@ -323,7 +319,6 @@
       LocalRootImpl()->GetFrame()->GetDocument()->Lifecycle());
   PageWidgetDelegate::UpdateLifecycle(*GetPage(), *LocalRootImpl()->GetFrame(),
                                       requested_update, reason);
-  UpdateLayerTreeBackgroundColor();
 }
 
 void WebFrameWidgetImpl::PaintContent(cc::PaintCanvas* canvas,
@@ -342,54 +337,6 @@
       1, View()->MinimumPageScaleFactor(), View()->MaximumPageScaleFactor());
 }
 
-void WebFrameWidgetImpl::UpdateLayerTreeBackgroundColor() {
-  if (!layer_tree_view_)
-    return;
-
-  SkColor color = BackgroundColor();
-  layer_tree_view_->SetBackgroundColor(color);
-}
-
-void WebFrameWidgetImpl::SetBackgroundColorOverride(SkColor color) {
-  background_color_override_enabled_ = true;
-  background_color_override_ = color;
-  UpdateLayerTreeBackgroundColor();
-}
-
-void WebFrameWidgetImpl::ClearBackgroundColorOverride() {
-  background_color_override_enabled_ = false;
-  UpdateLayerTreeBackgroundColor();
-}
-
-void WebFrameWidgetImpl::SetBaseBackgroundColorOverride(SkColor color) {
-  if (base_background_color_override_enabled_ &&
-      base_background_color_override_ == color) {
-    return;
-  }
-
-  base_background_color_override_enabled_ = true;
-  base_background_color_override_ = color;
-  // Force lifecycle update to ensure we're good to call
-  // LocalFrameView::setBaseBackgroundColor().
-  LocalRootImpl()
-      ->GetFrameView()
-      ->UpdateLifecycleToCompositingCleanPlusScrolling();
-  UpdateBaseBackgroundColor();
-}
-
-void WebFrameWidgetImpl::ClearBaseBackgroundColorOverride() {
-  if (!base_background_color_override_enabled_)
-    return;
-
-  base_background_color_override_enabled_ = false;
-  // Force lifecycle update to ensure we're good to call
-  // LocalFrameView::setBaseBackgroundColor().
-  LocalRootImpl()
-      ->GetFrameView()
-      ->UpdateLifecycleToCompositingCleanPlusScrolling();
-  UpdateBaseBackgroundColor();
-}
-
 void WebFrameWidgetImpl::LayoutAndPaintAsync(base::OnceClosure callback) {
   layer_tree_view_->LayoutAndPaintAsync(std::move(callback));
 }
@@ -532,25 +479,6 @@
   GetPage()->SetIsCursorVisible(is_visible);
 }
 
-Color WebFrameWidgetImpl::BaseBackgroundColor() const {
-  return base_background_color_override_enabled_
-             ? base_background_color_override_
-             : base_background_color_;
-}
-
-void WebFrameWidgetImpl::SetBaseBackgroundColor(SkColor color) {
-  if (base_background_color_ == color)
-    return;
-
-  base_background_color_ = color;
-  UpdateBaseBackgroundColor();
-}
-
-void WebFrameWidgetImpl::UpdateBaseBackgroundColor() {
-  LocalRootImpl()->GetFrameView()->SetBaseBackgroundColor(
-      BaseBackgroundColor());
-}
-
 WebInputMethodController*
 WebFrameWidgetImpl::GetActiveWebInputMethodController() const {
   WebLocalFrameImpl* local_frame =
@@ -574,8 +502,6 @@
 }
 
 void WebFrameWidgetImpl::Initialize() {
-  if (LocalRoot()->Parent())
-    SetBackgroundColorOverride(Color::kTransparent);
 }
 
 void WebFrameWidgetImpl::IntrinsicSizingInfoChanged(
@@ -658,15 +584,6 @@
   }
 }
 
-SkColor WebFrameWidgetImpl::BackgroundColor() const {
-  if (background_color_override_enabled_)
-    return background_color_override_;
-  if (!LocalRootImpl()->GetFrameView())
-    return base_background_color_;
-  LocalFrameView* view = LocalRootImpl()->GetFrameView();
-  return view->DocumentBackgroundColor().Rgb();
-}
-
 bool WebFrameWidgetImpl::SelectionBounds(WebRect& anchor_web,
                                          WebRect& focus_web) const {
   const LocalFrame* local_frame = FocusedLocalFrameInWidget();
@@ -1076,6 +993,10 @@
   // be moved from WebViewImpl into WebFrameWidget and used for all local
   // frame roots. https://crbug.com/712794
   layer_tree_view_->HeuristicsForGpuRasterizationUpdated(true);
+
+  // WebFrameWidgetImpl is used for child frames, which always have a
+  // transparent background color.
+  layer_tree_view_->SetBackgroundColor(SK_ColorTRANSPARENT);
 }
 
 void WebFrameWidgetImpl::SetIsAcceleratedCompositingActive(bool active) {
@@ -1094,7 +1015,6 @@
     TRACE_EVENT0("blink",
                  "WebViewImpl::setIsAcceleratedCompositingActive(true)");
     layer_tree_view_->SetRootLayer(root_layer_);
-    UpdateLayerTreeBackgroundColor();
     UpdateLayerTreeViewport();
     is_accelerated_compositing_active_ = true;
   }
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h
index feb14bb..c30359f0 100644
--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h
+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h
@@ -101,7 +101,6 @@
   void ApplyViewportChanges(const ApplyViewportChangesArgs&) override;
   void MouseCaptureLost() override;
   void SetFocus(bool enable) override;
-  SkColor BackgroundColor() const override;
   bool SelectionBounds(WebRect& anchor, WebRect& focus) const override;
   bool IsAcceleratedCompositingActive() const override;
   void WillCloseLayerTreeView() override;
@@ -113,11 +112,6 @@
   WebURL GetURLForDebugTrace() override;
 
   // WebFrameWidget implementation.
-  void SetBackgroundColorOverride(SkColor) override;
-  void ClearBackgroundColorOverride() override;
-  void SetBaseBackgroundColorOverride(SkColor) override;
-  void ClearBaseBackgroundColorOverride() override;
-  void SetBaseBackgroundColor(SkColor) override;
   WebInputMethodController* GetActiveWebInputMethodController() const override;
   bool ScrollFocusedEditableElementIntoView() override;
 
@@ -160,8 +154,6 @@
     return root_graphics_layer_;
   };
 
-  Color BaseBackgroundColor() const;
-
   void Trace(blink::Visitor*) override;
 
  private:
@@ -173,8 +165,6 @@
 
   void SetIsAcceleratedCompositingActive(bool);
   void UpdateLayerTreeViewport();
-  void UpdateLayerTreeBackgroundColor();
-  void UpdateBaseBackgroundColor();
 
   // PageWidgetEventHandler functions
   void HandleMouseLeave(LocalFrame&, const WebMouseEvent&) override;
@@ -222,18 +212,11 @@
 
   bool did_suspend_parsing_ = false;
 
-  bool background_color_override_enabled_;
-  SkColor background_color_override_;
-  bool base_background_color_override_enabled_;
-  SkColor base_background_color_override_;
-
   // TODO(ekaramad): Can we remove this and make sure IME events are not called
   // when there is no page focus?
   // Represents whether or not this object should process incoming IME events.
   bool ime_accept_events_;
 
-  SkColor base_background_color_;
-
   SelfKeepAlive<WebFrameWidgetImpl> self_keep_alive_;
 };
 
diff --git a/third_party/blink/renderer/core/frame/web_view_frame_widget.cc b/third_party/blink/renderer/core/frame/web_view_frame_widget.cc
index f8f8063..6f2aa599 100644
--- a/third_party/blink/renderer/core/frame/web_view_frame_widget.cc
+++ b/third_party/blink/renderer/core/frame/web_view_frame_widget.cc
@@ -129,34 +129,10 @@
   web_view_->WillCloseLayerTreeView();
 }
 
-SkColor WebViewFrameWidget::BackgroundColor() const {
-  return web_view_->BackgroundColor();
-}
-
 WebURL WebViewFrameWidget::GetURLForDebugTrace() {
   return web_view_->GetURLForDebugTrace();
 }
 
-void WebViewFrameWidget::SetBackgroundColorOverride(SkColor color) {
-  web_view_->SetBackgroundColorOverride(color);
-}
-
-void WebViewFrameWidget::ClearBackgroundColorOverride() {
-  web_view_->ClearBackgroundColorOverride();
-}
-
-void WebViewFrameWidget::SetBaseBackgroundColorOverride(SkColor color) {
-  web_view_->SetBaseBackgroundColorOverride(color);
-}
-
-void WebViewFrameWidget::ClearBaseBackgroundColorOverride() {
-  web_view_->ClearBaseBackgroundColorOverride();
-}
-
-void WebViewFrameWidget::SetBaseBackgroundColor(SkColor color) {
-  web_view_->SetBaseBackgroundColor(color);
-}
-
 WebInputMethodController*
 WebViewFrameWidget::GetActiveWebInputMethodController() const {
   return web_view_->GetActiveWebInputMethodController();
diff --git a/third_party/blink/renderer/core/frame/web_view_frame_widget.h b/third_party/blink/renderer/core/frame/web_view_frame_widget.h
index b306178..2d41ec8 100644
--- a/third_party/blink/renderer/core/frame/web_view_frame_widget.h
+++ b/third_party/blink/renderer/core/frame/web_view_frame_widget.h
@@ -68,15 +68,9 @@
   bool SelectionBounds(WebRect& anchor, WebRect& focus) const override;
   bool IsAcceleratedCompositingActive() const override;
   void WillCloseLayerTreeView() override;
-  SkColor BackgroundColor() const override;
   WebURL GetURLForDebugTrace() override;
 
   // WebFrameWidget overrides:
-  void SetBackgroundColorOverride(SkColor) override;
-  void ClearBackgroundColorOverride() override;
-  void SetBaseBackgroundColorOverride(SkColor) override;
-  void ClearBaseBackgroundColorOverride() override;
-  void SetBaseBackgroundColor(SkColor) override;
   WebInputMethodController* GetActiveWebInputMethodController() const override;
   bool ScrollFocusedEditableElementIntoView() override;
   WebHitTestResult HitTestResultAt(const gfx::Point&) override;
diff --git a/third_party/blink/renderer/core/html/html_frame_element.cc b/third_party/blink/renderer/core/html/html_frame_element.cc
index dc1bdd9..837ecc2 100644
--- a/third_party/blink/renderer/core/html/html_frame_element.cc
+++ b/third_party/blink/renderer/core/html/html_frame_element.cc
@@ -92,7 +92,6 @@
   ParsedFeaturePolicyDeclaration allowlist;
   allowlist.feature = mojom::FeaturePolicyFeature::kFullscreen;
   allowlist.matches_all_origins = false;
-  allowlist.disposition = mojom::FeaturePolicyDisposition::kEnforce;
   container_policy.push_back(allowlist);
   return container_policy;
 }
diff --git a/third_party/blink/renderer/core/html/html_plugin_element.cc b/third_party/blink/renderer/core/html/html_plugin_element.cc
index 301d01df..1247fb1 100644
--- a/third_party/blink/renderer/core/html/html_plugin_element.cc
+++ b/third_party/blink/renderer/core/html/html_plugin_element.cc
@@ -307,7 +307,6 @@
   ParsedFeaturePolicyDeclaration allowlist;
   allowlist.feature = mojom::FeaturePolicyFeature::kFullscreen;
   allowlist.matches_all_origins = false;
-  allowlist.disposition = mojom::FeaturePolicyDisposition::kEnforce;
   container_policy.push_back(allowlist);
   return container_policy;
 }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
index 3f7ad40..1f9e95b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
@@ -157,15 +157,40 @@
                                       ? physical_child_margins.HorizontalSum()
                                       : physical_child_margins.VerticalSum();
 
-    // TODO(dgrogan): When child has a min/max-{width,height} set, call
-    // Resolve{Inline,Block}Length here with child's style and constraint space.
-    // Pass kMinSize, kMaxSize as appropriate.
-    // Further, min-width:auto has special meaning for flex items. We'll need to
-    // calculate that here by either extracting the logic from legacy or
-    // reimplementing. When resolved, pass it here.
-    // https://www.w3.org/TR/css-flexbox-1/#min-size-auto
     MinMaxSize min_max_sizes_in_main_axis_direction{LayoutUnit(),
                                                     LayoutUnit::Max()};
+    Length max = is_horizontal_flow ? child.Style().MaxWidth()
+                                    : child.Style().MaxHeight();
+    if (MainAxisIsInlineAxis(child)) {
+      min_max_sizes_in_main_axis_direction.max_size = ResolveInlineLength(
+          child_space, child_style, min_max_sizes_border_box, max,
+          LengthResolveType::kMaxSize, LengthResolvePhase::kLayout);
+    } else {
+      min_max_sizes_in_main_axis_direction.max_size = ResolveBlockLength(
+          child_space, child_style, max,
+          fragment_in_child_writing_mode.BlockSize(),
+          LengthResolveType::kMaxSize, LengthResolvePhase::kLayout);
+    }
+
+    Length min = is_horizontal_flow ? child.Style().MinWidth()
+                                    : child.Style().MinHeight();
+    if (min.IsAuto()) {
+      if (algorithm.ShouldApplyMinSizeAutoForChild(*child.GetLayoutBox())) {
+        // TODO(dgrogan): Port logic from
+        // https://www.w3.org/TR/css-flexbox-1/#min-size-auto and
+        // LayoutFlexibleBox::ComputeMinAndMaxSizesForChild
+      }
+    } else if (MainAxisIsInlineAxis(child)) {
+      min_max_sizes_in_main_axis_direction.min_size = ResolveInlineLength(
+          child_space, child_style, min_max_sizes_border_box, min,
+          LengthResolveType::kMinSize, LengthResolvePhase::kLayout);
+    } else {
+      min_max_sizes_in_main_axis_direction.min_size = ResolveBlockLength(
+          child_space, child_style, min,
+          fragment_in_child_writing_mode.BlockSize(),
+          LengthResolveType::kMinSize, LengthResolvePhase::kLayout);
+    }
+
     algorithm
         .emplace_back(child.GetLayoutBox(), flex_base_content_size,
                       min_max_sizes_in_main_axis_direction,
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index f5a055c..9905daf 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -373,6 +373,10 @@
   return request_.HttpBody();
 }
 
+bool DocumentLoader::CacheControlContainsNoStore() const {
+  return request_.CacheControlContainsNoStore();
+}
+
 void DocumentLoader::SetHistoryItemStateForCommit(
     HistoryItem* old_item,
     WebFrameLoadType load_type,
@@ -1292,6 +1296,14 @@
   MergeFeaturesFromOriginPolicy(feature_policy, request_.GetOriginPolicy());
   document->ApplyFeaturePolicyFromHeader(feature_policy);
 
+  if (RuntimeEnabledFeatures::FeaturePolicyReportingEnabled()) {
+    WTF::String report_only_feature_policy(
+        response_.HttpHeaderField(http_names::kFeaturePolicyReportOnly));
+    // TODO(iclelland): Add Feature-Policy-Report-Only to Origin Policy.
+    document->ApplyReportOnlyFeaturePolicyFromHeader(
+        report_only_feature_policy);
+  }
+
   GetFrameLoader().DispatchDidClearDocumentOfWindowObject();
 }
 
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h
index a7202cd..cf4cc48 100644
--- a/third_party/blink/renderer/core/loader/document_loader.h
+++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -132,6 +132,7 @@
   const KURL& UrlForHistory() const;
   const AtomicString& Referrer() const;
   EncodedFormData* HttpBody() const;
+  bool CacheControlContainsNoStore() const;
 
   void DidChangePerformanceTiming();
   void DidObserveLoadingBehavior(WebLoadingBehaviorFlag);
diff --git a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc
index 06fff3d..406899b 100644
--- a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc
+++ b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc
@@ -544,13 +544,10 @@
         layers_needing_paint_invalidation[i]->GetLayoutObject());
   }
 
-  if (root_layer_attachment_ == kRootLayerPendingAttachViaChromeClient) {
-    if (Page* page = layout_view_.GetFrame()->GetPage()) {
-      page->GetChromeClient().AttachRootGraphicsLayer(RootGraphicsLayer(),
-                                                      layout_view_.GetFrame());
-      root_layer_attachment_ = kRootLayerAttachedViaChromeClient;
-    }
-  }
+  // When BlinkGenPropertyTrees is enabled, layer attachment, including the root
+  // layer, must occur in the paint lifecycle step.
+  if (!RuntimeEnabledFeatures::BlinkGenPropertyTreesEnabled())
+    AttachRootLayerViaChromeClient();
 
   // Inform the inspector that the layer tree has changed.
   if (IsMainFrame())
@@ -559,6 +556,16 @@
   Lifecycle().AdvanceTo(DocumentLifecycle::kCompositingClean);
 }
 
+void PaintLayerCompositor::AttachRootLayerViaChromeClient() {
+  if (root_layer_attachment_ == kRootLayerPendingAttachViaChromeClient) {
+    if (Page* page = layout_view_.GetFrame()->GetPage()) {
+      page->GetChromeClient().AttachRootGraphicsLayer(RootGraphicsLayer(),
+                                                      layout_view_.GetFrame());
+    }
+    root_layer_attachment_ = kRootLayerAttachedViaChromeClient;
+  }
+}
+
 static void RestartAnimationOnCompositor(const LayoutObject& layout_object) {
   Node* node = layout_object.GetNode();
   ElementAnimations* element_animations =
diff --git a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h
index 52f4f7f..9a6efef 100644
--- a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h
+++ b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h
@@ -156,6 +156,8 @@
 
   bool IsRootScrollerAncestor() const;
 
+  void AttachRootLayerViaChromeClient();
+
  private:
 #if DCHECK_IS_ON()
   void AssertNoUnresolvedDirtyBits();
diff --git a/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js
index 3552913..49f82b9 100644
--- a/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js
+++ b/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js
@@ -290,6 +290,8 @@
    * @param {boolean} visible
    */
   setVisible(visible) {
+    if (visible === this._visible)
+      return;
     this._visible = visible;
     if (!this._visible) {
       this._popoverHelper.hidePopover();
diff --git a/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js b/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js
index 29a567d..94ef944 100644
--- a/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js
+++ b/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js
@@ -604,7 +604,7 @@
 
     this._originalPropertyText = this.property.propertyText;
 
-    this._parentPane.setEditingStyle(true);
+    this._parentPane.setEditingStyle(true, this);
     if (selectElement.parentElement)
       selectElement.parentElement.scrollIntoViewIfNeeded(false);
 
diff --git a/third_party/blink/renderer/devtools/front_end/elements/StylesSidebarPane.js b/third_party/blink/renderer/devtools/front_end/elements/StylesSidebarPane.js
index 8691fce..8cf0257e 100644
--- a/third_party/blink/renderer/devtools/front_end/elements/StylesSidebarPane.js
+++ b/third_party/blink/renderer/devtools/front_end/elements/StylesSidebarPane.js
@@ -378,12 +378,35 @@
 
   /**
    * @param {boolean} editing
+   * @param {!Elements.StylePropertyTreeElement=} treeElement
    */
-  setEditingStyle(editing) {
+  setEditingStyle(editing, treeElement) {
     if (this._isEditingStyle === editing)
       return;
     this.contentElement.classList.toggle('is-editing-style', editing);
     this._isEditingStyle = editing;
+    this._setActiveProperty(editing ? treeElement || null : null);
+  }
+
+  /**
+   * @param {?Elements.StylePropertyTreeElement} treeElement
+   */
+  _setActiveProperty(treeElement) {
+    if (!this.node())
+      return;
+
+    SDK.OverlayModel.hideDOMNodeHighlight();
+    if (!treeElement || treeElement.overloaded() || treeElement.inherited())
+      return;
+
+    const rule = treeElement.property.ownerStyle.parentRule;
+    const selectors = rule ? rule.selectorText() : undefined;
+    for (const mode of ['padding', 'border', 'margin']) {
+      if (!treeElement.name.startsWith(mode))
+        continue;
+      this.node().domModel().overlayModel().highlightDOMNodeWithConfig(this.node().id, {mode, selectors});
+      break;
+    }
   }
 
   /**
@@ -813,6 +836,7 @@
     this._selectorElement.textContent = this._headerText();
     selectorContainer.appendChild(this._selectorElement);
     this._selectorElement.addEventListener('mouseenter', this._onMouseEnterSelector.bind(this), false);
+    this._selectorElement.addEventListener('mousemove', event => event.consume(), false);
     this._selectorElement.addEventListener('mouseleave', this._onMouseOutSelector.bind(this), false);
 
     const openBrace = createElement('span');
@@ -830,7 +854,7 @@
     this.element.addEventListener('mousedown', this._handleEmptySpaceMouseDown.bind(this), false);
     this.element.addEventListener('click', this._handleEmptySpaceClick.bind(this), false);
     this.element.addEventListener('mousemove', this._onMouseMove.bind(this), false);
-    this.element.addEventListener('mouseleave', this._setSectionHovered.bind(this, false), false);
+    this.element.addEventListener('mouseleave', this._onMouseLeave.bind(this), false);
 
     if (rule) {
       // Prevent editing the user agent and user rules.
@@ -956,9 +980,23 @@
   /**
    * @param {!Event} event
    */
+  _onMouseLeave(event) {
+    this._setSectionHovered(false);
+    this._parentPane._setActiveProperty(null);
+  }
+
+  /**
+   * @param {!Event} event
+   */
   _onMouseMove(event) {
     const hasCtrlOrMeta = UI.KeyboardShortcut.eventHasCtrlOrMeta(/** @type {!MouseEvent} */ (event));
     this._setSectionHovered(hasCtrlOrMeta);
+
+    const treeElement = this.propertiesTreeOutline.treeElementFromEvent(event);
+    if (treeElement instanceof Elements.StylePropertyTreeElement)
+      this._parentPane._setActiveProperty(/** @type {!Elements.StylePropertyTreeElement} */ (treeElement));
+    else
+      this._parentPane._setActiveProperty(null);
   }
 
   /**
@@ -1054,14 +1092,16 @@
     this._hoverTimer = setTimeout(this._highlight.bind(this), 300);
   }
 
-  _highlight() {
+  /**
+   * @param {string=} mode
+   */
+  _highlight(mode = 'all') {
     SDK.OverlayModel.hideDOMNodeHighlight();
     const node = this._parentPane.node();
     if (!node)
       return;
     const selectors = this._style.parentRule ? this._style.parentRule.selectorText() : undefined;
-    node.domModel().overlayModel().highlightDOMNodeWithConfig(
-        node.id, {mode: 'all', showInfo: undefined, selectors: selectors});
+    node.domModel().overlayModel().highlightDOMNodeWithConfig(node.id, {mode, showInfo: undefined, selectors});
   }
 
   /**
@@ -1331,6 +1371,7 @@
   }
 
   onpopulate() {
+    this._parentPane._setActiveProperty(null);
     this.propertiesTreeOutline.removeChildren();
     const style = this._style;
     let count = 0;
diff --git a/third_party/blink/renderer/devtools/front_end/elements/metricsSidebarPane.css b/third_party/blink/renderer/devtools/front_end/elements/metricsSidebarPane.css
index 9f9266b..5453f9d 100644
--- a/third_party/blink/renderer/devtools/front_end/elements/metricsSidebarPane.css
+++ b/third_party/blink/renderer/devtools/front_end/elements/metricsSidebarPane.css
@@ -53,7 +53,7 @@
     display: inline-block;
     text-align: center;
     vertical-align: middle;
-    padding: 3px;
+    padding: 3px 6px;
     margin: 3px;
 }
 
@@ -63,7 +63,7 @@
     display: inline-block;
     text-align: center;
     vertical-align: middle;
-    padding: 3px;
+    padding: 3px 6px;
     margin: 3px;
 }
 
@@ -73,7 +73,7 @@
     display: inline-block;
     text-align: center;
     vertical-align: middle;
-    padding: 3px;
+    padding: 3px 6px;
     margin: 3px;
 }
 
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_factory.cc b/third_party/blink/renderer/modules/indexeddb/idb_factory.cc
index 648de10..8a738487 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_factory.cc
+++ b/third_party/blink/renderer/modules/indexeddb/idb_factory.cc
@@ -111,10 +111,10 @@
       return;
 
     HeapVector<Member<IDBDatabaseInfo>> name_and_version_list;
-    for (size_t i = 0; i < idb_name_and_version_list.size(); ++i) {
+    for (const auto& item : idb_name_and_version_list) {
       IDBDatabaseInfo* idb_info = IDBDatabaseInfo::Create();
-      idb_info->setName(idb_name_and_version_list[i].name);
-      idb_info->setVersion(idb_name_and_version_list[i].version);
+      idb_info->setName(item.name);
+      idb_info->setVersion(item.version);
       name_and_version_list.push_back(idb_info);
     }
     probe::AsyncTask async_task(
diff --git a/third_party/blink/renderer/modules/payments/can_make_payment_test.cc b/third_party/blink/renderer/modules/payments/can_make_payment_test.cc
index 503bbf1..9663144a 100644
--- a/third_party/blink/renderer/modules/payments/can_make_payment_test.cc
+++ b/third_party/blink/renderer/modules/payments/can_make_payment_test.cc
@@ -12,7 +12,7 @@
 namespace blink {
 namespace {
 
-using payments::mojom::blink::CanMakePaymentQueryResult;
+using payments::mojom::blink::HasEnrolledInstrumentQueryResult;
 using payments::mojom::blink::PaymentErrorReason;
 using payments::mojom::blink::PaymentRequestClient;
 
@@ -70,8 +70,8 @@
   request->canMakePayment(scope.GetScriptState())
       .Then(funcs.ExpectNoCall(), funcs.ExpectCall());
 
-  static_cast<PaymentRequestClient*>(request)->OnCanMakePayment(
-      CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED);
+  static_cast<PaymentRequestClient*>(request)->OnHasEnrolledInstrument(
+      HasEnrolledInstrumentQueryResult::QUERY_QUOTA_EXCEEDED);
 }
 
 TEST(CanMakePaymentTest, ReturnCannotMakeCanMakePayment) {
@@ -85,8 +85,8 @@
   request->canMakePayment(scope.GetScriptState())
       .Then(funcs.ExpectCall(&captor), funcs.ExpectNoCall());
 
-  static_cast<PaymentRequestClient*>(request)->OnCanMakePayment(
-      CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT);
+  static_cast<PaymentRequestClient*>(request)->OnHasEnrolledInstrument(
+      HasEnrolledInstrumentQueryResult::HAS_NO_ENROLLED_INSTRUMENT);
 
   v8::MicrotasksScope::PerformCheckpoint(scope.GetScriptState()->GetIsolate());
   EXPECT_EQ("false", captor);
@@ -103,8 +103,8 @@
   request->canMakePayment(scope.GetScriptState())
       .Then(funcs.ExpectCall(&captor), funcs.ExpectNoCall());
 
-  static_cast<PaymentRequestClient*>(request)->OnCanMakePayment(
-      CanMakePaymentQueryResult::CAN_MAKE_PAYMENT);
+  static_cast<PaymentRequestClient*>(request)->OnHasEnrolledInstrument(
+      HasEnrolledInstrumentQueryResult::HAS_ENROLLED_INSTRUMENT);
 
   v8::MicrotasksScope::PerformCheckpoint(scope.GetScriptState()->GetIsolate());
   EXPECT_EQ("true", captor);
diff --git a/third_party/blink/renderer/modules/payments/payment_request.cc b/third_party/blink/renderer/modules/payments/payment_request.cc
index 6cdb286..0e962ce6 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request.cc
@@ -66,6 +66,7 @@
 using ::payments::mojom::blink::AddressErrors;
 using ::payments::mojom::blink::AddressErrorsPtr;
 using ::payments::mojom::blink::CanMakePaymentQueryResult;
+using ::payments::mojom::blink::HasEnrolledInstrumentQueryResult;
 using ::payments::mojom::blink::PayerErrors;
 using ::payments::mojom::blink::PayerErrorsPtr;
 using ::payments::mojom::blink::PaymentAddress;
@@ -869,7 +870,7 @@
                                            "Cannot query payment request"));
   }
 
-  payment_provider_->CanMakePayment();
+  payment_provider_->HasEnrolledInstrument();
 
   can_make_payment_resolver_ = ScriptPromiseResolver::Create(script_state);
   return can_make_payment_resolver_->Promise();
@@ -1408,25 +1409,31 @@
 }
 
 void PaymentRequest::OnCanMakePayment(CanMakePaymentQueryResult result) {
+  // TODO(https://crbug.com/915907): implement new CanMakePayment behavior.
+  NOTREACHED();
+}
+
+void PaymentRequest::OnHasEnrolledInstrument(
+    HasEnrolledInstrumentQueryResult result) {
   // TODO(https://crbug.com/891371): Understand how the resolver could be null
   // here and prevent it.
   if (!can_make_payment_resolver_)
     return;
 
   switch (result) {
-    case CanMakePaymentQueryResult::WARNING_CAN_MAKE_PAYMENT:
+    case HasEnrolledInstrumentQueryResult::WARNING_HAS_ENROLLED_INSTRUMENT:
       WarnIgnoringQueryQuotaForCanMakePayment(*GetExecutionContext());
       FALLTHROUGH;
-    case CanMakePaymentQueryResult::CAN_MAKE_PAYMENT:
+    case HasEnrolledInstrumentQueryResult::HAS_ENROLLED_INSTRUMENT:
       can_make_payment_resolver_->Resolve(true);
       break;
-    case CanMakePaymentQueryResult::WARNING_CANNOT_MAKE_PAYMENT:
+    case HasEnrolledInstrumentQueryResult::WARNING_HAS_NO_ENROLLED_INSTRUMENT:
       WarnIgnoringQueryQuotaForCanMakePayment(*GetExecutionContext());
       FALLTHROUGH;
-    case CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT:
+    case HasEnrolledInstrumentQueryResult::HAS_NO_ENROLLED_INSTRUMENT:
       can_make_payment_resolver_->Resolve(false);
       break;
-    case CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED:
+    case HasEnrolledInstrumentQueryResult::QUERY_QUOTA_EXCEEDED:
       can_make_payment_resolver_->Reject(DOMException::Create(
           DOMExceptionCode::kNotAllowedError,
           "Not allowed to check whether can make payment"));
diff --git a/third_party/blink/renderer/modules/payments/payment_request.h b/third_party/blink/renderer/modules/payments/payment_request.h
index 9045d35..afa9049 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.h
+++ b/third_party/blink/renderer/modules/payments/payment_request.h
@@ -125,6 +125,8 @@
   void OnAbort(bool aborted_successfully) override;
   void OnCanMakePayment(
       payments::mojom::blink::CanMakePaymentQueryResult) override;
+  void OnHasEnrolledInstrument(
+      payments::mojom::blink::HasEnrolledInstrumentQueryResult) override;
   void WarnNoFavicon() override;
 
   void OnCompleteTimeout(TimerBase*);
diff --git a/third_party/blink/renderer/platform/network/http_names.json5 b/third_party/blink/renderer/platform/network/http_names.json5
index ca872fe..9d797a1 100644
--- a/third_party/blink/renderer/platform/network/http_names.json5
+++ b/third_party/blink/renderer/platform/network/http_names.json5
@@ -35,6 +35,7 @@
     "Expires",
     "Date",
     "Feature-Policy",
+    "Feature-Policy-Report-Only",
     "If-Match",
     "If-Modified-Since",
     "If-None-Match",
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
index 170bb3c..1545cb0 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
@@ -55,7 +55,6 @@
 crbug.com/728378 compositing/culling/tile-occlusion-boundaries.html [ Failure ]
 crbug.com/864398 compositing/iframes/floating-self-painting-frame.html [ Failure ]
 crbug.com/591099 compositing/overflow/border-radius-above-composited-subframe.html [ Failure ]
-crbug.com/591099 css3/filters/backdrop-filter-plus-filter.html [ Failure Timeout ]
 crbug.com/591099 css3/filters/backdrop-filter-rendering.html [ Pass ]
 crbug.com/591099 css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html [ Failure ]
 crbug.com/591099 css3/flexbox/intrinsic-width-orthogonal-writing-mode.html [ Failure ]
@@ -95,12 +94,9 @@
 crbug.com/591099 external/wpt/css/css-text/line-breaking/line-breaking-ic-002.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/line-breaking/line-breaking-ic-003.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-text/overflow-wrap/overflow-wrap-min-content-size-002.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-text/overflow-wrap/overflow-wrap-min-content-size-003.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-text/white-space/line-edge-white-space-collapse-001.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/white-space/line-edge-white-space-collapse-002.html [ Pass ]
 crbug.com/40634 external/wpt/css/css-text/white-space/trailing-space-before-br-001.html [ Pass ]
-crbug.com/591099 external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-text/word-break/word-break-break-all-004.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/word-break/word-break-keep-all-003.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-ui/text-overflow-010.html [ Pass ]
@@ -215,8 +211,6 @@
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-content-box-border-radius-002.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-ellipse-038.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-ellipse-039.html [ Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-ellipse-048.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-ellipse-051.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-024.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-003.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-004.html [ Pass ]
@@ -245,7 +239,6 @@
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects-list-translate.html [ Failure ]
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
-crbug.com/591099 fast/events/wheel/mainthread-touchpad-fling-latching.html [ Pass ]
 crbug.com/591099 fast/forms/textarea/basic-textareas-quirks.html [ Failure ]
 crbug.com/889721 fast/inline/outline-continuations.html [ Failure ]
 crbug.com/591099 fast/overflow/overflow-update-transform.html [ Failure ]
@@ -308,7 +301,6 @@
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/dont-select-text-overflow-ellipsis-when-wrapping.html [ Crash ]
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/doubleclick-whitespace-crash.html [ Crash ]
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/legal-positions.html [ Crash ]
-crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/modify_extend/extend_by_character.html [ Pass ]
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/paint-hyphen.html [ Crash ]
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/select-text-overflow-ellipsis-mixed-in-ltr-2.html [ Crash ]
 crbug.com/591099 virtual/bidi-caret-affinity/editing/selection/select-text-overflow-ellipsis-mixed-in-ltr.html [ Crash ]
@@ -327,7 +319,6 @@
 crbug.com/824918 virtual/layout_ng_experimental/ [ Skip ]
 crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
 crbug.com/591099 virtual/new-remote-playback-pipeline/ [ Skip ]
-crbug.com/591099 virtual/omt-worker-fetch/external/wpt/workers/semantics/multiple-workers/003.html [ Timeout ]
 crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/redirect/redirect-count.any.html [ Pass ]
 crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/redirect/redirect-count.any.worker.html [ Pass ]
 crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/request/request-keepalive-quota.html?include=slow-2 [ Pass ]
@@ -342,4 +333,3 @@
 crbug.com/591099 virtual/threaded/ [ Skip ]
 crbug.com/591099 virtual/user-activation-v2/fast/events/mouse-cursor.html [ Failure ]
 crbug.com/591099 virtual/user-activation-v2/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
-crbug.com/591099 virtual/video-surface-layer/media/controls/buttons-after-reset.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService b/third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService
index 7916242..49790d1 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService
+++ b/third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService
@@ -11,6 +11,7 @@
 crbug.com/862886 external/wpt/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html [ Pass ]
 crbug.com/896924 http/tests/inspector-protocol/network/interception-multiclient.js [ Pass ]
 crbug.com/899303 http/tests/inspector-protocol/fetch/fetch-basic.js [ Pass ]
+crbug.com/899303 http/tests/inspector-protocol/fetch/fetch-renderer.js [ Pass ]
 
 # This passes in content_shell but not in chrome with network service disabled,
 # because content_shell does not add the about: handler. With network service
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests
index 58036cd..7332f28c 100644
--- a/third_party/blink/web_tests/SlowTests
+++ b/third_party/blink/web_tests/SlowTests
@@ -14,6 +14,7 @@
 crbug.com/24182 compositing/culling/filter-occlusion-blur-large.html [ Slow ]
 crbug.com/24182 compositing/video-frame-size-change.html [ Slow ]
 crbug.com/24182 editing/selection/caret-at-bidi-boundary.html [ Slow ]
+crbug.com/24182 virtual/bidi-caret-affinity/editing/selection/caret-at-bidi-boundary.html [ Slow ]
 crbug.com/24182 editing/selection/modify_move/move-by-word-visually-single-space-inline-element.html [ Slow ]
 crbug.com/24182 editing/selection/modify_move/move-by-word-visually-inline-block-positioned-element.html [ Slow ]
 crbug.com/24182 editing/selection/modify_move/move-by-word-visually-multi-space.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 27df4e0..647417a 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1532,7 +1532,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/crash-removing-out-of-flow-child.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/cross-axis-scrollbar.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/display-flexbox-set-get.html [ Skip ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-algorithm-min-max.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-baseline.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-column.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-end.html [ Failure ]
@@ -1550,7 +1549,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-flow-padding.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-flow.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-item-contains-strict.html [ Skip ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-justify-content.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-one-sets-flex-basis-to-zero-px.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-order.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flexbox-baseline-margins.html [ Skip ]
@@ -1568,7 +1566,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/intrinsic-min-width-applies-with-fixed-width.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/intrinsic-width-orthogonal-writing-mode.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/line-wrapping.html [ Skip ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/max-width-violation.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/min-size-auto.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/minimum-size-image.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-align-content-horizontal-column.html [ Failure ]
@@ -1594,15 +1591,12 @@
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/percentage-height-replaced-element.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/percentage-heights.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/percentage-sizes-quirks.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/percentage-sizes.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/position-absolute-child.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/preferred-widths-orthogonal.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/preferred-widths.html [ Skip ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/radiobutton-min-size.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/relayout-align-items.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/relayout-image-load.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/relpos-with-percentage-top.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/resize-min-content-flexbox.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/scrollbars-auto.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/scrollbars.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/stretch-input-in-column.html [ Failure ]
@@ -1691,7 +1685,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-wrap-002.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-direction-column-reverse.htm [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-direction-column.htm [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-wrap-flexing.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-wrap-wrap-reverse.htm [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-content-center.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-content-flexend.html [ Failure ]
@@ -1733,13 +1726,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_inline.html [ Skip ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_item-vertical-align.html [ Failure ]
 crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-center-overflow.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-center.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-flex-end.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-flex-start.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-spacearound-only.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-spacearound.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-spacebetween-only.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-spacebetween.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_margin-collapse.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_nested-flex.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_order-box.html [ Failure ]
@@ -1826,31 +1812,22 @@
 crbug.com/891427 virtual/bidi-caret-affinity/editing/pasteboard/drop-text-without-selection.html [ Pass Failure Timeout Crash ]
 crbug.com/891427 virtual/bidi-caret-affinity/editing/selection/drag-in-iframe.html [ Failure ]
 crbug.com/900060 virtual/bidi-caret-affinity/editing/selection/mixed-editability-8.html [ Failure ]
+crbug.com/751952 [ Mac ] virtual/bidi-caret-affinity/editing/selection/modify_extend/extend_by_character.html [ Failure Pass ]
+crbug.com/751952 [ Win ] virtual/bidi-caret-affinity/editing/selection/modify_extend/extend_by_character.html [ Failure Pass ]
 crbug.com/636424 virtual/bidi-caret-affinity/editing/selection/modify_move/move-by-word-visually-crash-test-5.html [ Pass Timeout ]
 crbug.com/851812 virtual/bidi-caret-affinity/editing/selection/paint-hyphen.html [ Failure ]
 crbug.com/725470 virtual/bidi-caret-affinity/editing/shadow/doubleclick-on-meter-in-shadow-crash.html [ Crash Failure ]
 
 ### True failures start from here
 
-### virtual/bidi-caret-affinity/editing/caret/
-crbug.com/894651 virtual/bidi-caret-affinity/editing/caret/caret-direction-auto.html [ Failure ]
-
 ### virtual/bidi-caret-affinity/editing/inserting/
 crbug.com/894651 virtual/bidi-caret-affinity/editing/inserting/caret-position.html [ Failure ]
 
 ### virtual/bidi-caret-affinity/editing/selection/
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-at-bidi-boundary.html [ Failure Timeout ]
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-bidi-first-and-last-letters.html [ Failure ]
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-ltr-2-left.html [ Failure ]
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-ltr-2.html [ Failure ]
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-rtl-2-left.html [ Failure ]
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/caret-rtl-2.html [ Failure ]
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/css-pseudo-element.html [ Failure ]
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/select-bidi-run.html [ Failure ]
 
-### virtual/bidi-caret-affinity/editing/selection/modify_extend/
-crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/modify_extend/extend_by_character.html [ Failure ]
-
 ### virtual/bidi-caret-affinity/editing/selection/modify_move/
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/modify_move/move-by-word-visually-mac.html [ Timeout ]
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/modify_move/move-by-word-visually-multi-space.html [ Timeout ]
@@ -2029,9 +2006,6 @@
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/modify_move/move_right_word_08_rtl_multi_line.html [ Failure ]
 crbug.com/894651 virtual/bidi-caret-affinity/editing/selection/modify_move/move_right_word_09_rtl_multi_line.html [ Failure ]
 
-### virtual/bidi-caret-affinity/editing/style/
-crbug.com/894651 virtual/bidi-caret-affinity/editing/style/text-indent.html [ Failure ]
-
 # ====== Bidi caret affinity failures until here ======
 
 ### sheriff 2018-05-28
@@ -5781,6 +5755,7 @@
 # The below is only supported with network service.
 crbug.com/896924 http/tests/inspector-protocol/network/interception-multiclient.js [ Skip ]
 crbug.com/899303 http/tests/inspector-protocol/fetch/fetch-basic.js [ Timeout ]
+crbug.com/899303 http/tests/inspector-protocol/fetch/fetch-renderer.js [ Timeout ]
 
 # New rebaselines because LayoutNG is more correct
 crbug.com/902591 [ Linux ] svg/zoom/page/zoom-svg-float-border-padding.xml [ Failure ]
@@ -5977,11 +5952,7 @@
 crbug.com/v8/8381 http/tests/devtools/coverage/multiple-instances-merge.js [ Pass Failure ]
 crbug.com/v8/8381 http/tests/devtools/coverage/coverage-export.js [ Pass Failure ]
 
-# Sheriff 2018-12-20
-crbug.com/916899 [ Win10 ] virtual/stable/webexposed/global-interface-listing-platform-specific.html [ Failure ]
-
 # TODO (michaelludwig): Todo after Skia roll and rebaseline
-crbug.com/915735 compositing/masks/mask-with-added-filters.html [ Pass Failure ]
 crbug.com/917379 media/video-layer-crash.html [ Pass Failure ]
 crbug.com/917379 virtual/gpu-rasterization/images/color-profile-background-image-cover.html [ Pass Failure ]
 crbug.com/917379 virtual/gpu-rasterization/images/color-profile-background-image-space.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/accessibility/long-text.html b/third_party/blink/web_tests/accessibility/long-text.html
new file mode 100644
index 0000000..7b3930e
--- /dev/null
+++ b/third_party/blink/web_tests/accessibility/long-text.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<pre id="pre" style="word-wrap: break-word; white-space: pre-wrap;"><script>
+for (let count = 1; count <= 250; count ++)
+  document.write('' + count + '. The quick brown fox jumps over the lazy dog. ');
+</script></pre>
+</body>
+
+<script>
+test(function(t) {
+    var axPre = accessibilityController.accessibleElementById("pre");
+    var axStaticText = axPre.childAtIndex(0);
+    console.log(axStaticText.name);
+    assert_equals(axStaticText.name.substr(-50), "250. The quick brown fox jumps over the lazy dog. ");
+}, "Accessible name should not be truncated.");
+</script>
+
diff --git a/third_party/blink/web_tests/editing/caret/caret-direction-auto.html b/third_party/blink/web_tests/editing/caret/caret-direction-auto.html
index 35f8b82..ef57ec3 100644
--- a/third_party/blink/web_tests/editing/caret/caret-direction-auto.html
+++ b/third_party/blink/web_tests/editing/caret/caret-direction-auto.html
@@ -91,9 +91,18 @@
   assert_less_than(caretPositions[4].x, caretPositions[5].x, '4-4');
   assert_less_than(caretPositions[5].x, caretPositions[6].x, '4-5');
   assert_less_than(caretPositions[6].x, caretPositions[7].x, '4-6');
-  assert_less_than(caretPositions[7].x, caretPositions[8].x, '4-7');
-  assert_less_than(caretPositions[8].x, caretPositions[9].x, '4-8');
-  assert_less_than(caretPositions[9].x, caretPositions[10].x, '4-9');
+  if (!internals.runtimeFlags.bidiCaretAffinityEnabled) {
+    assert_less_than(caretPositions[7].x, caretPositions[8].x, '4-7');
+    assert_less_than(caretPositions[8].x, caretPositions[9].x, '4-8');
+    assert_less_than(caretPositions[9].x, caretPositions[10].x, '4-9');
+  } else {
+    // The downstream caret positions are at:
+    //  h e l l o C B    b  y  e  _
+    // 3 4 5 6 7 X 9 8&10 11 12 13
+    assert_less_than(caretPositions[7].x, caretPositions[9].x, '4-7');
+    assert_less_than(caretPositions[9].x, caretPositions[8].x, '4-9');
+    assert_less_than_equal(caretPositions[8].x, caretPositions[10].x, '4-8');
+  }
   assert_less_than(caretPositions[10].x, caretPositions[11].x, '4-10');
   assert_less_than(caretPositions[11].x, caretPositions[12].x, '4-11');
   assert_less_than(caretPositions[12].x, caretPositions[13].x, '4-12');
diff --git a/third_party/blink/web_tests/editing/selection/caret-at-bidi-boundary.html b/third_party/blink/web_tests/editing/selection/caret-at-bidi-boundary.html
index 0423f0b..11dec260 100644
--- a/third_party/blink/web_tests/editing/selection/caret-at-bidi-boundary.html
+++ b/third_party/blink/web_tests/editing/selection/caret-at-bidi-boundary.html
@@ -8,6 +8,7 @@
 dt { width: 15ex; padding: 0px 10px; margin: 0px; }
 dd { font-size: 0.6em; margin: 0px; padding: 0px 10px; }
 .target { background-color: #bbeeff; }
+.bidi-caret { display: none }
 </style>
 </head>
 <body>
@@ -16,21 +17,27 @@
 <dl id="tests">
 <dt contenteditable>abcאבג</dt>
 <dd>0 1 2 3 5 4 6</dd>
+<div class="bidi-caret">0 1 2 3 6 5 4 3</div>
 
 <dt contenteditable>נת12</dt>
 <dd>2 3 4 1 4 (There is a bug. Clicking on the left of 12 should result in offset 0.)</dd>
+<div class="bidi-caret">2 3 4 2 1 0</div>
 
 <dt contenteditable>לש<b>נ</b>ת</dt>
 <dd>0 3 2 1 4</dd>
+<div class="bidi-caret">4 3 2 1 0</div>
 
 <dt contenteditable>aקל12יםd</dt>
 <dd>0 1 6 3 4 5 2 7 8</dd>
+<div class="bidi-caret">0 1 7 6 5 3 4 5 3 2 1 7 8</div>
 
 <dt><span dir="rtl">12<b>קל43</b></span>ab</dt>
 <dd>4 5 6 3 0 1 2 7 8</dd>
+<div class="bidi-caret">4 5 6 4 3 2 0 1 2 6 7 8</div>
 
 <dt dir="rtl"><span dir="ltr">abcלשנ</span></dt>
 <dd>6 1 2 6 5 4 3</dd>
+<div class="bidi-caret">0 1 2 3 6 5 4 3</div>
 
 </dl>
 <div id="console"></div>
@@ -89,6 +96,15 @@
 
     var tests = document.getElementById('tests').getElementsByTagName('dt');
     var testExpectations = document.getElementById('tests').getElementsByTagName('dd');
+    if (internals.runtimeFlags.bidiCaretAffinityEnabled) {
+        // When bidi caret affinity is enabled, carets are shown at different visual locations.
+        // Use the changed test expectations in this case.
+        var expectations = document.querySelectorAll('.bidi-caret');
+        for (var i = 0; i < testExpectations.length; i++) {
+            testExpectations[i].firstChild.remove();
+            testExpectations[i].appendChild(expectations[i].firstChild);
+        }
+    }
     for (var i = 0; i < tests.length; i++) {
         debug('Test "' + tests[i].textContent + '":');
         runTest(tests[i], testExpectations[i].textContent.replace(/\s*\(.+\)\s*/, '').split(/\s+/).map(function (x) {return parseInt(x);}));
diff --git a/third_party/blink/web_tests/editing/selection/caret-ltr-2-left.html b/third_party/blink/web_tests/editing/selection/caret-ltr-2-left.html
index e13bdd2..a308ee2 100644
--- a/third_party/blink/web_tests/editing/selection/caret-ltr-2-left.html
+++ b/third_party/blink/web_tests/editing/selection/caret-ltr-2-left.html
@@ -11,6 +11,11 @@
 
 var clickOn = 'left';
 var expectedOffset = 7;
+if (window.internals && internals.runtimeFlags.bidiCaretAffinityEnabled) {
+  // When bidi caret affinity is enabled, carets are shown at different visual
+  // locations. Use the changed test expectations in this case.
+  expectedOffset = 0;
+}
 
 runTest();
 
diff --git a/third_party/blink/web_tests/editing/selection/caret-ltr-2.html b/third_party/blink/web_tests/editing/selection/caret-ltr-2.html
index ab1eda1..13e52e9a 100644
--- a/third_party/blink/web_tests/editing/selection/caret-ltr-2.html
+++ b/third_party/blink/web_tests/editing/selection/caret-ltr-2.html
@@ -11,6 +11,11 @@
 
 var clickOn = 'right';
 var expectedOffset = 0;
+if (window.internals && internals.runtimeFlags.bidiCaretAffinityEnabled) {
+  // When bidi caret affinity is enabled, carets are shown at different visual
+  // locations. Use the changed test expectations in this case.
+  expectedOffset = 7;
+}
 
 runTest();
 
diff --git a/third_party/blink/web_tests/editing/selection/caret-rtl-2-left.html b/third_party/blink/web_tests/editing/selection/caret-rtl-2-left.html
index 4627b03..b140353 100644
--- a/third_party/blink/web_tests/editing/selection/caret-rtl-2-left.html
+++ b/third_party/blink/web_tests/editing/selection/caret-rtl-2-left.html
@@ -11,6 +11,11 @@
 
 var clickOn = 'left';
 var expectedOffset = 0;
+if (window.internals && internals.runtimeFlags.bidiCaretAffinityEnabled) {
+  // When bidi caret affinity is enabled, carets are shown at different visual
+  // locations. Use the changed test expectations in this case.
+  expectedOffset = 7;
+}
 
 runTest();
 
diff --git a/third_party/blink/web_tests/editing/selection/caret-rtl-2.html b/third_party/blink/web_tests/editing/selection/caret-rtl-2.html
index ada1cd8..ebd2a2e 100644
--- a/third_party/blink/web_tests/editing/selection/caret-rtl-2.html
+++ b/third_party/blink/web_tests/editing/selection/caret-rtl-2.html
@@ -11,6 +11,11 @@
 
 var clickOn = 'right';
 var expectedOffset = 7;
+if (window.internals && internals.runtimeFlags.bidiCaretAffinityEnabled) {
+  // When bidi caret affinity is enabled, carets are shown at different visual
+  // locations. Use the changed test expectations in this case.
+  expectedOffset = 0;
+}
 
 runTest();
 
diff --git a/third_party/blink/web_tests/editing/style/text-indent.html b/third_party/blink/web_tests/editing/style/text-indent.html
index b6d6e73..9900d36 100644
--- a/third_party/blink/web_tests/editing/style/text-indent.html
+++ b/third_party/blink/web_tests/editing/style/text-indent.html
@@ -57,8 +57,13 @@
 output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:-30px;'>", 0);
 output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;text-align:left'>", 0);
 output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;text-align:right'>", 1);
-output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;direction:rtl;'>", 0);
-output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;direction:rtl;text-align:right;'>", 0);
+
+// When bidi caret affinity is enabled, carets are shown at different visual
+// locations. Use the changed test expectations in this case.
+var usesBidiAffinity = window.internals && internals.runtimeFlags.bidiCaretAffinityEnabled;
+output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;direction:rtl;'>", usesBidiAffinity ? 1 : 0);
+output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;direction:rtl;text-align:right;'>", usesBidiAffinity ? 1 : 0);
+
 output += testTextIndentWhenTextAlignsToCenter(30);
 output += testTextIndentWhenTextAlignsToCenter(-30);
 document.body.innerText = output;
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/camera-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/camera-report-only.https.html.headers
index 46b8481..d7e19c0 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/camera-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/camera-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: camera-report-only 'none'
+Feature-Policy-Report-Only: camera 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/document-write-report-only.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/document-write-report-only.html.headers
index 63e43f1d..bd14187 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/document-write-report-only.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/document-write-report-only.html.headers
@@ -1 +1 @@
-Feature-Policy: document-write-report-only 'none'
+Feature-Policy-Report-Only: document-write 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/encrypted-media-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/encrypted-media-report-only.https.html.headers
index a2c8fbb..37e625f 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/encrypted-media-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/encrypted-media-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: encrypted-media-report-only 'none'
+Feature-Policy-Report-Only: encrypted-media 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/fullscreen-report-only.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/fullscreen-report-only.html.headers
index 33defa88..1137afb1 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/fullscreen-report-only.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/fullscreen-report-only.html.headers
@@ -1 +1 @@
-Feature-Policy: fullscreen-report-only 'none'
+Feature-Policy-Report-Only: fullscreen 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/generic-sensor-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/generic-sensor-report-only.https.html.headers
index 26605eb0..9d49d99 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/generic-sensor-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/generic-sensor-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: ambient-light-sensor-report-only 'none'; accelerometer-report-only 'none'; gyroscope-report-only 'none'; magnetometer-report-only 'none'
+Feature-Policy-Report-Only: ambient-light-sensor 'none'; accelerometer 'none'; gyroscope 'none'; magnetometer 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/geolocation-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/geolocation-report-only.https.html.headers
index fc985900..ba0662f 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/geolocation-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/geolocation-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: geolocation-report-only 'none'
+Feature-Policy-Report-Only: geolocation 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/microphone-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/microphone-report-only.https.html.headers
index 7673d05b..5342e71 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/microphone-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/microphone-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: microphone-report-only 'none'
+Feature-Policy-Report-Only: microphone 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/midi-report-only.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/midi-report-only.html.headers
index 3c6a2d4..d307ccc9 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/midi-report-only.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/midi-report-only.html.headers
@@ -1 +1 @@
-Feature-Policy: midi-report-only 'none'
+Feature-Policy-Report-Only: midi 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/payment-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/payment-report-only.https.html.headers
index 6411478e..dc41987 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/payment-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/payment-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: payment-report-only 'none'
+Feature-Policy-Report-Only: payment 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/picture-in-picture-report-only.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/picture-in-picture-report-only.html.headers
index 0df90a3..b3ec5aa 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/picture-in-picture-report-only.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/picture-in-picture-report-only.html.headers
@@ -1 +1 @@
-Feature-Policy: picture-in-picture-report-only 'none'
+Feature-Policy-Report-Only: picture-in-picture 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/sync-xhr-report-only.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/sync-xhr-report-only.html.headers
index 79a82cf..819dc7ad 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/sync-xhr-report-only.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/sync-xhr-report-only.html.headers
@@ -1 +1 @@
-Feature-Policy: sync-xhr-report-only 'none'
+Feature-Policy-Report-Only: sync-xhr 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/usb-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/usb-report-only.https.html.headers
index bd2e3c6f..2705af7 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/usb-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/usb-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: usb-report-only 'none'
+Feature-Policy-Report-Only: usb 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/vr-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/vr-report-only.https.html.headers
index b54cad2a..0761021 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/vr-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/vr-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: vr-report-only 'none'
+Feature-Policy-Report-Only: vr 'none'
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/xr-report-only.https.html.headers b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/xr-report-only.https.html.headers
index b54cad2a..0761021 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/reporting/xr-report-only.https.html.headers
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/reporting/xr-report-only.https.html.headers
@@ -1 +1 @@
-Feature-Policy: vr-report-only 'none'
+Feature-Policy-Report-Only: vr 'none'
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-basic.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-basic.js
index 38cefb50..7e21c2a 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-basic.js
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-basic.js
@@ -3,7 +3,7 @@
       `Tests basic function of the fetch domain.`);
 
   var FetchHelper = await testRunner.loadScript('resources/fetch-test.js');
-  var helper = new FetchHelper(testRunner, dp);
+  var helper = new FetchHelper(testRunner, testRunner.browserP(), dp);
   await helper.enable();
 
   helper.onceRequest().fulfill({
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer-expected.txt
new file mode 100644
index 0000000..15a05d8
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer-expected.txt
@@ -0,0 +1,14 @@
+Tests basic function of the fetch domain.
+Request to undefined, type: Document
+Request to undefined, type: XHR
+Response after Fetch.fulfillRequest: overriden response body
+Request to undefined, type: XHR
+Response after fetch.continueRequest: Hello world
+Request to undefined, type: XHR
+Response after fetch.continueRequest with new URL: ******************************************
+Request to undefined, type: XHR
+Response after fetch.failRequest: fail
+Sending invalid header (should result in error)
+Request to undefined, type: XHR
+Got error: Invalid header
+
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer.js
new file mode 100644
index 0000000..650b614
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/fetch-renderer.js
@@ -0,0 +1,38 @@
+(async function(testRunner) {
+  var {page, session, dp} = await testRunner.startBlank(
+      `Tests basic function of the fetch domain.`);
+
+  var FetchHelper = await testRunner.loadScript('resources/fetch-test.js');
+  var helper = new FetchHelper(testRunner, dp, dp);
+  await helper.enable();
+
+  helper.onceRequest().fulfill({
+    fetchId: params.fetchId,
+    responseCode: 200,
+    responseHeaders: [],
+    body: btoa("overriden response body")
+  });
+
+  const url = '/devtools/network/resources/resource.php';
+  let content = await session.evaluateAsync(`fetch("${url}").then(r => r.text())`);
+  testRunner.log(`Response after Fetch.fulfillRequest: ${content}`);
+
+  helper.onceRequest().continueRequest();
+  content = await session.evaluateAsync(`fetch("${url}").then(r => r.text())`);
+  testRunner.log(`Response after fetch.continueRequest: ${content}`);
+
+  helper.onceRequest().continueRequest({url: 'http://127.0.0.1:8000/devtools/network/resources/resource.php?size=42'});
+  content = await session.evaluateAsync(`fetch("${url}").then(r => r.text())`);
+  testRunner.log(`Response after fetch.continueRequest with new URL: ${content}`);
+
+  helper.onceRequest().fail({errorReason: 'AccessDenied'});
+  content = await session.evaluateAsync(`fetch("${url}").then(r => t.text()).catch(() => 'fail')`);
+  testRunner.log(`Response after fetch.failRequest: ${content}`);
+
+  testRunner.log(`Sending invalid header (should result in error)`);
+  const echoHeaders = '/inspector-protocol/network/resources/echo-headers.php?headers=HTTP_X_DEVTOOLS_TEST';
+  session.evaluateAsync(`fetch("${echoHeaders}").then(r => r.text())`);
+  await helper.onceRequest().continueRequest({headers: [{name: 'X-DevTools-Test: ', value: 'foo'}]});
+
+  testRunner.completeTest();
+})
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/resources/fetch-test.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/resources/fetch-test.js
index 9a1107a..21881aba 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/resources/fetch-test.js
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/resources/fetch-test.js
@@ -43,11 +43,11 @@
 };
 
 class FetchHelper {
-  constructor(testRunner, pageProtocol) {
+  constructor(testRunner, targetProtocol, pageProtocol) {
     this._handlers = [];
     this._onceHandlers = [];
     this._testRunner = testRunner;
-    this._protocol = testRunner.browserP();
+    this._protocol = targetProtocol;
     this._pageProtocol = pageProtocol;
     this._protocol.Fetch.onRequestPaused(event => {
       this._logRequest(event);
diff --git a/third_party/blink/web_tests/platform/linux/compositing/masks/mask-with-added-filters-expected.png b/third_party/blink/web_tests/platform/linux/compositing/masks/mask-with-added-filters-expected.png
index fd5a085..5bb69db 100644
--- a/third_party/blink/web_tests/platform/linux/compositing/masks/mask-with-added-filters-expected.png
+++ b/third_party/blink/web_tests/platform/linux/compositing/masks/mask-with-added-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/masks/mask-with-added-filters-expected.png b/third_party/blink/web_tests/platform/mac/compositing/masks/mask-with-added-filters-expected.png
index 82f1ffb..2a3efbb 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/masks/mask-with-added-filters-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/masks/mask-with-added-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/masks/mask-with-added-filters-expected.png b/third_party/blink/web_tests/platform/win/compositing/masks/mask-with-added-filters-expected.png
index 3b0126ad..f130d554 100644
--- a/third_party/blink/web_tests/platform/win/compositing/masks/mask-with-added-filters-expected.png
+++ b/third_party/blink/web_tests/platform/win/compositing/masks/mask-with-added-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/stable/webexposed/global-interface-listing-platform-specific-expected.txt b/third_party/blink/web_tests/platform/win/virtual/stable/webexposed/global-interface-listing-platform-specific-expected.txt
new file mode 100644
index 0000000..3236dec
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/stable/webexposed/global-interface-listing-platform-specific-expected.txt
@@ -0,0 +1,85 @@
+This test documents all interface attributes and methods on the global window object and element instances.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+[INTERFACES]
+interface Bluetooth : EventTarget
+    attribute @@toStringTag
+    method constructor
+    method requestDevice
+interface BluetoothCharacteristicProperties
+    attribute @@toStringTag
+    getter authenticatedSignedWrites
+    getter broadcast
+    getter indicate
+    getter notify
+    getter read
+    getter reliableWrite
+    getter writableAuxiliaries
+    getter write
+    getter writeWithoutResponse
+    method constructor
+interface BluetoothDevice : EventTarget
+    attribute @@toStringTag
+    getter gatt
+    getter id
+    getter name
+    getter ongattserverdisconnected
+    method constructor
+    setter ongattserverdisconnected
+interface BluetoothRemoteGATTCharacteristic : EventTarget
+    attribute @@toStringTag
+    getter oncharacteristicvaluechanged
+    getter properties
+    getter service
+    getter uuid
+    getter value
+    method constructor
+    method getDescriptor
+    method getDescriptors
+    method readValue
+    method startNotifications
+    method stopNotifications
+    method writeValue
+    setter oncharacteristicvaluechanged
+interface BluetoothRemoteGATTDescriptor
+    attribute @@toStringTag
+    getter characteristic
+    getter uuid
+    getter value
+    method constructor
+    method readValue
+    method writeValue
+interface BluetoothRemoteGATTServer
+    attribute @@toStringTag
+    getter connected
+    getter device
+    method connect
+    method constructor
+    method disconnect
+    method getPrimaryService
+    method getPrimaryServices
+interface BluetoothRemoteGATTService
+    attribute @@toStringTag
+    getter device
+    getter isPrimary
+    getter uuid
+    method constructor
+    method getCharacteristic
+    method getCharacteristics
+interface BluetoothUUID
+    static method canonicalUUID
+    static method getCharacteristic
+    static method getDescriptor
+    static method getService
+    attribute @@toStringTag
+    method constructor
+interface Navigator
+    getter bluetooth
+interface Notification : EventTarget
+    getter image
+[GLOBAL OBJECT]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/bidi-caret-affinity/editing/selection/caret-at-bidi-boundary-expected.txt b/third_party/blink/web_tests/virtual/bidi-caret-affinity/editing/selection/caret-at-bidi-boundary-expected.txt
new file mode 100644
index 0000000..4fab538
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/bidi-caret-affinity/editing/selection/caret-at-bidi-boundary-expected.txt
@@ -0,0 +1,93 @@
+This test ensures WebKit lets user place caret around bidirectional text properly.
+
+Current offset:
+abcאבג
+0 1 2 3 6 5 4 3
+נת12
+2 3 4 2 1 0
+לשנת
+4 3 2 1 0
+aקל12יםd
+0 1 7 6 5 3 4 5 3 2 1 7 8
+12קל43ab
+4 5 6 4 3 2 0 1 2 6 7 8
+abcלשנ
+0 1 2 3 6 5 4 3
+Test "abcאבג":
+PASS caret is at 0
+PASS caret is at 1
+PASS caret is at 2
+PASS caret is at 3
+PASS caret is at 6
+PASS caret is at 5
+PASS caret is at 4
+PASS caret is at 3
+
+
+Test "נת12":
+PASS caret is at 2
+PASS caret is at 3
+PASS caret is at 4
+PASS caret is at 2
+PASS caret is at 1
+PASS caret is at 0
+
+
+Test "לשנת":
+PASS caret is at 4
+PASS caret is at 3
+PASS caret is at 2
+PASS caret is at 1
+PASS caret is at 0
+
+
+Test "aקל12יםd":
+PASS caret is at 0
+PASS caret is at 1
+PASS caret is at 7
+PASS caret is at 6
+PASS caret is at 5
+PASS caret is at 3
+PASS caret is at 4
+PASS caret is at 5
+PASS caret is at 3
+PASS caret is at 2
+PASS caret is at 1
+PASS caret is at 7
+PASS caret is at 8
+
+
+Test "12קל43ab":
+PASS caret is at 4
+PASS caret is at 5
+PASS caret is at 6
+PASS caret is at 4
+PASS caret is at 3
+PASS caret is at 2
+PASS caret is at 0
+PASS caret is at 1
+PASS caret is at 2
+PASS caret is at 6
+PASS caret is at 7
+PASS caret is at 8
+
+
+Test "abcלשנ":
+PASS caret is at 0
+PASS caret is at 1
+PASS caret is at 2
+PASS caret is at 3
+PASS caret is at 6
+PASS caret is at 5
+PASS caret is at 4
+PASS caret is at 3
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+
+
+
+
diff --git a/third_party/hunspell/google/bdict.cc b/third_party/hunspell/google/bdict.cc
index 1796257..4dd2469 100644
--- a/third_party/hunspell/google/bdict.cc
+++ b/third_party/hunspell/google/bdict.cc
@@ -4,6 +4,7 @@
 
 #include <string.h>
 
+#include "base/numerics/safe_math.h"
 #include "third_party/hunspell/google/bdict.h"
 
 // static
@@ -15,19 +16,33 @@
       reinterpret_cast<const hunspell::BDict::Header*>(bdict_data);
   if (header->signature != hunspell::BDict::SIGNATURE ||
       header->major_version > hunspell::BDict::MAJOR_VERSION ||
-      header->dic_offset > bdict_length)
+      header->aff_offset > bdict_length ||
+      header->dic_offset > bdict_length) {
     return false;
+  }
 
-  // Get the affix header, make sure there is enough room for it.
-  if (header->aff_offset + sizeof(hunspell::BDict::AffHeader) > bdict_length)
-    return false;
+  {
+    // Make sure there is enough room for the affix header.
+    base::CheckedNumeric<uint32_t> aff_offset(header->aff_offset);
+    aff_offset += sizeof(hunspell::BDict::AffHeader);
+    if (!aff_offset.IsValid() || aff_offset.ValueOrDie() > bdict_length)
+      return false;
+  }
 
-  // Make sure there is enough room for the affix group count dword.
   const hunspell::BDict::AffHeader* aff_header =
       reinterpret_cast<const hunspell::BDict::AffHeader*>(
           &bdict_data[header->aff_offset]);
-  if (aff_header->affix_group_offset + sizeof(uint32_t) > bdict_length)
-    return false;
+
+  // Make sure there is enough room for the affix group count dword.
+  {
+    base::CheckedNumeric<uint32_t> affix_group_offset(
+        aff_header->affix_group_offset);
+    affix_group_offset += sizeof(uint32_t);
+    if (!affix_group_offset.IsValid() ||
+        affix_group_offset.ValueOrDie() > bdict_length) {
+      return false;
+    }
+  }
 
   // The new BDICT header has a MD5 digest of the dictionary data. Compare the
   // MD5 digest of the data with the one in the BDICT header.
diff --git a/third_party/libaom/README.chromium b/third_party/libaom/README.chromium
index b4825e2..f2ac10e7 100644
--- a/third_party/libaom/README.chromium
+++ b/third_party/libaom/README.chromium
@@ -2,9 +2,9 @@
 Short Name: libaom
 URL: https://aomedia.googlesource.com/aom/
 Version: 0
-Date: Friday December 07 2018
+Date: Friday December 21 2018
 Branch: master
-Commit: 98dae942edd3032c89b0e8bae9b4d50398931405
+Commit: f90004a14ea8c2990e6cdb0961517760a6a2ffa9
 License: BSD
 License File: source/libaom/LICENSE
 Security Critical: yes
diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
index 786bfa6..54848ed 100644
--- a/third_party/libaom/libaom_srcs.gni
+++ b/third_party/libaom/libaom_srcs.gni
@@ -183,6 +183,7 @@
 aom_av1_encoder_intrin_avx2 = [
   "//third_party/libaom/source/libaom/av1/encoder/x86/av1_quantize_avx2.c",
   "//third_party/libaom/source/libaom/av1/encoder/x86/av1_highbd_quantize_avx2.c",
+  "//third_party/libaom/source/libaom/av1/encoder/x86/corner_match_avx2.c",
   "//third_party/libaom/source/libaom/av1/encoder/x86/error_intrin_avx2.c",
   "//third_party/libaom/source/libaom/av1/encoder/x86/av1_fwd_txfm_avx2.h",
   "//third_party/libaom/source/libaom/av1/encoder/x86/av1_fwd_txfm2d_avx2.c",
diff --git a/third_party/libaom/source/config/config/aom_version.h b/third_party/libaom/source/config/config/aom_version.h
index 47e75fa..f12e53b 100644
--- a/third_party/libaom/source/config/config/aom_version.h
+++ b/third_party/libaom/source/config/config/aom_version.h
@@ -12,8 +12,8 @@
 #define VERSION_MAJOR 1
 #define VERSION_MINOR 0
 #define VERSION_PATCH 0
-#define VERSION_EXTRA "1012-g98dae942e"
+#define VERSION_EXTRA "1092-gf90004a14"
 #define VERSION_PACKED \
   ((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH))
-#define VERSION_STRING_NOSP "1.0.0-1012-g98dae942e"
-#define VERSION_STRING " 1.0.0-1012-g98dae942e"
+#define VERSION_STRING_NOSP "1.0.0-1092-gf90004a14"
+#define VERSION_STRING " 1.0.0-1092-gf90004a14"
diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
index a95c691..9aadc24 100644
--- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
@@ -33,7 +33,6 @@
 CONFIG_FP_MB_STATS equ 0
 CONFIG_GCC equ 1
 CONFIG_GCOV equ 0
-CONFIG_GLOBAL_MOTION_SEARCH equ 1
 CONFIG_GPROF equ 0
 CONFIG_INSPECTION equ 0
 CONFIG_INTERNAL_STATS equ 0
diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
index 8b17412..64efc452 100644
--- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/av1_rtcd.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/av1_rtcd.h
index 887c3b6..096f55f 100644
--- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/av1_rtcd.h
@@ -552,48 +552,12 @@
                                const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
                                     const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -612,18 +576,6 @@
                                    const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
index 1193fe26..48b16da 100644
--- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
@@ -33,7 +33,6 @@
 CONFIG_FP_MB_STATS equ 0
 CONFIG_GCC equ 1
 CONFIG_GCOV equ 0
-CONFIG_GLOBAL_MOTION_SEARCH equ 1
 CONFIG_GPROF equ 0
 CONFIG_INSPECTION equ 0
 CONFIG_INTERNAL_STATS equ 0
diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
index cd3baad..eab20d4 100644
--- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/arm-neon/config/av1_rtcd.h b/third_party/libaom/source/config/linux/arm-neon/config/av1_rtcd.h
index 17bde5be..3ae1e74 100644
--- a/third_party/libaom/source/config/linux/arm-neon/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/arm-neon/config/av1_rtcd.h
@@ -491,48 +491,12 @@
                                const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
                                     const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -551,18 +515,6 @@
                                    const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
index bc29245..90f728e3 100644
--- a/third_party/libaom/source/config/linux/arm/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
@@ -33,7 +33,6 @@
 CONFIG_FP_MB_STATS equ 0
 CONFIG_GCC equ 1
 CONFIG_GCOV equ 0
-CONFIG_GLOBAL_MOTION_SEARCH equ 1
 CONFIG_GPROF equ 0
 CONFIG_INSPECTION equ 0
 CONFIG_INTERNAL_STATS equ 0
diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/third_party/libaom/source/config/linux/arm/config/aom_config.h
index 2706da50..5fbc172 100644
--- a/third_party/libaom/source/config/linux/arm/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/arm/config/av1_rtcd.h b/third_party/libaom/source/config/linux/arm/config/av1_rtcd.h
index 09d2012..6b685ca1 100644
--- a/third_party/libaom/source/config/linux/arm/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/arm/config/av1_rtcd.h
@@ -426,48 +426,12 @@
                                const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
                                     const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -486,18 +450,6 @@
                                    const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
index 1193fe26..48b16da 100644
--- a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
@@ -33,7 +33,6 @@
 CONFIG_FP_MB_STATS equ 0
 CONFIG_GCC equ 1
 CONFIG_GCOV equ 0
-CONFIG_GLOBAL_MOTION_SEARCH equ 1
 CONFIG_GPROF equ 0
 CONFIG_INSPECTION equ 0
 CONFIG_INTERNAL_STATS equ 0
diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
index cd3baad..eab20d4 100644
--- a/third_party/libaom/source/config/linux/arm64/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/arm64/config/av1_rtcd.h b/third_party/libaom/source/config/linux/arm64/config/av1_rtcd.h
index 17bde5be..3ae1e74 100644
--- a/third_party/libaom/source/config/linux/arm64/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/arm64/config/av1_rtcd.h
@@ -491,48 +491,12 @@
                                const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
                                     const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -551,18 +515,6 @@
                                    const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.asm b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
index 731c139..abe9d7b 100644
--- a/third_party/libaom/source/config/linux/generic/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
@@ -33,7 +33,6 @@
 CONFIG_FP_MB_STATS equ 0
 CONFIG_GCC equ 1
 CONFIG_GCOV equ 0
-CONFIG_GLOBAL_MOTION_SEARCH equ 1
 CONFIG_GPROF equ 0
 CONFIG_INSPECTION equ 0
 CONFIG_INTERNAL_STATS equ 0
diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h b/third_party/libaom/source/config/linux/generic/config/aom_config.h
index 161f424e..eea3c8ba 100644
--- a/third_party/libaom/source/config/linux/generic/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/generic/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/generic/config/av1_rtcd.h b/third_party/libaom/source/config/linux/generic/config/av1_rtcd.h
index 848280a..e052171e 100644
--- a/third_party/libaom/source/config/linux/generic/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/generic/config/av1_rtcd.h
@@ -426,48 +426,12 @@
                                const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
                                     const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -486,18 +450,6 @@
                                    const TxfmParam* txfm_param);
 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
diff --git a/third_party/libaom/source/config/linux/ia32/config/aom_config.asm b/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
index 20ccc7c..35bae5e 100644
--- a/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
@@ -23,7 +23,6 @@
 %define CONFIG_FP_MB_STATS 0
 %define CONFIG_GCC 1
 %define CONFIG_GCOV 0
-%define CONFIG_GLOBAL_MOTION_SEARCH 1
 %define CONFIG_GPROF 0
 %define CONFIG_INSPECTION 0
 %define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/ia32/config/aom_config.h b/third_party/libaom/source/config/linux/ia32/config/aom_config.h
index 4cfde25..5d5c1f7 100644
--- a/third_party/libaom/source/config/linux/ia32/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/ia32/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/ia32/config/av1_rtcd.h b/third_party/libaom/source/config/linux/ia32/config/av1_rtcd.h
index 213461ba..2d23a44 100644
--- a/third_party/libaom/source/config/linux/ia32/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/ia32/config/av1_rtcd.h
@@ -478,7 +478,24 @@
                             int upsample_above,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
+void av1_dr_prediction_z1_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z2_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -490,7 +507,26 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
+void av1_dr_prediction_z2_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z3_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -501,7 +537,24 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
+void av1_dr_prediction_z3_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
 void av1_filter_intra_edge_sse4_1(uint8_t* p, int sz, int strength);
@@ -917,7 +970,28 @@
                                    int dx,
                                    int dy,
                                    int bd);
-#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
+void av1_highbd_dr_prediction_z2_avx2(uint16_t* dst,
+                                      ptrdiff_t stride,
+                                      int bw,
+                                      int bh,
+                                      const uint16_t* above,
+                                      const uint16_t* left,
+                                      int upsample_above,
+                                      int upsample_left,
+                                      int dx,
+                                      int dy,
+                                      int bd);
+RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t* dst,
+                                                ptrdiff_t stride,
+                                                int bw,
+                                                int bh,
+                                                const uint16_t* above,
+                                                const uint16_t* left,
+                                                int upsample_above,
+                                                int upsample_left,
+                                                int dx,
+                                                int dy,
+                                                int bd);
 
 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
                                    ptrdiff_t stride,
@@ -967,40 +1041,6 @@
                                             int stride,
                                             const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1014,74 +1054,6 @@
                                                  int stride,
                                                  const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1121,40 +1093,6 @@
                                                 int stride,
                                                 const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x32)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
@@ -1176,10 +1114,6 @@
                                         uint8_t* dst,
                                         int stride,
                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x8_avx2(const tran_low_t* dqcoeff,
-                                      uint8_t* dst,
-                                      int stride,
-                                      const TxfmParam* txfm_param);
 RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t* dqcoeff,
                                                 uint8_t* dst,
                                                 int stride,
@@ -2295,6 +2229,15 @@
   av1_convolve_y_sr = av1_convolve_y_sr_sse2;
   if (flags & HAS_AVX2)
     av1_convolve_y_sr = av1_convolve_y_sr_avx2;
+  av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
+  av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
+  av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
   av1_filter_intra_edge = av1_filter_intra_edge_c;
   if (flags & HAS_SSE4_1)
     av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
@@ -2331,6 +2274,9 @@
   av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
+  av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
   av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
@@ -2339,39 +2285,9 @@
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
   if (flags & HAS_AVX2)
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
-  av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_avx2;
-  av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_avx2;
   av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
-  av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_avx2;
-  av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_avx2;
-  av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
-  av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_avx2;
   av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
@@ -2381,24 +2297,12 @@
   av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
-  av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_avx2;
-  av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_avx2;
   av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
   av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_avx2;
   av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
index abb116c..2367d6a 100644
--- a/third_party/libaom/source/config/linux/x64/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
@@ -23,7 +23,6 @@
 %define CONFIG_FP_MB_STATS 0
 %define CONFIG_GCC 1
 %define CONFIG_GCOV 0
-%define CONFIG_GLOBAL_MOTION_SEARCH 1
 %define CONFIG_GPROF 0
 %define CONFIG_INSPECTION 0
 %define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/third_party/libaom/source/config/linux/x64/config/aom_config.h
index 737f207..0774c770 100644
--- a/third_party/libaom/source/config/linux/x64/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/x64/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 1
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/linux/x64/config/av1_rtcd.h b/third_party/libaom/source/config/linux/x64/config/av1_rtcd.h
index a8a8ae7..ea802a3 100644
--- a/third_party/libaom/source/config/linux/x64/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/linux/x64/config/av1_rtcd.h
@@ -478,7 +478,24 @@
                             int upsample_above,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
+void av1_dr_prediction_z1_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z2_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -490,7 +507,26 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
+void av1_dr_prediction_z2_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z3_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -501,7 +537,24 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
+void av1_dr_prediction_z3_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
 void av1_filter_intra_edge_sse4_1(uint8_t* p, int sz, int strength);
@@ -950,7 +1003,28 @@
                                    int dx,
                                    int dy,
                                    int bd);
-#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
+void av1_highbd_dr_prediction_z2_avx2(uint16_t* dst,
+                                      ptrdiff_t stride,
+                                      int bw,
+                                      int bh,
+                                      const uint16_t* above,
+                                      const uint16_t* left,
+                                      int upsample_above,
+                                      int upsample_left,
+                                      int dx,
+                                      int dy,
+                                      int bd);
+RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t* dst,
+                                                ptrdiff_t stride,
+                                                int bw,
+                                                int bh,
+                                                const uint16_t* above,
+                                                const uint16_t* left,
+                                                int upsample_above,
+                                                int upsample_left,
+                                                int dx,
+                                                int dy,
+                                                int bd);
 
 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
                                    ptrdiff_t stride,
@@ -1000,40 +1074,6 @@
                                             int stride,
                                             const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1047,74 +1087,6 @@
                                                  int stride,
                                                  const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1154,40 +1126,6 @@
                                                 int stride,
                                                 const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x32)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
@@ -1209,10 +1147,6 @@
                                         uint8_t* dst,
                                         int stride,
                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x8_avx2(const tran_low_t* dqcoeff,
-                                      uint8_t* dst,
-                                      int stride,
-                                      const TxfmParam* txfm_param);
 RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t* dqcoeff,
                                                 uint8_t* dst,
                                                 int stride,
@@ -2328,6 +2262,15 @@
   av1_convolve_y_sr = av1_convolve_y_sr_sse2;
   if (flags & HAS_AVX2)
     av1_convolve_y_sr = av1_convolve_y_sr_avx2;
+  av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
+  av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
+  av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
   av1_filter_intra_edge = av1_filter_intra_edge_c;
   if (flags & HAS_SSE4_1)
     av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
@@ -2364,6 +2307,9 @@
   av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
+  av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
   av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
@@ -2372,39 +2318,9 @@
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
   if (flags & HAS_AVX2)
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
-  av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_avx2;
-  av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_avx2;
   av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
-  av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_avx2;
-  av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_avx2;
-  av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
-  av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_avx2;
   av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
@@ -2414,24 +2330,12 @@
   av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
-  av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_avx2;
-  av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_avx2;
   av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
   av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_avx2;
   av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
diff --git a/third_party/libaom/source/config/win/ia32/config/aom_config.asm b/third_party/libaom/source/config/win/ia32/config/aom_config.asm
index 6795fc1..4e3946b 100644
--- a/third_party/libaom/source/config/win/ia32/config/aom_config.asm
+++ b/third_party/libaom/source/config/win/ia32/config/aom_config.asm
@@ -23,7 +23,6 @@
 %define CONFIG_FP_MB_STATS 0
 %define CONFIG_GCC 0
 %define CONFIG_GCOV 0
-%define CONFIG_GLOBAL_MOTION_SEARCH 1
 %define CONFIG_GPROF 0
 %define CONFIG_INSPECTION 0
 %define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/win/ia32/config/aom_config.h b/third_party/libaom/source/config/win/ia32/config/aom_config.h
index c5456fc..42238c6c 100644
--- a/third_party/libaom/source/config/win/ia32/config/aom_config.h
+++ b/third_party/libaom/source/config/win/ia32/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 0
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/win/ia32/config/av1_rtcd.h b/third_party/libaom/source/config/win/ia32/config/av1_rtcd.h
index 213461ba..2d23a44 100644
--- a/third_party/libaom/source/config/win/ia32/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/win/ia32/config/av1_rtcd.h
@@ -478,7 +478,24 @@
                             int upsample_above,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
+void av1_dr_prediction_z1_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z2_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -490,7 +507,26 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
+void av1_dr_prediction_z2_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z3_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -501,7 +537,24 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
+void av1_dr_prediction_z3_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
 void av1_filter_intra_edge_sse4_1(uint8_t* p, int sz, int strength);
@@ -917,7 +970,28 @@
                                    int dx,
                                    int dy,
                                    int bd);
-#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
+void av1_highbd_dr_prediction_z2_avx2(uint16_t* dst,
+                                      ptrdiff_t stride,
+                                      int bw,
+                                      int bh,
+                                      const uint16_t* above,
+                                      const uint16_t* left,
+                                      int upsample_above,
+                                      int upsample_left,
+                                      int dx,
+                                      int dy,
+                                      int bd);
+RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t* dst,
+                                                ptrdiff_t stride,
+                                                int bw,
+                                                int bh,
+                                                const uint16_t* above,
+                                                const uint16_t* left,
+                                                int upsample_above,
+                                                int upsample_left,
+                                                int dx,
+                                                int dy,
+                                                int bd);
 
 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
                                    ptrdiff_t stride,
@@ -967,40 +1041,6 @@
                                             int stride,
                                             const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1014,74 +1054,6 @@
                                                  int stride,
                                                  const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1121,40 +1093,6 @@
                                                 int stride,
                                                 const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x32)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
@@ -1176,10 +1114,6 @@
                                         uint8_t* dst,
                                         int stride,
                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x8_avx2(const tran_low_t* dqcoeff,
-                                      uint8_t* dst,
-                                      int stride,
-                                      const TxfmParam* txfm_param);
 RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t* dqcoeff,
                                                 uint8_t* dst,
                                                 int stride,
@@ -2295,6 +2229,15 @@
   av1_convolve_y_sr = av1_convolve_y_sr_sse2;
   if (flags & HAS_AVX2)
     av1_convolve_y_sr = av1_convolve_y_sr_avx2;
+  av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
+  av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
+  av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
   av1_filter_intra_edge = av1_filter_intra_edge_c;
   if (flags & HAS_SSE4_1)
     av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
@@ -2331,6 +2274,9 @@
   av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
+  av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
   av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
@@ -2339,39 +2285,9 @@
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
   if (flags & HAS_AVX2)
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
-  av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_avx2;
-  av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_avx2;
   av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
-  av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_avx2;
-  av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_avx2;
-  av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
-  av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_avx2;
   av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
@@ -2381,24 +2297,12 @@
   av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
-  av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_avx2;
-  av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_avx2;
   av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
   av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_avx2;
   av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
diff --git a/third_party/libaom/source/config/win/x64/config/aom_config.asm b/third_party/libaom/source/config/win/x64/config/aom_config.asm
index b35162ed..7b2dd82 100644
--- a/third_party/libaom/source/config/win/x64/config/aom_config.asm
+++ b/third_party/libaom/source/config/win/x64/config/aom_config.asm
@@ -23,7 +23,6 @@
 %define CONFIG_FP_MB_STATS 0
 %define CONFIG_GCC 0
 %define CONFIG_GCOV 0
-%define CONFIG_GLOBAL_MOTION_SEARCH 1
 %define CONFIG_GPROF 0
 %define CONFIG_INSPECTION 0
 %define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/win/x64/config/aom_config.h b/third_party/libaom/source/config/win/x64/config/aom_config.h
index a3c9390f..d7c6509d 100644
--- a/third_party/libaom/source/config/win/x64/config/aom_config.h
+++ b/third_party/libaom/source/config/win/x64/config/aom_config.h
@@ -35,7 +35,6 @@
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_GCC 0
 #define CONFIG_GCOV 0
-#define CONFIG_GLOBAL_MOTION_SEARCH 1
 #define CONFIG_GPROF 0
 #define CONFIG_INSPECTION 0
 #define CONFIG_INTERNAL_STATS 0
diff --git a/third_party/libaom/source/config/win/x64/config/av1_rtcd.h b/third_party/libaom/source/config/win/x64/config/av1_rtcd.h
index a8a8ae7..ea802a3 100644
--- a/third_party/libaom/source/config/win/x64/config/av1_rtcd.h
+++ b/third_party/libaom/source/config/win/x64/config/av1_rtcd.h
@@ -478,7 +478,24 @@
                             int upsample_above,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
+void av1_dr_prediction_z1_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z2_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -490,7 +507,26 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
+void av1_dr_prediction_z2_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_above,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_above,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_dr_prediction_z3_c(uint8_t* dst,
                             ptrdiff_t stride,
@@ -501,7 +537,24 @@
                             int upsample_left,
                             int dx,
                             int dy);
-#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
+void av1_dr_prediction_z3_avx2(uint8_t* dst,
+                               ptrdiff_t stride,
+                               int bw,
+                               int bh,
+                               const uint8_t* above,
+                               const uint8_t* left,
+                               int upsample_left,
+                               int dx,
+                               int dy);
+RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t* dst,
+                                         ptrdiff_t stride,
+                                         int bw,
+                                         int bh,
+                                         const uint8_t* above,
+                                         const uint8_t* left,
+                                         int upsample_left,
+                                         int dx,
+                                         int dy);
 
 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
 void av1_filter_intra_edge_sse4_1(uint8_t* p, int sz, int strength);
@@ -950,7 +1003,28 @@
                                    int dx,
                                    int dy,
                                    int bd);
-#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
+void av1_highbd_dr_prediction_z2_avx2(uint16_t* dst,
+                                      ptrdiff_t stride,
+                                      int bw,
+                                      int bh,
+                                      const uint16_t* above,
+                                      const uint16_t* left,
+                                      int upsample_above,
+                                      int upsample_left,
+                                      int dx,
+                                      int dy,
+                                      int bd);
+RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t* dst,
+                                                ptrdiff_t stride,
+                                                int bw,
+                                                int bh,
+                                                const uint16_t* above,
+                                                const uint16_t* left,
+                                                int upsample_above,
+                                                int upsample_left,
+                                                int dx,
+                                                int dy,
+                                                int bd);
 
 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
                                    ptrdiff_t stride,
@@ -1000,40 +1074,6 @@
                                             int stride,
                                             const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1047,74 +1087,6 @@
                                                  int stride,
                                                  const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_16x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x16_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x16)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* dqcoeff,
-                                     uint8_t* dst,
-                                     int stride,
-                                     const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t* dqcoeff,
-                                          uint8_t* dst,
-                                          int stride,
-                                          const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t* dqcoeff,
-                                        uint8_t* dst,
-                                        int stride,
-                                        const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t* dqcoeff,
-                                                  uint8_t* dst,
-                                                  int stride,
-                                                  const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_32x8_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x8)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff,
                                     uint8_t* dst,
                                     int stride,
@@ -1154,40 +1126,6 @@
                                                 int stride,
                                                 const TxfmParam* txfm_param);
 
-void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x16_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
-void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* dqcoeff,
-                                    uint8_t* dst,
-                                    int stride,
-                                    const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_sse4_1(const tran_low_t* dqcoeff,
-                                         uint8_t* dst,
-                                         int stride,
-                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x32_avx2(const tran_low_t* dqcoeff,
-                                       uint8_t* dst,
-                                       int stride,
-                                       const TxfmParam* txfm_param);
-RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x32)(const tran_low_t* dqcoeff,
-                                                 uint8_t* dst,
-                                                 int stride,
-                                                 const TxfmParam* txfm_param);
-
 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff,
                                    uint8_t* dst,
                                    int stride,
@@ -1209,10 +1147,6 @@
                                         uint8_t* dst,
                                         int stride,
                                         const TxfmParam* txfm_param);
-void av1_highbd_inv_txfm_add_8x8_avx2(const tran_low_t* dqcoeff,
-                                      uint8_t* dst,
-                                      int stride,
-                                      const TxfmParam* txfm_param);
 RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t* dqcoeff,
                                                 uint8_t* dst,
                                                 int stride,
@@ -2328,6 +2262,15 @@
   av1_convolve_y_sr = av1_convolve_y_sr_sse2;
   if (flags & HAS_AVX2)
     av1_convolve_y_sr = av1_convolve_y_sr_avx2;
+  av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
+  av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
+  av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
+  if (flags & HAS_AVX2)
+    av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
   av1_filter_intra_edge = av1_filter_intra_edge_c;
   if (flags & HAS_SSE4_1)
     av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
@@ -2364,6 +2307,9 @@
   av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
+  av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
+  if (flags & HAS_AVX2)
+    av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
   av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
   if (flags & HAS_AVX2)
     av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
@@ -2372,39 +2318,9 @@
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
   if (flags & HAS_AVX2)
     av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
-  av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_avx2;
-  av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_avx2;
   av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
-  av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_avx2;
-  av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_avx2;
-  av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
-  av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_32x8 = av1_highbd_inv_txfm_add_32x8_avx2;
   av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
@@ -2414,24 +2330,12 @@
   av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
-  av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_avx2;
-  av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_c;
-  if (flags & HAS_SSE4_1)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x32 = av1_highbd_inv_txfm_add_8x32_avx2;
   av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
   av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
-  if (flags & HAS_AVX2)
-    av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_avx2;
   av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
   if (flags & HAS_SSE4_1)
     av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index 99a6987..25b7cc8 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -828,25 +828,20 @@
         '-DANDROID=1']
       RmCmakeCache('.')
       RunCommand(['cmake'] + android_args + [COMPILER_RT_DIR])
-      RunCommand(['ninja', 'asan', 'ubsan', 'profile'])
+
+      # We use ASan i686 build for fuzzing.
+      libs_want = ['lib/linux/libclang_rt.asan-{0}-android.so']
+      if target_arch in ['aarch64', 'arm']:
+        libs_want += [
+            'lib/linux/libclang_rt.ubsan_standalone-{0}-android.so',
+            'lib/linux/libclang_rt.profile-{0}-android.a',
+        ]
+      libs_want = [lib.format(target_arch) for lib in libs_want]
+      RunCommand(['ninja'] + libs_want)
 
       # And copy them into the main build tree.
-      asan_lib_path_format = 'lib/linux/libclang_rt.asan-{0}-android.so'
-      libs_want = [
-          asan_lib_path_format,
-          'lib/linux/libclang_rt.ubsan_standalone-{0}-android.so',
-          'lib/linux/libclang_rt.profile-{0}-android.a',
-      ]
-      for arch in ['aarch64', 'arm']:
-        for p in libs_want:
-          lib_path = os.path.join(build_dir, p.format(arch))
-          if os.path.exists(lib_path):
-            shutil.copy(lib_path, rt_lib_dst_dir)
-
-      # We also use ASan i686 build for fuzzing.
-      lib_path = os.path.join(build_dir, asan_lib_path_format.format('i686'))
-      if os.path.exists(lib_path):
-        shutil.copy(lib_path, rt_lib_dst_dir)
+      for p in libs_want:
+        shutil.copy(p, rt_lib_dst_dir)
 
   if args.with_fuchsia:
     # Fuchsia links against libclang_rt.builtins-<arch>.a instead of libgcc.a.
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 7d9a6cd..af06f01 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -17543,6 +17543,7 @@
   <int value="1302" label="AUTOTESTPRIVATE_LAUNCHARCAPP"/>
   <int value="1303" label="AUTOTESTPRIVATE_CLOSEAPP"/>
   <int value="1304" label="ACCESSIBILITY_PRIVATE_SETSWITCHACCESSMENUSTATE"/>
+  <int value="1305" label="AUTOTESTPRIVATE_SENDASSISTANTTEXTQUERY"/>
 </enum>
 
 <enum name="ExtensionIconState">
@@ -21141,6 +21142,7 @@
   <int value="2717" label="CanvasCaptureStream"/>
   <int value="2718" label="V8HTMLMediaElement_CanPlayType_Method"/>
   <int value="2719" label="HistoryLength"/>
+  <int value="2720" label="FeaturePolicyReportOnlyHeader"/>
 </enum>
 
 <enum name="FeaturePolicyFeature">
@@ -43104,6 +43106,7 @@
   <int value="9" label="PRINT_WITH_PRIVET"/>
   <int value="10" label="PRINT_WITH_EXTENSION"/>
   <int value="11" label="OPEN_IN_MAC_PREVIEW"/>
+  <int value="12" label="PRINT_TO_GOOGLE_DRIVE"/>
 </enum>
 
 <enum name="PrintSettings">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 24dd363..9a921f5 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -15747,6 +15747,17 @@
   </summary>
 </histogram>
 
+<histogram name="CompositorImplAndroid.TearDownDisplayTime" units="ms"
+    expires_after="2019-03-30">
+  <owner>ericrk@chromium.org</owner>
+  <summary>
+    Tracks the amount of time it takes to synchronously tear down the display
+    when the CompositorImpl becomes invisible or is destroyed. Recorded after
+    display teardown completes in CompositorImpl::
+    TearDownDisplayAndUnregisterRootFrameSink.
+  </summary>
+</histogram>
+
 <histogram name="Conflicts.ConfirmedBadModules" units="modules"
     expires_after="2018-08-30">
   <owner>chrisha@chromium.org</owner>
@@ -87438,6 +87449,16 @@
   </summary>
 </histogram>
 
+<histogram name="PrintPreview.PageCount.PrintToGoogleDrive"
+    expires_after="2019-06-18">
+  <owner>rbpotter@chromium.org</owner>
+  <owner>thestig@chromium.org</owner>
+  <summary>
+    The final page count (after page selection) of documents printed to Google
+    Drive.
+  </summary>
+</histogram>
+
 <histogram name="PrintPreview.PageCount.PrintToPDF">
   <owner>vitalybuka@chromium.org</owner>
   <summary>
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py
index 304e0ec..94f0321 100755
--- a/tools/perf/core/perf_data_generator.py
+++ b/tools/perf/core/perf_data_generator.py
@@ -236,14 +236,6 @@
           'num_shards': 1,
           'telemetry': False,
         },
-        {
-          'isolate': 'angle_perftests',
-          'num_shards': 1,
-          'telemetry': False,
-          'extra_args': [
-              '--shard-timeout=300'
-          ],
-        }
       ],
       'platform': 'android',
       'dimension': {
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
index 93cf6a2f..aaf88b2 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
@@ -18,13 +18,13 @@
 <translation id="2648340354586434750">పదాల వారీగా తరలించడానికి &lt;span class='key'&gt;Option&lt;/span&gt;ని నొక్కి పట్టుకోండి.</translation>
 <translation id="2795227192542594043">ఈ పొడిగింపు మీకు వెబ్ పేజీలో తరలించదగిన కర్సర్‌ను అందిస్తుంది, కీబోర్డ్‌తో వచనాన్ని ఎంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది.</translation>
 <translation id="2808027189040546825">దశ 1: మిరుమిట్లు గొలిపే నక్షత్రాలు గల అడ్డు వరుసను ఎంచుకోండి:</translation>
-<translation id="2965611304828530558">&lt;p&gt;మీరు లింక్ లేదా నియంత్రణ వద్ద ఉంటే, ఆటోమేటిక్‌గా దానిపై దృష్టి కేంద్రీకరించబడుతుంది. లింక్ లేదా బటన్‌ను క్లిక్ చేయడానికి &lt;span class='key'&gt;Enter&lt;/span&gt; నొక్కండి. &lt;/p&gt; &lt;p&gt;   దృష్టి కేంద్రీకృత నియంత్రణ (వచన బాక్స్‌ లేదా జాబితా బాక్స్‌ వంటిది) బాణం కీలను క్యాప్చర్ చేస్తున్నప్పుడు, క్యార‌ట్‌ బ్రౌజింగ్‌ను కొనసాగించడానికి &lt;span class='key'&gt;Esc&lt;/span&gt; నొక్కి, ఆపై ఎడమ లేదా కుడి బాణం నొక్కండి. &lt;/p&gt; &lt;p&gt;   ప్రత్యామ్నాయంగా, తదుపరి దృష్టి కేంద్రీకృత నియంత్రణకు త‌ర‌ల‌డానికి &lt;span class='key'&gt;Tab&lt;/span&gt; నొక్కండి. &lt;/p&gt;</translation>
+<translation id="2965611304828530558">&lt;p&gt;మీరు లింక్ లేదా నియంత్రణ వద్ద ఉంటే, ఆటోమేటిక్‌గా దానిపై దృష్టి కేంద్రీకరించబడుతుంది.   లింక్ లేదా బటన్‌ను క్లిక్ చేయడానికి &lt;span class='key'&gt;Enter&lt;/span&gt; నొక్కండి. &lt;/p&gt; &lt;p&gt;   దృష్టి కేంద్రీకృత నియంత్రణ (వచన బాక్స్‌ లేదా జాబితా బాక్స్‌ వంటిది) బాణం కీలను క్యాప్చర్ చేస్తున్నప్పుడు, క్యారెట్‌ బ్రౌజింగ్‌ను కొనసాగించడానికి &lt;span class='key'&gt;Esc&lt;/span&gt; నొక్కి, ఆపై   ఎడమ లేదా కుడి బాణం నొక్కండి. &lt;/p&gt; &lt;p&gt;   ప్రత్యామ్నాయంగా, తదుపరి దృష్టి కేంద్రీకృత నియంత్రణకు తరలించడానికి &lt;span class='key'&gt;Tab&lt;/span&gt; నొక్కండి. &lt;/p&gt;</translation>
 <translation id="3252573918265662711">సెటప్ చేయి</translation>
 <translation id="3410969471888629217">సైట్ అనుకూలీకరణలను విస్మరించు</translation>
 <translation id="3435896845095436175">ప్రారంభించండి</translation>
 <translation id="3622586652998721735">డిఫాల్ట్ స్కీమ్‌గా సెట్ చేయి</translation>
 <translation id="3812541808639806898">చిత్రం Alt వచన వ్యూయర్</translation>
-<translation id="381767806621926835">"longdesc" లేదా "aria-describedat" లక్షణం ఉన్న ఏదైనా అంశం యొక్క సుదీర్ఘ వివరణను ప్రాప్యత చేయడానికి దానిపై కుడి క్లిక్ చేయండి.</translation>
+<translation id="381767806621926835">"longdesc" లేదా "aria-describedat" లక్షణం ఉన్న ఏదైనా అంశం యొక్క సుదీర్ఘ వివరణను యాక్సెస్‌ చేయడానికి దానిపై కుడి క్లిక్ చేయండి.</translation>
 <translation id="4023902424053835668">బాణం కీలను ఉపయోగించి వెబ్ పేజీల వచనాన్ని బ్రౌజ్ చేయండి.</translation>
 <translation id="4388820049312272371">కర్సర్ స్థానాన్ని శీఘ్ర ఫ్లాష్‌తో హైలైట్ చేయండి.</translation>
 <translation id="4394049700291259645">ఆపివెయ్యి</translation>
diff --git a/ui/aura/mus/window_tree_host_mus.cc b/ui/aura/mus/window_tree_host_mus.cc
index b6c7b10..4255bb79 100644
--- a/ui/aura/mus/window_tree_host_mus.cc
+++ b/ui/aura/mus/window_tree_host_mus.cc
@@ -57,10 +57,10 @@
   // In other cases, let a valid FrameSinkId be selected by
   // context_factory_private().
   const bool force_software_compositor = false;
-  const bool external_begin_frames_enabled = false;
+  ui::ExternalBeginFrameClient* external_begin_frame_client = nullptr;
   const bool are_events_in_pixels = false;
   CreateCompositor(window_mus->GenerateFrameSinkIdFromServerId(),
-                   force_software_compositor, external_begin_frames_enabled,
+                   force_software_compositor, external_begin_frame_client,
                    are_events_in_pixels);
   gfx::AcceleratedWidget accelerated_widget;
 // We need accelerated widget numbers to be different for each window and
diff --git a/ui/aura/test/mus/change_completion_waiter.h b/ui/aura/test/mus/change_completion_waiter.h
index fe42a1e..e4a3bb9 100644
--- a/ui/aura/test/mus/change_completion_waiter.h
+++ b/ui/aura/test/mus/change_completion_waiter.h
@@ -55,7 +55,9 @@
 
 // Under mus and mash, waits until there are no more pending changes for
 // |client|. If |client| is null, the default is used. Returns immediately under
-// classic ash because window operations are synchronous.
+// classic ash because window operations are synchronous. This is similar to
+// FlushForTesting() but also waits for any in flights changes from the client
+// to complete.
 void WaitForAllChangesToComplete(WindowTreeClient* client = nullptr);
 
 }  // namespace test
diff --git a/ui/aura/test/mus/window_tree_client_test_api.cc b/ui/aura/test/mus/window_tree_client_test_api.cc
index 8f09fd0..dddde85 100644
--- a/ui/aura/test/mus/window_tree_client_test_api.cc
+++ b/ui/aura/test/mus/window_tree_client_test_api.cc
@@ -103,10 +103,6 @@
   return false;
 }
 
-void WindowTreeClientTestApi::FlushForTesting() {
-  tree_client_impl_->binding_.FlushForTesting();
-}
-
 ws::mojom::WindowDataPtr WindowTreeClientTestApi::CreateWindowDataForEmbed() {
   ws::mojom::WindowDataPtr root_data(ws::mojom::WindowData::New());
   root_data->parent_id = 0;
@@ -121,4 +117,8 @@
   return root_data;
 }
 
+void WindowTreeClientTestApi::FlushForTesting() {
+  tree_client_impl_->binding_.FlushForTesting();
+}
+
 }  // namespace aura
diff --git a/ui/aura/test/mus/window_tree_client_test_api.h b/ui/aura/test/mus/window_tree_client_test_api.h
index 05e9b9c..fd50f70 100644
--- a/ui/aura/test/mus/window_tree_client_test_api.h
+++ b/ui/aura/test/mus/window_tree_client_test_api.h
@@ -13,6 +13,7 @@
 #include "services/ws/public/mojom/window_tree_constants.mojom.h"
 #include "ui/aura/mus/mus_types.h"
 #include "ui/aura/mus/window_tree_client.h"
+#include "ui/aura/test/mus/change_completion_waiter.h"
 
 namespace ws {
 namespace mojom {
@@ -74,12 +75,15 @@
 
   bool HasChangeInFlightOfType(ChangeType type);
 
-  // Calls FlushForTesting() on the mojo::Binding for the WindowTreeClient.
-  void FlushForTesting();
-
  private:
+  friend void test::WaitForAllChangesToComplete(WindowTreeClient* client);
+
   ws::mojom::WindowDataPtr CreateWindowDataForEmbed();
 
+  // This is private as WaitForAllChangesToComplete() (in
+  // change_completion_waiter) should be used instead.
+  void FlushForTesting();
+
   WindowTreeClient* tree_client_impl_;
 
   DISALLOW_COPY_AND_ASSIGN(WindowTreeClientTestApi);
diff --git a/ui/aura/window_tree_host.cc b/ui/aura/window_tree_host.cc
index 3b7060ab..a1143fc3 100644
--- a/ui/aura/window_tree_host.cc
+++ b/ui/aura/window_tree_host.cc
@@ -387,11 +387,12 @@
   //window()->RemoveOrDestroyChildren();
 }
 
-void WindowTreeHost::CreateCompositor(const viz::FrameSinkId& frame_sink_id,
-                                      bool force_software_compositor,
-                                      bool external_begin_frames_enabled,
-                                      bool are_events_in_pixels,
-                                      const char* trace_environment_name) {
+void WindowTreeHost::CreateCompositor(
+    const viz::FrameSinkId& frame_sink_id,
+    bool force_software_compositor,
+    ui::ExternalBeginFrameClient* external_begin_frame_client,
+    bool are_events_in_pixels,
+    const char* trace_environment_name) {
   DCHECK(window()->env());
   Env* env = window()->env();
   ui::ContextFactory* context_factory = env->context_factory();
@@ -404,7 +405,7 @@
           : context_factory_private->AllocateFrameSinkId(),
       context_factory, context_factory_private,
       base::ThreadTaskRunnerHandle::Get(), ui::IsPixelCanvasRecordingEnabled(),
-      external_begin_frames_enabled, force_software_compositor,
+      external_begin_frame_client, force_software_compositor,
       trace_environment_name);
 #if defined(OS_CHROMEOS)
   compositor_->AddObserver(this);
diff --git a/ui/aura/window_tree_host.h b/ui/aura/window_tree_host.h
index 6db3f3b13..0f9d461 100644
--- a/ui/aura/window_tree_host.h
+++ b/ui/aura/window_tree_host.h
@@ -268,7 +268,7 @@
   void CreateCompositor(
       const viz::FrameSinkId& frame_sink_id = viz::FrameSinkId(),
       bool force_software_compositor = false,
-      bool external_begin_frames_enabled = false,
+      ui::ExternalBeginFrameClient* external_begin_frame_client = nullptr,
       bool are_events_in_pixels = true,
       const char* trace_environment_name = nullptr);
 
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc
index a116ba0..9915932 100644
--- a/ui/aura/window_tree_host_platform.cc
+++ b/ui/aura/window_tree_host_platform.cc
@@ -59,7 +59,7 @@
   bounds_ = properties.bounds;
   CreateCompositor(viz::FrameSinkId(),
                    /* force_software_compositor */ false,
-                   /* external_begin_frames_enabled */ false,
+                   /* external_begin_frames_enabled */ nullptr,
                    /* are_events_in_pixels */ true, trace_environment_name);
   CreateAndSetPlatformWindow(std::move(properties));
 }
diff --git a/ui/base/clipboard/clipboard_test_template.h b/ui/base/clipboard/clipboard_test_template.h
index fd0dcc6..1d8d3834 100644
--- a/ui/base/clipboard/clipboard_test_template.h
+++ b/ui/base/clipboard/clipboard_test_template.h
@@ -17,6 +17,7 @@
 
 #include <stdint.h>
 
+#include <array>
 #include <memory>
 #include <string>
 
@@ -24,7 +25,6 @@
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_task_environment.h"
 #include "build/build_config.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -58,20 +58,22 @@
 template <typename ClipboardTraits>
 class ClipboardTest : public PlatformTest {
  public:
-#if defined(USE_AURA)
-  ClipboardTest()
-      : scoped_task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::UI),
-        event_source_(ClipboardTraits::GetEventSource()),
-        clipboard_(ClipboardTraits::Create()) {}
-#else
-  ClipboardTest()
-      : scoped_task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::UI),
-        clipboard_(ClipboardTraits::Create()) {}
-#endif
+  ClipboardTest() {}
+  ~ClipboardTest() override = default;
 
-  ~ClipboardTest() override { ClipboardTraits::Destroy(clipboard_); }
+  // PlatformTest:
+  void SetUp() override {
+    PlatformTest::SetUp();
+#if defined(USE_AURA)
+    event_source_ = ClipboardTraits::GetEventSource();
+#endif
+    clipboard_ = ClipboardTraits::Create();
+  }
+
+  void TearDown() override {
+    ClipboardTraits::Destroy(clipboard_);
+    PlatformTest::TearDown();
+  }
 
  protected:
   Clipboard& clipboard() { return *clipboard_; }
@@ -84,12 +86,11 @@
   }
 
  private:
-  base::test::ScopedTaskEnvironment scoped_task_environment_;
 #if defined(USE_AURA)
   std::unique_ptr<PlatformEventSource> event_source_;
 #endif
   // ui::Clipboard has a protected destructor, so scoped_ptr doesn't work here.
-  Clipboard* const clipboard_;
+  Clipboard* clipboard_ = nullptr;
 };
 
 // Hack for tests that need to call static methods of ClipboardTest.
@@ -98,7 +99,9 @@
   static void Destroy(Clipboard*) {}
 };
 
-TYPED_TEST_CASE(ClipboardTest, TypesToTest);
+// |NamesOfTypesToTest| provides a way to differentiate between different
+// clipboard tests that include this file. See docs in gtest-typed-test.h
+TYPED_TEST_CASE(ClipboardTest, TypesToTest, NamesOfTypesToTest);
 
 TYPED_TEST(ClipboardTest, ClearTest) {
   {
@@ -762,4 +765,4 @@
 
 }  // namespace ui
 
-#endif  // UI_BASE_CLIPBOARD_CLIPBOARD_TEST_TEMPLATE_H_
\ No newline at end of file
+#endif  // UI_BASE_CLIPBOARD_CLIPBOARD_TEST_TEMPLATE_H_
diff --git a/ui/base/clipboard/clipboard_unittest.cc b/ui/base/clipboard/clipboard_unittest.cc
index 08b2c17..6aa5db3 100644
--- a/ui/base/clipboard/clipboard_unittest.cc
+++ b/ui/base/clipboard/clipboard_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/base/clipboard/clipboard.h"
 
+#include "base/test/scoped_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 #if defined(USE_AURA)
@@ -12,6 +13,12 @@
 
 namespace ui {
 
+namespace {
+
+base::test::ScopedTaskEnvironment* g_task_environment = nullptr;
+
+}  // namespace
+
 struct PlatformClipboardTraits {
 #if defined(USE_AURA)
   static std::unique_ptr<PlatformEventSource> GetEventSource() {
@@ -19,15 +26,30 @@
   }
 #endif
 
-  static Clipboard* Create() { return Clipboard::GetForCurrentThread(); }
+  static Clipboard* Create() {
+    DCHECK(!g_task_environment);
+    g_task_environment = new base::test::ScopedTaskEnvironment(
+        base::test::ScopedTaskEnvironment::MainThreadType::UI);
+    return Clipboard::GetForCurrentThread();
+  }
 
   static void Destroy(Clipboard* clipboard) {
     ASSERT_EQ(Clipboard::GetForCurrentThread(), clipboard);
     Clipboard::DestroyClipboardForCurrentThread();
+    delete g_task_environment;
+    g_task_environment = nullptr;
   }
 };
 
-typedef PlatformClipboardTraits TypesToTest;
+using TypesToTest = PlatformClipboardTraits;
+
+class NamesOfTypesToTest {
+ public:
+  template <typename T>
+  static std::string GetName(int index) {
+    return "BaseClipboardTest";
+  }
+};
 
 }  // namespace ui
 
diff --git a/ui/base/test/test_clipboard_unittest.cc b/ui/base/test/test_clipboard_unittest.cc
index 0901969..01ac029 100644
--- a/ui/base/test/test_clipboard_unittest.cc
+++ b/ui/base/test/test_clipboard_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/base/test/test_clipboard.h"
 
+#include "base/test/scoped_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 #if defined(USE_AURA)
@@ -12,6 +13,12 @@
 
 namespace ui {
 
+namespace {
+
+base::test::ScopedTaskEnvironment* g_task_environment = nullptr;
+
+}  // namespace
+
 struct TestClipboardTraits {
 #if defined(USE_AURA)
   static std::unique_ptr<PlatformEventSource> GetEventSource() {
@@ -19,16 +26,32 @@
   }
 #endif
 
-  static Clipboard* Create() { return TestClipboard::CreateForCurrentThread(); }
+  static Clipboard* Create() {
+    DCHECK(!g_task_environment);
+    g_task_environment = new base::test::ScopedTaskEnvironment(
+        base::test::ScopedTaskEnvironment::MainThreadType::UI);
+    return TestClipboard::CreateForCurrentThread();
+  }
 
   static void Destroy(Clipboard* clipboard) {
     ASSERT_EQ(Clipboard::GetForCurrentThread(), clipboard);
     Clipboard::DestroyClipboardForCurrentThread();
+
+    delete g_task_environment;
+    g_task_environment = nullptr;
   }
 };
 
 typedef TestClipboardTraits TypesToTest;
 
+class NamesOfTypesToTest {
+ public:
+  template <typename T>
+  static std::string GetName(int index) {
+    return "TestClipboardTest";
+  }
+};
+
 }  // namespace ui
 
 #include "ui/base/clipboard/clipboard_test_template.h"
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index ae70aa36..a7654e3d 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -63,20 +63,21 @@
 
 }  // namespace
 
-Compositor::Compositor(const viz::FrameSinkId& frame_sink_id,
-                       ui::ContextFactory* context_factory,
-                       ui::ContextFactoryPrivate* context_factory_private,
-                       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
-                       bool enable_pixel_canvas,
-                       bool external_begin_frames_enabled,
-                       bool force_software_compositor,
-                       const char* trace_environment_name)
+Compositor::Compositor(
+    const viz::FrameSinkId& frame_sink_id,
+    ui::ContextFactory* context_factory,
+    ui::ContextFactoryPrivate* context_factory_private,
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+    bool enable_pixel_canvas,
+    ui::ExternalBeginFrameClient* external_begin_frame_client,
+    bool force_software_compositor,
+    const char* trace_environment_name)
     : context_factory_(context_factory),
       context_factory_private_(context_factory_private),
       frame_sink_id_(frame_sink_id),
       task_runner_(task_runner),
       vsync_manager_(new CompositorVSyncManager()),
-      external_begin_frames_enabled_(external_begin_frames_enabled),
+      external_begin_frame_client_(external_begin_frame_client),
       force_software_compositor_(force_software_compositor),
       layer_animator_collection_(this),
       is_pixel_canvas_(enable_pixel_canvas),
@@ -504,36 +505,6 @@
   return vsync_manager_;
 }
 
-void Compositor::IssueExternalBeginFrame(const viz::BeginFrameArgs& args) {
-  TRACE_EVENT1("ui", "Compositor::IssueExternalBeginFrame", "args",
-               args.AsValue());
-  DCHECK(external_begin_frames_enabled_);
-  if (context_factory_private_)
-    context_factory_private_->IssueExternalBeginFrame(this, args);
-}
-
-void Compositor::SetExternalBeginFrameClient(ExternalBeginFrameClient* client) {
-  DCHECK(external_begin_frames_enabled_);
-  external_begin_frame_client_ = client;
-  if (needs_external_begin_frames_ && external_begin_frame_client_)
-    external_begin_frame_client_->OnNeedsExternalBeginFrames(true);
-}
-
-void Compositor::OnDisplayDidFinishFrame(const viz::BeginFrameAck& ack) {
-  DCHECK(external_begin_frames_enabled_);
-  if (external_begin_frame_client_)
-    external_begin_frame_client_->OnDisplayDidFinishFrame(ack);
-}
-
-void Compositor::OnNeedsExternalBeginFrames(bool needs_begin_frames) {
-  DCHECK(external_begin_frames_enabled_);
-  if (external_begin_frame_client_) {
-    external_begin_frame_client_->OnNeedsExternalBeginFrames(
-        needs_begin_frames);
-  }
-  needs_external_begin_frames_ = needs_begin_frames;
-}
-
 void Compositor::AddObserver(CompositorObserver* observer) {
   observer_list_.AddObserver(observer);
 }
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
index 2302325..3c19916 100644
--- a/ui/compositor/compositor.h
+++ b/ui/compositor/compositor.h
@@ -201,8 +201,7 @@
 // view hierarchy.
 class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
                                      public cc::LayerTreeHostSingleThreadClient,
-                                     public viz::HostFrameSinkClient,
-                                     public ExternalBeginFrameClient {
+                                     public viz::HostFrameSinkClient {
  public:
   // |trace_environment_name| is passed to trace events so that tracing
   // can identify the environment the trace events are from. Examples are,
@@ -212,7 +211,7 @@
              ui::ContextFactoryPrivate* context_factory_private,
              scoped_refptr<base::SingleThreadTaskRunner> task_runner,
              bool enable_pixel_canvas,
-             bool external_begin_frames_enabled = false,
+             ExternalBeginFrameClient* external_begin_frame_client = nullptr,
              bool force_software_compositor = false,
              const char* trace_environment_name = nullptr);
   ~Compositor() override;
@@ -322,16 +321,6 @@
   // Returns the vsync manager for this compositor.
   scoped_refptr<CompositorVSyncManager> vsync_manager() const;
 
-  bool external_begin_frames_enabled() {
-    return external_begin_frames_enabled_;
-  }
-
-  void SetExternalBeginFrameClient(ExternalBeginFrameClient* client);
-
-  // The ExternalBeginFrameClient calls this to issue a BeginFrame with the
-  // given |args|.
-  void IssueExternalBeginFrame(const viz::BeginFrameArgs& args);
-
   // This flag is used to force a compositor into software compositing even tho
   // in general chrome is using gpu compositing. This allows the compositor to
   // be created without a gpu context, and does not go through the gpu path at
@@ -376,10 +365,6 @@
       base::OnceCallback<void(const gfx::PresentationFeedback&)>;
   void RequestPresentationTimeForNextFrame(PresentationTimeCallback callback);
 
-  // ExternalBeginFrameClient implementation.
-  void OnDisplayDidFinishFrame(const viz::BeginFrameAck& ack) override;
-  void OnNeedsExternalBeginFrames(bool needs_begin_frames) override;
-
   // LayerTreeHostClient implementation.
   void WillBeginMainFrame() override {}
   void DidBeginMainFrame() override {}
@@ -428,6 +413,10 @@
   int activated_frame_count() const { return activated_frame_count_; }
   float refresh_rate() const { return refresh_rate_; }
 
+  ExternalBeginFrameClient* external_begin_frame_client() {
+    return external_begin_frame_client_;
+  }
+
   void SetAllowLocksToExtendTimeout(bool allowed) {
     lock_manager_.set_allow_locks_to_extend_timeout(allowed);
   }
@@ -479,9 +468,7 @@
   base::TimeTicks vsync_timebase_;
   base::TimeDelta vsync_interval_;
 
-  bool external_begin_frames_enabled_;
-  ExternalBeginFrameClient* external_begin_frame_client_ = nullptr;
-  bool needs_external_begin_frames_ = false;
+  ExternalBeginFrameClient* const external_begin_frame_client_;
 
   const bool force_software_compositor_;
 
diff --git a/ui/compositor/host/host_context_factory_private.cc b/ui/compositor/host/host_context_factory_private.cc
index 8e01fd6..40ec1e11 100644
--- a/ui/compositor/host/host_context_factory_private.cc
+++ b/ui/compositor/host/host_context_factory_private.cc
@@ -78,9 +78,10 @@
 
   // Initialize ExternalBeginFrameController client if enabled.
   compositor_data.external_begin_frame_controller_client.reset();
-  if (compositor->external_begin_frames_enabled()) {
+  if (compositor->external_begin_frame_client()) {
     compositor_data.external_begin_frame_controller_client =
-        std::make_unique<ExternalBeginFrameControllerClientImpl>(compositor);
+        std::make_unique<ExternalBeginFrameControllerClientImpl>(
+            compositor->external_begin_frame_client());
     root_params->external_begin_frame_controller =
         compositor_data.external_begin_frame_controller_client
             ->GetControllerRequest();
diff --git a/ui/strings/translations/ui_strings_zh-TW.xtb b/ui/strings/translations/ui_strings_zh-TW.xtb
index 7be3a938..dae17195 100644
--- a/ui/strings/translations/ui_strings_zh-TW.xtb
+++ b/ui/strings/translations/ui_strings_zh-TW.xtb
@@ -125,6 +125,7 @@
 <translation id="6483402905448010557">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation>
 <translation id="654149438358937226">封鎖所有通知</translation>
 <translation id="6567071839949112727">點選上層項目</translation>
+<translation id="6578407462441924264">未命名</translation>
 <translation id="6612467943526193239">如要結束校正模式,請按下 Esc 鍵。</translation>
 <translation id="6620110761915583480">儲存檔案</translation>
 <translation id="6699343763173986273">下一首媒體曲目</translation>
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index 361ce56..6a13dfb 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -7,6 +7,8 @@
 import("//build/config/jumbo.gni")
 import("//build/config/ui.gni")
 import("//components/vector_icons/vector_icons.gni")
+import("//services/catalog/public/tools/catalog.gni")
+import("//services/service_manager/public/service_manifest.gni")
 import("//testing/test.gni")
 import("//ui/base/ui_features.gni")
 import("//ui/ozone/ozone.gni")
@@ -802,7 +804,7 @@
   }
 }
 
-jumbo_source_set("test_support_internal") {
+jumbo_source_set("test_support") {
   testonly = true
   sources = [
     "animation/test/flood_fill_ink_drop_ripple_test_api.cc",
@@ -843,7 +845,11 @@
     "test/menu_runner_test_api.h",
     "test/menu_test_utils.cc",
     "test/menu_test_utils.h",
+    "test/native_widget_factory.cc",
     "test/native_widget_factory.h",
+    "test/platform_test_helper.cc",
+    "test/platform_test_helper.h",
+    "test/platform_test_helper_cocoa.mm",
     "test/scoped_views_test_helper.cc",
     "test/scoped_views_test_helper.h",
     "test/slider_test_api.cc",
@@ -878,15 +884,10 @@
     "views_test_suite.h",
   ]
 
-  # External code should depend upon "test_support".
-  visibility = [ "./*" ]
-
   configs += [ "//build/config:precompiled_headers" ]
 
-  public_deps = [
-    ":views",
-  ]
   deps = [
+    ":views",
     "//base",
     "//base/test:test_support",
     "//gpu/ipc/service",
@@ -908,11 +909,32 @@
     "//ui/gl:test_support",
   ]
 
-  sources += [
-    "test/platform_test_helper.cc",
-    "test/platform_test_helper.h",
-    "test/platform_test_helper_cocoa.mm",
-  ]
+  if (enable_mus) {
+    sources += [
+      "test/platform_test_helper_mus.cc",
+      "test/platform_test_helper_mus.h",
+    ]
+
+    deps += [
+      ":views_unittests_catalog_source",
+      "//services/catalog:lib",
+      "//services/service_manager/background:lib",
+      "//services/service_manager/public/cpp",
+      "//services/service_manager/public/mojom",
+      "//services/ws/common",
+      "//testing/gtest",
+      "//ui/compositor:test_support",
+      "//ui/gl:test_support",
+      "//ui/resources",
+      "//ui/resources:ui_test_pak",
+    ]
+
+    data_deps = [
+      ":views_unittests_catalog",
+      "//services/ws/ime/test_ime_driver",
+      "//ui/resources:ui_test_pak_data",
+    ]
+  }
 
   if (use_aura) {
     sources += [
@@ -958,21 +980,7 @@
   }
 }
 
-jumbo_static_library("test_support") {
-  testonly = true
-  public_deps = [
-    ":test_support_internal",
-  ]
-  sources = [
-    "test/native_widget_factory_desktop.cc",
-  ]
-}
-
-# This target contains the unit tests that are shared between views_unittests
-# and views_mus_unittests.
-source_set("views_unittests_sources") {
-  testonly = true
-
+test("views_unittests") {
   sources = [
     "accessible_pane_view_unittest.cc",
     "animation/bounds_animator_unittest.cc",
@@ -1027,6 +1035,7 @@
     "controls/table/test_table_model.cc",
     "controls/table/test_table_model.h",
     "controls/textfield/textfield_model_unittest.cc",
+    "controls/textfield/textfield_unittest.cc",
     "controls/tree/tree_view_unittest.cc",
     "event_monitor_unittest.cc",
     "focus/focus_manager_unittest.cc",
@@ -1037,6 +1046,7 @@
     "layout/grid_layout_unittest.cc",
     "paint_info_unittest.cc",
     "rect_based_targeting_utils_unittest.cc",
+    "run_all_unittests_main.cc",
     "selection_controller_unittest.cc",
     "test/widget_test_unittest.cc",
     "view_model_unittest.cc",
@@ -1046,6 +1056,7 @@
     "view_unittest.cc",
     "view_unittest_mac.mm",
     "widget/ax_native_widget_mac_unittest.mm",
+    "widget/desktop_widget_unittest.cc",
     "widget/native_widget_mac_unittest.mm",
     "widget/native_widget_unittest.cc",
     "widget/root_view_unittest.cc",
@@ -1061,10 +1072,8 @@
 
   configs += [ "//build/config:precompiled_headers" ]
 
-  # Make all deps in this target public so both views_unittests and
-  # views_mus_unittests will get them.
-  public_deps = [
-    ":test_support_internal",
+  deps = [
+    ":test_support",
     ":views",
     "//base",
     "//base:i18n",
@@ -1073,6 +1082,7 @@
     "//cc/paint",
     "//components/vector_icons",
     "//components/viz/common",
+    "//mojo/core/embedder",
     "//services/ws/public/mojom",
     "//skia",
     "//testing/gtest",
@@ -1091,6 +1101,7 @@
     "//ui/gl:test_support",
     "//ui/native_theme",
     "//ui/native_theme:test_support",
+    "//ui/platform_window/platform_window_handler",
     "//ui/resources",
     "//ui/resources:ui_test_pak",
     "//ui/strings",
@@ -1101,8 +1112,29 @@
     "//ui/resources:ui_test_pak_data",
   ]
 
+  if (enable_mus) {
+    sources += [
+      "mus/ax_remote_host_unittest.cc",
+      "mus/ax_tree_source_mus_unittest.cc",
+      "mus/desktop_window_tree_host_mus_unittest.cc",
+      "mus/screen_mus_unittest.cc",
+    ]
+
+    deps += [
+      "//services/ws/test_ws:mojom",
+      "//ui/accessibility/mojom",
+      "//ui/views/mus",
+      "//ui/views/mus/remote_view:tests",
+    ]
+
+    data_deps += [
+      "//services/ws/ime/test_ime_driver",
+      "//services/ws/test_ws",
+    ]
+  }
+
   if (is_win) {
-    public_deps += [
+    public_deps = [
       "//build/win:default_exe_manifest",
       "//third_party/iaccessible2",
       "//third_party/wtl",
@@ -1120,22 +1152,12 @@
     ]
   }
 
-  if (has_native_accessibility) {
-    sources += [
-      "accessibility/ax_virtual_view_unittest.cc",
-      "accessibility/view_ax_platform_node_delegate_unittest.cc",
-    ]
-  }
-
-  if (use_x11) {
-    configs += [
-      "//build/config/linux:x11",
-      "//build/config/linux:xext",
-    ]
-    public_deps += [
-      "//ui/events/devices",
-      "//ui/events/platform/x11",
-      "//ui/gfx/x",
+  if (is_mac) {
+    # views_unittests not yet compiling on Mac. http://crbug.com/378134
+    sources -= [ "controls/native/native_view_host_unittest.cc" ]
+    public_deps = [
+      "//ui/accelerated_widget_mac",
+      "//ui/views_bridge_mac:views_bridge_mac",
     ]
   }
 
@@ -1146,11 +1168,15 @@
       "accessibility/ax_tree_source_views_unittest.cc",
       "controls/native/native_view_host_aura_unittest.cc",
       "corewm/tooltip_controller_unittest.cc",
+      "touchui/touch_selection_controller_impl_unittest.cc",
       "touchui/touch_selection_menu_runner_views_unittest.cc",
       "view_unittest_aura.cc",
+      "widget/desktop_aura/desktop_focus_rules_unittest.cc",
+      "widget/desktop_aura/desktop_native_widget_aura_unittest.cc",
+      "widget/native_widget_aura_unittest.cc",
       "widget/window_reorderer_unittest.cc",
     ]
-    public_deps += [
+    deps += [
       "//ui/accessibility:test_support",
       "//ui/aura",
       "//ui/aura:test_support",
@@ -1158,73 +1184,39 @@
       "//ui/wm",
       "//ui/wm/public",
     ]
-  }
-
-  if (is_mac) {
-    # views_unittests not yet compiling on Mac. http://crbug.com/378134
-    sources -= [ "controls/native/native_view_host_unittest.cc" ]
-    public_deps += [
-      "//ui/accelerated_widget_mac",
-      "//ui/views_bridge_mac:views_bridge_mac",
-    ]
-  }
-}
-
-test("views_unittests") {
-  sources = [
-    "run_all_unittests_main.cc",
-
-    # EventGenerator doesn't work well with IME in mus so this must not be in
-    # the shared unit test sources.
-    # crbug.com/615033 crbug.com/548407
-    "controls/textfield/textfield_unittest.cc",
-  ]
-
-  if (use_aura) {
-    sources += [
-      # These tests are expecting a hierarchy as created by classic ash. They
-      # are only useful for views_unittests, and not in views_mus_unittests.
-      "touchui/touch_selection_controller_impl_unittest.cc",
-      "widget/native_widget_aura_unittest.cc",
-    ]
 
     if (is_mac) {
       # views_unittests not yet compiling on Mac. http://crbug.com/378134
       sources -= [ "widget/window_reorderer_unittest.cc" ]
     }
 
-    if (!is_chromeos) {
-      sources += [
-        "widget/desktop_aura/desktop_focus_rules_unittest.cc",
-        "widget/desktop_aura/desktop_native_widget_aura_unittest.cc",
+    if (use_x11) {
+      configs += [
+        "//build/config/linux:x11",
+        "//build/config/linux:xext",
       ]
+      deps += [
+        "//ui/events/devices",
+        "//ui/events/platform/x11",
+        "//ui/gfx/x",
+      ]
+    }
+
+    if (!is_chromeos) {
       if (use_x11) {
         sources += [
           "widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc",
           "widget/desktop_aura/desktop_screen_x11_unittest.cc",
           "widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc",
         ]
+      } else if (is_linux) {
+        sources += [
+          "widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc",
+          "widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc",
+        ]
       }
     }
   }
-
-  if (is_linux && !is_chromeos && !use_x11) {
-    sources += [
-      "widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc",
-      "widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc",
-    ]
-  }
-
-  if (!is_chromeos) {
-    sources += [ "widget/desktop_widget_unittest.cc" ]
-  }
-
-  deps = [
-    ":test_support",
-    ":views_unittests_sources",
-    "//mojo/core/embedder",
-    "//ui/platform_window/platform_window_handler",
-  ]
 }
 
 # This target is added as a dependency of browser interactive_ui_tests. It must
@@ -1299,6 +1291,28 @@
   if (is_chromeos) {
     sources -= [ "corewm/desktop_capture_controller_unittest.cc" ]
   }
+
+  if (enable_mus) {
+    sources += [
+      "mus/clipboard_unittest.cc",
+      "mus/drag_interactive_uitest.cc",
+    ]
+
+    deps += [
+      "//mojo/core/embedder",
+      "//services/ws/public/mojom",
+      "//testing/gmock",
+      "//ui/base/ime",
+      "//ui/base/mojo:lib",
+      "//ui/events:events_base",
+      "//ui/touch_selection",
+      "//ui/views/mus",
+    ]
+
+    data_deps = [
+      "//services/ws/test_ws",
+    ]
+  }
 }
 
 test("views_perftests") {
@@ -1309,6 +1323,7 @@
 
   deps = [
     ":test_support",
+    ":views",
     "//base/test:test_support",
     "//cc/base:base",
     "//mojo/core/embedder",
@@ -1321,3 +1336,35 @@
     "//testing:run_perf_test",
   ]
 }
+
+if (enable_mus) {
+  service_manifest("unittests_manifest") {
+    name = "views_unittests"
+    source = "unittests_manifest.json"
+  }
+
+  service_manifest("interactive_ui_tests_manifest") {
+    name = "interactive_ui_tests"
+    source = "interactive_ui_tests_manifest.json"
+  }
+
+  catalog("views_unittests_catalog") {
+    testonly = true
+
+    embedded_services = [
+      ":unittests_manifest",
+      ":interactive_ui_tests_manifest",
+    ]
+
+    standalone_services = [
+      "//services/ws/test_ws:manifest",
+      "//services/ws/ime/test_ime_driver:manifest",
+    ]
+  }
+
+  catalog_cpp_source("views_unittests_catalog_source") {
+    testonly = true
+    catalog = ":views_unittests_catalog"
+    generated_function_name = "views::CreateViewsUnittestsCatalog"
+  }
+}
diff --git a/ui/views/DEPS b/ui/views/DEPS
index b16a04d..f594d804d 100644
--- a/ui/views/DEPS
+++ b/ui/views/DEPS
@@ -38,6 +38,14 @@
   "views_perftests\.cc": [
     "+mojo/core/embedder",
   ],
+  "views_test_base\.cc": [
+    "+mojo/core/embedder",
+    "+services/catalog",
+    "+services/service_manager/background",
+    "+services/service_manager/public",
+    "+services/ws",
+    "+ui/gl",
+  ],
   "view_unittest\.cc": [
     "+cc/playback",
     "+components/viz/common",
diff --git a/ui/views/OWNERS b/ui/views/OWNERS
index 57c9ed66..9ebfacd 100644
--- a/ui/views/OWNERS
+++ b/ui/views/OWNERS
@@ -13,4 +13,9 @@
 # If you're doing structural changes get a review from one of the OWNERS.
 per-file BUILD.gn=*
 
+per-file interactive_ui_tests_manifest.json=set noparent
+per-file interactive_ui_tests_manifest.json=file://ipc/SECURITY_OWNERS
+per-file unittests_manifest.json=set noparent
+per-file unittests_manifest.json=file://ipc/SECURITY_OWNERS
+
 # COMPONENT: Internals>Views
diff --git a/ui/views/accessibility/ax_system_caret_win_interactive_uitest.cc b/ui/views/accessibility/ax_system_caret_win_interactive_uitest.cc
index aa9e497..2060c8e 100644
--- a/ui/views/accessibility/ax_system_caret_win_interactive_uitest.cc
+++ b/ui/views/accessibility/ax_system_caret_win_interactive_uitest.cc
@@ -7,20 +7,16 @@
 #include <wrl/client.h>
 
 #include "base/macros.h"
-#include "base/path_service.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/scoped_variant.h"
-#include "mojo/core/embedder/embedder.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_tree_host.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/base/ime/text_edit_commands.h"
 #include "ui/base/resource/resource_bundle.h"
-#include "ui/base/ui_base_paths.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/native_widget_types.h"
-#include "ui/gl/test/gl_surface_test_support.h"
 #include "ui/views/controls/button/label_button.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/controls/textfield/textfield_test_api.h"
@@ -31,21 +27,16 @@
 
 namespace {
 
-class AXSystemCaretWinTest : public test::WidgetTest {
+class AXSystemCaretWinTest : public test::DesktopWidgetTest {
  public:
   AXSystemCaretWinTest() : self_(CHILDID_SELF) {}
   ~AXSystemCaretWinTest() override {}
 
   void SetUp() override {
-    mojo::core::Init();
-    gl::GLSurfaceTestSupport::InitializeOneOff();
-    ui::RegisterPathProvider();
-    base::FilePath ui_test_pak_path;
-    ASSERT_TRUE(base::PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
-    ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
-    test::WidgetTest::SetUp();
+    SetUpForInteractiveTests();
+    test::DesktopWidgetTest::SetUp();
 
-    widget_ = CreateNativeDesktopWidget();
+    widget_ = CreateTopLevelNativeWidget();
     widget_->SetBounds(gfx::Rect(0, 0, 200, 200));
     textfield_ = new Textfield();
     textfield_->SetBounds(0, 0, 200, 20);
@@ -63,7 +54,7 @@
 
   void TearDown() override {
     widget_->CloseNow();
-    test::WidgetTest::TearDown();
+    test::DesktopWidgetTest::TearDown();
     ui::ResourceBundle::CleanupSharedInstance();
   }
 
diff --git a/ui/views/accessible_pane_view_unittest.cc b/ui/views/accessible_pane_view_unittest.cc
index f8e88ebf..e0bc5ea6 100644
--- a/ui/views/accessible_pane_view_unittest.cc
+++ b/ui/views/accessible_pane_view_unittest.cc
@@ -137,19 +137,17 @@
   EXPECT_EQ(test_view_bar->child_button(),
             test_view_bar->GetWidget()->GetFocusManager()->GetFocusedView());
 
-  if (!IsMus()) {
-    // Deactivate() is only reliable on Ash. On Windows it uses
-    // ::GetNextWindow() to simply activate another window, and which one is not
-    // predictable. On Mac, Deactivate() is not implemented. Note that
-    // TestBarView calls set_allow_deactivate_on_esc(true), which is only
-    // otherwise used in Ash.
+  // Deactivate() is only reliable on Ash. On Windows it uses
+  // ::GetNextWindow() to simply activate another window, and which one is not
+  // predictable. On Mac, Deactivate() is not implemented. Note that
+  // TestBarView calls set_allow_deactivate_on_esc(true), which is only
+  // otherwise used in Ash.
 #if !defined(OS_MACOSX) || defined(OS_CHROMEOS)
-    // Esc should deactivate the widget.
-    test_view_bar->AcceleratorPressed(test_view_bar->escape_key());
-    EXPECT_TRUE(widget_main->IsActive());
-    EXPECT_FALSE(widget_bar->IsActive());
+  // Esc should deactivate the widget.
+  test_view_bar->AcceleratorPressed(test_view_bar->escape_key());
+  EXPECT_TRUE(widget_main->IsActive());
+  EXPECT_FALSE(widget_bar->IsActive());
 #endif
-  }
 
   widget_bar->CloseNow();
   widget_bar.reset();
diff --git a/ui/views/animation/ink_drop_impl_unittest.cc b/ui/views/animation/ink_drop_impl_unittest.cc
index d5d6ecf..dbe46ff2 100644
--- a/ui/views/animation/ink_drop_impl_unittest.cc
+++ b/ui/views/animation/ink_drop_impl_unittest.cc
@@ -252,13 +252,6 @@
 
 TEST_F(InkDropImplTest,
        SettingHighlightStateDuringStateExitIsntAllowedDeathTest) {
-  // gtest death tests, such as EXPECT_DCHECK_DEATH(), can not work in the
-  // presence of fork() and other process launching. In views-mus, we have
-  // already launched additional processes for our service manager. Performing
-  // this test under mus is impossible.
-  if (PlatformTestHelper::IsMus())
-    return;
-
   ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
   test::InkDropImplTestApi::SetStateOnExitHighlightState::Install(
diff --git a/ui/views/cocoa/bridged_native_widget_host_impl.h b/ui/views/cocoa/bridged_native_widget_host_impl.h
index b661e41..a27415b0 100644
--- a/ui/views/cocoa/bridged_native_widget_host_impl.h
+++ b/ui/views/cocoa/bridged_native_widget_host_impl.h
@@ -122,6 +122,10 @@
 
   void InitWindow(const Widget::InitParams& params);
 
+  // Close the window immediately. This function may result in |this| being
+  // deleted.
+  void CloseWindowNow();
+
   // Changes the bounds of the window and the hosted layer if present. The
   // origin is a location in screen coordinates except for "child" windows,
   // which are positioned relative to their parent. SetBounds() considers a
diff --git a/ui/views/cocoa/bridged_native_widget_host_impl.mm b/ui/views/cocoa/bridged_native_widget_host_impl.mm
index fffc715..7e0af7a 100644
--- a/ui/views/cocoa/bridged_native_widget_host_impl.mm
+++ b/ui/views/cocoa/bridged_native_widget_host_impl.mm
@@ -248,6 +248,22 @@
     bridge()->SetVisibilityState(WindowVisibilityState::kShowInactive);
 }
 
+void BridgedNativeWidgetHostImpl::CloseWindowNow() {
+  bool is_out_of_process = !bridge_impl_;
+  // Note that CloseWindowNow may delete |this| for in-process windows.
+  if (bridge())
+    bridge()->CloseWindowNow();
+
+  // If it is out-of-process, then simulate the calls that would have been
+  // during window closure.
+  if (is_out_of_process) {
+    OnWindowWillClose();
+    while (!children_.empty())
+      children_.front()->CloseWindowNow();
+    OnWindowHasClosed();
+  }
+}
+
 void BridgedNativeWidgetHostImpl::SetBounds(const gfx::Rect& bounds) {
   UpdateLocalWindowFrame(bounds);
   bridge()->SetBounds(bounds,
diff --git a/ui/views/cocoa/bridged_native_widget_interactive_uitest.mm b/ui/views/cocoa/bridged_native_widget_interactive_uitest.mm
index 86170122..618c3cf 100644
--- a/ui/views/cocoa/bridged_native_widget_interactive_uitest.mm
+++ b/ui/views/cocoa/bridged_native_widget_interactive_uitest.mm
@@ -16,7 +16,6 @@
 #import "ui/base/test/windowed_nsnotification_observer.h"
 #import "ui/events/test/cocoa_test_event_utils.h"
 #include "ui/views/cocoa/bridged_native_widget_host_impl.h"
-#include "ui/views/test/views_interactive_ui_test_base.h"
 #include "ui/views/test/widget_test.h"
 #include "ui/views/widget/native_widget_mac.h"
 #include "ui/views/window/native_frame_view.h"
@@ -41,14 +40,15 @@
 
 }  // namespace
 
-class BridgedNativeWidgetUITest : public test::WidgetTest {
+class BridgedNativeWidgetUITest : public WidgetTest {
  public:
   BridgedNativeWidgetUITest() = default;
 
   // testing::Test:
   void SetUp() override {
-    ViewsInteractiveUITestBase::InteractiveSetUp();
+    SetUpForInteractiveTests();
     WidgetTest::SetUp();
+
     Widget::InitParams init_params =
         CreateParams(Widget::InitParams::TYPE_WINDOW);
     init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
diff --git a/ui/views/controls/button/menu_button_unittest.cc b/ui/views/controls/button/menu_button_unittest.cc
index 8239400..f310447 100644
--- a/ui/views/controls/button/menu_button_unittest.cc
+++ b/ui/views/controls/button/menu_button_unittest.cc
@@ -384,12 +384,6 @@
 
 // Test that the MenuButton stays pressed while there are any PressedLocks.
 TEST_F(MenuButtonTest, ButtonStateForMenuButtonsWithPressedLocks) {
-  // Similarly for aura-mus-client the location of the cursor is not updated by
-  // EventGenerator so that IsMouseHovered() checks the wrong thing.
-  // https://crbug.com/615033.
-  if (IsMus())
-    return;
-
   CreateMenuButtonWithNoListener();
 
   // Move the mouse over the button; the button should be in a hovered state.
@@ -578,10 +572,6 @@
 // Tests that the MenuButton does not become pressed if it can be dragged, and a
 // DragDropClient is processing the events.
 TEST_F(MenuButtonTest, DraggableMenuButtonDoesNotActivateOnDrag) {
-  // TODO(https://crbug.com/663809): test uses GetContext(), which is not
-  // applicable to aura-mus.
-  if (IsMus())
-    return;
   TestMenuButtonListener menu_button_listener;
   CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
   TestDragController drag_controller;
@@ -606,11 +596,6 @@
 // Tests if the listener is notified correctly when a gesture tap happens on a
 // MenuButton that has a MenuButtonListener.
 TEST_F(MenuButtonTest, ActivateDropDownOnGestureTap) {
-  // Similarly for aura-mus-client the location of the cursor is not updated by
-  // EventGenerator so that IsMouseHovered() checks the wrong thing.
-  // https://crbug.com/615033.
-  if (IsMus())
-    return;
   TestMenuButtonListener menu_button_listener;
   CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
 
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc
index 8cce8de..5f402b7 100644
--- a/ui/views/controls/menu/menu_controller_unittest.cc
+++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -1712,11 +1712,6 @@
 // This tests that mouse moved events from the initial position of the mouse
 // when the menu was shown don't select the menu item at the mouse position.
 TEST_F(MenuControllerTest, MouseAtMenuItemOnShow) {
-  // aura::Window::MoveCursorTo check fails in Mus due to null
-  // window_manager_client_.
-  if (IsMus())
-    return;
-
   // Most tests create an already shown menu but this test needs one that's
   // not shown, so it can show it. The mouse position is remembered when
   // the menu is shown.
diff --git a/ui/views/controls/menu/menu_runner_unittest.cc b/ui/views/controls/menu/menu_runner_unittest.cc
index 577c4cc..a5972e65 100644
--- a/ui/views/controls/menu/menu_runner_unittest.cc
+++ b/ui/views/controls/menu/menu_runner_unittest.cc
@@ -148,11 +148,6 @@
 // Tests that when a menu is run asynchronously, key events are handled properly
 // by testing that Escape key closes the menu.
 TEST_F(MenuRunnerTest, AsynchronousKeyEventHandling) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   InitMenuRunner(0);
   MenuRunner* runner = menu_runner();
   runner->RunMenuAt(owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT,
@@ -170,11 +165,6 @@
 // Tests that a key press on a US keyboard layout activates the correct menu
 // item.
 TEST_F(MenuRunnerTest, LatinMnemonic) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   // Menus that use prefix selection don't support mnemonics - the input is
   // always part of the prefix.
   if (MenuConfig::instance().all_menus_use_prefix_selection)
@@ -201,11 +191,6 @@
 // Tests that a key press on a non-US keyboard layout activates the correct menu
 // item. Disabled on Windows because a WM_CHAR event does not activate an item.
 TEST_F(MenuRunnerTest, NonLatinMnemonic) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   // Menus that use prefix selection don't support mnemonics - the input is
   // always part of the prefix.
   if (MenuConfig::instance().all_menus_use_prefix_selection)
@@ -370,8 +355,7 @@
   std::unique_ptr<ui::test::EventGenerator> EventGeneratorForWidget(
       Widget* widget) {
     return std::make_unique<ui::test::EventGenerator>(
-        IsMus() ? GetRootWindow(widget) : GetContext(),
-        widget->GetNativeWindow());
+        GetContext(), widget->GetNativeWindow());
   }
 
   void AddMenuLauncherEventHandler(Widget* widget) {
diff --git a/ui/views/controls/native/native_view_host_aura_unittest.cc b/ui/views/controls/native/native_view_host_aura_unittest.cc
index 6eeaf9b5..c4d7e71b 100644
--- a/ui/views/controls/native/native_view_host_aura_unittest.cc
+++ b/ui/views/controls/native/native_view_host_aura_unittest.cc
@@ -338,18 +338,12 @@
 
   DestroyHost();
   DestroyTopLevel();
-  if (!IsMus()) {
-    // The window is detached, so no longer associated with any Widget
-    // hierarchy. The root window still owns it, but the test harness checks
-    // for orphaned windows during TearDown().
-    EXPECT_EQ(0u, test_observer.events().size())
-        << (*test_observer.events().begin()).type;
-    delete child_win;
-  } else {
-    // In mus and aura-mus, the child window is still attached to the
-    // aura::WindowTreeHost for the Widget. So destroying the toplevel Widget
-    // takes down the child window with it.
-  }
+  // The window is detached, so no longer associated with any Widget
+  // hierarchy. The root window still owns it, but the test harness checks
+  // for orphaned windows during TearDown().
+  EXPECT_EQ(0u, test_observer.events().size())
+      << (*test_observer.events().begin()).type;
+  delete child_win;
 
   ASSERT_EQ(1u, test_observer.events().size());
   EXPECT_EQ(NativeViewHostWindowObserver::EVENT_DESTROYED,
diff --git a/ui/views/controls/webview/webview_unittest.cc b/ui/views/controls/webview/webview_unittest.cc
index 3b4b95b1..6f69e63 100644
--- a/ui/views/controls/webview/webview_unittest.cc
+++ b/ui/views/controls/webview/webview_unittest.cc
@@ -125,11 +125,8 @@
 // Provides functionality to test a WebView.
 class WebViewUnitTest : public views::test::WidgetTest {
  public:
-  WebViewUnitTest()
-      : views::test::WidgetTest(
-            std::make_unique<content::TestBrowserThreadBundle>()) {}
-
-  ~WebViewUnitTest() override {}
+  WebViewUnitTest() = default;
+  ~WebViewUnitTest() override = default;
 
   std::unique_ptr<content::WebContents> CreateWebContentsForWebView(
       content::BrowserContext* browser_context) {
@@ -138,6 +135,10 @@
   }
 
   void SetUp() override {
+    set_scoped_task_environment(
+        std::make_unique<content::TestBrowserThreadBundle>());
+    rvh_enabler_ = std::make_unique<content::RenderViewHostTestEnabler>();
+
     views::WebView::WebContentsCreator creator = base::BindRepeating(
         &WebViewUnitTest::CreateWebContentsForWebView, base::Unretained(this));
     scoped_web_contents_creator_ =
@@ -189,7 +190,7 @@
   }
 
  private:
-  content::RenderViewHostTestEnabler rvh_enabler_;
+  std::unique_ptr<content::RenderViewHostTestEnabler> rvh_enabler_;
   std::unique_ptr<content::TestBrowserContext> browser_context_;
   content::TestContentBrowserClient test_browser_client_;
   std::unique_ptr<views::WebView::ScopedWebContentsCreatorForTesting>
diff --git a/ui/views/corewm/DEPS b/ui/views/corewm/DEPS
index 150fabd..f3f5340 100644
--- a/ui/views/corewm/DEPS
+++ b/ui/views/corewm/DEPS
@@ -21,6 +21,7 @@
   ],
 
   "desktop_capture_controller_unittest.cc": [
+    "+ui/views/test/native_widget_factory.h",
     "+ui/views/test/views_interactive_ui_test_base.h",
     "+ui/views/view.h",
     "+ui/views/widget/desktop_aura/desktop_native_widget_aura.h",
diff --git a/ui/views/corewm/desktop_capture_controller_unittest.cc b/ui/views/corewm/desktop_capture_controller_unittest.cc
index b4b852f9..b1b8e82 100644
--- a/ui/views/corewm/desktop_capture_controller_unittest.cc
+++ b/ui/views/corewm/desktop_capture_controller_unittest.cc
@@ -12,6 +12,7 @@
 #include "ui/aura/window_tree_host.h"
 #include "ui/events/event.h"
 #include "ui/events/test/event_generator.h"
+#include "ui/views/test/native_widget_factory.h"
 #include "ui/views/test/views_interactive_ui_test_base.h"
 #include "ui/views/view.h"
 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
@@ -103,6 +104,8 @@
   aura::client::CaptureClient* capture_client = wm::CaptureController::Get();
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.bounds = gfx::Rect(50, 50, 650, 650);
+  params.native_widget = test::CreatePlatformNativeWidgetImpl(
+      params, widget1.get(), test::kStubCapture, nullptr);
   widget1->Init(params);
   internal::RootView* root1 =
       static_cast<internal::RootView*>(widget1->GetRootView());
@@ -123,6 +126,8 @@
   params = CreateParams(Widget::InitParams::TYPE_POPUP);
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.bounds = gfx::Rect(50, 50, 650, 650);
+  params.native_widget = test::CreatePlatformNativeWidgetImpl(
+      params, widget2.get(), test::kStubCapture, nullptr);
   widget2->Init(params);
 
   internal::RootView* root2 =
diff --git a/ui/views/corewm/tooltip_controller_unittest.cc b/ui/views/corewm/tooltip_controller_unittest.cc
index 77372af..94f6648 100644
--- a/ui/views/corewm/tooltip_controller_unittest.cc
+++ b/ui/views/corewm/tooltip_controller_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/views/corewm/tooltip_controller.h"
 
+#include "base/at_exit.h"
 #include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -60,9 +61,6 @@
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
 #if defined(OS_CHROMEOS)
   params.parent = root;
-#else
-  params.native_widget = ::views::test::CreatePlatformDesktopNativeWidgetImpl(
-      params, widget, nullptr);
 #endif
   params.bounds = gfx::Rect(0, 0, 200, 100);
   widget->Init(params);
@@ -79,10 +77,14 @@
 
 class TooltipControllerTest : public ViewsTestBase {
  public:
-  TooltipControllerTest() : view_(NULL) {}
+  TooltipControllerTest() = default;
   ~TooltipControllerTest() override {}
 
   void SetUp() override {
+#if !defined(OS_CHROMEOS)
+    set_native_widget_type(NativeWidgetType::kDesktop);
+#endif
+
     ViewsTestBase::SetUp();
 
     aura::Window* root_window = GetContext();
@@ -156,7 +158,7 @@
   }
 
   std::unique_ptr<views::Widget> widget_;
-  TooltipTestView* view_;
+  TooltipTestView* view_ = nullptr;
   std::unique_ptr<TooltipControllerTestHelper> helper_;
   std::unique_ptr<ui::test::EventGenerator> generator_;
 
@@ -236,11 +238,6 @@
 #if defined(OS_CHROMEOS)
 // crbug.com/664370.
 TEST_F(TooltipControllerTest, MaxWidth) {
-  // This test relies on TooltipAura being created, which does not happen in
-  // this test with mus (it happens in DesktopNativeWidgetAura).
-  if (IsMus())
-    return;
-
   base::string16 text = base::ASCIIToUTF16(
       "Really really realy long long long long  long tooltips that exceeds max "
       "width");
@@ -482,8 +479,7 @@
   }
 
   void TearDown() override {
-    if (!IsMus())
-      aura::client::SetScreenPositionClient(GetRootWindow(), NULL);
+    aura::client::SetScreenPositionClient(GetRootWindow(), NULL);
     TooltipControllerTest::TearDown();
   }
 
@@ -522,11 +518,6 @@
 #endif
 // Verifies the correct window is found for tooltips when there is a capture.
 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) {
-  // This test doesn't make sense with mus as it creates two widgets and
-  // expects to move the mouse between them.
-  if (IsMus())
-    return;
-
   const base::string16 tooltip_text(ASCIIToUTF16("1"));
   const base::string16 tooltip_text2(ASCIIToUTF16("2"));
 
@@ -610,6 +601,7 @@
   ~TooltipControllerTest2() override {}
 
   void SetUp() override {
+    at_exit_manager_ = std::make_unique<base::ShadowingAtExitManager>();
     aura::test::AuraTestBase::SetUp();
     new wm::DefaultActivationClient(root_window());
     controller_.reset(
@@ -627,6 +619,7 @@
     generator_.reset();
     helper_.reset();
     aura::test::AuraTestBase::TearDown();
+    at_exit_manager_.reset();
   }
 
  protected:
@@ -636,17 +629,14 @@
   std::unique_ptr<ui::test::EventGenerator> generator_;
 
  private:
+  // Needed to make sure the InputDeviceManager is cleaned up between test runs.
+  std::unique_ptr<base::ShadowingAtExitManager> at_exit_manager_;
   std::unique_ptr<TooltipController> controller_;
 
   DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest2);
 };
 
 TEST_F(TooltipControllerTest2, VerifyLeadingTrailingWhitespaceStripped) {
-  // This test does not have a real connection to mus (because it's using
-  // AuraTestBase, not ViewsTestBase), so it can't use EventGenerator.
-  if (ViewsTestBase::IsMus())
-    return;
-
   aura::test::TestWindowDelegate test_delegate;
   std::unique_ptr<aura::Window> window(
       CreateNormalWindow(100, root_window(), &test_delegate));
@@ -660,11 +650,6 @@
 
 // Verifies that tooltip is hidden and tooltip window closed upon cancel mode.
 TEST_F(TooltipControllerTest2, CloseOnCancelMode) {
-  // This test does not have a real connection to mus (because it's using
-  // AuraTestBase, not ViewsTestBase), so it can't use EventGenerator.
-  if (ViewsTestBase::IsMus())
-    return;
-
   aura::test::TestWindowDelegate test_delegate;
   std::unique_ptr<aura::Window> window(
       CreateNormalWindow(100, root_window(), &test_delegate));
@@ -691,12 +676,11 @@
   ~TooltipControllerTest3() override = default;
 
   void SetUp() override {
-    ViewsTestBase::SetUp();
+#if !defined(OS_CHROMEOS)
+    set_native_widget_type(NativeWidgetType::kDesktop);
+#endif
 
-    // This test assumes a hierarchy like that of Ash, which doesn't make sense
-    // with mus.
-    if (IsMus())
-      return;
+    ViewsTestBase::SetUp();
 
     aura::Window* root_window = GetContext();
     new wm::DefaultActivationClient(root_window);
@@ -721,15 +705,13 @@
   }
 
   void TearDown() override {
-    if (!IsMus()) {
-      GetRootWindow()->RemovePreTargetHandler(controller_.get());
-      wm::SetTooltipClient(GetRootWindow(), NULL);
+    GetRootWindow()->RemovePreTargetHandler(controller_.get());
+    wm::SetTooltipClient(GetRootWindow(), NULL);
 
-      controller_.reset();
-      generator_.reset();
-      helper_.reset();
-      widget_.reset();
-    }
+    controller_.reset();
+    generator_.reset();
+    helper_.reset();
+    widget_.reset();
     ViewsTestBase::TearDown();
   }
 
@@ -756,11 +738,6 @@
 };
 
 TEST_F(TooltipControllerTest3, TooltipPositionChangesOnTwoViewsWithSameLabel) {
-  // See comment in TooltipControllerTest3::SetUp() for why this does nothing in
-  // mus.
-  if (IsMus())
-    return;
-
   // Owned by |view_|.
   // These two views have the same tooltip text
   TooltipTestView* v1 = new TooltipTestView;
diff --git a/ui/views/event_monitor_unittest.cc b/ui/views/event_monitor_unittest.cc
index 6db69c17..fdda456 100644
--- a/ui/views/event_monitor_unittest.cc
+++ b/ui/views/event_monitor_unittest.cc
@@ -44,18 +44,8 @@
     widget_ = CreateTopLevelNativeWidget();
     widget_->SetSize(gfx::Size(100, 100));
     widget_->Show();
-    if (IsMus()) {
-      generator_ =
-          std::make_unique<ui::test::EventGenerator>(GetRootWindow(widget_));
-// This #if will always be true on this path, but the code inside won't compile
-// for non-Aura.
-#if defined(USE_AURA)
-      generator_->MoveMouseRelativeTo(widget_->GetNativeWindow(), gfx::Point());
-#endif
-    } else {
-      generator_ = std::make_unique<ui::test::EventGenerator>(
-          GetContext(), widget_->GetNativeWindow());
-    }
+    generator_ = std::make_unique<ui::test::EventGenerator>(
+        GetContext(), widget_->GetNativeWindow());
     generator_->set_target(ui::test::EventGenerator::Target::APPLICATION);
   }
   void TearDown() override {
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc
index a46b9eb..91414af 100644
--- a/ui/views/focus/focus_manager_unittest.cc
+++ b/ui/views/focus/focus_manager_unittest.cc
@@ -1039,19 +1039,31 @@
   EXPECT_TRUE(parent3->HasFocus());
 }
 
-// Desktop native widget Aura tests are for non Chrome OS platforms.
 // This test is specifically for the permutation where the main
 // widget is a DesktopNativeWidgetAura and the bubble is a
 // NativeWidgetAura. When focus moves back from the bubble to the
 // parent widget, ensure that the DNWA's aura window is focused.
-#if defined(USE_AURA) && !defined(OS_CHROMEOS)
-TEST_F(FocusManagerTest, AnchoredDialogInDesktopNativeWidgetAura) {
+#if defined(USE_AURA)
+class DesktopWidgetFocusManagerTest : public FocusManagerTest {
+ public:
+  DesktopWidgetFocusManagerTest() = default;
+  ~DesktopWidgetFocusManagerTest() override = default;
+
+  // FocusManagerTest:
+  void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+    FocusManagerTest::SetUp();
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DesktopWidgetFocusManagerTest);
+};
+
+TEST_F(DesktopWidgetFocusManagerTest, AnchoredDialogInDesktopNativeWidgetAura) {
   Widget widget;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.bounds = gfx::Rect(0, 0, 1024, 768);
-  params.native_widget =
-      test::CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
   widget.Init(params);
   widget.Show();
   widget.Activate();
@@ -1106,6 +1118,6 @@
   // Finally, the outer widget's window should be focused again.
   ASSERT_EQ(widget.GetNativeView(), focus_client->GetFocusedWindow());
 }
-#endif  // defined(USE_AURA) && !defined(OS_CHROMEOS)
+#endif  // defined(USE_AURA)
 
 }  // namespace views
diff --git a/ui/views/mus/interactive_ui_tests_manifest.json b/ui/views/interactive_ui_tests_manifest.json
similarity index 64%
rename from ui/views/mus/interactive_ui_tests_manifest.json
rename to ui/views/interactive_ui_tests_manifest.json
index 36a5b66..567ca61 100644
--- a/ui/views/mus/interactive_ui_tests_manifest.json
+++ b/ui/views/interactive_ui_tests_manifest.json
@@ -1,6 +1,6 @@
 {
-  "name": "views_mus_interactive_ui_tests",
-  "display_name": "Views Mus Interactive UI Tests",
+  "name": "interactive_ui_tests",
+  "display_name": "Interactive UI Tests",
   "interface_provider_specs": {
     "service_manager:connector": {
       "requires": {
diff --git a/ui/views/layout/grid_layout_unittest.cc b/ui/views/layout/grid_layout_unittest.cc
index c5c3242..e4062db 100644
--- a/ui/views/layout/grid_layout_unittest.cc
+++ b/ui/views/layout/grid_layout_unittest.cc
@@ -827,13 +827,6 @@
 // GridLayout must guard against this as it hasn't yet updated the internal
 // structures it uses to calculate Layout, so will give bogus results.
 TEST_F(GridLayoutTest, LayoutOnAddDeath) {
-  // gtest death tests, such as EXPECT_DCHECK_DEATH(), can not work in the
-  // presence of fork() and other process launching. In views-mus, we have
-  // already launched additional processes for our service manager. Performing
-  // this test under mus is impossible.
-  if (PlatformTestHelper::IsMus())
-    return;
-
   ColumnSet* set = layout()->AddColumnSet(0);
   set->AddColumn(GridLayout::FILL, GridLayout::FILL, 0, GridLayout::USE_PREF, 0,
                  0);
diff --git a/ui/views/mus/BUILD.gn b/ui/views/mus/BUILD.gn
index 9724121..aa466e8 100644
--- a/ui/views/mus/BUILD.gn
+++ b/ui/views/mus/BUILD.gn
@@ -104,210 +104,3 @@
     ":mus",
   ]
 }
-
-jumbo_static_library("test_support") {
-  testonly = true
-
-  sources = [
-    "../test/native_widget_factory_aura_mus.cc",
-    "mus_client_test_api.h",
-    "views_mus_test_suite.cc",
-    "views_mus_test_suite.h",
-  ]
-
-  deps = [
-    ":mus",
-    ":views_mus_tests_catalog_source",
-    "//base",
-    "//base/test:test_support",
-    "//mojo/core/embedder",
-    "//services/catalog:lib",
-    "//services/service_manager/background:lib",
-    "//services/service_manager/public/cpp",
-    "//services/ws/common",
-    "//testing/gtest",
-    "//ui/aura",
-    "//ui/aura:test_support",
-    "//ui/compositor:test_support",
-    "//ui/gl:test_support",
-    "//ui/resources",
-    "//ui/resources:ui_test_pak",
-    "//ui/views",
-    "//ui/views:test_support_internal",
-  ]
-
-  if (use_ozone) {
-    deps += [ "//ui/ozone" ]
-  }
-
-  data_deps = [
-    ":views_mus_tests_catalog",
-    "//services/ws/ime/test_ime_driver",
-    "//ui/resources:ui_test_pak_data",
-  ]
-}
-
-test("views_mus_unittests") {
-  testonly = true
-
-  sources = [
-    "ax_remote_host_unittest.cc",
-    "ax_tree_source_mus_unittest.cc",
-    "desktop_window_tree_host_mus_unittest.cc",
-    "run_all_unittests_mus.cc",
-    "screen_mus_unittest.cc",
-  ]
-
-  configs += [ "//build/config:precompiled_headers" ]
-
-  deps = [
-    ":mus",
-    ":test_support",
-    "//base",
-    "//base:i18n",
-    "//base/test:test_support",
-    "//cc",
-    "//net",
-    "//services/ws/public/mojom",
-    "//services/ws/test_ws:mojom",
-    "//skia",
-    "//testing/gtest",
-    "//third_party/icu",
-    "//ui/accessibility",
-    "//ui/accessibility/mojom",
-    "//ui/aura",
-    "//ui/aura:test_support",
-    "//ui/base",
-    "//ui/base:test_support",
-    "//ui/base/ime",
-    "//ui/compositor:test_support",
-    "//ui/events:dom_keycode_converter",
-    "//ui/events:events_base",
-    "//ui/events:test_support",
-    "//ui/events/platform",
-    "//ui/gfx:test_support",
-    "//ui/gfx/geometry",
-    "//ui/native_theme",
-    "//ui/strings",
-    "//ui/touch_selection",
-    "//ui/views",
-    "//ui/views:test_support_internal",
-    "//ui/views:views_unittests_sources",
-    "//ui/views/mus/remote_view:tests",
-    "//ui/wm",
-    "//url",
-  ]
-
-  data_deps = [
-    "//services/ws/ime/test_ime_driver",
-    "//services/ws/test_ws",
-  ]
-
-  if (is_win) {
-    deps += [
-      "//build/win:default_exe_manifest",
-      "//third_party/iaccessible2",
-      "//third_party/wtl",
-    ]
-    libs = [
-      "imm32.lib",
-      "oleacc.lib",
-      "comctl32.lib",
-    ]
-  }
-
-  if (use_x11) {
-    configs += [
-      "//build/config/linux:x11",
-      "//build/config/linux:xext",
-    ]
-    deps += [
-      "//ui/events/devices",
-      "//ui/events/platform/x11",
-      "//ui/gfx/x",
-    ]
-  }
-}
-
-# Tests that must run sequentially because they access system-wide features
-# like capture.
-test("views_mus_interactive_ui_tests") {
-  testonly = true
-
-  sources = [
-    "../widget/widget_interactive_uitest.cc",
-    "clipboard_unittest.cc",
-    "drag_interactive_uitest.cc",
-    "interactive_ui_tests_mus.cc",
-  ]
-
-  deps = [
-    ":mus",
-    ":test_support",
-    "//base",
-    "//mojo/core/embedder",
-    "//testing/gmock",
-    "//testing/gtest",
-    "//ui/aura",
-    "//ui/aura:test_support",
-    "//ui/base",
-    "//ui/base:test_support",
-    "//ui/base/ime",
-    "//ui/base/mojo:lib",
-    "//ui/events:events_base",
-    "//ui/events:test_support",
-    "//ui/gl:test_support",
-    "//ui/touch_selection",
-    "//ui/views",
-    "//ui/views:test_support_internal",
-    "//ui/wm",
-    "//ui/wm/public",
-  ]
-
-  data_deps = [
-    "//services/ws/test_ws",
-  ]
-
-  if (is_win) {
-    deps += [
-      "//build/win:default_exe_manifest",
-      "//third_party/iaccessible2",
-      "//third_party/wtl",
-    ]
-    libs = [
-      "imm32.lib",
-      "oleacc.lib",
-      "comctl32.lib",
-    ]
-  }
-}
-
-service_manifest("unittests_manifest") {
-  name = "views_mus_unittests"
-  source = "unittests_manifest.json"
-}
-
-service_manifest("interactive_ui_tests_manifest") {
-  name = "views_mus_interactive_ui_tests"
-  source = "interactive_ui_tests_manifest.json"
-}
-
-catalog("views_mus_tests_catalog") {
-  testonly = true
-
-  embedded_services = [
-    ":unittests_manifest",
-    ":interactive_ui_tests_manifest",
-  ]
-
-  standalone_services = [
-    "//services/ws/test_ws:manifest",
-    "//services/ws/ime/test_ime_driver:manifest",
-  ]
-}
-
-catalog_cpp_source("views_mus_tests_catalog_source") {
-  testonly = true
-  catalog = ":views_mus_tests_catalog"
-  generated_function_name = "views::CreateViewsMusTestsCatalog"
-}
diff --git a/ui/views/mus/DEPS b/ui/views/mus/DEPS
index 6c5f22d..72bd2b4 100644
--- a/ui/views/mus/DEPS
+++ b/ui/views/mus/DEPS
@@ -20,12 +20,3 @@
   "+ui/platform_window",
   "+ui/wm",
 ]
-
-specific_include_rules = {
-  "views_mus_test_suite.cc": [
-    "+services/service_manager/background",
-  ],
-  "views_aura_mus_test_suite.cc": [
-    "+services/service_manager/background",
-  ],
-}
diff --git a/ui/views/mus/OWNERS b/ui/views/mus/OWNERS
index 3a73ee3..1b6d3c5 100644
--- a/ui/views/mus/OWNERS
+++ b/ui/views/mus/OWNERS
@@ -3,9 +3,3 @@
 sky@chromium.org
 
 per-file ax_*=file://ui/accessibility/OWNERS
-
-per-file interactive_ui_tests_manifest.json=set noparent
-per-file interactive_ui_tests_manifest.json=file://ipc/SECURITY_OWNERS
-
-per-file unittests_manifest.json=set noparent
-per-file unittests_manifest.json=file://ipc/SECURITY_OWNERS
diff --git a/ui/views/mus/ax_remote_host_unittest.cc b/ui/views/mus/ax_remote_host_unittest.cc
index 9fc9201..0bcbf8e 100644
--- a/ui/views/mus/ax_remote_host_unittest.cc
+++ b/ui/views/mus/ax_remote_host_unittest.cc
@@ -131,7 +131,7 @@
   return widget;
 }
 
-using AXRemoteHostTest = ViewsTestBase;
+using AXRemoteHostTest = ViewsTestWithDesktopNativeWidget;
 
 TEST_F(AXRemoteHostTest, CreateRemote) {
   TestAXHostService service(false /*automation_enabled*/);
diff --git a/ui/views/mus/ax_tree_source_mus_unittest.cc b/ui/views/mus/ax_tree_source_mus_unittest.cc
index fc35420..1f8320bf 100644
--- a/ui/views/mus/ax_tree_source_mus_unittest.cc
+++ b/ui/views/mus/ax_tree_source_mus_unittest.cc
@@ -31,6 +31,7 @@
 
   // testing::Test:
   void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
     ViewsTestBase::SetUp();
     widget_ = std::make_unique<Widget>();
     Widget::InitParams params(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
diff --git a/ui/views/mus/clipboard_unittest.cc b/ui/views/mus/clipboard_unittest.cc
index a00f615..bd0350f3 100644
--- a/ui/views/mus/clipboard_unittest.cc
+++ b/ui/views/mus/clipboard_unittest.cc
@@ -4,16 +4,26 @@
 
 #include "ui/base/mojo/clipboard_client.h"
 
-#include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/platform/platform_event_source.h"
-#include "ui/views/mus/mus_client.h"
-#include "ui/views/test/scoped_views_test_helper.h"
+#include "ui/views/test/views_interactive_ui_test_base.h"
 
 namespace ui {
 
 namespace {
 
-std::unique_ptr<views::ScopedViewsTestHelper> g_scoped_views_test_helper;
+views::ViewsTestBase* g_test_base = nullptr;
+
+// This class is necessary to allow the Mus version of ClipboardTest to
+// initialize itself as if it's a ViewsTestBase (which creates the MusClient and
+// does other necessary setup). TODO(crbug/917180): improve this.
+class ViewsTestBaseNoTest : public views::ViewsInteractiveUITestBase {
+ public:
+  ViewsTestBaseNoTest() = default;
+  ~ViewsTestBaseNoTest() override = default;
+
+  // views::ViewsInteractiveUITestBase:
+  void TestBody() override {}
+};
 
 }  // namespace
 
@@ -23,19 +33,28 @@
   }
 
   static Clipboard* Create() {
-    g_scoped_views_test_helper =
-        std::make_unique<views::ScopedViewsTestHelper>();
-    EXPECT_TRUE(views::MusClient::Exists());
+    g_test_base = new ViewsTestBaseNoTest();
+    g_test_base->SetUp();
+
     return Clipboard::GetForCurrentThread();
   }
 
   static void Destroy(Clipboard* clipboard) {
-    g_scoped_views_test_helper.reset();
+    g_test_base->TearDown();
+    g_test_base = nullptr;
   }
 };
 
 using TypesToTest = PlatformClipboardTraits;
 
+class NamesOfTypesToTest {
+ public:
+  template <typename T>
+  static std::string GetName(int index) {
+    return "MusClipboardTest";
+  }
+};
+
 }  // namespace ui
 
 #include "ui/base/clipboard/clipboard_test_template.h"
diff --git a/ui/views/mus/desktop_window_tree_host_mus_unittest.cc b/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
index 9959576..301fc243 100644
--- a/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
+++ b/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
@@ -34,6 +34,7 @@
 #include "ui/views/mus/mus_client.h"
 #include "ui/views/mus/mus_client_test_api.h"
 #include "ui/views/mus/screen_mus.h"
+#include "ui/views/test/native_widget_factory.h"
 #include "ui/views/test/views_test_base.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_delegate.h"
@@ -46,9 +47,14 @@
 class DesktopWindowTreeHostMusTest : public ViewsTestBase,
                                      public WidgetObserver {
  public:
-  DesktopWindowTreeHostMusTest()
-      : widget_activated_(nullptr), widget_deactivated_(nullptr) {}
-  ~DesktopWindowTreeHostMusTest() override {}
+  DesktopWindowTreeHostMusTest() = default;
+  ~DesktopWindowTreeHostMusTest() override = default;
+
+  // ViewsTestBase:
+  void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+    ViewsTestBase::SetUp();
+  }
 
   // Creates a test widget. Takes ownership of |delegate|.
   std::unique_ptr<Widget> CreateWidget(WidgetDelegate* delegate = nullptr,
@@ -78,8 +84,8 @@
     }
   }
 
-  Widget* widget_activated_;
-  Widget* widget_deactivated_;
+  Widget* widget_activated_ = nullptr;
+  Widget* widget_deactivated_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostMusTest);
 };
@@ -407,7 +413,7 @@
 
   for (auto widget_type : kWidgetTypes) {
     Widget widget;
-    Widget::InitParams params(widget_type);
+    Widget::InitParams params = CreateParams(widget_type);
     params.show_state = ui::SHOW_STATE_FULLSCREEN;
     params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
     widget.Init(params);
diff --git a/ui/views/mus/drag_interactive_uitest.cc b/ui/views/mus/drag_interactive_uitest.cc
index 92dc07d..b4d8e0c 100644
--- a/ui/views/mus/drag_interactive_uitest.cc
+++ b/ui/views/mus/drag_interactive_uitest.cc
@@ -15,7 +15,7 @@
 #include "ui/events/event.h"
 #include "ui/events/event_utils.h"
 #include "ui/views/mus/mus_client.h"
-#include "ui/views/test/widget_test.h"
+#include "ui/views/test/views_interactive_ui_test_base.h"
 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
 #include "ui/views/widget/widget.h"
 
@@ -108,7 +108,7 @@
 
 }  // namespace
 
-using DragTestInteractive = WidgetTest;
+using DragTestInteractive = ViewsInteractiveUITestBase;
 
 // Dispatch of events is asynchronous so most of DragTestInteractive.DragTest
 // consists of callback functions which will perform an action after the
@@ -151,7 +151,9 @@
   ws::mojom::EventInjectorPtr event_injector;
   MusClient::Get()->window_tree_client()->connector()->BindInterface(
       ws::mojom::kServiceName, &event_injector);
-  Widget* source_widget = CreateTopLevelFramelessPlatformWidget();
+
+  Widget* source_widget = new Widget;
+  source_widget->Init(CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS));
   View* source_view = new DraggableView;
   source_widget->SetContentsView(source_view);
   source_widget->Show();
@@ -161,7 +163,9 @@
   source_widget->SetBounds(gfx::Rect(0, 0, 20, 20));
   ASSERT_TRUE(source_waiter.Wait());
 
-  Widget* target_widget = CreateTopLevelFramelessPlatformWidget();
+  Widget* target_widget = new Widget;
+  target_widget->Init(CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS));
+
   TargetView* target_view = new TargetView;
   target_widget->SetContentsView(target_view);
   target_widget->Show();
diff --git a/ui/views/mus/interactive_ui_tests_mus.cc b/ui/views/mus/interactive_ui_tests_mus.cc
deleted file mode 100644
index 5bea809..0000000
--- a/ui/views/mus/interactive_ui_tests_mus.cc
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/views/mus/views_mus_test_suite.h"
-
-int main(int argc, char** argv) {
-  return views::ViewsMusTestSuite(argc, argv).RunTestsSerially();
-}
diff --git a/ui/views/mus/remote_view/remote_view_host_unittest.cc b/ui/views/mus/remote_view/remote_view_host_unittest.cc
index 30db5c39..616e943 100644
--- a/ui/views/mus/remote_view/remote_view_host_unittest.cc
+++ b/ui/views/mus/remote_view/remote_view_host_unittest.cc
@@ -46,10 +46,16 @@
 
   // aura::test::AuraTestBase
   void SetUp() override {
+    env_ = aura::Env::CreateInstance();
     EnableMusWithTestWindowTree();
     AuraTestBase::SetUp();
   }
 
+  void TearDown() override {
+    AuraTestBase::TearDown();
+    env_.reset();
+  }
+
   // Creates a widget to host |contents|.
   std::unique_ptr<views::Widget> CreateTestWidget(views::View* contents) {
     std::unique_ptr<views::Widget> widget = std::make_unique<views::Widget>();
@@ -77,6 +83,8 @@
   }
 
  private:
+  std::unique_ptr<aura::Env> env_;
+
   DISALLOW_COPY_AND_ASSIGN(RemoteViewHostTest);
 };
 
diff --git a/ui/views/mus/remote_view/remote_view_provider_unittest.cc b/ui/views/mus/remote_view/remote_view_provider_unittest.cc
index 7aea514..0cd4fcac 100644
--- a/ui/views/mus/remote_view/remote_view_provider_unittest.cc
+++ b/ui/views/mus/remote_view/remote_view_provider_unittest.cc
@@ -28,6 +28,7 @@
 
   // aura::test::AuraTestBase
   void SetUp() override {
+    env_ = aura::Env::CreateInstance();
     EnableMusWithTestWindowTree();
     AuraTestBase::SetUp();
 
@@ -110,6 +111,7 @@
   }
 
  protected:
+  std::unique_ptr<aura::Env> env_;
   std::unique_ptr<aura::Window> embedded_;
   std::unique_ptr<RemoteViewProvider> provider_;
 
diff --git a/ui/views/mus/run_all_unittests_mus.cc b/ui/views/mus/run_all_unittests_mus.cc
deleted file mode 100644
index 49d9aaf..0000000
--- a/ui/views/mus/run_all_unittests_mus.cc
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/views/mus/views_mus_test_suite.h"
-
-int main(int argc, char** argv) {
-  return views::ViewsMusTestSuite(argc, argv).RunTests();
-}
diff --git a/ui/views/mus/screen_mus_unittest.cc b/ui/views/mus/screen_mus_unittest.cc
index e27751a1..28b0263 100644
--- a/ui/views/mus/screen_mus_unittest.cc
+++ b/ui/views/mus/screen_mus_unittest.cc
@@ -6,10 +6,9 @@
 
 #include "base/command_line.h"
 #include "base/test/scoped_task_environment.h"
-#include "testing/gtest/include/gtest/gtest.h"
 #include "ui/display/display_switches.h"
 #include "ui/display/screen.h"
-#include "ui/views/test/scoped_views_test_helper.h"
+#include "ui/views/test/views_test_base.h"
 
 namespace views {
 namespace {
@@ -27,34 +26,7 @@
   return results;
 }
 
-TEST(ScreenMusScaleFactorTest, ConsistentDisplayInHighDPI) {
-  base::test::ScopedTaskEnvironment task_environment(
-      base::test::ScopedTaskEnvironment::MainThreadType::UI);
-  // Must be set before |test_helper| is constructed.
-  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kForceDeviceScaleFactor, "2");
-  ScopedViewsTestHelper test_helper;
-  display::Screen* screen = display::Screen::GetScreen();
-  std::vector<display::Display> displays = screen->GetAllDisplays();
-  ASSERT_FALSE(displays.empty());
-  for (const display::Display& display : displays) {
-    EXPECT_EQ(2.f, display.device_scale_factor());
-    EXPECT_EQ(display.work_area(), display.bounds());
-  }
-}
-
-class ScreenMusTest : public testing::Test {
- public:
-  ScreenMusTest() = default;
-  ~ScreenMusTest() override = default;
-
- private:
-  base::test::ScopedTaskEnvironment task_environment_{
-      base::test::ScopedTaskEnvironment::MainThreadType::UI};
-  ScopedViewsTestHelper test_helper_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScreenMusTest);
-};
+using ScreenMusTest = ViewsTestWithDesktopNativeWidget;
 
 TEST_F(ScreenMusTest, PrimaryChangedToExisting) {
   ScreenMus* screen = static_cast<ScreenMus*>(display::Screen::GetScreen());
@@ -123,5 +95,30 @@
   EXPECT_EQ(kDisplayId1, screen->GetDisplayForNewWindows().id());
 }
 
+class ScreenMusScaleFactorTest : public ScreenMusTest {
+ public:
+  ScreenMusScaleFactorTest() = default;
+  ~ScreenMusScaleFactorTest() override = default;
+
+  void SetUp() override {
+    base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+        switches::kForceDeviceScaleFactor, "2");
+    ScreenMusTest::SetUp();
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ScreenMusScaleFactorTest);
+};
+
+TEST_F(ScreenMusScaleFactorTest, ConsistentDisplayInHighDPI) {
+  display::Screen* screen = display::Screen::GetScreen();
+  std::vector<display::Display> displays = screen->GetAllDisplays();
+  ASSERT_FALSE(displays.empty());
+  for (const display::Display& display : displays) {
+    EXPECT_EQ(2.f, display.device_scale_factor());
+    EXPECT_EQ(display.work_area(), display.bounds());
+  }
+}
+
 }  // namespace
 }  // namespace views
diff --git a/ui/views/mus/views_mus_test_suite.cc b/ui/views/mus/views_mus_test_suite.cc
deleted file mode 100644
index befc9bd2..0000000
--- a/ui/views/mus/views_mus_test_suite.cc
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/views/mus/views_mus_test_suite.h"
-
-#include <memory>
-#include <string>
-
-#include "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/synchronization/waitable_event.h"
-#include "base/threading/simple_thread.h"
-#include "mojo/core/embedder/embedder.h"
-#include "mojo/core/embedder/scoped_ipc_support.h"
-#include "services/catalog/catalog.h"
-#include "services/service_manager/background/background_service_manager.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "services/service_manager/public/cpp/constants.h"
-#include "services/service_manager/public/cpp/service.h"
-#include "services/service_manager/public/cpp/service_binding.h"
-#include "services/ws/common/switches.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/aura/env.h"
-#include "ui/aura/mus/window_tree_host_mus.h"
-#include "ui/aura/test/mus/input_method_mus_test_api.h"
-#include "ui/aura/window.h"
-#include "ui/base/ui_base_features.h"
-#include "ui/base/ui_base_switches.h"
-#include "ui/compositor/test/fake_context_factory.h"
-#include "ui/gl/gl_switches.h"
-#include "ui/views/mus/desktop_window_tree_host_mus.h"
-#include "ui/views/mus/mus_client.h"
-#include "ui/views/mus/views_mus_tests_catalog_source.h"
-#include "ui/views/test/platform_test_helper.h"
-#include "ui/views/test/views_test_helper_aura.h"
-#include "ui/views/views_delegate.h"
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
-
-namespace views {
-namespace {
-
-void EnsureCommandLineSwitch(const std::string& name) {
-  base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
-  if (!cmd_line->HasSwitch(name))
-    cmd_line->AppendSwitch(name);
-}
-
-class ServiceManagerConnection {
- public:
-  ServiceManagerConnection()
-      : thread_("Persistent service_manager connections"),
-        default_service_binding_(&default_service_) {
-    catalog::Catalog::SetDefaultCatalogManifest(CreateViewsMusTestsCatalog());
-    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
-                             base::WaitableEvent::InitialState::NOT_SIGNALED);
-    base::Thread::Options options;
-    thread_.StartWithOptions(options);
-    thread_.task_runner()->PostTask(
-        FROM_HERE,
-        base::BindOnce(
-            &ServiceManagerConnection::SetUpConnectionsOnBackgroundThread,
-            base::Unretained(this), &wait));
-    wait.Wait();
-  }
-
-  ~ServiceManagerConnection() {
-    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
-                             base::WaitableEvent::InitialState::NOT_SIGNALED);
-    thread_.task_runner()->PostTask(
-        FROM_HERE,
-        base::BindOnce(
-            &ServiceManagerConnection::TearDownConnectionsOnBackgroundThread,
-            base::Unretained(this), &wait));
-    wait.Wait();
-  }
-
-  std::unique_ptr<MusClient> CreateMusClient() {
-    MusClient::InitParams params;
-    params.connector = GetConnector();
-    params.identity = service_manager_identity_;
-    return std::make_unique<MusClient>(params);
-  }
-
- private:
-  service_manager::Connector* GetConnector() {
-    service_manager_connector_.reset();
-    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
-                             base::WaitableEvent::InitialState::NOT_SIGNALED);
-    thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&ServiceManagerConnection::CloneConnector,
-                                  base::Unretained(this), &wait));
-    wait.Wait();
-    DCHECK(service_manager_connector_);
-    return service_manager_connector_.get();
-  }
-
-  void CloneConnector(base::WaitableEvent* wait) {
-    service_manager_connector_ =
-        default_service_binding_.GetConnector()->Clone();
-    wait->Signal();
-  }
-
-  void SetUpConnectionsOnBackgroundThread(base::WaitableEvent* wait) {
-    background_service_manager_ =
-        std::make_unique<service_manager::BackgroundServiceManager>(nullptr,
-                                                                    nullptr);
-    service_manager::mojom::ServicePtr service;
-    default_service_binding_.Bind(mojo::MakeRequest(&service));
-    background_service_manager_->RegisterService(
-        service_manager::Identity(GetTestName(),
-                                  service_manager::kSystemInstanceGroup,
-                                  base::Token{}, base::Token::CreateRandom()),
-        std::move(service), nullptr);
-    service_manager_connector_ =
-        default_service_binding_.GetConnector()->Clone();
-    service_manager_identity_ = default_service_binding_.identity();
-    wait->Signal();
-  }
-
-  void TearDownConnectionsOnBackgroundThread(base::WaitableEvent* wait) {
-    default_service_binding_.Close();
-    background_service_manager_.reset();
-    wait->Signal();
-  }
-
-  // Returns the name of the test executable, e.g. "views_mus_unittests".
-  std::string GetTestName() {
-    base::FilePath executable = base::CommandLine::ForCurrentProcess()
-                                    ->GetProgram()
-                                    .BaseName()
-                                    .RemoveExtension();
-    return executable.MaybeAsASCII();
-  }
-
-  base::Thread thread_;
-  std::unique_ptr<service_manager::BackgroundServiceManager>
-      background_service_manager_;
-  service_manager::Service default_service_;
-  service_manager::ServiceBinding default_service_binding_;
-  std::unique_ptr<service_manager::Connector> service_manager_connector_;
-  service_manager::Identity service_manager_identity_;
-
-  DISALLOW_COPY_AND_ASSIGN(ServiceManagerConnection);
-};
-
-class PlatformTestHelperMus : public PlatformTestHelper {
- public:
-  PlatformTestHelperMus() {
-    mus_client_ = service_manager_connection_.CreateMusClient();
-    ViewsDelegate::GetInstance()->set_native_widget_factory(base::Bind(
-        &PlatformTestHelperMus::CreateNativeWidget, base::Unretained(this)));
-  }
-  ~PlatformTestHelperMus() override {}
-
-  // PlatformTestHelper:
-  void OnTestHelperCreated(ViewsTestHelper* helper) override {
-    static_cast<ViewsTestHelperAura*>(helper)->EnableMusWithWindowTreeClient(
-        mus_client_->window_tree_client());
-  }
-  void SimulateNativeDestroy(Widget* widget) override {
-    aura::WindowTreeHostMus* window_tree_host =
-        static_cast<aura::WindowTreeHostMus*>(
-            widget->GetNativeView()->GetHost());
-    static_cast<aura::WindowTreeClientDelegate*>(mus_client_.get())
-        ->OnEmbedRootDestroyed(window_tree_host);
-  }
-
-  void InitializeContextFactory(
-      ui::ContextFactory** context_factory,
-      ui::ContextFactoryPrivate** context_factory_private) override {
-    *context_factory = &context_factory_;
-    *context_factory_private = nullptr;
-  }
-
- private:
-  NativeWidget* CreateNativeWidget(const Widget::InitParams& init_params,
-                                   internal::NativeWidgetDelegate* delegate) {
-    NativeWidget* native_widget =
-        mus_client_->CreateNativeWidget(init_params, delegate);
-    if (!native_widget)
-      return nullptr;
-
-    // Disable sending KeyEvents to IME as tests aren't set up to wait for an
-    // ack (and tests run concurrently).
-    aura::WindowTreeHostMus* window_tree_host_mus =
-        static_cast<aura::WindowTreeHostMus*>(
-            static_cast<DesktopNativeWidgetAura*>(native_widget)->host());
-    aura::InputMethodMusTestApi::Disable(window_tree_host_mus->input_method());
-    return native_widget;
-  }
-
-  ServiceManagerConnection service_manager_connection_;
-  std::unique_ptr<MusClient> mus_client_;
-  ui::FakeContextFactory context_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(PlatformTestHelperMus);
-};
-
-std::unique_ptr<PlatformTestHelper> CreatePlatformTestHelper() {
-  return std::make_unique<PlatformTestHelperMus>();
-}
-
-}  // namespace
-
-ViewsMusTestSuite::ViewsMusTestSuite(int argc, char** argv)
-    : ViewsTestSuite(argc, argv), ipc_thread_("IPC thread") {}
-
-ViewsMusTestSuite::~ViewsMusTestSuite() {}
-
-void ViewsMusTestSuite::Initialize() {
-  PlatformTestHelper::SetIsMus();
-  // Let other services know that we're running in tests. Do this with a
-  // command line flag to avoid making blocking calls to other processes for
-  // setup for tests (e.g. to unlock the screen in the window manager).
-  EnsureCommandLineSwitch(ws::switches::kUseTestConfig);
-
-  EnsureCommandLineSwitch(switches::kOverrideUseSoftwareGLForTests);
-
-  ViewsTestSuite::Initialize();
-
-  // NOTE: this has to be after ViewsTestSuite::Initialize() as
-  // TestSuite::Initialize() resets kEnableFeatures and the command line.
-  feature_list_.InitAndEnableFeature(features::kMash);
-  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kEnableFeatures, features::kMash.name);
-
-  PlatformTestHelper::set_factory(base::Bind(&CreatePlatformTestHelper));
-
-  mojo::core::Init();
-  ipc_thread_.StartWithOptions(
-      base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
-  ipc_support_ = std::make_unique<mojo::core::ScopedIPCSupport>(
-      ipc_thread_.task_runner(),
-      mojo::core::ScopedIPCSupport::ShutdownPolicy::CLEAN);
-}
-
-void ViewsMusTestSuite::InitializeEnv() {
-  env_ = aura::Env::CreateInstance(aura::Env::Mode::MUS);
-}
-
-void ViewsMusTestSuite::DestroyEnv() {
-  env_.reset();
-}
-
-}  // namespace views
diff --git a/ui/views/mus/views_mus_test_suite.h b/ui/views/mus/views_mus_test_suite.h
deleted file mode 100644
index 8490ab9..0000000
--- a/ui/views/mus/views_mus_test_suite.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_VIEWS_MUS_VIEWS_MUS_TEST_SUITE_H_
-#define UI_VIEWS_MUS_VIEWS_MUS_TEST_SUITE_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "base/test/scoped_feature_list.h"
-#include "base/threading/thread.h"
-#include "ui/views/views_test_suite.h"
-
-namespace mojo {
-namespace core {
-class ScopedIPCSupport;
-}
-}  // namespace mojo
-
-namespace views {
-
-class ViewsMusTestSuite : public ViewsTestSuite {
- public:
-  ViewsMusTestSuite(int argc, char** argv);
-  ~ViewsMusTestSuite() override;
-
- private:
-  // ViewsTestSuite:
-  void Initialize() override;
-  void InitializeEnv() override;
-  void DestroyEnv() override;
-
-  base::Thread ipc_thread_;
-  std::unique_ptr<mojo::core::ScopedIPCSupport> ipc_support_;
-
-  base::test::ScopedFeatureList feature_list_;
-
-  std::unique_ptr<aura::Env> env_;
-
-  DISALLOW_COPY_AND_ASSIGN(ViewsMusTestSuite);
-};
-
-}  // namespace views
-
-#endif  // UI_VIEWS_MUS_VIEWS_MUS_TEST_SUITE_H_
diff --git a/ui/views/test/DEPS b/ui/views/test/DEPS
index d47da7cf..0919d159 100644
--- a/ui/views/test/DEPS
+++ b/ui/views/test/DEPS
@@ -3,7 +3,9 @@
 ]
 
 specific_include_rules = {
-  "views_interactive_ui_test_base\.cc": [
-    "+mojo/core/embedder",
+  "platform_test_helper_mus.cc": [
+    "+services/catalog/catalog.h",
+    "+services/service_manager/background/background_service_manager.h",
+    "+services/service_manager/public",
   ]
 }
diff --git a/ui/views/test/focus_manager_test.cc b/ui/views/test/focus_manager_test.cc
index 373846c..13ea5a6 100644
--- a/ui/views/test/focus_manager_test.cc
+++ b/ui/views/test/focus_manager_test.cc
@@ -14,14 +14,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 // FocusManagerTest, public:
 
-FocusManagerTest::FocusManagerTest()
-    : contents_view_(new View),
-      focus_change_listener_(NULL),
-      widget_focus_change_listener_(NULL) {
-}
+FocusManagerTest::FocusManagerTest() : contents_view_(new View) {}
 
-FocusManagerTest::~FocusManagerTest() {
-}
+FocusManagerTest::~FocusManagerTest() = default;
 
 FocusManager* FocusManagerTest::GetFocusManager() {
   return GetWidget()->GetFocusManager();
diff --git a/ui/views/test/focus_manager_test.h b/ui/views/test/focus_manager_test.h
index fb2a292f7..0efde67 100644
--- a/ui/views/test/focus_manager_test.h
+++ b/ui/views/test/focus_manager_test.h
@@ -46,8 +46,8 @@
 
  private:
   View* contents_view_;
-  FocusChangeListener* focus_change_listener_;
-  WidgetFocusChangeListener* widget_focus_change_listener_;
+  FocusChangeListener* focus_change_listener_ = nullptr;
+  WidgetFocusChangeListener* widget_focus_change_listener_ = nullptr;
   std::vector<View*> accessible_panes_;
 
   DISALLOW_COPY_AND_ASSIGN(FocusManagerTest);
diff --git a/ui/views/test/native_widget_factory.cc b/ui/views/test/native_widget_factory.cc
new file mode 100644
index 0000000..a62e7e2
--- /dev/null
+++ b/ui/views/test/native_widget_factory.cc
@@ -0,0 +1,35 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/test/native_widget_factory.h"
+
+#include "build/build_config.h"
+#include "ui/views/test/test_platform_native_widget.h"
+
+#if defined(USE_AURA)
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+#include "ui/views/widget/native_widget_aura.h"
+#elif defined(OS_MACOSX)
+#include "ui/views/widget/native_widget_mac.h"
+#endif
+
+namespace views {
+namespace test {
+
+NativeWidget* CreatePlatformNativeWidgetImpl(
+    const Widget::InitParams& init_params,
+    Widget* widget,
+    uint32_t type,
+    bool* destroyed) {
+#if defined(OS_MACOSX)
+  return new TestPlatformNativeWidget<NativeWidgetMac>(
+      widget, type == kStubCapture, destroyed);
+#else
+  return new TestPlatformNativeWidget<NativeWidgetAura>(
+      widget, type == kStubCapture, destroyed);
+#endif
+}
+
+}  // namespace test
+}  // namespace views
diff --git a/ui/views/test/native_widget_factory.h b/ui/views/test/native_widget_factory.h
index 7ade865..a0aeda8e 100644
--- a/ui/views/test/native_widget_factory.h
+++ b/ui/views/test/native_widget_factory.h
@@ -30,15 +30,6 @@
     uint32_t behavior,
     bool* destroyed);
 
-// Creates the appropriate desktop platform specific NativeWidget
-// implementation. On some platforms this is the same as
-// CreatePlatformNativeWidgetImpl(). If |destroyed| is non-null it it set to
-// true from the destructor of the NativeWidget.
-NativeWidget* CreatePlatformDesktopNativeWidgetImpl(
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    bool* destroyed);
-
 }  // namespace test
 }  // namespace views
 
diff --git a/ui/views/test/native_widget_factory_aura_mus.cc b/ui/views/test/native_widget_factory_aura_mus.cc
deleted file mode 100644
index e99ad33..0000000
--- a/ui/views/test/native_widget_factory_aura_mus.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/views/test/native_widget_factory.h"
-
-#include "ui/aura/mus/window_tree_host_mus_init_params.h"
-#include "ui/views/mus/desktop_window_tree_host_mus.h"
-#include "ui/views/mus/mus_client.h"
-#include "ui/views/test/test_platform_native_widget.h"
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
-#include "ui/views/widget/native_widget_aura.h"
-
-namespace views {
-namespace test {
-namespace {
-
-NativeWidget* CreatePlatformNativeWidgetImplAuraMus(
-    bool create_desktop_native_widget_aura,
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    int32_t type,
-    bool* destroyed) {
-  if (!create_desktop_native_widget_aura) {
-    return new TestPlatformNativeWidget<NativeWidgetAura>(
-        widget, type == kStubCapture, destroyed);
-  }
-  DesktopNativeWidgetAura* desktop_native_widget_aura =
-      new TestPlatformNativeWidget<DesktopNativeWidgetAura>(
-          widget, type == kStubCapture, destroyed);
-  std::map<std::string, std::vector<uint8_t>> mus_properties =
-      MusClient::Get()->ConfigurePropertiesFromParams(init_params);
-  aura::WindowTreeHostMusInitParams window_tree_host_init_params =
-      aura::CreateInitParamsForTopLevel(MusClient::Get()->window_tree_client(),
-                                        std::move(mus_properties));
-  desktop_native_widget_aura->SetDesktopWindowTreeHost(
-      std::make_unique<DesktopWindowTreeHostMus>(
-          std::move(window_tree_host_init_params), widget,
-          desktop_native_widget_aura));
-  return desktop_native_widget_aura;
-}
-
-}  // namespace
-
-NativeWidget* CreatePlatformNativeWidgetImpl(
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    uint32_t type,
-    bool* destroyed) {
-  // Only create a NativeWidgetAura if necessary, otherwise use
-  // DesktopNativeWidgetAura.
-  return CreatePlatformNativeWidgetImplAuraMus(
-      MusClient::ShouldCreateDesktopNativeWidgetAura(init_params), init_params,
-      widget, type, destroyed);
-}
-
-NativeWidget* CreatePlatformDesktopNativeWidgetImpl(
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    bool* destroyed) {
-  return CreatePlatformNativeWidgetImplAuraMus(true, init_params, widget,
-                                               kDefault, destroyed);
-}
-
-}  // namespace test
-}  // namespace views
diff --git a/ui/views/test/native_widget_factory_desktop.cc b/ui/views/test/native_widget_factory_desktop.cc
deleted file mode 100644
index 1dbe1d3..0000000
--- a/ui/views/test/native_widget_factory_desktop.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/views/test/native_widget_factory.h"
-
-#include "ui/views/test/test_platform_native_widget.h"
-
-#if defined(USE_AURA)
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
-#include "ui/views/widget/native_widget_aura.h"
-#elif defined(OS_MACOSX)
-#include "ui/views/widget/native_widget_mac.h"
-#endif
-
-namespace views {
-namespace test {
-
-NativeWidget* CreatePlatformNativeWidgetImpl(
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    uint32_t type,
-    bool* destroyed) {
-#if defined(OS_MACOSX)
-  return new TestPlatformNativeWidget<NativeWidgetMac>(
-      widget, type == kStubCapture, destroyed);
-#else
-  return new TestPlatformNativeWidget<NativeWidgetAura>(
-      widget, type == kStubCapture, destroyed);
-#endif
-}
-
-NativeWidget* CreatePlatformDesktopNativeWidgetImpl(
-    const Widget::InitParams& init_params,
-    Widget* widget,
-    bool* destroyed) {
-#if defined(OS_MACOSX)
-  return new TestPlatformNativeWidget<NativeWidgetMac>(widget, false,
-                                                       destroyed);
-#elif defined(OS_CHROMEOS)
-  // Chromeos only has one NativeWidgetType. Chromeos with aura-mus does not
-  // compile this file.
-  return new TestPlatformNativeWidget<NativeWidgetAura>(widget, false,
-                                                        destroyed);
-#elif defined(USE_AURA)
-  return new TestPlatformNativeWidget<DesktopNativeWidgetAura>(widget, false,
-                                                               destroyed);
-#else
-  NOTREACHED();
-  return nullptr;
-#endif
-}
-
-}  // namespace test
-}  // namespace views
diff --git a/ui/views/test/platform_test_helper.cc b/ui/views/test/platform_test_helper.cc
index 0816cdf..46e1f3c 100644
--- a/ui/views/test/platform_test_helper.cc
+++ b/ui/views/test/platform_test_helper.cc
@@ -18,7 +18,6 @@
 namespace {
 
 PlatformTestHelper::Factory test_helper_factory;
-bool is_mus = false;
 
 }  // namespace
 
@@ -27,7 +26,7 @@
 }
 
 void PlatformTestHelper::set_factory(const Factory& factory) {
-  DCHECK(test_helper_factory.is_null());
+  DCHECK_NE(factory.is_null(), test_helper_factory.is_null());
   test_helper_factory = factory;
 }
 
@@ -38,16 +37,6 @@
              : base::WrapUnique(new PlatformTestHelper);
 }
 
-// static
-void PlatformTestHelper::SetIsMus() {
-  is_mus = true;
-}
-
-// static
-bool PlatformTestHelper::IsMus() {
-  return is_mus;
-}
-
 #if defined(USE_AURA)
 void PlatformTestHelper::SimulateNativeDestroy(Widget* widget) {
   delete widget->GetNativeView();
diff --git a/ui/views/test/platform_test_helper.h b/ui/views/test/platform_test_helper.h
index 64423afc..7d6670b 100644
--- a/ui/views/test/platform_test_helper.h
+++ b/ui/views/test/platform_test_helper.h
@@ -29,9 +29,6 @@
   static void set_factory(const Factory& factory);
   static std::unique_ptr<PlatformTestHelper> Create();
 
-  static void SetIsMus();
-  static bool IsMus();
-
   // Called once the ViewsTestHelper has been created, but before SetUp() is
   // called.
   virtual void OnTestHelperCreated(ViewsTestHelper* helper) {}
diff --git a/ui/views/test/platform_test_helper_mus.cc b/ui/views/test/platform_test_helper_mus.cc
new file mode 100644
index 0000000..01b727aa
--- /dev/null
+++ b/ui/views/test/platform_test_helper_mus.cc
@@ -0,0 +1,181 @@
+// 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 "ui/views/test/platform_test_helper_mus.h"
+
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/threading/simple_thread.h"
+#include "services/catalog/catalog.h"
+#include "services/service_manager/background/background_service_manager.h"
+#include "services/service_manager/public/cpp/connector.h"
+#include "services/service_manager/public/cpp/constants.h"
+#include "services/service_manager/public/cpp/service.h"
+#include "services/service_manager/public/cpp/service_binding.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/aura/mus/window_tree_host_mus.h"
+#include "ui/aura/test/env_test_helper.h"
+#include "ui/aura/test/mus/input_method_mus_test_api.h"
+#include "ui/aura/window.h"
+#include "ui/views/mus/desktop_window_tree_host_mus.h"
+#include "ui/views/mus/mus_client.h"
+#include "ui/views/test/views_test_helper_aura.h"
+#include "ui/views/views_delegate.h"
+#include "ui/views/views_unittests_catalog_source.h"
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+#include "ui/views/widget/native_widget_aura.h"
+
+namespace views {
+
+namespace {
+
+NativeWidget* CreateNativeWidget(const Widget::InitParams& init_params,
+                                 internal::NativeWidgetDelegate* delegate) {
+  NativeWidget* native_widget =
+      MusClient::Get()->CreateNativeWidget(init_params, delegate);
+  if (!native_widget)
+    return nullptr;
+
+  // Disable sending KeyEvents to IME as tests aren't set up to wait for an
+  // ack (and tests run concurrently).
+  aura::WindowTreeHostMus* window_tree_host_mus =
+      static_cast<aura::WindowTreeHostMus*>(
+          static_cast<DesktopNativeWidgetAura*>(native_widget)->host());
+  aura::InputMethodMusTestApi::Disable(window_tree_host_mus->input_method());
+  return native_widget;
+}
+
+}  // namespace
+
+class PlatformTestHelperMus::ServiceManagerConnection {
+ public:
+  ServiceManagerConnection()
+      : thread_("Persistent service_manager connections"),
+        default_service_binding_(&default_service_) {
+    catalog::Catalog::SetDefaultCatalogManifest(CreateViewsUnittestsCatalog());
+    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+                             base::WaitableEvent::InitialState::NOT_SIGNALED);
+    base::Thread::Options options;
+    thread_.StartWithOptions(options);
+    thread_.task_runner()->PostTask(
+        FROM_HERE,
+        base::BindOnce(
+            &ServiceManagerConnection::SetUpConnectionsOnBackgroundThread,
+            base::Unretained(this), &wait));
+    wait.Wait();
+  }
+
+  ~ServiceManagerConnection() {
+    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+                             base::WaitableEvent::InitialState::NOT_SIGNALED);
+    thread_.task_runner()->PostTask(
+        FROM_HERE,
+        base::BindOnce(
+            &ServiceManagerConnection::TearDownConnectionsOnBackgroundThread,
+            base::Unretained(this), &wait));
+    wait.Wait();
+  }
+
+  std::unique_ptr<MusClient> CreateMusClient() {
+    MusClient::InitParams params;
+    params.connector = GetConnector();
+    params.identity = service_manager_identity_;
+    // The window tree client might have been created already by the test suite
+    // (e.g. AuraTestSuiteSetup).
+    params.window_tree_client =
+        aura::test::EnvTestHelper().GetWindowTreeClient();
+    return std::make_unique<MusClient>(params);
+  }
+
+ private:
+  service_manager::Connector* GetConnector() {
+    service_manager_connector_.reset();
+    base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+                             base::WaitableEvent::InitialState::NOT_SIGNALED);
+    thread_.task_runner()->PostTask(
+        FROM_HERE, base::BindOnce(&ServiceManagerConnection::CloneConnector,
+                                  base::Unretained(this), &wait));
+    wait.Wait();
+    DCHECK(service_manager_connector_);
+    return service_manager_connector_.get();
+  }
+
+  void CloneConnector(base::WaitableEvent* wait) {
+    service_manager_connector_ =
+        default_service_binding_.GetConnector()->Clone();
+    wait->Signal();
+  }
+
+  void SetUpConnectionsOnBackgroundThread(base::WaitableEvent* wait) {
+    background_service_manager_ =
+        std::make_unique<service_manager::BackgroundServiceManager>(nullptr,
+                                                                    nullptr);
+    service_manager::mojom::ServicePtr service;
+    default_service_binding_.Bind(mojo::MakeRequest(&service));
+    background_service_manager_->RegisterService(
+        service_manager::Identity(GetTestName(),
+                                  service_manager::kSystemInstanceGroup,
+                                  base::Token{}, base::Token::CreateRandom()),
+        std::move(service), nullptr);
+    service_manager_connector_ =
+        default_service_binding_.GetConnector()->Clone();
+    service_manager_identity_ = default_service_binding_.identity();
+    wait->Signal();
+  }
+
+  void TearDownConnectionsOnBackgroundThread(base::WaitableEvent* wait) {
+    default_service_binding_.Close();
+    background_service_manager_.reset();
+    wait->Signal();
+  }
+
+  // Returns the name of the test executable, e.g. "views_unittests".
+  std::string GetTestName() {
+    base::FilePath executable = base::CommandLine::ForCurrentProcess()
+                                    ->GetProgram()
+                                    .BaseName()
+                                    .RemoveExtension();
+    return executable.MaybeAsASCII();
+  }
+
+  base::Thread thread_;
+  std::unique_ptr<service_manager::BackgroundServiceManager>
+      background_service_manager_;
+  service_manager::Service default_service_;
+  service_manager::ServiceBinding default_service_binding_;
+  std::unique_ptr<service_manager::Connector> service_manager_connector_;
+  service_manager::Identity service_manager_identity_;
+
+  DISALLOW_COPY_AND_ASSIGN(ServiceManagerConnection);
+};
+
+PlatformTestHelperMus::PlatformTestHelperMus() {
+  service_manager_connection_ = std::make_unique<ServiceManagerConnection>();
+  mus_client_ = service_manager_connection_->CreateMusClient();
+  ViewsDelegate::GetInstance()->set_native_widget_factory(
+      base::BindRepeating(&CreateNativeWidget));
+}
+
+PlatformTestHelperMus::~PlatformTestHelperMus() = default;
+
+void PlatformTestHelperMus::OnTestHelperCreated(ViewsTestHelper* helper) {
+  static_cast<ViewsTestHelperAura*>(helper)->EnableMusWithWindowTreeClient(
+      mus_client_->window_tree_client());
+}
+
+void PlatformTestHelperMus::SimulateNativeDestroy(Widget* widget) {
+  aura::WindowTreeHostMus* window_tree_host =
+      static_cast<aura::WindowTreeHostMus*>(widget->GetNativeView()->GetHost());
+  static_cast<aura::WindowTreeClientDelegate*>(mus_client_.get())
+      ->OnEmbedRootDestroyed(window_tree_host);
+}
+
+void PlatformTestHelperMus::InitializeContextFactory(
+    ui::ContextFactory** context_factory,
+    ui::ContextFactoryPrivate** context_factory_private) {
+  *context_factory = &context_factory_;
+  *context_factory_private = nullptr;
+}
+
+}  // namespace views
diff --git a/ui/views/test/platform_test_helper_mus.h b/ui/views/test/platform_test_helper_mus.h
new file mode 100644
index 0000000..afc3245
--- /dev/null
+++ b/ui/views/test/platform_test_helper_mus.h
@@ -0,0 +1,40 @@
+// 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 UI_VIEWS_TEST_PLATFORM_TEST_HELPER_MUS_H_
+#define UI_VIEWS_TEST_PLATFORM_TEST_HELPER_MUS_H_
+
+#include "base/macros.h"
+#include "ui/compositor/test/fake_context_factory.h"
+#include "ui/views/test/platform_test_helper.h"
+
+namespace views {
+
+class MusClient;
+
+class PlatformTestHelperMus : public PlatformTestHelper {
+ public:
+  PlatformTestHelperMus();
+  ~PlatformTestHelperMus() override;
+
+  // PlatformTestHelper:
+  void OnTestHelperCreated(ViewsTestHelper* helper) override;
+  void SimulateNativeDestroy(Widget* widget) override;
+  void InitializeContextFactory(
+      ui::ContextFactory** context_factory,
+      ui::ContextFactoryPrivate** context_factory_private) override;
+
+ private:
+  class ServiceManagerConnection;
+
+  std::unique_ptr<ServiceManagerConnection> service_manager_connection_;
+  std::unique_ptr<MusClient> mus_client_;
+  ui::FakeContextFactory context_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(PlatformTestHelperMus);
+};
+
+}  // namespace views
+
+#endif  // UI_VIEWS_TEST_PLATFORM_TEST_HELPER_MUS_H_
diff --git a/ui/views/test/views_interactive_ui_test_base.cc b/ui/views/test/views_interactive_ui_test_base.cc
index eb9377c..5285d08 100644
--- a/ui/views/test/views_interactive_ui_test_base.cc
+++ b/ui/views/test/views_interactive_ui_test_base.cc
@@ -4,34 +4,14 @@
 
 #include "ui/views/test/views_interactive_ui_test_base.h"
 
-#include "base/path_service.h"
-#include "mojo/core/embedder/embedder.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/ui_base_paths.h"
-#include "ui/gl/test/gl_surface_test_support.h"
-
 namespace views {
 
-ViewsInteractiveUITestBase::ViewsInteractiveUITestBase() {}
-
-ViewsInteractiveUITestBase::~ViewsInteractiveUITestBase() {}
-
-// static
-void ViewsInteractiveUITestBase::InteractiveSetUp() {
-  // Mojo is initialized here similar to how each browser test case initializes
-  // Mojo when starting. This only works because each interactive_ui_test runs
-  // in a new process.
-  mojo::core::Init();
-
-  gl::GLSurfaceTestSupport::InitializeOneOff();
-  ui::RegisterPathProvider();
-  base::FilePath ui_test_pak_path;
-  ASSERT_TRUE(base::PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
-  ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
-}
+ViewsInteractiveUITestBase::ViewsInteractiveUITestBase() = default;
+ViewsInteractiveUITestBase::~ViewsInteractiveUITestBase() = default;
 
 void ViewsInteractiveUITestBase::SetUp() {
-  InteractiveSetUp();
+  set_native_widget_type(NativeWidgetType::kDesktop);
+  SetUpForInteractiveTests();
   ViewsTestBase::SetUp();
 }
 
diff --git a/ui/views/test/views_interactive_ui_test_base.h b/ui/views/test/views_interactive_ui_test_base.h
index 3c3e0e2..4049b66 100644
--- a/ui/views/test/views_interactive_ui_test_base.h
+++ b/ui/views/test/views_interactive_ui_test_base.h
@@ -15,8 +15,6 @@
   ViewsInteractiveUITestBase();
   ~ViewsInteractiveUITestBase() override;
 
-  static void InteractiveSetUp();
-
   // ViewsTestBase:
   void SetUp() override;
 
diff --git a/ui/views/test/views_test_base.cc b/ui/views/test/views_test_base.cc
index 633235b..1674d6c4e 100644
--- a/ui/views/test/views_test_base.cc
+++ b/ui/views/test/views_test_base.cc
@@ -7,10 +7,41 @@
 #include <utility>
 
 #include "base/environment.h"
+#include "base/files/file_path.h"
+#include "base/path_service.h"
 #include "base/run_loop.h"
+#include "mojo/core/embedder/embedder.h"
 #include "ui/base/clipboard/clipboard.h"
 #include "ui/base/material_design/material_design_controller.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/base/ui_base_paths.h"
+#include "ui/base/ui_features.h"
+#include "ui/gl/test/gl_surface_test_support.h"
 #include "ui/views/test/platform_test_helper.h"
+#include "ui/views/test/test_platform_native_widget.h"
+
+#if BUILDFLAG(ENABLE_MUS)
+#include "base/at_exit.h"
+#include "base/base_switches.h"
+#include "base/command_line.h"
+#include "base/message_loop/message_loop.h"
+#include "base/threading/simple_thread.h"
+#include "base/threading/thread.h"
+#include "mojo/core/embedder/scoped_ipc_support.h"
+#include "services/ws/common/switches.h"
+#include "ui/aura/env.h"
+#include "ui/base/ui_base_features.h"
+#include "ui/base/ui_base_switches.h"
+#include "ui/views/test/platform_test_helper_mus.h"
+#include "ui/views/views_delegate.h"
+#endif
+
+#if defined(USE_AURA)
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+#include "ui/views/widget/native_widget_aura.h"
+#elif defined(OS_MACOSX)
+#include "ui/views/widget/native_widget_mac.h"
+#endif
 
 #if defined(USE_X11)
 #include "ui/base/x/x11_util_internal.h"
@@ -44,14 +75,15 @@
 #endif
 }
 
+#if BUILDFLAG(ENABLE_MUS)
+std::unique_ptr<PlatformTestHelper> CreatePlatformTestHelper() {
+  return std::make_unique<PlatformTestHelperMus>();
+}
+#endif  // BUILDFLAG(ENABLE_MUS)
+
 }  // namespace
 
-ViewsTestBase::ViewsTestBase(
-    std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment)
-    : scoped_task_environment_(std::move(scoped_task_environment)),
-      setup_called_(false),
-      teardown_called_(false),
-      has_compositing_manager_(InitializeVisuals()) {}
+ViewsTestBase::ViewsTestBase() = default;
 
 ViewsTestBase::~ViewsTestBase() {
   CHECK(setup_called_)
@@ -60,23 +92,62 @@
       << "You have overridden TearDown but never called super class's TearDown";
 }
 
-// static
-bool ViewsTestBase::IsMus() {
-  return PlatformTestHelper::IsMus();
-}
-
 void ViewsTestBase::SetUp() {
+  if (!scoped_task_environment_) {
+    scoped_task_environment_ = std::make_unique<ScopedTaskEnvironment>(
+        ScopedTaskEnvironment::MainThreadType::UI);
+  }
+
+  has_compositing_manager_ = InitializeVisuals();
+
+#if BUILDFLAG(ENABLE_MUS)
+  at_exit_manager_ = std::make_unique<base::ShadowingAtExitManager>();
+  if (!aura::Env::HasInstance()) {
+    env_ = aura::Env::CreateInstance(is_mus() ? aura::Env::Mode::MUS
+                                              : aura::Env::Mode::LOCAL);
+  }
+#endif
+
   testing::Test::SetUp();
   ui::MaterialDesignController::Initialize();
   setup_called_ = true;
   if (!views_delegate_for_setup_)
     views_delegate_for_setup_.reset(new TestViewsDelegate());
 
+#if BUILDFLAG(ENABLE_MUS)
+  if (is_mus()) {
+    // Set the mash feature flag, but don't override single process mash.
+    if (!features::IsSingleProcessMash()) {
+      feature_list_.InitAndEnableFeature(features::kMash);
+      base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+          switches::kEnableFeatures, features::kMash.name);
+    }
+
+    PlatformTestHelper::set_factory(
+        base::BindRepeating(&CreatePlatformTestHelper));
+
+    mojo::core::Init();
+    ipc_thread_ = std::make_unique<base::Thread>("IPC thread");
+    ipc_thread_->StartWithOptions(
+        base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
+    ipc_support_ = std::make_unique<mojo::core::ScopedIPCSupport>(
+        ipc_thread_->task_runner(),
+        mojo::core::ScopedIPCSupport::ShutdownPolicy::CLEAN);
+  }
+#else
+  if (native_widget_type_ == NativeWidgetType::kDesktop) {
+    ViewsDelegate::GetInstance()->set_native_widget_factory(base::BindRepeating(
+        &ViewsTestBase::CreateNativeWidgetForTest, base::Unretained(this)));
+  }
+#endif
+
   test_helper_.reset(
       new ScopedViewsTestHelper(std::move(views_delegate_for_setup_)));
 }
 
 void ViewsTestBase::TearDown() {
+  if (interactive_setup_called_)
+    ui::ResourceBundle::CleanupSharedInstance();
   ui::Clipboard::DestroyClipboardForCurrentThread();
 
   // Flush the message loop because we have pending release tasks
@@ -85,6 +156,38 @@
   teardown_called_ = true;
   testing::Test::TearDown();
   test_helper_.reset();
+
+#if BUILDFLAG(ENABLE_MUS)
+  ipc_support_.reset();
+  ipc_thread_.reset();
+  if (is_mus())
+    PlatformTestHelper::set_factory({});
+  env_.reset();
+  at_exit_manager_.reset();
+#endif
+}
+
+void ViewsTestBase::SetUpForInteractiveTests() {
+  DCHECK(!setup_called_);
+  interactive_setup_called_ = true;
+
+#if BUILDFLAG(ENABLE_MUS)
+  bool init_mojo = !is_mus();
+#else
+  bool init_mojo = true;
+#endif
+  if (init_mojo) {
+    // Mojo is initialized here similar to how each browser test case
+    // initializes Mojo when starting. This only works because each
+    // interactive_ui_test runs in a new process.
+    mojo::core::Init();
+  }
+
+  gl::GLSurfaceTestSupport::InitializeOneOff();
+  ui::RegisterPathProvider();
+  base::FilePath ui_test_pak_path;
+  ASSERT_TRUE(base::PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
+  ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
 }
 
 void ViewsTestBase::RunPendingMessages() {
@@ -111,4 +214,39 @@
   return test_helper_->GetContext();
 }
 
+NativeWidget* ViewsTestBase::CreateNativeWidgetForTest(
+    const Widget::InitParams& init_params,
+    internal::NativeWidgetDelegate* delegate) {
+#if defined(OS_MACOSX)
+  return new test::TestPlatformNativeWidget<NativeWidgetMac>(delegate, false,
+                                                             nullptr);
+#elif defined(USE_AURA)
+  // For widgets that have a modal parent, don't force a native widget type.
+  // This logic matches DesktopTestViewsDelegate as well as ChromeViewsDelegate.
+  if (init_params.parent &&
+      init_params.type != views::Widget::InitParams::TYPE_MENU &&
+      init_params.type != views::Widget::InitParams::TYPE_TOOLTIP) {
+    // Returning null results in using the platform default, which is
+    // NativeWidgetAura.
+    return nullptr;
+  }
+
+  if (native_widget_type_ == NativeWidgetType::kDesktop) {
+    return new test::TestPlatformNativeWidget<DesktopNativeWidgetAura>(
+        delegate, false, nullptr);
+  }
+
+  return new test::TestPlatformNativeWidget<NativeWidgetAura>(delegate, true,
+                                                              nullptr);
+#else
+  NOTREACHED();
+  return nullptr;
+#endif
+}
+
+void ViewsTestWithDesktopNativeWidget::SetUp() {
+  set_native_widget_type(NativeWidgetType::kDesktop);
+  ViewsTestBase::SetUp();
+}
+
 }  // namespace views
diff --git a/ui/views/test/views_test_base.h b/ui/views/test/views_test_base.h
index 88a0b8c..69f0c259 100644
--- a/ui/views/test/views_test_base.h
+++ b/ui/views/test/views_test_base.h
@@ -8,10 +8,12 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
+#include "ui/base/ui_features.h"
 #include "ui/views/test/scoped_views_test_helper.h"
 #include "ui/views/test/test_views_delegate.h"
 #include "ui/views/widget/widget.h"
@@ -20,6 +22,14 @@
 #include "ui/base/win/scoped_ole_initializer.h"
 #endif
 
+namespace aura {
+class Env;
+}
+
+namespace base {
+class ShadowingAtExitManager;
+}
+
 namespace views {
 
 // A base class for views unit test. It creates a message loop necessary
@@ -28,21 +38,25 @@
  public:
   using ScopedTaskEnvironment = base::test::ScopedTaskEnvironment;
 
-  explicit ViewsTestBase(
-      std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment =
-          std::make_unique<ScopedTaskEnvironment>(
-              ScopedTaskEnvironment::MainThreadType::UI));
+  enum class NativeWidgetType {
+    kDefault,  // On Aura, corresponds to NativeWidgetAura.
+    kDesktop,  // On Aura, corresponds to DesktopNativeWidgetAura.
+               // For Mus/ChromeOS, passing this to the ViewsTestBase
+               // constructor will also do necessary Mus setup.
+  };
 
+  ViewsTestBase();
   ~ViewsTestBase() override;
 
-  // Returns true if running aura-mus in a client configuration (not the window
-  // manager).
-  static bool IsMus();
-
   // testing::Test:
   void SetUp() override;
   void TearDown() override;
 
+  // This copies some of the setup done in ViewsTestSuite, so it's only
+  // necessary for a ViewsTestBase that runs out of that test suite, such as in
+  // interactive ui tests.
+  void SetUpForInteractiveTests();
+
   void RunPendingMessages();
 
   // Creates a widget of |type| with any platform specific data for use in
@@ -59,6 +73,17 @@
     return test_helper_->test_views_delegate();
   }
 
+  void set_native_widget_type(NativeWidgetType native_widget_type) {
+    DCHECK(!setup_called_);
+    native_widget_type_ = native_widget_type;
+  }
+
+  void set_scoped_task_environment(
+      std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment) {
+    DCHECK(!setup_called_);
+    scoped_task_environment_ = std::move(scoped_task_environment);
+  }
+
   void set_views_delegate(std::unique_ptr<TestViewsDelegate> views_delegate) {
     DCHECK(!setup_called_);
     views_delegate_for_setup_.swap(views_delegate);
@@ -68,13 +93,45 @@
   // RootWindow. Everywhere else, NULL.
   gfx::NativeWindow GetContext();
 
+#if BUILDFLAG(ENABLE_MUS)
+  bool is_mus() const {
+    return native_widget_type_ == NativeWidgetType::kDesktop;
+  }
+#endif
+
+  // Factory for creating the native widget when |native_widget_type_| is set to
+  // kDesktop.
+  NativeWidget* CreateNativeWidgetForTest(
+      const Widget::InitParams& init_params,
+      internal::NativeWidgetDelegate* delegate);
+
  private:
+  // Controls what type of widget will be created by default for a test (i.e.
+  // when creating a Widget and leaving InitParams::native_widget unspecified).
+  // kDefault will allow the system default to be used (typically
+  // NativeWidgetAura on Aura). kDesktop forces DesktopNativeWidgetAura on Aura.
+  // There are exceptions, such as for modal dialog widgets, for which this
+  // value is ignored.
+  NativeWidgetType native_widget_type_ = NativeWidgetType::kDefault;
+#if BUILDFLAG(ENABLE_MUS)
+  // Needed to make sure the InputDeviceManager is cleaned up between test runs.
+  std::unique_ptr<base::ShadowingAtExitManager> at_exit_manager_;
+  // Unlike on other platforms, |aura::Env| has to be created for each test and
+  // not as part of the test suite, because the type (LOCAL or MUS) depends on
+  // the individual test.
+  std::unique_ptr<aura::Env> env_;
+  std::unique_ptr<base::Thread> ipc_thread_;
+  std::unique_ptr<mojo::core::ScopedIPCSupport> ipc_support_;
+  base::test::ScopedFeatureList feature_list_;
+#endif
+
   std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment_;
   std::unique_ptr<TestViewsDelegate> views_delegate_for_setup_;
   std::unique_ptr<ScopedViewsTestHelper> test_helper_;
-  bool setup_called_;
-  bool teardown_called_;
-  bool has_compositing_manager_;
+  bool interactive_setup_called_ = false;
+  bool setup_called_ = false;
+  bool teardown_called_ = false;
+  bool has_compositing_manager_ = false;
 
 #if defined(OS_WIN)
   ui::ScopedOleInitializer ole_initializer_;
@@ -83,6 +140,24 @@
   DISALLOW_COPY_AND_ASSIGN(ViewsTestBase);
 };
 
+// A helper that makes it easier to declare basic views tests that want to test
+// desktop native widgets. See |ViewsTestBase::native_wiget_type_| and
+// |ViewsTestBase::CreateNativeWidgetForTest|. In short, for Aura, this will
+// result in most Widgets automatically being backed by a
+// DesktopNativeWidgetAura. For Mac, it has no impact as a NativeWidgetMac is
+// used either way.
+class ViewsTestWithDesktopNativeWidget : public ViewsTestBase {
+ public:
+  ViewsTestWithDesktopNativeWidget() = default;
+  ~ViewsTestWithDesktopNativeWidget() override = default;
+
+  // ViewsTestBase:
+  void SetUp() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ViewsTestWithDesktopNativeWidget);
+};
+
 }  // namespace views
 
 #endif  // UI_VIEWS_TEST_VIEWS_TEST_BASE_H_
diff --git a/ui/views/test/views_test_helper_aura.cc b/ui/views/test/views_test_helper_aura.cc
index ba0f57e..3aa9b80 100644
--- a/ui/views/test/views_test_helper_aura.cc
+++ b/ui/views/test/views_test_helper_aura.cc
@@ -76,14 +76,6 @@
 }
 
 gfx::NativeWindow ViewsTestHelperAura::GetContext() {
-  if (PlatformTestHelper::IsMus()) {
-    // GetContext() returns the root of a WindowTreeHost associated with a
-    // single display that is intended for an ash like environment. Such a
-    // configuration doesn't make sense for aura-mus-client, where it's testing
-    // DesktopNativeWidgetAura.
-    return nullptr;
-  }
-
   return aura_test_helper_->root_window();
 }
 
diff --git a/ui/views/test/widget_test.cc b/ui/views/test/widget_test.cc
index 530e8d24..7a2751b0 100644
--- a/ui/views/test/widget_test.cc
+++ b/ui/views/test/widget_test.cc
@@ -11,38 +11,31 @@
 
 namespace views {
 namespace test {
-namespace {
 
-Widget* CreateTopLevelPlatformWidgetWithStubbedCapture(
-    ViewsTestBase* test,
-    Widget::InitParams::Type type) {
+void WidgetTest::WidgetCloser::operator()(Widget* widget) const {
+  widget->CloseNow();
+}
+
+WidgetTest::WidgetTest() = default;
+WidgetTest::~WidgetTest() = default;
+
+Widget* WidgetTest::CreateTopLevelPlatformWidget() {
   Widget* widget = new Widget;
-  Widget::InitParams params = test->CreateParams(type);
+  Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.native_widget =
       CreatePlatformNativeWidgetImpl(params, widget, kStubCapture, nullptr);
   widget->Init(params);
   return widget;
 }
 
-}  // namespace
-
-void WidgetTest::WidgetCloser::operator()(Widget* widget) const {
-  widget->CloseNow();
-}
-
-WidgetTest::WidgetTest(
-    std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment)
-    : ViewsTestBase(std::move(scoped_task_environment)) {}
-WidgetTest::~WidgetTest() {}
-
-Widget* WidgetTest::CreateTopLevelPlatformWidget() {
-  return CreateTopLevelPlatformWidgetWithStubbedCapture(
-      this, Widget::InitParams::TYPE_WINDOW);
-}
-
 Widget* WidgetTest::CreateTopLevelFramelessPlatformWidget() {
-  return CreateTopLevelPlatformWidgetWithStubbedCapture(
-      this, Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+  Widget* widget = new Widget;
+  Widget::InitParams params =
+      CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+  params.native_widget =
+      CreatePlatformNativeWidgetImpl(params, widget, kStubCapture, nullptr);
+  widget->Init(params);
+  return widget;
 }
 
 Widget* WidgetTest::CreateChildPlatformWidget(
@@ -77,15 +70,6 @@
   return CreateChildNativeWidgetWithParent(nullptr);
 }
 
-Widget* WidgetTest::CreateNativeDesktopWidget() {
-  Widget* widget = new Widget;
-  Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, widget, nullptr);
-  widget->Init(params);
-  return widget;
-}
-
 View* WidgetTest::GetMousePressedHandler(internal::RootView* root_view) {
   return root_view->mouse_pressed_handler_;
 }
@@ -98,9 +82,16 @@
   return root_view->gesture_handler_;
 }
 
-TestDesktopWidgetDelegate::TestDesktopWidgetDelegate() : widget_(new Widget) {
+DesktopWidgetTest::DesktopWidgetTest() = default;
+DesktopWidgetTest::~DesktopWidgetTest() = default;
+
+void DesktopWidgetTest::SetUp() {
+  set_native_widget_type(NativeWidgetType::kDesktop);
+  WidgetTest::SetUp();
 }
 
+TestDesktopWidgetDelegate::TestDesktopWidgetDelegate() : widget_(new Widget) {}
+
 TestDesktopWidgetDelegate::TestDesktopWidgetDelegate(Widget* widget)
     : widget_(widget) {}
 
@@ -112,10 +103,6 @@
 
 void TestDesktopWidgetDelegate::InitWidget(Widget::InitParams init_params) {
   init_params.delegate = this;
-#if !defined(OS_CHROMEOS)
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, widget_, nullptr);
-#endif
   init_params.bounds = initial_bounds_;
   widget_->Init(init_params);
 }
diff --git a/ui/views/test/widget_test.h b/ui/views/test/widget_test.h
index cd7b31e..155cef00 100644
--- a/ui/views/test/widget_test.h
+++ b/ui/views/test/widget_test.h
@@ -44,10 +44,7 @@
 
   using WidgetAutoclosePtr = std::unique_ptr<Widget, WidgetCloser>;
 
-  explicit WidgetTest(
-      std::unique_ptr<ScopedTaskEnvironment> scoped_task_environment =
-          std::make_unique<ScopedTaskEnvironment>(
-              ScopedTaskEnvironment::MainThreadType::UI));
+  WidgetTest();
   ~WidgetTest() override;
 
   // Create Widgets with |native_widget| in InitParams set to an instance of
@@ -63,11 +60,6 @@
   Widget* CreateChildNativeWidgetWithParent(Widget* parent);
   Widget* CreateChildNativeWidget();
 
-  // Create a top-level Widget with |native_widget| in InitParams set to an
-  // instance of the "native desktop" type. This is a PlatformNativeWidget on
-  // ChromeOS, and a PlatformDesktopNativeWidget everywhere else.
-  Widget* CreateNativeDesktopWidget();
-
   View* GetMousePressedHandler(internal::RootView* root_view);
 
   View* GetMouseMoveHandler(internal::RootView* root_view);
@@ -115,6 +107,18 @@
   DISALLOW_COPY_AND_ASSIGN(WidgetTest);
 };
 
+class DesktopWidgetTest : public WidgetTest {
+ public:
+  DesktopWidgetTest();
+  ~DesktopWidgetTest() override;
+
+  // WidgetTest:
+  void SetUp() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DesktopWidgetTest);
+};
+
 // A helper WidgetDelegate for tests that require hooks into WidgetDelegate
 // calls, and removes some of the boilerplate for initializing a Widget. Calls
 // Widget::CloseNow() when destroyed if it hasn't already been done.
diff --git a/ui/views/test/widget_test_aura.cc b/ui/views/test/widget_test_aura.cc
index 92d65db..b43efc2 100644
--- a/ui/views/test/widget_test_aura.cc
+++ b/ui/views/test/widget_test_aura.cc
@@ -124,9 +124,6 @@
 }
 
 gfx::Size WidgetTest::GetNativeWidgetMinimumContentSize(Widget* widget) {
-  if (IsMus())
-    return widget->GetNativeWindow()->delegate()->GetMinimumSize();
-
   // On Windows, HWNDMessageHandler receives a WM_GETMINMAXINFO message whenever
   // the window manager is interested in knowing the size constraints. On
   // ChromeOS, it's handled internally. Elsewhere, the size constraints need to
diff --git a/ui/views/test/widget_test_unittest.cc b/ui/views/test/widget_test_unittest.cc
index 90fbde1..f810b36 100644
--- a/ui/views/test/widget_test_unittest.cc
+++ b/ui/views/test/widget_test_unittest.cc
@@ -46,11 +46,6 @@
 // Ensure that Widgets with various root windows are correctly reported by
 // WidgetTest::GetAllWidgets().
 TEST_F(WidgetTestTest, GetAllWidgets) {
-  // TODO: this test transitively uses GetContext(). That should go away for
-  // aura-mus client. http://crbug.com/663781.
-  if (IsMus())
-    return;
-
   // Note Widget::Widgets is a std::set ordered by pointer value, so the order
   // that |expected| is updated below is not important.
   Widget::Widgets expected;
@@ -72,7 +67,32 @@
   Widget* native_child = CreateChildNativeWidgetWithParent(native);
   ExpectAdd(&expected, native_child, "native_child");
 
-  Widget* desktop = CreateNativeDesktopWidget();
+  ExpectClose(&expected, {native, native_child}, "native");
+  ExpectClose(&expected, {platform, platform_child}, "platform");
+  ExpectClose(&expected, {frameless}, "frameless");
+}
+
+using DesktopWidgetTestTest = DesktopWidgetTest;
+
+// As above, but with desktop native widgets (i.e. DesktopNativeWidgetAura on
+// Aura).
+TEST_F(DesktopWidgetTestTest, GetAllWidgets) {
+  // Note Widget::Widgets is a std::set ordered by pointer value, so the order
+  // that |expected| is updated below is not important.
+  Widget::Widgets expected;
+
+  EXPECT_EQ(expected, GetAllWidgets());
+
+  Widget* frameless = CreateTopLevelFramelessPlatformWidget();
+  ExpectAdd(&expected, frameless, "frameless");
+
+  Widget* native = CreateTopLevelNativeWidget();
+  ExpectAdd(&expected, native, "native");
+
+  Widget* native_child = CreateChildNativeWidgetWithParent(native);
+  ExpectAdd(&expected, native_child, "native_child");
+
+  Widget* desktop = CreateTopLevelNativeWidget();
   ExpectAdd(&expected, desktop, "desktop");
 
   Widget* desktop_child = CreateChildNativeWidgetWithParent(desktop);
@@ -90,7 +110,6 @@
 
   ExpectClose(&expected, {desktop, desktop_child}, "desktop");
   ExpectClose(&expected, {native, native_child}, "native");
-  ExpectClose(&expected, {platform, platform_child}, "platform");
   ExpectClose(&expected, {frameless}, "frameless");
 }
 
diff --git a/ui/views/touchui/touch_selection_controller_impl_unittest.cc b/ui/views/touchui/touch_selection_controller_impl_unittest.cc
index cd66a6dd..5399b6ca 100644
--- a/ui/views/touchui/touch_selection_controller_impl_unittest.cc
+++ b/ui/views/touchui/touch_selection_controller_impl_unittest.cc
@@ -75,10 +75,6 @@
 
   void SetUp() override {
     ViewsTestBase::SetUp();
-    // TODO: test uses GetContext(), which is not applicable to aura-mus.
-    // http://crbug.com/663809.
-    if (IsMus())
-      return;
     test_cursor_client_.reset(new aura::test::TestCursorClient(GetContext()));
   }
 
@@ -321,10 +317,6 @@
 // Tests that the selection handles are placed appropriately when selection in
 // a Textfield changes.
 TEST_F(TouchSelectionControllerImplTest, SelectionInTextfieldTest) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   textfield_->SetText(ASCIIToUTF16("some text"));
   // Tap the textfield to invoke touch selection.
@@ -358,10 +350,6 @@
 
 // Tests that the selection handles are placed appropriately in bidi text.
 TEST_F(TouchSelectionControllerImplTest, SelectionInBidiTextfieldTest) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   textfield_->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
   // Tap the textfield to invoke touch selection.
@@ -414,10 +402,6 @@
 // Tests if the SelectRect callback is called appropriately when selection
 // handles are moved.
 TEST_F(TouchSelectionControllerImplTest, SelectRectCallbackTest) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   textfield_->SetText(ASCIIToUTF16("textfield with selected text"));
   // Tap the textfield to invoke touch selection.
@@ -460,10 +444,6 @@
 }
 
 TEST_F(TouchSelectionControllerImplTest, SelectRectInBidiCallbackTest) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   textfield_->SetText(WideToUTF16(L"abc\x05e1\x05e2\x05e3" L"def"));
   // Tap the textfield to invoke touch selection.
@@ -592,10 +572,6 @@
 
 TEST_F(TouchSelectionControllerImplTest,
        HiddenSelectionHandleRetainsCursorPosition) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   static const uint32_t selection_start = 10u;
   SetupSelectionInvisibleHandle(selection_start);
   // Drag the visible handle around and make sure the selection end point of the
@@ -614,10 +590,6 @@
 // Tests that we can handle the hidden handle getting exposed as a result of a
 // drag and that it maintains the correct orientation when exposed.
 TEST_F(TouchSelectionControllerImplTest, HiddenSelectionHandleExposed) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   static const uint32_t selection_start = 0u;
   SetupSelectionInvisibleHandle(selection_start);
 
@@ -635,10 +607,6 @@
 
 TEST_F(TouchSelectionControllerImplTest,
        DoubleTapInTextfieldWithCursorHandleShouldSelectText) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   textfield_->SetText(ASCIIToUTF16("some text"));
   ui::test::EventGenerator generator(
@@ -738,10 +706,6 @@
 // the cursor position relative to the client boundaries.
 TEST_F(TouchSelectionControllerImplTest,
        VisibilityOfHandleRegardingClientBounds) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateWidget();
 
   TestTouchEditable touch_editable(widget_->GetNativeView());
@@ -789,10 +753,6 @@
 }
 
 TEST_F(TouchSelectionControllerImplTest, HandlesStackAboveParent) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   aura::Window* root = GetContext();
   ui::EventTargeter* targeter =
       root->GetHost()->dispatcher()->GetDefaultEventTargeter();
@@ -832,10 +792,6 @@
 }
 
 TEST_F(TouchSelectionControllerImplTest, MouseEventDeactivatesTouchSelection) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   EXPECT_FALSE(GetSelectionController());
 
@@ -877,10 +833,6 @@
 }
 
 TEST_F(TouchSelectionControllerImplTest, MouseCaptureChangedEventIgnored) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   EXPECT_FALSE(GetSelectionController());
 
@@ -900,10 +852,6 @@
 }
 
 TEST_F(TouchSelectionControllerImplTest, KeyEventDeactivatesTouchSelection) {
-  // TODO: see comment in SetUp().
-  if (IsMus())
-    return;
-
   CreateTextfield();
   EXPECT_FALSE(GetSelectionController());
 
diff --git a/ui/views/touchui/touch_selection_menu_runner_views_unittest.cc b/ui/views/touchui/touch_selection_menu_runner_views_unittest.cc
index cf555e3..6df1c3c 100644
--- a/ui/views/touchui/touch_selection_menu_runner_views_unittest.cc
+++ b/ui/views/touchui/touch_selection_menu_runner_views_unittest.cc
@@ -70,10 +70,6 @@
 // Tests that the default touch selection menu runner is installed and opening
 // and closing the menu works properly.
 TEST_F(TouchSelectionMenuRunnerViewsTest, InstalledAndWorksProperly) {
-  // See comment in SetUp().
-  if (IsMus())
-    return;
-
   gfx::Rect menu_anchor(0, 0, 10, 10);
   gfx::Size handle_size(10, 10);
 
@@ -101,10 +97,6 @@
 // Tests that anchor rect for the quick menu is adjusted correctly based on the
 // distance of handles.
 TEST_F(TouchSelectionMenuRunnerViewsTest, QuickMenuAdjustsAnchorRect) {
-  // See comment in SetUp().
-  if (IsMus())
-    return;
-
   gfx::Size handle_size(10, 10);
   TouchSelectionMenuRunnerViews::TestApi test_api(
       static_cast<TouchSelectionMenuRunnerViews*>(
@@ -137,10 +129,6 @@
 
 // Tests that running one of menu actions closes the menu properly.
 TEST_F(TouchSelectionMenuRunnerViewsTest, RunningActionClosesProperly) {
-  // See comment in SetUp().
-  if (IsMus())
-    return;
-
   gfx::Rect menu_anchor(0, 0, 10, 10);
   gfx::Size handle_size(10, 10);
   TouchSelectionMenuRunnerViews::TestApi test_api(
@@ -172,10 +160,6 @@
 
 // Tests that closing the menu widget cleans up the menu runner state properly.
 TEST_F(TouchSelectionMenuRunnerViewsTest, ClosingWidgetClosesProperly) {
-  // See comment in SetUp().
-  if (IsMus())
-    return;
-
   gfx::Rect menu_anchor(0, 0, 10, 10);
   gfx::Size handle_size(10, 10);
   TouchSelectionMenuRunnerViews::TestApi test_api(
diff --git a/ui/views/mus/unittests_manifest.json b/ui/views/unittests_manifest.json
similarity index 65%
rename from ui/views/mus/unittests_manifest.json
rename to ui/views/unittests_manifest.json
index ad20202..172d8982 100644
--- a/ui/views/mus/unittests_manifest.json
+++ b/ui/views/unittests_manifest.json
@@ -1,6 +1,6 @@
 {
-  "name": "views_mus_unittests",
-  "display_name": "Views Mus Unittests",
+  "name": "views_unittests",
+  "display_name": "Views Unittests",
   "interface_provider_specs": {
     "service_manager:connector": {
       "requires": {
diff --git a/ui/views/view_unittest_aura.cc b/ui/views/view_unittest_aura.cc
index 231afc3..edbd645 100644
--- a/ui/views/view_unittest_aura.cc
+++ b/ui/views/view_unittest_aura.cc
@@ -72,11 +72,6 @@
 //     +-- v8
 //     +-- v9
 TEST_F(ViewAuraTest, RecreateLayersWithWindows) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   Widget* w1 = CreateControlWidget(GetContext(), gfx::Rect(0, 0, 100, 100));
   w1->GetNativeView()->layer()->set_name("w1");
 
diff --git a/ui/views/views_test_suite.cc b/ui/views/views_test_suite.cc
index e579a7d..d75a66d 100644
--- a/ui/views/views_test_suite.cc
+++ b/ui/views/views_test_suite.cc
@@ -50,20 +50,20 @@
   base::FilePath ui_test_pak_path;
   ASSERT_TRUE(base::PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
   ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
-#if defined(USE_AURA)
+#if defined(USE_AURA) && !defined(OS_CHROMEOS)
   InitializeEnv();
 #endif
 }
 
 void ViewsTestSuite::Shutdown() {
-#if defined(USE_AURA)
+#if defined(USE_AURA) && !defined(OS_CHROMEOS)
   DestroyEnv();
 #endif
   ui::ResourceBundle::CleanupSharedInstance();
   base::TestSuite::Shutdown();
 }
 
-#if defined(USE_AURA)
+#if defined(USE_AURA) && !defined(OS_CHROMEOS)
 void ViewsTestSuite::InitializeEnv() {
   env_ = aura::Env::CreateInstance();
 }
diff --git a/ui/views/views_test_suite.h b/ui/views/views_test_suite.h
index bea4d2c..73654b32 100644
--- a/ui/views/views_test_suite.h
+++ b/ui/views/views_test_suite.h
@@ -30,14 +30,16 @@
   void Initialize() override;
   void Shutdown() override;
 
-#if defined(USE_AURA)
+#if defined(USE_AURA) && !defined(OS_CHROMEOS)
   // Different test suites may wish to create Env differently.
   virtual void InitializeEnv();
   virtual void DestroyEnv();
 #endif
 
  private:
-#if defined(USE_AURA)
+#if defined(USE_AURA) && !defined(OS_CHROMEOS)
+  // On Chrome OS, aura::Env is set up in individual test fixtures, most notably
+  // ViewsTestBase.
   std::unique_ptr<aura::Env> env_;
 #endif
   int argc_;
diff --git a/ui/views/widget/DEPS b/ui/views/widget/DEPS
deleted file mode 100644
index a244cf72..0000000
--- a/ui/views/widget/DEPS
+++ /dev/null
@@ -1,5 +0,0 @@
-specific_include_rules = {
-  "widget_interactive_uitest\.cc": [
-    "+mojo/core/embedder",
-  ]
-}
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc
index f60cc49..d0753ad 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc
@@ -363,10 +363,8 @@
 
 class DesktopDragDropClientAuraX11Test : public ViewsTestBase {
  public:
-  DesktopDragDropClientAuraX11Test() {
-  }
-
-  ~DesktopDragDropClientAuraX11Test() override {}
+  DesktopDragDropClientAuraX11Test() = default;
+  ~DesktopDragDropClientAuraX11Test() override = default;
 
   int StartDragAndDrop() {
     ui::OSExchangeData data;
@@ -388,14 +386,14 @@
 
   // ViewsTestBase:
   void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+
     ViewsTestBase::SetUp();
-    test_views_delegate()->set_use_desktop_native_widgets(true);
 
     // Create widget to initiate the drags.
     widget_.reset(new Widget);
     Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
     params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    params.native_widget = new DesktopNativeWidgetAura(widget_.get());
     params.bounds = gfx::Rect(100, 100);
     widget_->Init(params);
     widget_->Show();
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
index a9b8649..8575237 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
@@ -26,7 +26,7 @@
 // A fake handler, which initiates dragging.
 class FakeWmDragHandler : public ui::WmDragHandler {
  public:
-  FakeWmDragHandler() : weak_ptr_factory_(this) {}
+  FakeWmDragHandler() = default;
   ~FakeWmDragHandler() override = default;
 
   // ui::WmDragHandler
@@ -45,7 +45,7 @@
 
  private:
   base::OnceCallback<void(int)> callback_;
-  base::WeakPtrFactory<FakeWmDragHandler> weak_ptr_factory_;
+  base::WeakPtrFactory<FakeWmDragHandler> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(FakeWmDragHandler);
 };
@@ -75,14 +75,14 @@
 
   // ViewsTestBase:
   void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+
     ViewsTestBase::SetUp();
-    test_views_delegate()->set_use_desktop_native_widgets(true);
 
     // Create widget to initiate the drags.
     widget_ = std::make_unique<Widget>();
     Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
     params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    params.native_widget = new DesktopNativeWidgetAura(widget_.get());
     params.bounds = gfx::Rect(100, 100);
     widget_->Init(params);
     widget_->Show();
diff --git a/ui/views/widget/desktop_aura/desktop_focus_rules_unittest.cc b/ui/views/widget/desktop_aura/desktop_focus_rules_unittest.cc
index 8b306f5..25694f348 100644
--- a/ui/views/widget/desktop_aura/desktop_focus_rules_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_focus_rules_unittest.cc
@@ -8,37 +8,22 @@
 #include "ui/aura/test/test_window_delegate.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/views/test/views_test_base.h"
+#include "ui/views/test/widget_test.h"
 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
 #include "ui/views/widget/widget.h"
 #include "ui/wm/core/window_util.h"
 
 namespace views {
 
-namespace {
-
-std::unique_ptr<Widget> CreateDesktopWidget() {
-  std::unique_ptr<Widget> widget(new Widget);
-  Widget::InitParams params = Widget::InitParams(
-      Widget::InitParams::TYPE_WINDOW);
-  params.bounds = gfx::Rect(0, 0, 200, 200);
-  params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(widget.get());
-  widget->Init(params);
-  return widget;
-}
-
-}  // namespace
-
-typedef ViewsTestBase DesktopFocusRulesTest;
+using DesktopFocusRulesTest = test::DesktopWidgetTest;
 
 // Verifies we don't attempt to activate a window in another widget.
 TEST_F(DesktopFocusRulesTest, DontFocusWindowsInOtherHierarchies) {
   // Two widgets (each with a DesktopNativeWidgetAura). |w2| has a child Window
   // |w2_child| that is not focusable. |w2_child|'s has a transient parent in
   // |w1|.
-  std::unique_ptr<views::Widget> w1(CreateDesktopWidget());
-  std::unique_ptr<views::Widget> w2(CreateDesktopWidget());
+  Widget* w1 = CreateTopLevelNativeWidget();
+  Widget* w2 = CreateTopLevelNativeWidget();
   aura::test::TestWindowDelegate w2_child_delegate;
   w2_child_delegate.set_can_focus(false);
   aura::Window* w2_child = new aura::Window(&w2_child_delegate);
@@ -50,8 +35,9 @@
       aura::client::GetFocusClient(w2->GetNativeView())->GetFocusedWindow();
   EXPECT_TRUE((focused == NULL) || w2->GetNativeView()->Contains(focused));
   wm::RemoveTransientChild(w1->GetNativeView(), w2_child);
-  w1.reset();
-  w2.reset();
+
+  w1->CloseNow();
+  w2->CloseNow();
 }
 
 }  // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
index ae3193c3..ecac029 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
@@ -43,7 +43,7 @@
 namespace views {
 namespace test {
 
-typedef ViewsTestBase DesktopNativeWidgetAuraTest;
+using DesktopNativeWidgetAuraTest = DesktopWidgetTest;
 
 // Verifies creating a Widget with a parent that is not in a RootWindow doesn't
 // crash.
@@ -55,7 +55,6 @@
   params.bounds = gfx::Rect(0, 0, 200, 200);
   params.parent = window.get();
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(params);
 }
 
@@ -75,7 +74,6 @@
 #endif
 
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(init_params);
 
   gfx::Rect bounds(0, 0, 100, 100);
@@ -104,7 +102,6 @@
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(init_params);
   EXPECT_FALSE(widget.GetNativeView()->IsVisible());
 }
@@ -115,12 +112,10 @@
   Widget widget;
   Widget::InitParams init_params = CreateParams(Widget::InitParams::TYPE_POPUP);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  DesktopNativeWidgetAura* widget_aura = new DesktopNativeWidgetAura(&widget);
-  init_params.native_widget = widget_aura;
   widget.Init(init_params);
 
   EXPECT_FALSE(widget.CanActivate());
-  EXPECT_EQ(nullptr, aura::client::GetFocusClient(widget_aura->content_window())
+  EXPECT_EQ(nullptr, aura::client::GetFocusClient(widget.GetNativeWindow())
                          ->GetFocusedWindow());
 }
 
@@ -132,7 +127,6 @@
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(init_params);
   ShowWindow(widget.GetNativeView()->GetHost()->GetAcceleratedWidget(),
              SW_SHOWNORMAL);
@@ -145,7 +139,6 @@
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(init_params);
 
   // Make sure that changing frame type doesn't crash when there's no non-client
@@ -165,31 +158,32 @@
 #endif  // OS_WIN
 }
 
+#if defined(OS_CHROMEOS)
+// TODO(crbug.com/916272): investigate fixing and enabling on Chrome OS.
+#define MAYBE_GlobalCursorState DISABLED_GlobalCursorState
+#else
+#define MAYBE_GlobalCursorState GlobalCursorState
+#endif
+
 // Verify that the cursor state is shared between two native widgets.
-TEST_F(DesktopNativeWidgetAuraTest, GlobalCursorState) {
+TEST_F(DesktopNativeWidgetAuraTest, MAYBE_GlobalCursorState) {
   // Create two native widgets, each owning different root windows.
   Widget widget_a;
   Widget::InitParams init_params_a =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params_a.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  DesktopNativeWidgetAura* desktop_native_widget_aura_a =
-      new DesktopNativeWidgetAura(&widget_a);
-  init_params_a.native_widget = desktop_native_widget_aura_a;
   widget_a.Init(init_params_a);
 
   Widget widget_b;
   Widget::InitParams init_params_b =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params_b.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  DesktopNativeWidgetAura* desktop_native_widget_aura_b =
-      new DesktopNativeWidgetAura(&widget_b);
-  init_params_b.native_widget = desktop_native_widget_aura_b;
   widget_b.Init(init_params_b);
 
   aura::client::CursorClient* cursor_client_a = aura::client::GetCursorClient(
-      desktop_native_widget_aura_a->host()->window());
+      widget_a.GetNativeView()->GetHost()->window());
   aura::client::CursorClient* cursor_client_b = aura::client::GetCursorClient(
-      desktop_native_widget_aura_b->host()->window());
+      widget_b.GetNativeView()->GetHost()->window());
 
   // Verify the cursor can be locked using one client and unlocked using
   // another.
@@ -270,9 +264,6 @@
     Widget::InitParams init_params =
         CreateParams(Widget::InitParams::TYPE_WINDOW);
     init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    DesktopNativeWidgetAura* desktop_native_widget_aura =
-        new DesktopNativeWidgetAura(&widget);
-    init_params.native_widget = desktop_native_widget_aura;
     widget.Init(init_params);
 
     // Owned by |widget|.
@@ -288,10 +279,12 @@
 namespace {
 
 std::unique_ptr<Widget> CreateAndShowControlWidget(aura::Window* parent) {
+  auto widget = std::make_unique<Widget>();
   Widget::InitParams params(Widget::InitParams::TYPE_CONTROL);
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.parent = parent;
-  auto widget = std::make_unique<Widget>();
+  params.native_widget = CreatePlatformNativeWidgetImpl(params, widget.get(),
+                                                        kStubCapture, nullptr);
   widget->Init(params);
   widget->Show();
   return widget;
@@ -299,15 +292,20 @@
 
 }  // namespace
 
-TEST_F(DesktopNativeWidgetAuraTest, ReorderDoesntRecomputeOcclusion) {
+#if defined(OS_CHROMEOS)
+// TODO(crbug.com/916272): investigate fixing and enabling on Chrome OS.
+#define MAYBE_ReorderDoesntRecomputeOcclusion \
+  DISABLED_ReorderDoesntRecomputeOcclusion
+#else
+#define MAYBE_ReorderDoesntRecomputeOcclusion ReorderDoesntRecomputeOcclusion
+#endif
+
+TEST_F(DesktopNativeWidgetAuraTest, MAYBE_ReorderDoesntRecomputeOcclusion) {
   // Create the parent widget.
   Widget parent;
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  DesktopNativeWidgetAura* desktop_native_widget_aura =
-      new DesktopNativeWidgetAura(&parent);
-  init_params.native_widget = desktop_native_widget_aura;
   parent.Init(init_params);
   parent.Show();
 
@@ -355,7 +353,6 @@
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.bounds = gfx::Rect(0, 0, 200, 200);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(widget.get());
   widget->Init(params);
   widget->Show();
 
@@ -483,18 +480,7 @@
   DISALLOW_COPY_AND_ASSIGN(DesktopAuraTopLevelWindowTest);
 };
 
-class DesktopAuraWidgetTest : public WidgetTest {
- public:
-  DesktopAuraWidgetTest() {}
-
-  void SetUp() override {
-    ViewsTestBase::SetUp();
-    test_views_delegate()->set_use_desktop_native_widgets(true);
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(DesktopAuraWidgetTest);
-};
+using DesktopAuraWidgetTest = DesktopWidgetTest;
 
 TEST_F(DesktopAuraWidgetTest, FullscreenWindowDestroyedBeforeOwnerTest) {
   DesktopAuraTopLevelWindowTest fullscreen_window;
@@ -615,8 +601,6 @@
   Widget* widget = new Widget;
   Widget::InitParams params =
       test->CreateParams(Widget::InitParams::TYPE_POPUP);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, widget, nullptr);
   params.bounds = gfx::Rect(0, 0, 50, 100);
   widget->Init(params);
   widget->SetContentsView(new CloseWidgetView(last_event_type));
@@ -651,9 +635,16 @@
 
 }  // namespace
 
+#if defined(OS_CHROMEOS)
+// TODO(crbug.com/916272): investigate fixing and enabling on Chrome OS.
+#define MAYBE_WindowMouseModalityTest DISABLED_WindowMouseModalityTest
+#else
+#define MAYBE_WindowMouseModalityTest WindowMouseModalityTest
+#endif
+
 // This test verifies that whether mouse events when a modal dialog is
 // displayed are eaten or recieved by the dialog.
-TEST_F(WidgetTest, WindowMouseModalityTest) {
+TEST_F(DesktopWidgetTest, MAYBE_WindowMouseModalityTest) {
   // Create a top level widget.
   Widget top_level_widget;
   Widget::InitParams init_params =
@@ -662,8 +653,6 @@
   gfx::Rect initial_bounds(0, 0, 500, 500);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-      init_params, &top_level_widget, nullptr);
   top_level_widget.Init(init_params);
   top_level_widget.Show();
   EXPECT_TRUE(top_level_widget.IsVisible());
@@ -726,7 +715,7 @@
 #if defined(OS_WIN)
 // Tests whether we can activate the top level widget when a modal dialog is
 // active.
-TEST_F(WidgetTest, WindowModalityActivationTest) {
+TEST_F(DesktopWidgetTest, WindowModalityActivationTest) {
   TestDesktopWidgetDelegate widget_delegate;
   widget_delegate.InitWidget(CreateParams(Widget::InitParams::TYPE_WINDOW));
 
@@ -764,11 +753,9 @@
 // messages via the WindowEventTarget interface implemented by the
 // HWNDMessageHandler class does not cause a crash due to an unprocessed
 // event
-TEST_F(WidgetTest, CharMessagesAsKeyboardMessagesDoesNotCrash) {
+TEST_F(DesktopWidgetTest, CharMessagesAsKeyboardMessagesDoesNotCrash) {
   Widget widget;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget.Init(params);
   widget.Show();
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index b2936d8f..628e24d9 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -735,6 +735,11 @@
   return false;
 }
 
+bool DesktopWindowTreeHostWin::GetDwmFrameInsetsInPixels(
+    gfx::Insets* insets) const {
+  return false;
+}
+
 void DesktopWindowTreeHostWin::GetMinMaxSize(gfx::Size* min_size,
                                              gfx::Size* max_size) const {
   *min_size = native_widget_delegate_->GetMinimumSize();
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
index 1def35f..eb46f9a 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
@@ -172,6 +172,7 @@
   void GetWindowMask(const gfx::Size& size, gfx::Path* path) override;
   bool GetClientAreaInsets(gfx::Insets* insets,
                            HMONITOR monitor) const override;
+  bool GetDwmFrameInsetsInPixels(gfx::Insets* insets) const override;
   void GetMinMaxSize(gfx::Size* min_size, gfx::Size* max_size) const override;
   gfx::Size GetRootViewSize() const override;
   gfx::Size DIPToScreenSize(const gfx::Size& dip_size) const override;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc
index e25fab2..0b551f99 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc
@@ -129,7 +129,6 @@
   params.delegate = delegate;
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.remove_standard_frame = true;
-  params.native_widget = new DesktopNativeWidgetAura(widget.get());
   params.bounds = gfx::Rect(100, 100, 100, 100);
   widget->Init(params);
   return widget;
@@ -178,6 +177,8 @@
   ~DesktopWindowTreeHostX11Test() override {}
 
   void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+
     std::vector<int> pointer_devices;
     pointer_devices.push_back(kPointerDeviceId);
     ui::TouchFactory::GetInstance()->SetPointerDeviceForTest(pointer_devices);
@@ -371,7 +372,6 @@
   Widget widget;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(&widget);
   widget.Init(params);
   widget.Show();
   ui::X11EventSource::GetInstance()->DispatchXEvents();
@@ -431,7 +431,6 @@
   Widget::InitParams parent_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   parent_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  parent_params.native_widget = new DesktopNativeWidgetAura(&parent_widget);
   parent_widget.Init(parent_params);
   parent_widget.Show();
   ui::X11EventSource::GetInstance()->DispatchXEvents();
@@ -440,7 +439,6 @@
   Widget::InitParams child_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   child_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  child_params.native_widget = new DesktopNativeWidgetAura(&child_widget);
   child_params.parent = parent_widget.GetNativeWindow();
   child_widget.Init(child_params);
   child_widget.Show();
@@ -477,7 +475,6 @@
   CustomSizeWidget widget;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(&widget);
   params.bounds = gfx::Rect(200, 100);
   widget.Init(params);
   widget.Show();
@@ -551,7 +548,6 @@
   Widget first;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(&first);
   params.bounds = gfx::Rect(0, 0, 50, 50);
   first.Init(params);
   first.Show();
@@ -559,7 +555,6 @@
   Widget second;
   params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = new DesktopNativeWidgetAura(&second);
   params.bounds = gfx::Rect(50, 50, 50, 50);
   second.Init(params);
   second.Show();
diff --git a/ui/views/widget/desktop_widget_unittest.cc b/ui/views/widget/desktop_widget_unittest.cc
index 0ab25f1..6e17ae3 100644
--- a/ui/views/widget/desktop_widget_unittest.cc
+++ b/ui/views/widget/desktop_widget_unittest.cc
@@ -5,14 +5,13 @@
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/views/test/native_widget_factory.h"
-#include "ui/views/test/views_test_base.h"
 #include "ui/views/test/widget_test.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/window/dialog_delegate.h"
 
 namespace views {
 
-typedef ViewsTestBase DesktopScreenPositionClientTest;
+using DesktopScreenPositionClientTest = test::DesktopWidgetTest;
 
 // Verifies setting the bounds of a dialog parented to a Widget with a
 // PlatformDesktopNativeWidget is positioned correctly.
@@ -21,8 +20,6 @@
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.bounds = gfx::Rect(10, 11, 200, 200);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget = test::CreatePlatformDesktopNativeWidgetImpl(
-      params, &parent_widget, nullptr);
   parent_widget.Init(params);
 
   // Owned by |dialog|.
@@ -60,8 +57,6 @@
       origin + work_area.OffsetFromOrigin(),
       gfx::Size(700, work_area.height() - origin.y() - work_area.y()));
   params1.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params1.native_widget =
-      test::CreatePlatformDesktopNativeWidgetImpl(params1, &widget1, nullptr);
   widget1.Init(params1);
 
   Widget::InitParams params2 =
@@ -70,6 +65,8 @@
   params2.parent = widget1.GetNativeView();
   params2.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params2.child = true;
+  params2.native_widget = test::CreatePlatformNativeWidgetImpl(
+      params2, &widget2, test::kStubCapture, nullptr);
   widget2.Init(params2);
 
   Widget::InitParams params3 =
@@ -78,6 +75,8 @@
   params3.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params3.child = true;
   params3.bounds = gfx::Rect(origin, gfx::Size(500, work_area.height() - 200));
+  params3.native_widget = test::CreatePlatformNativeWidgetImpl(
+      params3, &widget3, test::kStubCapture, nullptr);
   widget3.Init(params3);
 
   // The origin of the 3rd window should be the sum of all parent origins.
@@ -107,8 +106,6 @@
   params.bounds = gfx::Rect(
       origin, gfx::Size(work_area.width() / 2, work_area.height() / 2));
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.native_widget =
-      test::CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
   widget.Init(params);
 
   // The bounds of the window should be fully on the primary display.
@@ -141,8 +138,6 @@
   params1.bounds = gfx::Rect(
       origin, gfx::Size(work_area.width() / 2, work_area.height() / 2));
   params1.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params1.native_widget =
-      test::CreatePlatformDesktopNativeWidgetImpl(params1, &widget1, nullptr);
   widget1.Init(params1);
 
   gfx::Rect widget_bounds(widget1.GetWindowBoundsInScreen());
@@ -154,6 +149,8 @@
   params2.parent = widget1.GetNativeView();
   params2.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params2.child = true;
+  params2.native_widget = test::CreatePlatformNativeWidgetImpl(
+      params2, &widget2, test::kStubCapture, nullptr);
   widget2.Init(params2);
 
   // The bounds of the child window should be fully in the parent.
diff --git a/ui/views/widget/native_widget_aura_interactive_uitest.cc b/ui/views/widget/native_widget_aura_interactive_uitest.cc
index b4de50c..ab7acdf 100644
--- a/ui/views/widget/native_widget_aura_interactive_uitest.cc
+++ b/ui/views/widget/native_widget_aura_interactive_uitest.cc
@@ -49,11 +49,6 @@
 // not be grabbed. And focus will be given/restored the next time the widget is
 // made active. (crbug.com/621791)
 TEST_F(NativeWidgetAuraTest, NonActiveWindowRequestImeFocus) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   TestFocusRules* test_focus_rules = new TestFocusRules;
   std::unique_ptr<wm::FocusController> focus_controller =
       std::make_unique<wm::FocusController>(test_focus_rules);
diff --git a/ui/views/widget/native_widget_mac.mm b/ui/views/widget/native_widget_mac.mm
index e6d16c37..9adc67f 100644
--- a/ui/views/widget/native_widget_mac.mm
+++ b/ui/views/widget/native_widget_mac.mm
@@ -383,9 +383,9 @@
 }
 
 void NativeWidgetMac::CloseNow() {
-  if (bridge())
-    bridge()->CloseWindowNow();
-  // Note: |bridge_host_| will be deleted her, and |this| will be deleted here
+  if (bridge_host_)
+    bridge_host_->CloseWindowNow();
+  // Note: |bridge_host_| will be deleted here, and |this| will be deleted here
   // when ownership_ == NATIVE_WIDGET_OWNS_WIDGET,
 }
 
diff --git a/ui/views/widget/native_widget_mac_interactive_uitest.mm b/ui/views/widget/native_widget_mac_interactive_uitest.mm
index 1bb90b8..d7688f0 100644
--- a/ui/views/widget/native_widget_mac_interactive_uitest.mm
+++ b/ui/views/widget/native_widget_mac_interactive_uitest.mm
@@ -15,7 +15,6 @@
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/test/test_widget_observer.h"
-#include "ui/views/test/views_interactive_ui_test_base.h"
 #include "ui/views/test/widget_test.h"
 
 namespace views {
@@ -33,7 +32,7 @@
 
   // WidgetTest:
   void SetUp() override {
-    ViewsInteractiveUITestBase::InteractiveSetUp();
+    SetUpForInteractiveTests();
     WidgetTest::SetUp();
   }
 
@@ -294,7 +293,7 @@
 // away from any Widget when the window is torn down. This test ensures that
 // global references AppKit may have held on to are also updated.
 TEST_F(NativeWidgetMacInteractiveUITest, GlobalNSTextInputContextUpdates) {
-  Widget* widget = CreateNativeDesktopWidget();
+  Widget* widget = CreateTopLevelNativeWidget();
   Textfield* textfield = new Textfield;
   textfield->SetBounds(0, 0, 100, 100);
   widget->GetContentsView()->AddChildView(textfield);
diff --git a/ui/views/widget/native_widget_mac_unittest.mm b/ui/views/widget/native_widget_mac_unittest.mm
index 74b583c..85e6f7bd 100644
--- a/ui/views/widget/native_widget_mac_unittest.mm
+++ b/ui/views/widget/native_widget_mac_unittest.mm
@@ -1562,7 +1562,7 @@
 
   [parent close];
 
-  Widget* parent_widget = CreateNativeDesktopWidget();
+  Widget* parent_widget = CreateTopLevelNativeWidget();
   parent = parent_widget->GetNativeWindow().GetNativeNSWindow();
   dialog = views::DialogDelegate::CreateDialogWidget(
       new DialogDelegateView, nullptr, [parent contentView]);
@@ -1680,7 +1680,7 @@
 // Tests Cocoa properties that should be given to particular widget types.
 TEST_F(NativeWidgetMacTest, NativeProperties) {
   // Create a regular widget (TYPE_WINDOW).
-  Widget* regular_widget = CreateNativeDesktopWidget();
+  Widget* regular_widget = CreateTopLevelNativeWidget();
   EXPECT_TRUE([regular_widget->GetNativeWindow().GetNativeNSWindow()
                    canBecomeKeyWindow]);
   EXPECT_TRUE([regular_widget->GetNativeWindow().GetNativeNSWindow()
diff --git a/ui/views/widget/native_widget_unittest.cc b/ui/views/widget/native_widget_unittest.cc
index 661ea6a9..d7aa5ba 100644
--- a/ui/views/widget/native_widget_unittest.cc
+++ b/ui/views/widget/native_widget_unittest.cc
@@ -82,10 +82,6 @@
 
 // |toplevel_widget| has the toplevel NativeWidget.
 TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) {
-  // This test relies on GetContext(). http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   internal::NativeWidgetPrivate* child_widget = CreateNativeSubWidget();
   {
     ScopedTestWidget toplevel_widget(CreateNativeWidget());
diff --git a/ui/views/widget/root_view_unittest.cc b/ui/views/widget/root_view_unittest.cc
index d1bee17..fadfa68 100644
--- a/ui/views/widget/root_view_unittest.cc
+++ b/ui/views/widget/root_view_unittest.cc
@@ -19,7 +19,7 @@
 namespace views {
 namespace test {
 
-typedef ViewsTestBase RootViewTest;
+using RootViewTest = ViewsTestBase;
 
 class DeleteOnKeyEventView : public View {
  public:
@@ -582,11 +582,15 @@
       DialogDelegate::CreateDialogWidget(delegate, GetContext(), nullptr);
   EXPECT_EQ(1, delegate->layout_count());
   widget->CloseNow();
+}
 
-  // Also test Aura desktop Widget codepaths.
-  test_views_delegate()->set_use_desktop_native_widgets(true);
-  delegate = new RootViewTestDialogDelegate();
-  widget = DialogDelegate::CreateDialogWidget(delegate, GetContext(), nullptr);
+using RootViewDesktopNativeWidgetTest = ViewsTestWithDesktopNativeWidget;
+
+// Also test Aura desktop Widget codepaths.
+TEST_F(RootViewDesktopNativeWidgetTest, SingleLayoutDuringInit) {
+  RootViewTestDialogDelegate* delegate = new RootViewTestDialogDelegate();
+  Widget* widget =
+      DialogDelegate::CreateDialogWidget(delegate, GetContext(), nullptr);
   EXPECT_EQ(1, delegate->layout_count());
   widget->CloseNow();
 }
diff --git a/ui/views/widget/widget_interactive_uitest.cc b/ui/views/widget/widget_interactive_uitest.cc
index 3de114a..7ebfb6f 100644
--- a/ui/views/widget/widget_interactive_uitest.cc
+++ b/ui/views/widget/widget_interactive_uitest.cc
@@ -8,7 +8,6 @@
 #include "base/command_line.h"
 #include "base/location.h"
 #include "base/macros.h"
-#include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/strings/stringprintf.h"
@@ -16,18 +15,16 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/win/windows_version.h"
 #include "build/build_config.h"
-#include "mojo/core/embedder/embedder.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/test/ui_controls.h"
-#include "ui/base/ui_base_paths.h"
 #include "ui/base/ui_base_switches.h"
+#include "ui/base/ui_features.h"
 #include "ui/events/event_processor.h"
 #include "ui/events/event_utils.h"
 #include "ui/events/test/event_generator.h"
 #include "ui/gfx/native_widget_types.h"
-#include "ui/gl/test/gl_surface_test_support.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/controls/textfield/textfield_test_api.h"
 #include "ui/views/focus/focus_manager.h"
@@ -272,24 +269,11 @@
 
 class WidgetTestInteractive : public WidgetTest {
  public:
-  WidgetTestInteractive() {}
-  ~WidgetTestInteractive() override {}
+  WidgetTestInteractive() = default;
+  ~WidgetTestInteractive() override = default;
 
   void SetUp() override {
-    // On mus these tests run as part of views::ViewsTestSuite which already
-    // does this initialization.
-    if (!IsMus()) {
-      // Mojo is initialized here similar to how each browser test case
-      // initializes Mojo when starting. This only works because each
-      // interactive_ui_test runs in a new process.
-      mojo::core::Init();
-
-      gl::GLSurfaceTestSupport::InitializeOneOff();
-      ui::RegisterPathProvider();
-      base::FilePath ui_test_pak_path;
-      ASSERT_TRUE(base::PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
-      ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
-    }
+    SetUpForInteractiveTests();
     WidgetTest::SetUp();
   }
 
@@ -304,12 +288,27 @@
     }
   }
 #endif  // defined (USE_AURA)
+};
 
+class DesktopWidgetTestInteractive : public WidgetTestInteractive {
+ public:
+  DesktopWidgetTestInteractive() = default;
+  ~DesktopWidgetTestInteractive() override = default;
+
+  // WidgetTestInteractive:
+  void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+    WidgetTestInteractive::SetUp();
+  }
+
+ protected:
   Widget* CreateWidget() {
-    Widget* widget = CreateNativeDesktopWidget();
+    Widget* widget = CreateTopLevelNativeWidget();
     widget->SetBounds(gfx::Rect(0, 0, 200, 200));
     return widget;
   }
+
+  DISALLOW_COPY_AND_ASSIGN(DesktopWidgetTestInteractive);
 };
 
 #if defined(OS_WIN)
@@ -322,7 +321,8 @@
 // 3. On focusing the native platform window for widget 1, the active aura
 //    window for widget 1 should be set and that for widget 2 should reset.
 // TODO(ananta): Discuss with erg on how to write this test for linux x11 aura.
-TEST_F(WidgetTestInteractive, DesktopNativeWidgetAuraActivationAndFocusTest) {
+TEST_F(DesktopWidgetTestInteractive,
+       DesktopNativeWidgetAuraActivationAndFocusTest) {
   // Create widget 1 and expect the active window to be its window.
   View* focusable_view1 = new View;
   focusable_view1->SetFocusBehavior(View::FocusBehavior::ALWAYS);
@@ -411,7 +411,7 @@
 };
 
 // TODO(dtapuska): Disabled due to it being flaky crbug.com/817531
-TEST_F(WidgetTestInteractive, DISABLED_TouchNoActivateWindow) {
+TEST_F(DesktopWidgetTestInteractive, DISABLED_TouchNoActivateWindow) {
   // ui_controls::SendTouchEvents which uses InjectTouchInput API only works
   // on Windows 8 and up.
   if (base::win::GetVersion() <= base::win::VERSION_WIN7)
@@ -622,10 +622,6 @@
 // Tests mouse move outside of the window into the "resize controller" and back
 // will still generate an OnMouseEntered and OnMouseExited event..
 TEST_F(WidgetTestInteractive, CheckResizeControllerEvents) {
-  // TODO(http://crbug.com/864787): Crashes flakily in mus with ws2.
-  if (IsMus())
-    return;
-
   Widget* toplevel = CreateTopLevelPlatformWidget();
 
   toplevel->SetBounds(gfx::Rect(0, 0, 100, 100));
@@ -742,15 +738,12 @@
 
   // NOTE: for aura-mus-client stacking of top-levels is not maintained in the
   // client, so z-order of top-levels can't be determined.
-  const bool check_toplevel_z_order = !IsMus();
-  if (check_toplevel_z_order)
-    EXPECT_TRUE(IsWindowStackedAbove(popover.get(), child));
+  EXPECT_TRUE(IsWindowStackedAbove(popover.get(), child));
   EXPECT_TRUE(IsWindowStackedAbove(child, parent.get()));
 
   // Showing the parent again should raise it and its child above the popover.
   ShowSync(parent.get());
   EXPECT_TRUE(IsWindowStackedAbove(child, parent.get()));
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(parent.get(), popover.get()));
 
   // Test grandchildren.
@@ -759,17 +752,14 @@
   grandchild->ShowInactive();
   EXPECT_TRUE(IsWindowStackedAbove(grandchild, child));
   EXPECT_TRUE(IsWindowStackedAbove(child, parent.get()));
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(parent.get(), popover.get()));
 
   ShowSync(popover.get());
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(popover.get(), grandchild));
   EXPECT_TRUE(IsWindowStackedAbove(grandchild, child));
 
   ShowSync(parent.get());
   EXPECT_TRUE(IsWindowStackedAbove(grandchild, child));
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(child, popover.get()));
 
   // Test hiding and reshowing.
@@ -779,7 +769,6 @@
 
   EXPECT_TRUE(IsWindowStackedAbove(grandchild, child));
   EXPECT_TRUE(IsWindowStackedAbove(child, parent.get()));
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(parent.get(), popover.get()));
 
   grandchild->Hide();
@@ -788,7 +777,6 @@
 
   EXPECT_TRUE(IsWindowStackedAbove(grandchild, child));
   EXPECT_TRUE(IsWindowStackedAbove(child, parent.get()));
-  if (check_toplevel_z_order)
     EXPECT_TRUE(IsWindowStackedAbove(parent.get(), popover.get()));
 }
 
@@ -1026,7 +1014,7 @@
 
 // Tests whether the focused window is set correctly when a modal window is
 // created and destroyed. When it is destroyed it should focus the owner window.
-TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) {
+TEST_F(DesktopWidgetTestInteractive, WindowModalWindowDestroyedActivationTest) {
   TestWidgetFocusChangeListener focus_listener;
   WidgetFocusManager::GetInstance()->AddFocusChangeListener(&focus_listener);
   const std::vector<gfx::NativeView>& focus_changes =
@@ -1040,8 +1028,6 @@
   gfx::Rect initial_bounds(0, 0, 500, 500);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-      init_params, &top_level_widget, nullptr);
   top_level_widget.Init(init_params);
   ShowSync(&top_level_widget);
 
@@ -1097,7 +1083,7 @@
 #endif
 
 // Test that when opening a system-modal window, capture is released.
-TEST_F(WidgetTestInteractive, MAYBE_SystemModalWindowReleasesCapture) {
+TEST_F(DesktopWidgetTestInteractive, MAYBE_SystemModalWindowReleasesCapture) {
   TestWidgetFocusChangeListener focus_listener;
   WidgetFocusManager::GetInstance()->AddFocusChangeListener(&focus_listener);
 
@@ -1109,8 +1095,6 @@
   gfx::Rect initial_bounds(0, 0, 500, 500);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-      init_params, &top_level_widget, nullptr);
   top_level_widget.Init(init_params);
   ShowSync(&top_level_widget);
 
@@ -1140,15 +1124,13 @@
 
 #endif  // !defined(OS_CHROMEOS)
 
-TEST_F(WidgetTestInteractive, CanActivateFlagIsHonored) {
+TEST_F(DesktopWidgetTestInteractive, CanActivateFlagIsHonored) {
   Widget widget;
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.bounds = gfx::Rect(0, 0, 200, 200);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   init_params.activatable = Widget::InitParams::ACTIVATABLE_NO;
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
   widget.Init(init_params);
 
   widget.Show();
@@ -1156,12 +1138,19 @@
 }
 
 #if defined(USE_AURA)
-// Test that touch selection quick menu is not activated when opened.
-TEST_F(WidgetTestInteractive, TouchSelectionQuickMenuIsNotActivated) {
-#if defined(OS_WIN)
-  test_views_delegate()->set_use_desktop_native_widgets(true);
-#endif  // !defined(OS_WIN)
 
+#if defined(OS_CHROMEOS)
+// TODO(crbug.com/916272): investigate fixing and enabling on Chrome OS.
+#define MAYBE_TouchSelectionQuickMenuIsNotActivated \
+  DISABLED_TouchSelectionQuickMenuIsNotActivated
+#else
+#define MAYBE_TouchSelectionQuickMenuIsNotActivated \
+  TouchSelectionQuickMenuIsNotActivated
+#endif
+
+// Test that touch selection quick menu is not activated when opened.
+TEST_F(DesktopWidgetTestInteractive,
+       MAYBE_TouchSelectionQuickMenuIsNotActivated) {
   Widget* widget = CreateWidget();
 
   Textfield* textfield = new Textfield;
@@ -1189,9 +1178,10 @@
 }
 #endif  // defined(USE_AURA)
 
-TEST_F(WidgetTestInteractive, DisableViewDoesNotActivateWidget) {
 #if defined(OS_WIN)
-  test_views_delegate()->set_use_desktop_native_widgets(true);
+TEST_F(DesktopWidgetTestInteractive, DisableViewDoesNotActivateWidget) {
+#else
+TEST_F(WidgetTestInteractive, DisableViewDoesNotActivateWidget) {
 #endif  // !defined(OS_WIN)
 
   // Create first widget and view, activate the widget, and focus the view.
@@ -1316,8 +1306,6 @@
 
   Widget widget2;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, &widget2, nullptr);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget2.Init(params);
   widget2.Show();
@@ -1379,11 +1367,6 @@
 // Testing initial focus is assigned properly for normal top-level widgets,
 // and subclasses that specify a initially focused child view.
 TEST_F(WidgetTestInteractive, InitialFocus) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   // By default, there is no initially focused view (even if there is a
   // focusable subview).
   Widget* toplevel(CreateTopLevelPlatformWidget());
@@ -1407,7 +1390,7 @@
   EXPECT_EQ(delegate.view(), widget->GetFocusManager()->GetStoredFocusView());
 }
 
-TEST_F(WidgetTestInteractive, RestoreAfterMinimize) {
+TEST_F(DesktopWidgetTestInteractive, RestoreAfterMinimize) {
   Widget* widget = CreateWidget();
   ShowSync(widget);
   ASSERT_FALSE(widget->IsMinimized());
@@ -1429,7 +1412,7 @@
 // Tests that widget visibility toggles correctly when minimized and maximized
 // on Windows. Test using both the widget API as well as native win32 functions
 // that operate directly on the underlying HWND. Behavior should be the same.
-TEST_F(WidgetTestInteractive, RestoreAndMinimizeVisibility) {
+TEST_F(DesktopWidgetTestInteractive, RestoreAndMinimizeVisibility) {
   Widget* widget = CreateWidget();
   ShowSync(widget);
   ASSERT_FALSE(widget->IsMinimized());
@@ -1466,7 +1449,8 @@
 // Tests that when a desktop native widget has modal transient child, it should
 // avoid restore focused view itself as the modal transient child window will do
 // that, thus avoids having multiple focused view visually (crbug.com/727641).
-TEST_F(WidgetTestInteractive, DesktopNativeWidgetWithModalTransientChild) {
+TEST_F(DesktopWidgetTestInteractive,
+       DesktopNativeWidgetWithModalTransientChild) {
   // Create a desktop native Widget for Widget::Deactivate().
   Widget* deactivate_widget = CreateWidget();
   ShowSync(deactivate_widget);
@@ -1558,19 +1542,8 @@
 
 class WidgetCaptureTest : public ViewsInteractiveUITestBase {
  public:
-  WidgetCaptureTest() {
-  }
-
-  ~WidgetCaptureTest() override {}
-
-  void SetUp() override {
-    // On mus these tests run as part of views::ViewsTestSuite which already
-    // does this initialization.
-    if (!IsMus())
-      ViewsInteractiveUITestBase::SetUp();
-    else
-      ViewsTestBase::SetUp();
-  }
+  WidgetCaptureTest() = default;
+  ~WidgetCaptureTest() override = default;
 
   // Verifies Widget::SetCapture() results in updating native capture along with
   // invoking the right Widget function.
@@ -1620,8 +1593,9 @@
   NativeWidget* CreateNativeWidget(const Widget::InitParams& params,
                                    bool create_desktop_native_widget,
                                    Widget* widget) {
+    // The test base class by default returns DesktopNativeWidgetAura.
     if (create_desktop_native_widget)
-      return CreatePlatformDesktopNativeWidgetImpl(params, widget, nullptr);
+      return nullptr;
     return CreatePlatformNativeWidgetImpl(params, widget, kDefault, nullptr);
   }
 
@@ -1631,13 +1605,16 @@
 
 // See description in TestCapture().
 TEST_F(WidgetCaptureTest, Capture) {
-  // TODO: capture isn't global in mus. http://crbug.com/678057.
-  if (IsMus())
-    return;
-
   TestCapture(false);
 }
 
+#if !defined(OS_CHROMEOS)
+// See description in TestCapture(). Creates DesktopNativeWidget.
+TEST_F(WidgetCaptureTest, CaptureDesktopNativeWidget) {
+  TestCapture(true);
+}
+#endif
+
 // Tests to ensure capture is correctly released from a Widget with capture when
 // it is destroyed. Test for crbug.com/622201.
 TEST_F(WidgetCaptureTest, DestroyWithCapture_CloseNow) {
@@ -1645,7 +1622,6 @@
   CaptureLostTrackingWidget* widget =
       new CaptureLostTrackingWidget(&capture_state);
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget = CreateNativeWidget(params, true, widget);
   widget->Init(params);
   widget->Show();
 
@@ -1662,7 +1638,6 @@
   CaptureLostTrackingWidget* widget =
       new CaptureLostTrackingWidget(&capture_state);
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget = CreateNativeWidget(params, true, widget);
   widget->Init(params);
   widget->Show();
 
@@ -1676,7 +1651,6 @@
 TEST_F(WidgetCaptureTest, DestroyWithCapture_WidgetOwnsNativeWidget) {
   Widget widget;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget = CreateNativeWidget(params, true, &widget);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget.Init(params);
   widget.Show();
@@ -1685,20 +1659,8 @@
   EXPECT_TRUE(widget.HasCapture());
 }
 
-#if !defined(OS_CHROMEOS)
-// See description in TestCapture(). Creates DesktopNativeWidget.
-TEST_F(WidgetCaptureTest, CaptureDesktopNativeWidget) {
-  TestCapture(true);
-}
-#endif
-
 // Test that no state is set if capture fails.
 TEST_F(WidgetCaptureTest, FailedCaptureRequestIsNoop) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   Widget widget;
   Widget::InitParams params =
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
@@ -1721,7 +1683,8 @@
   EXPECT_FALSE(widget.HasCapture());
 
   widget.Show();
-  ui::test::EventGenerator generator(GetContext(), widget.GetNativeWindow());
+  ui::test::EventGenerator generator(GetRootWindow(&widget),
+                                     widget.GetNativeWindow());
   generator.set_current_screen_location(gfx::Point(300, 10));
   generator.PressLeftButton();
 
@@ -1744,7 +1707,6 @@
   Widget widget1;
   Widget::InitParams params1 =
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
-  params1.native_widget = CreateNativeWidget(params1, true, &widget1);
   params1.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget1.Init(params1);
   MouseView* mouse_view1 = new MouseView;
@@ -1755,7 +1717,6 @@
   Widget widget2;
   Widget::InitParams params2 =
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
-  params2.native_widget = CreateNativeWidget(params2, true, &widget2);
   params2.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget2.Init(params2);
   widget2.Show();
@@ -1804,15 +1765,9 @@
 // Test that setting capture on widget activation of a non-toplevel widget
 // (e.g. a bubble on Linux) succeeds.
 TEST_F(WidgetCaptureTest, SetCaptureToNonToplevel) {
-  // TODO: capture isn't global in mus. http://crbug.com/678057.
-  if (IsMus())
-    return;
-
   Widget toplevel;
   Widget::InitParams toplevel_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
-  toplevel_params.native_widget = CreateNativeWidget(toplevel_params, true,
-                                                     &toplevel);
   toplevel_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   toplevel.Init(toplevel_params);
   toplevel.Show();
@@ -1912,13 +1867,13 @@
 }
 #endif  // defined(OS_WIN)
 
-class WidgetInputMethodInteractiveTest : public WidgetTestInteractive {
+class WidgetInputMethodInteractiveTest : public DesktopWidgetTestInteractive {
  public:
   WidgetInputMethodInteractiveTest() {}
 
   // testing::Test:
   void SetUp() override {
-    WidgetTestInteractive::SetUp();
+    DesktopWidgetTestInteractive::SetUp();
 #if defined(OS_WIN)
     // On Windows, Widget::Deactivate() works by activating the next topmost
     // window on the z-order stack. This only works if there is at least one
@@ -1931,7 +1886,7 @@
   void TearDown() override {
     if (deactivate_widget_)
       deactivate_widget_->CloseNow();
-    WidgetTestInteractive::TearDown();
+    DesktopWidgetTestInteractive::TearDown();
   }
 
  private:
@@ -1940,17 +1895,13 @@
   DISALLOW_COPY_AND_ASSIGN(WidgetInputMethodInteractiveTest);
 };
 
-// Test input method focus changes affected by top window activaction.
-TEST_F(WidgetInputMethodInteractiveTest,
 #if defined(OS_MACOSX)
-       DISABLED_Activation
+#define MAYBE_Activation DISABLED_Activation
 #else
-       Activation
+#define MAYBE_Activation Activation
 #endif
-       ) {
-  if (IsMus())
-    return;
-
+// Test input method focus changes affected by top window activaction.
+TEST_F(WidgetInputMethodInteractiveTest, MAYBE_Activation) {
   Widget* widget = CreateWidget();
   Textfield* textfield = new Textfield;
   widget->GetRootView()->AddChildView(textfield);
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index 642805f2..bfc9a6e 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -42,6 +42,8 @@
 #include "ui/aura/window_tree_host.h"
 #include "ui/base/view_prop.h"
 #include "ui/base/win/window_event_target.h"
+#include "ui/views/test/test_platform_native_widget.h"
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
 #include "ui/views/win/hwnd_util.h"
 #endif
 
@@ -554,10 +556,18 @@
 // Test to verify using various Widget methods doesn't crash when the underlying
 // NativeView is destroyed.
 //
-class WidgetWithDestroyedNativeViewTest : public ViewsTestBase {
+class WidgetWithDestroyedNativeViewTest
+    : public ViewsTestBase,
+      public testing::WithParamInterface<ViewsTestBase::NativeWidgetType> {
  public:
-  WidgetWithDestroyedNativeViewTest() {}
-  ~WidgetWithDestroyedNativeViewTest() override {}
+  WidgetWithDestroyedNativeViewTest() = default;
+  ~WidgetWithDestroyedNativeViewTest() override = default;
+
+  // ViewsTestBase:
+  void SetUp() override {
+    set_native_widget_type(GetParam());
+    ViewsTestBase::SetUp();
+  }
 
   void InvokeWidgetMethods(Widget* widget) {
     widget->GetNativeView();
@@ -609,33 +619,23 @@
   DISALLOW_COPY_AND_ASSIGN(WidgetWithDestroyedNativeViewTest);
 };
 
-TEST_F(WidgetWithDestroyedNativeViewTest, Test) {
-  {
-    Widget widget;
-    Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
-    params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    widget.Init(params);
-    widget.Show();
+TEST_P(WidgetWithDestroyedNativeViewTest, Test) {
+  Widget widget;
+  Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
+  params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+  widget.Init(params);
+  widget.Show();
 
-    widget.native_widget_private()->CloseNow();
-    InvokeWidgetMethods(&widget);
-  }
-#if !defined(OS_CHROMEOS)
-  {
-    Widget widget;
-    Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
-    params.native_widget =
-        CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
-    params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    widget.Init(params);
-    widget.Show();
-
-    widget.native_widget_private()->CloseNow();
-    InvokeWidgetMethods(&widget);
-  }
-#endif
+  widget.native_widget_private()->CloseNow();
+  InvokeWidgetMethods(&widget);
 }
 
+INSTANTIATE_TEST_CASE_P(
+    PlatformWidgetWithDestroyedNativeViewTest,
+    WidgetWithDestroyedNativeViewTest,
+    ::testing::Values(ViewsTestBase::NativeWidgetType::kDefault,
+                      ViewsTestBase::NativeWidgetType::kDesktop));
+
 ////////////////////////////////////////////////////////////////////////////////
 // Widget observer tests.
 //
@@ -954,9 +954,24 @@
 
 }  // namespace
 
+class DesktopWidgetObserverTest : public WidgetObserverTest {
+ public:
+  DesktopWidgetObserverTest() = default;
+  ~DesktopWidgetObserverTest() override = default;
+
+  // WidgetObserverTest:
+  void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+    WidgetObserverTest::SetUp();
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DesktopWidgetObserverTest);
+};
+
 // An extension to the WidgetBoundsChangedNative test above to ensure move
 // notifications propagate to the WidgetDelegate.
-TEST_F(WidgetObserverTest, OnWidgetMovedWhenOriginChangesNative) {
+TEST_F(DesktopWidgetObserverTest, OnWidgetMovedWhenOriginChangesNative) {
   MoveTrackingTestDesktopWidgetDelegate delegate;
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   delegate.InitWidget(params);
@@ -1024,23 +1039,23 @@
 }
 
 // Test behavior of NativeWidget*::GetWindowPlacement on the native desktop.
-TEST_F(WidgetTest, GetWindowPlacement) {
-#if defined(OS_MACOSX)
-  if (base::mac::IsOS10_10())
-    return;  // Fails when swarmed. http://crbug.com/660582
-#endif
-
-  WidgetAutoclosePtr widget;
 #if defined(USE_X11)
   // On desktop-Linux cheat and use non-desktop widgets. On X11, minimize is
   // asynchronous. Also (harder) showing a window doesn't activate it without
   // user interaction (or extra steps only done for interactive ui tests).
   // Without that, show_state remains in ui::SHOW_STATE_INACTIVE throughout.
   // TODO(tapted): Find a nice way to run this with desktop widgets on Linux.
-  widget.reset(CreateTopLevelPlatformWidget());
+TEST_F(WidgetTest, GetWindowPlacement) {
 #else
-  widget.reset(CreateNativeDesktopWidget());
+TEST_F(DesktopWidgetTest, GetWindowPlacement) {
 #endif
+#if defined(OS_MACOSX)
+  if (base::mac::IsOS10_10())
+    return;  // Fails when swarmed. http://crbug.com/660582
+#endif
+
+  WidgetAutoclosePtr widget;
+  widget.reset(CreateTopLevelNativeWidget());
 
   gfx::Rect expected_bounds(100, 110, 200, 220);
   widget->SetBounds(expected_bounds);
@@ -1100,7 +1115,7 @@
 
 // Test that widget size constraints are properly applied immediately after
 // Init(), and that SetBounds() calls are appropriately clamped.
-TEST_F(WidgetTest, MinimumSizeConstraints) {
+TEST_F(DesktopWidgetTest, MinimumSizeConstraints) {
   TestDesktopWidgetDelegate delegate;
   gfx::Size minimum_size(100, 100);
   const gfx::Size smaller_size(90, 90);
@@ -1215,8 +1230,8 @@
 #endif
 
 // Test that GetRestoredBounds() returns the original bounds of the window.
-TEST_F(WidgetTest, MAYBE_GetRestoredBounds) {
-  WidgetAutoclosePtr toplevel(CreateNativeDesktopWidget());
+TEST_F(DesktopWidgetTest, MAYBE_GetRestoredBounds) {
+  WidgetAutoclosePtr toplevel(CreateTopLevelNativeWidget());
   toplevel->Show();
   // Initial restored bounds have non-zero size.
   EXPECT_FALSE(toplevel->GetRestoredBounds().IsEmpty());
@@ -1279,7 +1294,7 @@
 // Verifies bubbles result in a focus lost when shown.
 // TODO(msw): this tests relies on focus, it needs to be in
 // interactive_ui_tests.
-TEST_F(WidgetTest, DISABLED_FocusChangesOnBubble) {
+TEST_F(DesktopWidgetTest, DISABLED_FocusChangesOnBubble) {
   // Create a widget, show and activate it and focus the contents view.
   View* contents_view = new View;
   contents_view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
@@ -1288,10 +1303,6 @@
       CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
   init_params.bounds = gfx::Rect(0, 0, 200, 200);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-#if !defined(OS_CHROMEOS)
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
-#endif
   widget.Init(init_params);
   widget.SetContentsView(contents_view);
   widget.Show();
@@ -1336,7 +1347,7 @@
 // Test to ensure that after minimize, view width is set to zero. This is only
 // the case for desktop widgets on Windows. Other platforms retain the window
 // size while minimized.
-TEST_F(WidgetTest, TestViewWidthAfterMinimizingWidget) {
+TEST_F(DesktopWidgetTest, TestViewWidthAfterMinimizingWidget) {
   // Create a widget.
   Widget widget;
   Widget::InitParams init_params =
@@ -1345,8 +1356,6 @@
   gfx::Rect initial_bounds(0, 0, 300, 400);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
   widget.Init(init_params);
   NonClientView* non_client_view = widget.non_client_view();
   NonClientFrameView* frame_view = new MinimumSizeFrameView(&widget);
@@ -1426,8 +1435,6 @@
 void DesktopAuraTestValidPaintWidget::InitForTest(InitParams init_params) {
   init_params.bounds = gfx::Rect(0, 0, 200, 200);
   init_params.ownership = InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, this, nullptr);
   Init(init_params);
 
   View* contents_view = new View;
@@ -1438,7 +1445,7 @@
   Activate();
 }
 
-TEST_F(WidgetTest, DesktopNativeWidgetNoPaintAfterCloseTest) {
+TEST_F(DesktopWidgetTest, DesktopNativeWidgetNoPaintAfterCloseTest) {
   DesktopAuraTestValidPaintWidget widget;
   widget.InitForTest(CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS));
   widget.WaitUntilPaint();
@@ -1450,7 +1457,7 @@
   EXPECT_FALSE(widget.received_paint_while_hidden());
 }
 
-TEST_F(WidgetTest, DesktopNativeWidgetNoPaintAfterHideTest) {
+TEST_F(DesktopWidgetTest, DesktopNativeWidgetNoPaintAfterHideTest) {
   DesktopAuraTestValidPaintWidget widget;
   widget.InitForTest(CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS));
   widget.WaitUntilPaint();
@@ -1465,7 +1472,7 @@
 
 // Test to ensure that the aura Window's visiblity state is set to visible if
 // the underlying widget is hidden and then shown.
-TEST_F(WidgetTest, TestWindowVisibilityAfterHide) {
+TEST_F(DesktopWidgetTest, TestWindowVisibilityAfterHide) {
   // Create a widget.
   Widget widget;
   Widget::InitParams init_params =
@@ -1474,8 +1481,6 @@
   gfx::Rect initial_bounds(0, 0, 300, 400);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
   widget.Init(init_params);
   NonClientView* non_client_view = widget.non_client_view();
   NonClientFrameView* frame_view = new MinimumSizeFrameView(&widget);
@@ -1719,9 +1724,7 @@
   EXPECT_EQ(0, v2->GetEventCount(ui::ET_MOUSE_MOVED));
 
   gfx::Point cursor_location(5, 5);
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget.get()) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow());
   generator.MoveMouseTo(cursor_location);
 
   EXPECT_EQ(1, v1->GetEventCount(ui::ET_MOUSE_MOVED));
@@ -1776,9 +1779,7 @@
   MousePressEventConsumer consumer;
   event_count_view->AddPostTargetHandler(&consumer);
 
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow());
   generator.PressTouch();
   generator.ClickLeftButton();
 
@@ -1809,9 +1810,7 @@
 
   MousePressEventConsumer consumer;
   event_count_view->AddPostTargetHandler(&consumer);
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow());
   generator.PressLeftButton();
 
   EXPECT_EQ(1, event_count_view->GetEventCount(ui::ET_MOUSE_PRESSED));
@@ -1873,9 +1872,8 @@
   // Gives explicit capture to |widget2|
   CaptureEventConsumer consumer(widget2);
   event_count_view->AddPostTargetHandler(&consumer);
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetRootWindow(widget),
+                                     widget->GetNativeWindow());
   // This event should implicitly give capture to |widget|, except that
   // |consumer| will explicitly set capture on |widget2|.
   generator.PressLeftButton();
@@ -1953,9 +1951,7 @@
       &closing_event_observer, widget->GetNativeWindow(),
       {ui::ET_MOUSE_PRESSED});
 
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow());
   generator.set_target(ui::test::EventGenerator::Target::APPLICATION);
 
   EXPECT_FALSE(observer.widget_closed());
@@ -1977,7 +1973,7 @@
 
 // Verifies that widget destroyed itself in OnNativeWidgetDestroyed does not
 // crash in ASan.
-TEST_F(WidgetTest, WidgetDestroyedItselfDoesNotCrash) {
+TEST_F(DesktopWidgetTest, WidgetDestroyedItselfDoesNotCrash) {
   TestDesktopWidgetDelegate delegate(new TestNativeWidgetDestroyedWidget);
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
@@ -1988,7 +1984,7 @@
 
 // Verifies WindowClosing() is invoked correctly on the delegate when a Widget
 // is closed.
-TEST_F(WidgetTest, SingleWindowClosing) {
+TEST_F(DesktopWidgetTest, SingleWindowClosing) {
   TestDesktopWidgetDelegate delegate;
   delegate.InitWidget(CreateParams(Widget::InitParams::TYPE_WINDOW));
   EXPECT_EQ(0, delegate.window_closing_count());
@@ -1996,7 +1992,7 @@
   EXPECT_EQ(1, delegate.window_closing_count());
 }
 
-TEST_F(WidgetTest, CloseRequested_AllowsClose) {
+TEST_F(DesktopWidgetTest, CloseRequested_AllowsClose) {
   constexpr Widget::ClosedReason kReason = Widget::ClosedReason::kLostFocus;
   TestDesktopWidgetDelegate delegate;
   delegate.set_can_close(true);
@@ -2011,7 +2007,7 @@
   waiter.Wait();
 }
 
-TEST_F(WidgetTest, CloseRequested_DisallowClose) {
+TEST_F(DesktopWidgetTest, CloseRequested_DisallowClose) {
   constexpr Widget::ClosedReason kReason = Widget::ClosedReason::kLostFocus;
   TestDesktopWidgetDelegate delegate;
   delegate.set_can_close(false);
@@ -2026,7 +2022,7 @@
   delegate.GetWidget()->CloseNow();
 }
 
-TEST_F(WidgetTest, CloseRequested_SecondCloseIgnored) {
+TEST_F(DesktopWidgetTest, CloseRequested_SecondCloseIgnored) {
   constexpr Widget::ClosedReason kReason1 = Widget::ClosedReason::kLostFocus;
   constexpr Widget::ClosedReason kReason2 = Widget::ClosedReason::kUnspecified;
   TestDesktopWidgetDelegate delegate;
@@ -2047,21 +2043,17 @@
   waiter.Wait();
 }
 
-class WidgetWindowTitleTest : public WidgetTest {
+class WidgetWindowTitleTest : public DesktopWidgetTest {
  protected:
   void RunTest(bool desktop_native_widget) {
     WidgetAutoclosePtr widget(new Widget());  // Destroyed by CloseNow().
     Widget::InitParams init_params =
         CreateParams(Widget::InitParams::TYPE_WINDOW);
 
-#if !defined(OS_CHROMEOS)
-    if (desktop_native_widget)
-      init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-          init_params, widget.get(), nullptr);
-#else
-    DCHECK(!desktop_native_widget)
-        << "DesktopNativeWidget does not exist on non-Aura or on ChromeOS.";
-#endif
+    if (!desktop_native_widget) {
+      init_params.native_widget = CreatePlatformNativeWidgetImpl(
+          init_params, widget.get(), kStubCapture, nullptr);
+    }
     widget->Init(init_params);
 
     internal::NativeWidgetPrivate* native_widget =
@@ -2094,14 +2086,11 @@
   RunTest(desktop_native_widget);
 }
 
-// DesktopNativeWidget does not exist on non-Aura or on ChromeOS.
-#if !defined(OS_CHROMEOS)
 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) {
   // Override to use a DesktopNativeWidget.
   bool desktop_native_widget = true;
   RunTest(desktop_native_widget);
 }
-#endif  // !OS_CHROMEOS
 
 TEST_F(WidgetTest, WidgetDeleted_InOnMousePressed) {
   Widget* widget = new Widget;
@@ -2114,9 +2103,7 @@
   widget->SetSize(gfx::Size(100, 100));
   widget->Show();
 
-  ui::test::EventGenerator generator(
-      IsMus() ? GetRootWindow(widget) : GetContext(),
-      widget->GetNativeWindow());
+  ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow());
 
   WidgetDeletionObserver deletion_observer(widget);
   generator.PressLeftButton();
@@ -2131,11 +2118,6 @@
 #if !defined(OS_MACOSX) || defined(USE_AURA)
 
 TEST_F(WidgetTest, WidgetDeleted_InDispatchGestureEvent) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   Widget* widget = new Widget;
   Widget::InitParams params =
       CreateParams(views::Widget::InitParams::TYPE_POPUP);
@@ -2183,19 +2165,17 @@
   Widget::InitParams params(in_params);
   // Deletes itself when the Widget is destroyed.
   params.delegate = new GetNativeThemeFromDestructorView;
-#if !defined(OS_CHROMEOS)
-  if (is_first_run) {
-    params.native_widget =
-        CreatePlatformDesktopNativeWidgetImpl(params, widget.get(), nullptr);
+  if (!is_first_run) {
+    params.native_widget = CreatePlatformNativeWidgetImpl(
+        params, widget.get(), kStubCapture, nullptr);
     needs_second_run = true;
   }
-#endif
   widget->Init(params);
   return needs_second_run;
 }
 
 // See description of RunGetNativeThemeFromDestructor() for details.
-TEST_F(WidgetTest, GetNativeThemeFromDestructor) {
+TEST_F(DesktopWidgetTest, GetNativeThemeFromDestructor) {
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
   if (RunGetNativeThemeFromDestructor(params, true))
     RunGetNativeThemeFromDestructor(params, false);
@@ -2264,16 +2244,12 @@
 };
 
 // Verifies Close() results in destroying.
-TEST_F(WidgetTest, CloseDestroys) {
+TEST_F(DesktopWidgetTest, CloseDestroys) {
   bool destroyed = false;
   CloseDestroysWidget* widget = new CloseDestroysWidget(&destroyed);
   Widget::InitParams params =
       CreateParams(views::Widget::InitParams::TYPE_MENU);
   params.opacity = Widget::InitParams::OPAQUE_WINDOW;
-#if !defined(OS_CHROMEOS)
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, widget, nullptr);
-#endif
   widget->Init(params);
   widget->Show();
   widget->Hide();
@@ -2323,9 +2299,9 @@
 // ChromeOS doesn't implement or need CloseAllSecondaryWidgets() since
 // everything is under a single root window.
 #if !defined(OS_CHROMEOS)
-TEST_F(WidgetTest, CloseAllSecondaryWidgets) {
-  Widget* widget1 = CreateNativeDesktopWidget();
-  Widget* widget2 = CreateNativeDesktopWidget();
+TEST_F(DesktopWidgetTest, CloseAllSecondaryWidgets) {
+  Widget* widget1 = CreateTopLevelNativeWidget();
+  Widget* widget2 = CreateTopLevelNativeWidget();
   TestWidgetObserver observer1(widget1);
   TestWidgetObserver observer2(widget2);
   widget1->Show();  // Just show the first one.
@@ -2337,8 +2313,8 @@
 
 // Test that the NativeWidget is still valid during OnNativeWidgetDestroying(),
 // and properties that depend on it are valid, when closed via CloseNow().
-TEST_F(WidgetTest, ValidDuringOnNativeWidgetDestroyingFromCloseNow) {
-  Widget* widget = CreateNativeDesktopWidget();
+TEST_F(DesktopWidgetTest, ValidDuringOnNativeWidgetDestroyingFromCloseNow) {
+  Widget* widget = CreateTopLevelNativeWidget();
   widget->Show();
   gfx::Rect screen_rect(50, 50, 100, 100);
   widget->SetBounds(screen_rect);
@@ -2350,8 +2326,8 @@
 
 // Test that the NativeWidget is still valid during OnNativeWidgetDestroying(),
 // and properties that depend on it are valid, when closed via Close().
-TEST_F(WidgetTest, ValidDuringOnNativeWidgetDestroyingFromClose) {
-  Widget* widget = CreateNativeDesktopWidget();
+TEST_F(DesktopWidgetTest, ValidDuringOnNativeWidgetDestroyingFromClose) {
+  Widget* widget = CreateTopLevelNativeWidget();
   widget->Show();
   gfx::Rect screen_rect(50, 50, 100, 100);
   widget->SetBounds(screen_rect);
@@ -2386,11 +2362,6 @@
 // Tests that we do not crash when a Widget is destroyed before it finishes
 // processing of pending input events in the message loop.
 TEST_F(WidgetTest, NoCrashOnWidgetDeleteWithPendingEvents) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   std::unique_ptr<Widget> widget(new Widget);
   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.bounds = gfx::Rect(0, 0, 200, 200);
@@ -3223,9 +3194,9 @@
   DISALLOW_COPY_AND_ASSIGN(DestroyedTrackingView);
 };
 
-class WidgetChildDestructionTest : public WidgetTest {
+class WidgetChildDestructionTest : public DesktopWidgetTest {
  public:
-  WidgetChildDestructionTest() {}
+  WidgetChildDestructionTest() = default;
 
   // Creates a top level and a child, destroys the child and verifies the views
   // of the child are destroyed before the views of the parent.
@@ -3237,12 +3208,10 @@
     Widget* top_level = new Widget;
     Widget::InitParams params =
         CreateParams(views::Widget::InitParams::TYPE_WINDOW);
-#if !defined(OS_CHROMEOS)
-    if (top_level_has_desktop_native_widget_aura) {
-      params.native_widget =
-          CreatePlatformDesktopNativeWidgetImpl(params, top_level, nullptr);
+    if (!top_level_has_desktop_native_widget_aura) {
+      params.native_widget = CreatePlatformNativeWidgetImpl(
+          params, top_level, kStubCapture, nullptr);
     }
-#endif
     top_level->Init(params);
     top_level->GetRootView()->AddChildView(
         new DestroyedTrackingView("parent", &destroyed));
@@ -3252,12 +3221,10 @@
     Widget::InitParams child_params =
         CreateParams(views::Widget::InitParams::TYPE_POPUP);
     child_params.parent = top_level->GetNativeView();
-#if !defined(OS_CHROMEOS)
-    if (child_has_desktop_native_widget_aura) {
-      child_params.native_widget =
-          CreatePlatformDesktopNativeWidgetImpl(child_params, child, nullptr);
+    if (!child_has_desktop_native_widget_aura) {
+      child_params.native_widget = CreatePlatformNativeWidgetImpl(
+          child_params, child, kStubCapture, nullptr);
     }
-#endif
     child->Init(child_params);
     child->GetRootView()->AddChildView(
         new DestroyedTrackingView("child", &destroyed));
@@ -3317,15 +3284,13 @@
 // Verifies nativeview visbility matches that of Widget visibility when
 // SetFullscreen is invoked, for a widget provided with a desktop widget.
 #if !defined(OS_CHROMEOS)
-TEST_F(WidgetTest, FullscreenStatePropagated_DesktopWidget) {
+TEST_F(DesktopWidgetTest, FullscreenStatePropagated_DesktopWidget) {
   Widget::InitParams init_params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.show_state = ui::SHOW_STATE_NORMAL;
   init_params.bounds = gfx::Rect(0, 0, 500, 500);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   Widget top_level_widget;
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-      init_params, &top_level_widget, nullptr);
 
   top_level_widget.Init(init_params);
   top_level_widget.SetFullscreen(true);
@@ -3410,14 +3375,12 @@
 
 // Verifies Widget::IsActive() invoked from
 // WidgetObserver::OnWidgetDestroying() in a child widget doesn't crash.
-TEST_F(WidgetTest, IsActiveFromDestroy) {
+TEST_F(DesktopWidgetTest, IsActiveFromDestroy) {
   // Create two widgets, one a child of the other.
   IsActiveFromDestroyObserver observer;
   Widget parent_widget;
   Widget::InitParams parent_params =
       CreateParams(Widget::InitParams::TYPE_POPUP);
-  parent_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-      parent_params, &parent_widget, nullptr);
   parent_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   parent_widget.Init(parent_params);
   parent_widget.Show();
@@ -3438,11 +3401,6 @@
 // Tests that events propagate through from the dispatcher with the correct
 // event type, and that the different platforms behave the same.
 TEST_F(WidgetTest, MouseEventTypesViaGenerator) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   EventCountView* view = new EventCountView;
   view->set_handle_mode(EventCountView::CONSUME_EVENTS);
   view->SetBounds(10, 10, 50, 40);
@@ -3609,12 +3567,10 @@
 // 2. Posting a WM_NCMOUSEMOVE message with a different hittest code.
 // 3. Posting a WM_MOUSEMOVE message.
 // Disabled because of flaky timeouts: http://crbug.com/592742
-TEST_F(WidgetTest, DISABLED_SysCommandMoveOnNCLButtonDownOnCaptionAndMoveTest) {
+TEST_F(DesktopWidgetTest,
+       DISABLED_SysCommandMoveOnNCLButtonDownOnCaptionAndMoveTest) {
   Widget widget;
-  Widget::InitParams params =
-      CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
+  Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget.Init(params);
   widget.SetBounds(gfx::Rect(0, 0, 200, 200));
@@ -3644,7 +3600,7 @@
   EXPECT_FALSE(subclass_helper.received_message(WM_SYSCOMMAND));
 
   subclass_helper.Clear();
- // Posting a WM_NCLBUTTONDOWN message followed by a WM_NCMOUSEMOVE at a
+  // Posting a WM_NCLBUTTONDOWN message followed by a WM_NCMOUSEMOVE at a
   // different location should result in a WM_SYSCOMMAND message.
   ::PostMessage(window, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(100, 100));
   ::PostMessage(window, WM_NCMOUSEMOVE, HTCAPTION, MAKELPARAM(110, 110));
@@ -3655,7 +3611,7 @@
   EXPECT_TRUE(subclass_helper.received_message(WM_SYSCOMMAND));
 
   subclass_helper.Clear();
- // Posting a WM_NCLBUTTONDOWN message followed by a WM_NCMOUSEMOVE at a
+  // Posting a WM_NCLBUTTONDOWN message followed by a WM_NCMOUSEMOVE at a
   // different location with a different hittest code should result in a
   // WM_SYSCOMMAND message.
   ::PostMessage(window, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(100, 100));
@@ -3683,12 +3639,10 @@
 // This test validates that destroying the window in the context of the
 // WM_SYSCOMMAND message with SC_MOVE does not crash.
 // Disabled because of flaky timeouts: http://crbug.com/592742
-TEST_F(WidgetTest, DISABLED_DestroyInSysCommandNCLButtonDownOnCaption) {
+TEST_F(DesktopWidgetTest, DISABLED_DestroyInSysCommandNCLButtonDownOnCaption) {
   Widget widget;
   Widget::InitParams params =
       CreateParams(Widget::InitParams::TYPE_WINDOW);
-  params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(params, &widget, nullptr);
   params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   widget.Init(params);
   widget.SetBounds(gfx::Rect(0, 0, 200, 200));
@@ -3751,11 +3705,6 @@
 
 // Ensure scale factor changes are propagated from the native Widget.
 TEST_F(WidgetTest, OnDeviceScaleFactorChanged) {
-  // This relies on the NativeWidget being the WindowDelegate, which is not the
-  // case for aura-mus-client.
-  if (IsMus())
-    return;
-
   // Automatically close the widget, but not delete it.
   WidgetAutoclosePtr widget(CreateTopLevelPlatformWidget());
   ScaleFactorView* view = new ScaleFactorView;
@@ -3861,11 +3810,6 @@
 
 // Test dispatch of ui::ET_MOUSEWHEEL.
 TEST_F(WidgetTest, MouseWheelEvent) {
-  // TODO: test uses GetContext(), which is not applicable to aura-mus.
-  // http://crbug.com/663809.
-  if (IsMus())
-    return;
-
   WidgetAutoclosePtr widget(CreateTopLevelPlatformWidget());
   widget->SetBounds(gfx::Rect(0, 0, 600, 600));
   EventCountView* event_count_view = new EventCountView();
@@ -3882,9 +3826,24 @@
 
 class WidgetShadowTest : public WidgetTest {
  public:
-  WidgetShadowTest() { InitControllers(); }
+  WidgetShadowTest() = default;
+  ~WidgetShadowTest() override = default;
 
   // WidgetTest:
+  void SetUp() override {
+    set_native_widget_type(NativeWidgetType::kDesktop);
+    WidgetTest::SetUp();
+    InitControllers();
+  }
+
+  void TearDown() override {
+#if defined(OS_CHROMEOS)
+    shadow_controller_.reset();
+    focus_controller_.reset();
+#endif
+    WidgetTest::TearDown();
+  }
+
   Widget::InitParams CreateParams(Widget::InitParams::Type type) override {
     Widget::InitParams params =
         WidgetTest::CreateParams(override_type_.value_or(type));
@@ -3917,11 +3876,6 @@
   };
 
   void InitControllers() {
-    // Add bits usually managed by the ash::Shell. Under Mus,
-    // DesktopNativeWidgetAura provides these in-process instead.
-    if (IsMus())
-      return;
-
     focus_controller_ =
         std::make_unique<wm::FocusController>(new TestFocusRules);
     shadow_controller_ = std::make_unique<wm::ShadowController>(
@@ -3949,23 +3903,16 @@
   // A desktop window clips to its bounds, so it shouldn't have a shadow.
   bool top_level_window_should_have_shadow = false;
 
-#if defined(OS_CHROMEOS)
-  // In Mus, the shadow should be in the WindowServer process only. In non-mus
-  // CreateNativeDesktopWidget() creates a non-root window, so it should have
-  // a shadow.
-  top_level_window_should_have_shadow = !IsMus();
-#endif
-
   // To start, just create a Widget. This constructs the first ShadowController
   // which will start observing the environment for additional aura::Window
   // initialization. The very first ShadowController in DesktopNativeWidgetAura
   // is created after the call to aura::Window::Init(), so the ShadowController
   // Impl class won't ever see this first Window being initialized.
   name_ = "other_top_level";
-  Widget* other_top_level = CreateNativeDesktopWidget();
+  Widget* other_top_level = CreateTopLevelNativeWidget();
 
   name_ = "top_level";
-  Widget* top_level = CreateNativeDesktopWidget();
+  Widget* top_level = CreateTopLevelNativeWidget();
   top_level->SetBounds(gfx::Rect(100, 100, 320, 200));
 
   EXPECT_FALSE(WidgetHasInProcessShadow(top_level));
@@ -4040,20 +3987,18 @@
 // Tests the case where an intervening owner popup window is destroyed out from
 // under the currently active modal top-level window. In this instance, the
 // remaining top-level windows should be re-enabled.
-TEST_F(WidgetTest, WindowModalOwnerDestroyedEnabledTest) {
+TEST_F(DesktopWidgetTest, WindowModalOwnerDestroyedEnabledTest) {
   // top_level_widget owns owner_dialog_widget which owns owned_dialog_widget.
   Widget top_level_widget;
   Widget owner_dialog_widget;
   Widget owned_dialog_widget;
   // Create the top level widget.
   Widget::InitParams init_params =
-    CreateParams(Widget::InitParams::TYPE_WINDOW);
+      CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.show_state = ui::SHOW_STATE_NORMAL;
   gfx::Rect initial_bounds(0, 0, 500, 500);
   init_params.bounds = initial_bounds;
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-    init_params, &top_level_widget, nullptr);
   top_level_widget.Init(init_params);
   top_level_widget.Show();
 
@@ -4061,7 +4006,7 @@
   // owner_dialog_delegate instance will be destroyed when the dialog
   // is destroyed.
   ModalDialogDelegate* owner_dialog_delegate =
-    new ModalDialogDelegate(ui::MODAL_TYPE_WINDOW);
+      new ModalDialogDelegate(ui::MODAL_TYPE_WINDOW);
 
   init_params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.show_state = ui::SHOW_STATE_NORMAL;
@@ -4069,8 +4014,9 @@
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   init_params.delegate = owner_dialog_delegate;
   init_params.parent = top_level_widget.GetNativeView();
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-    init_params, &owner_dialog_widget, nullptr);
+  init_params.native_widget =
+      new test::TestPlatformNativeWidget<DesktopNativeWidgetAura>(
+          &owner_dialog_widget, false, nullptr);
   owner_dialog_widget.Init(init_params);
 
   HWND owner_hwnd = HWNDForWidget(&owner_dialog_widget);
@@ -4081,7 +4027,7 @@
   // As above, the owned_dialog_instance instance will be destroyed
   // when the dialog is destroyed.
   ModalDialogDelegate* owned_dialog_delegate =
-    new ModalDialogDelegate(ui::MODAL_TYPE_WINDOW);
+      new ModalDialogDelegate(ui::MODAL_TYPE_WINDOW);
 
   init_params = CreateParams(Widget::InitParams::TYPE_WINDOW);
   init_params.show_state = ui::SHOW_STATE_NORMAL;
@@ -4089,13 +4035,15 @@
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   init_params.delegate = owned_dialog_delegate;
   init_params.parent = owner_dialog_widget.GetNativeView();
-  init_params.native_widget = CreatePlatformDesktopNativeWidgetImpl(
-    init_params, &owned_dialog_widget, nullptr);
+  init_params.native_widget =
+      new test::TestPlatformNativeWidget<DesktopNativeWidgetAura>(
+          &owned_dialog_widget, false, nullptr);
   owned_dialog_widget.Init(init_params);
 
   HWND owned_hwnd = HWNDForWidget(&owned_dialog_widget);
 
   owned_dialog_widget.Show();
+  RunPendingMessages();
 
   HWND top_hwnd = HWNDForWidget(&top_level_widget);
 
@@ -4104,6 +4052,7 @@
   EXPECT_TRUE(!!IsWindowEnabled(owned_hwnd));
 
   owner_dialog_widget.CloseNow();
+  RunPendingMessages();
 
   EXPECT_FALSE(!!IsWindow(owner_hwnd));
   EXPECT_FALSE(!!IsWindow(owned_hwnd));
@@ -4126,12 +4075,10 @@
   init_params.show_state = ui::SHOW_STATE_NORMAL;
   init_params.bounds = gfx::Rect(0, 0, 500, 500);
   init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  init_params.native_widget =
-      CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
   widget.Init(init_params);
 }
 
-class CompositingWidgetTest : public views::test::WidgetTest {
+class CompositingWidgetTest : public DesktopWidgetTest {
  public:
   CompositingWidgetTest()
       : widget_types_{Widget::InitParams::TYPE_WINDOW,
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index cbec4ac..7108fbe 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -1689,6 +1689,18 @@
 }
 
 LRESULT HWNDMessageHandler::OnEraseBkgnd(HDC dc) {
+  gfx::Insets insets;
+  if (ui::win::IsAeroGlassEnabled() &&
+      delegate_->GetDwmFrameInsetsInPixels(&insets) && !insets.IsEmpty()) {
+    // This is necessary to avoid white flashing in the titlebar area around the
+    // minimize/maximize/close buttons.
+    RECT client_rect;
+    GetClientRect(hwnd(), &client_rect);
+    base::win::ScopedGDIObject<HBRUSH> brush(CreateSolidBrush(0));
+    // The DC and GetClientRect operate in client area coordinates.
+    RECT rect = {0, 0, client_rect.right, insets.top()};
+    FillRect(dc, &rect, brush.get());
+  }
   // Needed to prevent resize flicker.
   return 1;
 }
@@ -2747,7 +2759,7 @@
   } else if (window_pos->flags & SWP_HIDEWINDOW) {
     delegate_->HandleVisibilityChanged(false);
   }
-
+  UpdateDwmFrame();
   SetMsgHandled(FALSE);
 }
 
@@ -3105,6 +3117,9 @@
   ResetWindowRegion(true, false);
   // The non-client view needs to update too.
   delegate_->HandleFrameChanged();
+  // This calls DwmExtendFrameIntoClientArea which must be called when DWM
+  // composition state changes.
+  UpdateDwmFrame();
 
   if (IsVisible() && IsFrameSystemDrawn()) {
     // For some reason, we need to hide the window after we change from a custom
@@ -3126,6 +3141,16 @@
   EnumChildWindows(hwnd(), &SendDwmCompositionChanged, NULL);
 }
 
+void HWNDMessageHandler::UpdateDwmFrame() {
+  gfx::Insets insets;
+  if (ui::win::IsAeroGlassEnabled() &&
+      delegate_->GetDwmFrameInsetsInPixels(&insets)) {
+    MARGINS margins = {insets.left(), insets.right(), insets.top(),
+                       insets.bottom()};
+    DwmExtendFrameIntoClientArea(hwnd(), &margins);
+  }
+}
+
 void HWNDMessageHandler::GenerateTouchEvent(ui::EventType event_type,
                                             const gfx::Point& point,
                                             size_t id,
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
index bb7fc065..9e51f6a 100644
--- a/ui/views/win/hwnd_message_handler.h
+++ b/ui/views/win/hwnd_message_handler.h
@@ -532,6 +532,9 @@
   // Provides functionality to transition a frame to DWM.
   void PerformDwmTransition();
 
+  // Updates DWM frame to extend into client area if needed.
+  void UpdateDwmFrame();
+
   // Generates a touch event and adds it to the |touch_events| parameter.
   // |point| is the point where the touch was initiated.
   // |id| is the event id associated with the touch event.
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
index fd0d46e4..17907e6 100644
--- a/ui/views/win/hwnd_message_handler_delegate.h
+++ b/ui/views/win/hwnd_message_handler_delegate.h
@@ -94,6 +94,10 @@
   virtual bool GetClientAreaInsets(gfx::Insets* insets,
                                    HMONITOR monitor) const = 0;
 
+  // Returns true if DWM frame should be extended into client area by |insets|.
+  // Insets are specified in screen pixels not DIP because that's what DWM uses.
+  virtual bool GetDwmFrameInsetsInPixels(gfx::Insets* insets) const = 0;
+
   // Returns the minimum and maximum size the window can be resized to by the
   // user.
   virtual void GetMinMaxSize(gfx::Size* min_size,
diff --git a/ui/views_bridge_mac/bridged_native_widget_impl.mm b/ui/views_bridge_mac/bridged_native_widget_impl.mm
index 72c6de9..4f3cfd9 100644
--- a/ui/views_bridge_mac/bridged_native_widget_impl.mm
+++ b/ui/views_bridge_mac/bridged_native_widget_impl.mm
@@ -541,6 +541,7 @@
   [compositor_view setWantsLayer:YES];
   [bridged_view_ addSubview:compositor_view];
 
+  [bridged_view_ setWantsLayer:YES];
   [window_ setContentView:bridged_view_];
 }