diff --git a/DEPS b/DEPS
index e6c4c18..4f4a9dc 100644
--- a/DEPS
+++ b/DEPS
@@ -40,11 +40,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '7f660e84189adc92b1996b4b2e0f5a1ad897dff9',
+  'skia_revision': '85dc96b8cef031cc38d80f63056581c41c57ff7d',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'd587d774e44ab1e843eaf6dbe2e21b8d5148af7e',
+  'v8_revision': 'f71c54e1a6d48be75faeadd49c479e8bf77427cd',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -52,7 +52,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': 'd73f852f8d3332089682b35723f8849c031acd4d',
+  'angle_revision': '61bd9fe145af97dff38bca07c2f51fd6be0d21d6',
   # 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.
@@ -64,7 +64,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': '5535ac7897358d9b5f2f7eb508f4aa44791e501f',
+  'pdfium_revision': '6db6df7735febef44a8b82ed2bd3ff038d4b8698',
   # 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.
@@ -96,7 +96,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': '4b83eaf63b2fa2476db420f1cd940263fc659b2f',
+  'catapult_revision': '2d88298fa830dad08c57694172db93d08ddc4421',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -202,7 +202,7 @@
     Var('chromium_git') + '/external/selenium/py.git' + '@' + '5fd78261a75fe08d27ca4835fb6c5ce4b42275bd',
 
   'src/third_party/libvpx/source/libvpx':
-    Var('chromium_git') + '/webm/libvpx.git' + '@' +  'f4169936ee9f944d3a269b2636085c34010fd853',
+    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '164db8278f68a5ab376500ed6aad99ef7da3e9b0',
 
   'src/third_party/ffmpeg':
     Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + 'a628732d02feec0e7d4d4bba1c0507aa8eed7879',
@@ -404,7 +404,7 @@
 
     # For Linux and Chromium OS.
     'src/third_party/cros_system_api':
-      Var('chromium_git') + '/chromiumos/platform/system_api.git' + '@' + '83f092867190983307074773a93cbcabb88886c3',
+      Var('chromium_git') + '/chromiumos/platform/system_api.git' + '@' + '9c74156d9ec2f4032acf0e193ac09c47b540df48',
 
     # Note that this is different from Android's freetype repo.
     'src/third_party/freetype2/src':
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc
index 7835901..931fe2ea 100644
--- a/android_webview/renderer/aw_content_renderer_client.cc
+++ b/android_webview/renderer/aw_content_renderer_client.cc
@@ -224,7 +224,8 @@
       render_frame->GetRemoteInterfaces()->GetInterface(
           &web_restrictions_service_);
       web_restrictions::mojom::ClientResultPtr result;
-      if (web_restrictions_service_->GetResult(url, &result)) {
+      if (web_restrictions_service_->GetResult(gurl.possibly_invalid_spec(),
+                                               &result)) {
         std::string detailed_error_html =
             supervised_user_error_page::BuildHtmlFromWebRestrictionsResult(
                 result, RenderThread::Get()->GetLocale());
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 7337be7..9e6d3f3f 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -335,21 +335,29 @@
 }
 
 TEST_F(AcceleratorControllerTest, Register) {
-  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
+  const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
+  const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE);
+  const ui::Accelerator accelerator_d(ui::VKEY_D, ui::EF_NONE);
 
-  // The registered accelerator is processed.
+  GetController()->Register(
+      {accelerator_a, accelerator_b, accelerator_c, accelerator_d}, &target);
+
+  // The registered accelerators are processed.
   EXPECT_TRUE(ProcessInController(accelerator_a));
-  EXPECT_EQ(1, target.accelerator_pressed_count());
+  EXPECT_TRUE(ProcessInController(accelerator_b));
+  EXPECT_TRUE(ProcessInController(accelerator_c));
+  EXPECT_TRUE(ProcessInController(accelerator_d));
+  EXPECT_EQ(4, target.accelerator_pressed_count());
 }
 
 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
+  GetController()->Register({accelerator_a}, &target1);
   TestTarget target2;
-  GetController()->Register(accelerator_a, &target2);
+  GetController()->Register({accelerator_a}, &target2);
 
   // If multiple targets are registered with the same accelerator, the target
   // registered later processes the accelerator.
@@ -360,10 +368,9 @@
 
 TEST_F(AcceleratorControllerTest, Unregister) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
-  TestTarget target;
-  GetController()->Register(accelerator_a, &target);
   const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
-  GetController()->Register(accelerator_b, &target);
+  TestTarget target;
+  GetController()->Register({accelerator_a, accelerator_b}, &target);
 
   // Unregistering a different accelerator does not affect the other
   // accelerator.
@@ -380,13 +387,12 @@
 
 TEST_F(AcceleratorControllerTest, UnregisterAll) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
-  TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
   const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
-  GetController()->Register(accelerator_b, &target1);
+  TestTarget target1;
+  GetController()->Register({accelerator_a, accelerator_b}, &target1);
   const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE);
   TestTarget target2;
-  GetController()->Register(accelerator_c, &target2);
+  GetController()->Register({accelerator_c}, &target2);
   GetController()->UnregisterAll(&target1);
 
   // All the accelerators registered for |target1| are no longer processed.
@@ -402,7 +408,7 @@
 TEST_F(AcceleratorControllerTest, Process) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
+  GetController()->Register({accelerator_a}, &target1);
 
   // The registered accelerator is processed.
   EXPECT_TRUE(ProcessInController(accelerator_a));
@@ -417,7 +423,7 @@
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  GetController()->Register({accelerator_a}, &target);
   EXPECT_TRUE(GetController()->IsRegistered(accelerator_a));
   EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a));
   GetController()->UnregisterAll(&target);
@@ -717,11 +723,11 @@
   ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_CONTROL_DOWN);
   accelerator_a.set_type(ui::ET_KEY_PRESSED);
   TestTarget target_a;
-  GetController()->Register(accelerator_a, &target_a);
+  GetController()->Register({accelerator_a}, &target_a);
   ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_CONTROL_DOWN);
   accelerator_b.set_type(ui::ET_KEY_PRESSED);
   TestTarget target_b;
-  GetController()->Register(accelerator_b, &target_b);
+  GetController()->Register({accelerator_b}, &target_b);
 
   ui::test::EventGenerator& generator = GetEventGenerator();
   generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
@@ -813,7 +819,7 @@
   DisableIME();
   ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  GetController()->Register({accelerator_a}, &target);
 
   // The accelerator is processed only once.
   ui::EventProcessor* dispatcher =
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index 4a366cf..76c3e8a 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -226,12 +226,21 @@
       <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_DESKTOP" desc="The label used in the tray popup to tell the user we are casting the desktop.">
         Casting screen to <ph name="RECEIVER_NAME">$1<ex>Living Room</ex></ph>
       </message>
+      <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_DESKTOP_ACCESSIBILITY_STOP" desc="Stop button accessibility label used in the tray popup to tell the user to stop a cast to the desktop.">
+        Stop casting screen to <ph name="RECEIVER_NAME">$1<ex>Living Room</ex></ph>
+      </message>
       <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_TAB" desc="The title label used in the tray popup to tell the user we are casting a tab.">
         Casting <ph name="TAB_NAME">$1<ex>YouTube</ex></ph> to <ph name="RECEIVER_NAME">$2<ex>Living Room</ex></ph>
       </message>
+      <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_TAB_ACCESSIBILITY_STOP" desc="Stop button accessibility label used in the tray popup to tell the user to stop a tab cast.">
+        Stop casting <ph name="TAB_NAME">$1<ex>YouTube</ex></ph> to <ph name="RECEIVER_NAME">$2<ex>Living Room</ex></ph>
+      </message>
       <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_UNKNOWN" desc="The label used when we have detected we are casting but do not know what we are casting or who we are casting to.">
         Casting to an unknown receiver
       </message>
+      <message name="IDS_ASH_STATUS_TRAY_CAST_CAST_UNKNOWN_ACCESSIBILITY_STOP" desc="Stop button accessibility label used in the tray popup to tell the user to stop a cast, but we do not know what we are casting or who we are casting to.">
+        Stop casting to an unknown receiver
+      </message>
       <message name="IDS_ASH_STATUS_TRAY_CAST_DESKTOP" desc="The label used in the tray popup to notify that desktop may be cast.">
         Cast devices available
       </message>
diff --git a/ash/aura/aura_layout_manager_adapter.cc b/ash/aura/aura_layout_manager_adapter.cc
index 6f8a0eb..573095f9 100644
--- a/ash/aura/aura_layout_manager_adapter.cc
+++ b/ash/aura/aura_layout_manager_adapter.cc
@@ -6,18 +6,19 @@
 
 #include "ash/common/wm_layout_manager.h"
 #include "ash/common/wm_window.h"
-#include "ui/aura/window_property.h"
+#include "ui/aura/window.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::AuraLayoutManagerAdapter*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::AuraLayoutManagerAdapter*);
 
 namespace ash {
 namespace {
 // AuraLayoutManagerAdapter is an aura::LayoutManager, so it's owned by the
 // aura::Window it is installed on. This property is used to lookup the
 // AuraLayoutManagerAdapter given only an aura::Window.
-DEFINE_WINDOW_PROPERTY_KEY(AuraLayoutManagerAdapter*,
-                           kAuraLayoutManagerAdapter,
-                           nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(AuraLayoutManagerAdapter*,
+                             kAuraLayoutManagerAdapter,
+                             nullptr);
 }  // namespace
 
 AuraLayoutManagerAdapter::AuraLayoutManagerAdapter(
diff --git a/ash/common/accelerators/accelerator_controller.cc b/ash/common/accelerators/accelerator_controller.cc
index 8da365d..28a4958 100644
--- a/ash/common/accelerators/accelerator_controller.cc
+++ b/ash/common/accelerators/accelerator_controller.cc
@@ -529,10 +529,11 @@
 
 AcceleratorController::~AcceleratorController() {}
 
-void AcceleratorController::Register(const ui::Accelerator& accelerator,
-                                     ui::AcceleratorTarget* target) {
+void AcceleratorController::Register(
+    const std::vector<ui::Accelerator>& accelerators,
+    ui::AcceleratorTarget* target) {
   accelerator_manager_->Register(
-      accelerator, ui::AcceleratorManager::kNormalPriority, target);
+      accelerators, ui::AcceleratorManager::kNormalPriority, target);
 }
 
 void AcceleratorController::Unregister(const ui::Accelerator& accelerator,
@@ -699,13 +700,15 @@
 void AcceleratorController::RegisterAccelerators(
     const AcceleratorData accelerators[],
     size_t accelerators_length) {
+  std::vector<ui::Accelerator> ui_accelerators;
   for (size_t i = 0; i < accelerators_length; ++i) {
     ui::Accelerator accelerator =
         CreateAccelerator(accelerators[i].keycode, accelerators[i].modifiers,
                           accelerators[i].trigger_on_press);
-    Register(accelerator, this);
+    ui_accelerators.push_back(accelerator);
     accelerators_.insert(std::make_pair(accelerator, accelerators[i].action));
   }
+  Register(ui_accelerators, this);
 }
 
 void AcceleratorController::RegisterDeprecatedAccelerators() {
@@ -715,16 +718,18 @@
     actions_with_deprecations_[data->action] = data;
   }
 
+  std::vector<ui::Accelerator> ui_accelerators;
   for (size_t i = 0; i < kDeprecatedAcceleratorsLength; ++i) {
     const AcceleratorData& accelerator_data = kDeprecatedAccelerators[i];
     const ui::Accelerator deprecated_accelerator =
         CreateAccelerator(accelerator_data.keycode, accelerator_data.modifiers,
                           accelerator_data.trigger_on_press);
 
-    Register(deprecated_accelerator, this);
+    ui_accelerators.push_back(deprecated_accelerator);
     accelerators_[deprecated_accelerator] = accelerator_data.action;
     deprecated_accelerators_.insert(deprecated_accelerator);
   }
+  Register(ui_accelerators, this);
 #endif  // defined(OS_CHROMEOS)
 }
 
diff --git a/ash/common/accelerators/accelerator_controller.h b/ash/common/accelerators/accelerator_controller.h
index 8daadfe4..0a39c63 100644
--- a/ash/common/accelerators/accelerator_controller.h
+++ b/ash/common/accelerators/accelerator_controller.h
@@ -10,6 +10,7 @@
 #include <map>
 #include <memory>
 #include <set>
+#include <vector>
 
 #include "ash/ash_export.h"
 #include "ash/common/accelerators/accelerator_table.h"
@@ -60,10 +61,10 @@
     RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION
   };
 
-  // Registers a global keyboard accelerator for the specified target. If
-  // multiple targets are registered for an accelerator, a target registered
-  // later has higher priority.
-  void Register(const ui::Accelerator& accelerator,
+  // Registers global keyboard accelerators for the specified target. If
+  // multiple targets are registered for any given accelerator, a target
+  // registered later has higher priority.
+  void Register(const std::vector<ui::Accelerator>& accelerators,
                 ui::AcceleratorTarget* target);
 
   // Unregisters the specified keyboard accelerator for the specified target.
diff --git a/ash/common/system/chromeos/cast/tray_cast.cc b/ash/common/system/chromeos/cast/tray_cast.cc
index 9352de4..be5df75 100644
--- a/ash/common/system/chromeos/cast/tray_cast.cc
+++ b/ash/common/system/chromeos/cast/tray_cast.cc
@@ -160,7 +160,9 @@
     const mojom::CastSinkPtr& sink = i->sink;
     const mojom::CastRoutePtr& route = i->route;
 
-    if (!route->id.empty()) {
+    // We only want to display casts that came from this machine, since on a
+    // busy network many other people could be casting.
+    if (!route->id.empty() && route->is_local_source) {
       displayed_route_ = route.Clone();
 
       // We want to display different labels inside of the title depending on
@@ -170,27 +172,34 @@
         case ash::mojom::ContentSource::UNKNOWN:
           label()->SetText(
               l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_CAST_CAST_UNKNOWN));
+          stop_button()->SetAccessibleName(l10n_util::GetStringUTF16(
+              IDS_ASH_STATUS_TRAY_CAST_CAST_UNKNOWN_ACCESSIBILITY_STOP));
           break;
         case ash::mojom::ContentSource::TAB:
           label()->SetText(ElideString(l10n_util::GetStringFUTF16(
               IDS_ASH_STATUS_TRAY_CAST_CAST_TAB,
               base::UTF8ToUTF16(route->title), base::UTF8ToUTF16(sink->name))));
+          stop_button()->SetAccessibleName(
+              ElideString(l10n_util::GetStringFUTF16(
+                  IDS_ASH_STATUS_TRAY_CAST_CAST_TAB_ACCESSIBILITY_STOP,
+                  base::UTF8ToUTF16(route->title),
+                  base::UTF8ToUTF16(sink->name))));
           break;
         case ash::mojom::ContentSource::DESKTOP:
           label()->SetText(ElideString(
               l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_CAST_CAST_DESKTOP,
                                          base::UTF8ToUTF16(sink->name))));
+          stop_button()->SetAccessibleName(
+              ElideString(l10n_util::GetStringFUTF16(
+                  IDS_ASH_STATUS_TRAY_CAST_CAST_DESKTOP_ACCESSIBILITY_STOP,
+                  base::UTF8ToUTF16(sink->name))));
           break;
       }
 
       PreferredSizeChanged();
       Layout();
-
-      // If this machine is the source of the activity, then we want to display
-      // it over any other activity. There can be multiple activities if other
-      // devices on the network are casting at the same time.
-      if (route->is_local_source)
-        break;
+      // Only need to update labels once.
+      break;
     }
   }
 }
@@ -547,11 +556,8 @@
 }
 
 bool TrayCast::HasActiveRoute() {
-  if (is_mirror_casting_)
-    return true;
-
   for (const auto& sr : sinks_and_routes_) {
-    if (!sr->route->title.empty())
+    if (!sr->route->title.empty() && sr->route->is_local_source)
       return true;
   }
 
diff --git a/ash/common/system/chromeos/screen_security/screen_tray_item.h b/ash/common/system/chromeos/screen_security/screen_tray_item.h
index a0e94b4..67a531eb 100644
--- a/ash/common/system/chromeos/screen_security/screen_tray_item.h
+++ b/ash/common/system/chromeos/screen_security/screen_tray_item.h
@@ -55,6 +55,7 @@
  protected:
   views::ImageView* icon() { return icon_; }
   views::Label* label() { return label_; }
+  views::Button* stop_button() { return stop_button_; }
 
   // Overridden from views::View:
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
@@ -64,7 +65,7 @@
   ScreenTrayItem* screen_tray_item_;
   views::ImageView* icon_;
   views::Label* label_;
-  views::View* stop_button_;
+  views::Button* stop_button_;
   base::string16 label_text_;
   base::string16 stop_button_text_;
 
diff --git a/ash/common/wm_window.cc b/ash/common/wm_window.cc
index f7e86e1e..25db9e5 100644
--- a/ash/common/wm_window.cc
+++ b/ash/common/wm_window.cc
@@ -36,7 +36,7 @@
 #include "ui/aura/mus/window_tree_client.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_delegate.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/layer_tree_owner.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
@@ -50,11 +50,11 @@
 #include "ui/wm/core/visibility_controller.h"
 #include "ui/wm/core/window_util.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::WmWindow*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::WmWindow*);
 
 namespace ash {
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(WmWindow, kWmWindowKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WmWindow, kWmWindowKey, nullptr);
 
 static_assert(aura::Window::kInitialId == kShellWindowId_Invalid,
               "ids must match");
diff --git a/ash/display/root_window_transformers.cc b/ash/display/root_window_transformers.cc
index 03b77f1..2cb292f 100644
--- a/ash/display/root_window_transformers.cc
+++ b/ash/display/root_window_transformers.cc
@@ -13,7 +13,7 @@
 #include "base/command_line.h"
 #include "third_party/skia/include/core/SkMatrix44.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/dip_util.h"
 #include "ui/display/display.h"
 #include "ui/display/manager/display_manager.h"
@@ -24,15 +24,15 @@
 #include "ui/gfx/transform.h"
 #include "ui/gfx/transform.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(display::Display::Rotation);
+DECLARE_UI_CLASS_PROPERTY_TYPE(display::Display::Rotation);
 
 namespace ash {
 namespace {
 
 #if defined(OS_WIN)
-DEFINE_WINDOW_PROPERTY_KEY(display::Display::Rotation,
-                           kRotationPropertyKey,
-                           display::Display::ROTATE_0);
+DEFINE_UI_CLASS_PROPERTY_KEY(display::Display::Rotation,
+                             kRotationPropertyKey,
+                             display::Display::ROTATE_0);
 #endif
 
 // Round near zero value to zero.
diff --git a/ash/display/window_tree_host_manager.cc b/ash/display/window_tree_host_manager.cc
index ec5943a..a8d449ba 100644
--- a/ash/display/window_tree_host_manager.cc
+++ b/ash/display/window_tree_host_manager.cc
@@ -34,9 +34,9 @@
 #include "ui/aura/client/screen_position_client.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tracker.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/class_property.h"
 #include "ui/base/ime/input_method_factory.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/compositor/compositor.h"
diff --git a/ash/mus/accelerators/accelerator_controller_registrar.cc b/ash/mus/accelerators/accelerator_controller_registrar.cc
index 264b914..ef1f124 100644
--- a/ash/mus/accelerators/accelerator_controller_registrar.cc
+++ b/ash/mus/accelerators/accelerator_controller_registrar.cc
@@ -19,12 +19,11 @@
 namespace mus {
 namespace {
 
-// Callback from registering the accelerator.
-void OnAcceleratorAdded(const ui::Accelerator& accelerator, bool added) {
+// Callback from registering the accelerators.
+void OnAcceleratorsAdded(const std::vector<ui::Accelerator>& accelerators,
+                         bool added) {
   // All our accelerators should be registered, so we expect |added| to be true.
-  DCHECK(added) << "duplicate accelerator key_code=" << accelerator.key_code()
-                << " type=" << accelerator.type()
-                << " modifiers=" << accelerator.modifiers();
+  DCHECK(added) << "Unexpected accelerator vector registration failure.";
 }
 
 }  // namespace
@@ -98,42 +97,16 @@
              : ui::mojom::EventResult::UNHANDLED;
 }
 
-void AcceleratorControllerRegistrar::OnAcceleratorRegistered(
-    const ui::Accelerator& accelerator) {
-  Ids ids;
-  if (!GenerateIds(&ids)) {
-    DVLOG(1) << "max number of accelerators registered, dropping request";
-    return;
-  }
-  DCHECK_EQ(0u, accelerator_to_ids_.count(accelerator));
-  accelerator_to_ids_[accelerator] = ids;
-  DCHECK_EQ(accelerator_to_ids_.size() * 2, ids_.size());
+void AcceleratorControllerRegistrar::OnAcceleratorsRegistered(
+    const std::vector<ui::Accelerator>& accelerators) {
+  std::vector<ui::mojom::AcceleratorPtr> accelerator_vector;
 
-  ui::mojom::EventMatcherPtr event_matcher = ui::CreateKeyMatcher(
-      static_cast<ui::mojom::KeyboardCode>(accelerator.key_code()),
-      accelerator.modifiers());
-  event_matcher->accelerator_phase = ui::mojom::AcceleratorPhase::PRE_TARGET;
-  DCHECK(accelerator.type() == ui::ET_KEY_PRESSED ||
-         accelerator.type() == ui::ET_KEY_RELEASED);
-  event_matcher->type_matcher->type = accelerator.type() == ui::ET_KEY_PRESSED
-                                          ? ui::mojom::EventType::KEY_PRESSED
-                                          : ui::mojom::EventType::KEY_RELEASED;
-
-  ui::mojom::EventMatcherPtr post_event_matcher = event_matcher.Clone();
-  post_event_matcher->accelerator_phase =
-      ui::mojom::AcceleratorPhase::POST_TARGET;
+  for (const ui::Accelerator& accelerator : accelerators)
+    AddAcceleratorToVector(accelerator, accelerator_vector);
 
   window_manager_->window_manager_client()->AddAccelerators(
-      ui::CreateAcceleratorVector(
-          ComputeAcceleratorId(id_namespace_, ids.pre_id),
-          std::move(event_matcher)),
-      base::Bind(OnAcceleratorAdded, accelerator));
-
-  window_manager_->window_manager_client()->AddAccelerators(
-      ui::CreateAcceleratorVector(
-          ComputeAcceleratorId(id_namespace_, ids.post_id),
-          std::move(post_event_matcher)),
-      base::Bind(OnAcceleratorAdded, accelerator));
+      std::move(accelerator_vector),
+      base::Bind(OnAcceleratorsAdded, accelerators));
 }
 
 void AcceleratorControllerRegistrar::OnAcceleratorUnregistered(
@@ -151,6 +124,43 @@
       ComputeAcceleratorId(id_namespace_, ids.post_id));
 }
 
+void AcceleratorControllerRegistrar::AddAcceleratorToVector(
+    const ui::Accelerator& accelerator,
+    std::vector<ui::mojom::AcceleratorPtr>& accelerator_vector) {
+  Ids ids;
+  if (!GenerateIds(&ids)) {
+    LOG(ERROR) << "max number of accelerators registered, dropping request";
+    return;
+  }
+  DCHECK_EQ(0u, accelerator_to_ids_.count(accelerator));
+  accelerator_to_ids_[accelerator] = ids;
+  DCHECK_EQ(accelerator_to_ids_.size() * 2, ids_.size());
+
+  ui::mojom::EventMatcherPtr pre_event_matcher = ui::CreateKeyMatcher(
+      static_cast<ui::mojom::KeyboardCode>(accelerator.key_code()),
+      accelerator.modifiers());
+  pre_event_matcher->accelerator_phase =
+      ui::mojom::AcceleratorPhase::PRE_TARGET;
+  DCHECK(accelerator.type() == ui::ET_KEY_PRESSED ||
+         accelerator.type() == ui::ET_KEY_RELEASED);
+  pre_event_matcher->type_matcher->type =
+      accelerator.type() == ui::ET_KEY_PRESSED
+          ? ui::mojom::EventType::KEY_PRESSED
+          : ui::mojom::EventType::KEY_RELEASED;
+
+  ui::mojom::EventMatcherPtr post_event_matcher = pre_event_matcher.Clone();
+  post_event_matcher->accelerator_phase =
+      ui::mojom::AcceleratorPhase::POST_TARGET;
+
+  accelerator_vector.push_back(
+      ui::CreateAccelerator(ComputeAcceleratorId(id_namespace_, ids.pre_id),
+                            std::move(pre_event_matcher)));
+
+  accelerator_vector.push_back(
+      ui::CreateAccelerator(ComputeAcceleratorId(id_namespace_, ids.post_id),
+                            std::move(post_event_matcher)));
+}
+
 bool AcceleratorControllerRegistrar::GenerateIds(Ids* ids) {
   if (ids_.size() + 2 >= std::numeric_limits<uint16_t>::max())
     return false;
diff --git a/ash/mus/accelerators/accelerator_controller_registrar.h b/ash/mus/accelerators/accelerator_controller_registrar.h
index da2841f..19075df 100644
--- a/ash/mus/accelerators/accelerator_controller_registrar.h
+++ b/ash/mus/accelerators/accelerator_controller_registrar.h
@@ -8,6 +8,7 @@
 #include <stdint.h>
 
 #include <map>
+#include <vector>
 
 #include "ash/mus/accelerators/accelerator_handler.h"
 #include "base/macros.h"
@@ -38,13 +39,21 @@
   ui::mojom::EventResult OnAccelerator(uint32_t id,
                                        const ui::Event& event) override;
 
-  // ui::AcceleratorManagerDelegate:
-  void OnAcceleratorRegistered(const ui::Accelerator& accelerator) override;
-  void OnAcceleratorUnregistered(const ui::Accelerator& accelerator) override;
-
  private:
   friend class AcceleratorControllerRegistrarTestApi;
 
+  // ui::AcceleratorManagerDelegate:
+  void OnAcceleratorsRegistered(
+      const std::vector<ui::Accelerator>& accelerators) override;
+  void OnAcceleratorUnregistered(const ui::Accelerator& accelerator) override;
+
+  // Generate id and add the corresponding accelerator to accelerator vector.
+  // Creates a PRE_TARGET and POST_TARGET mojom accelerators for the provided
+  // |accelerator| and adds them to the provided |accelerator_vector|.
+  void AddAcceleratorToVector(
+      const ui::Accelerator& accelerator,
+      std::vector<ui::mojom::AcceleratorPtr>& accelerator_vector);
+
   // The flow of accelerators in ash is:
   // . wm::AcceleratorFilter() sees events first as it's a pre-target handler.
   // . AcceleratorFilter forwards to its delegate, which indirectly is
diff --git a/ash/mus/accelerators/accelerator_controller_unittest.cc b/ash/mus/accelerators/accelerator_controller_unittest.cc
index a071772..395ad2d 100644
--- a/ash/mus/accelerators/accelerator_controller_unittest.cc
+++ b/ash/mus/accelerators/accelerator_controller_unittest.cc
@@ -344,21 +344,30 @@
 #endif  // !defined(OS_WIN)
 
 TEST_F(AcceleratorControllerTest, Register) {
-  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
+  const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
+  const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE);
+  const ui::Accelerator accelerator_d(ui::VKEY_D, ui::EF_NONE);
 
-  // The registered accelerator is processed.
+  GetController()->Register(
+      {accelerator_a, accelerator_b, accelerator_c, accelerator_d}, &target);
+
+  // The registered accelerators are processed.
   EXPECT_TRUE(ProcessInController(accelerator_a));
-  EXPECT_EQ(1, target.accelerator_pressed_count());
+  EXPECT_TRUE(ProcessInController(accelerator_b));
+  EXPECT_TRUE(ProcessInController(accelerator_c));
+  EXPECT_TRUE(ProcessInController(accelerator_d));
+  EXPECT_EQ(4, target.accelerator_pressed_count());
 }
 
 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
+  GetController()->Register({accelerator_a}, &target1);
+
   TestTarget target2;
-  GetController()->Register(accelerator_a, &target2);
+  GetController()->Register({accelerator_a}, &target2);
 
   // If multiple targets are registered with the same accelerator, the target
   // registered later processes the accelerator.
@@ -368,11 +377,10 @@
 }
 
 TEST_F(AcceleratorControllerTest, Unregister) {
-  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
-  GetController()->Register(accelerator_b, &target);
+  GetController()->Register({accelerator_a, accelerator_b}, &target);
 
   // Unregistering a different accelerator does not affect the other
   // accelerator.
@@ -388,14 +396,13 @@
 }
 
 TEST_F(AcceleratorControllerTest, UnregisterAll) {
-  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
+  const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
-  GetController()->Register(accelerator_b, &target1);
+  GetController()->Register({accelerator_a, accelerator_b}, &target1);
   const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE);
   TestTarget target2;
-  GetController()->Register(accelerator_c, &target2);
+  GetController()->Register({accelerator_c}, &target2);
   GetController()->UnregisterAll(&target1);
 
   // All the accelerators registered for |target1| are no longer processed.
@@ -411,7 +418,7 @@
 TEST_F(AcceleratorControllerTest, Process) {
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   TestTarget target1;
-  GetController()->Register(accelerator_a, &target1);
+  GetController()->Register({accelerator_a}, &target1);
 
   // The registered accelerator is processed.
   EXPECT_TRUE(ProcessInController(accelerator_a));
@@ -426,7 +433,7 @@
   const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN);
   TestTarget target;
-  GetController()->Register(accelerator_a, &target);
+  GetController()->Register({accelerator_a}, &target);
   EXPECT_TRUE(GetController()->IsRegistered(accelerator_a));
   EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a));
   GetController()->UnregisterAll(&target);
diff --git a/ash/mus/bridge/workspace_event_handler_mus.cc b/ash/mus/bridge/workspace_event_handler_mus.cc
index ae03b4f3e..1b2a1a9 100644
--- a/ash/mus/bridge/workspace_event_handler_mus.cc
+++ b/ash/mus/bridge/workspace_event_handler_mus.cc
@@ -5,15 +5,15 @@
 #include "ash/mus/bridge/workspace_event_handler_mus.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::WorkspaceEventHandlerMus*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::mus::WorkspaceEventHandlerMus*);
 
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(ash::mus::WorkspaceEventHandlerMus*,
-                           kWorkspaceEventHandlerProperty,
-                           nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(ash::mus::WorkspaceEventHandlerMus*,
+                             kWorkspaceEventHandlerProperty,
+                             nullptr);
 
 }  // namespace
 
diff --git a/ash/mus/disconnected_app_handler.cc b/ash/mus/disconnected_app_handler.cc
index cfc75fc4..21ca7c61f 100644
--- a/ash/mus/disconnected_app_handler.cc
+++ b/ash/mus/disconnected_app_handler.cc
@@ -7,17 +7,17 @@
 #include "ash/common/wm_window.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::DisconnectedAppHandler*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::mus::DisconnectedAppHandler*);
 
 namespace ash {
 namespace mus {
 namespace {
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(DisconnectedAppHandler,
-                                 kDisconnectedAppHandlerKey,
-                                 nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(DisconnectedAppHandler,
+                                   kDisconnectedAppHandlerKey,
+                                   nullptr);
 
 }  // namespace
 
diff --git a/ash/mus/move_event_handler.cc b/ash/mus/move_event_handler.cc
index 6a4c1734..74305653 100644
--- a/ash/mus/move_event_handler.cc
+++ b/ash/mus/move_event_handler.cc
@@ -9,18 +9,18 @@
 #include "services/ui/public/interfaces/cursor.mojom.h"
 #include "ui/aura/mus/window_manager_delegate.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/events/event.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::MoveEventHandler*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::mus::MoveEventHandler*);
 
 namespace {
 
 // Key used for storing identifier sent to clients for windows.
-DEFINE_WINDOW_PROPERTY_KEY(ash::mus::MoveEventHandler*,
-                           kWmMoveEventHandler,
-                           nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(ash::mus::MoveEventHandler*,
+                             kWmMoveEventHandler,
+                             nullptr);
 
 }  // namespace
 
diff --git a/ash/mus/non_client_frame_controller.cc b/ash/mus/non_client_frame_controller.cc
index 3744dc0..e14f4c9 100644
--- a/ash/mus/non_client_frame_controller.cc
+++ b/ash/mus/non_client_frame_controller.cc
@@ -34,22 +34,22 @@
 #include "ui/aura/mus/window_manager_delegate.h"
 #include "ui/aura/mus/window_port_mus.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/layer.h"
 #include "ui/gfx/geometry/vector2d.h"
 #include "ui/views/widget/native_widget_aura.h"
 #include "ui/views/widget/widget.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::NonClientFrameController*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::mus::NonClientFrameController*);
 
 namespace ash {
 namespace mus {
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(NonClientFrameController*,
-                           kNonClientFrameControllerKey,
-                           nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(NonClientFrameController*,
+                             kNonClientFrameControllerKey,
+                             nullptr);
 
 // This class supports draggable app windows that paint their own custom frames.
 // It uses empty insets, doesn't paint anything, and hit tests return HTCAPTION.
diff --git a/ash/mus/shadow.cc b/ash/mus/shadow.cc
index 0f9cacb5..c37a5a2a 100644
--- a/ash/mus/shadow.cc
+++ b/ash/mus/shadow.cc
@@ -6,19 +6,19 @@
 
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/resources/grit/ui_resources.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::Shadow*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::mus::Shadow*);
 
 namespace ash {
 namespace mus {
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(Shadow*, kShadowProperty, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(Shadow*, kShadowProperty, nullptr);
 
 // The opacity used for active shadow when animating between
 // inactive/active shadow.
diff --git a/ash/mus/window_manager.cc b/ash/mus/window_manager.cc
index 8ef14a1..bcf57726 100644
--- a/ash/mus/window_manager.cc
+++ b/ash/mus/window_manager.cc
@@ -45,7 +45,7 @@
 #include "ui/aura/mus/window_tree_client.h"
 #include "ui/aura/mus/window_tree_host_mus.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/display/display_observer.h"
 #include "ui/events/mojo/event.mojom.h"
diff --git a/ash/mus/window_properties.cc b/ash/mus/window_properties.cc
index c2ba9a8..cb922fc 100644
--- a/ash/mus/window_properties.cc
+++ b/ash/mus/window_properties.cc
@@ -4,14 +4,14 @@
 
 #include "ash/mus/window_properties.h"
 
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
 namespace ash {
 namespace mus {
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kRenderTitleAreaProperty, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kRenderTitleAreaProperty, false);
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kWindowIsJanky, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kWindowIsJanky, false);
 
 }  // namespace mus
 }  // namespace ash
diff --git a/ash/root_window_settings.cc b/ash/root_window_settings.cc
index a0fd29d..050b1cd 100644
--- a/ash/root_window_settings.cc
+++ b/ash/root_window_settings.cc
@@ -4,17 +4,18 @@
 
 #include "ash/root_window_settings.h"
 
+#include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/display/types/display_constants.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::RootWindowSettings*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::RootWindowSettings*);
 
 namespace ash {
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(RootWindowSettings,
-                                 kRootWindowSettingsKey,
-                                 NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(RootWindowSettings,
+                                   kRootWindowSettingsKey,
+                                   NULL);
 
 RootWindowSettings::RootWindowSettings()
     : display_id(display::kInvalidDisplayId), controller(NULL) {}
diff --git a/ash/test/ui_controls_factory_ash.cc b/ash/test/ui_controls_factory_ash.cc
index 1dff879..d0606357 100644
--- a/ash/test/ui_controls_factory_ash.cc
+++ b/ash/test/ui_controls_factory_ash.cc
@@ -10,13 +10,13 @@
 #include "ui/aura/client/screen_position_client.h"
 #include "ui/aura/env.h"
 #include "ui/aura/test/ui_controls_factory_aura.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/class_property.h"
 #include "ui/base/test/ui_controls.h"
 #include "ui/base/test/ui_controls_aura.h"
 #include "ui/display/screen.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ui_controls::UIControlsAura*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(ui_controls::UIControlsAura*)
 
 namespace ash {
 namespace test {
@@ -25,7 +25,7 @@
 using ui_controls::UIControlsAura;
 using ui_controls::MouseButton;
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(UIControlsAura, kUIControlsKey, NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(UIControlsAura, kUIControlsKey, NULL);
 
 // Returns the UIControls object for RootWindow.
 // kUIControlsKey is owned property and UIControls object
diff --git a/ash/touch/touch_uma.cc b/ash/touch/touch_uma.cc
index 32bf2de7..500db08 100644
--- a/ash/touch/touch_uma.cc
+++ b/ash/touch/touch_uma.cc
@@ -10,7 +10,7 @@
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/events/event.h"
 #include "ui/events/event_utils.h"
 #include "ui/gfx/geometry/point_conversions.h"
@@ -41,10 +41,12 @@
   base::TimeTicks last_mt_time_;
 };
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(WindowTouchDetails, kWindowTouchDetails, NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowTouchDetails,
+                                   kWindowTouchDetails,
+                                   NULL);
 }
 
-DECLARE_WINDOW_PROPERTY_TYPE(WindowTouchDetails*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(WindowTouchDetails*);
 
 namespace ash {
 
diff --git a/ash/wm/window_animations.cc b/ash/wm/window_animations.cc
index 3eaf6eb2..190a8e8 100644
--- a/ash/wm/window_animations.cc
+++ b/ash/wm/window_animations.cc
@@ -23,7 +23,7 @@
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/compositor_observer.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_animation_observer.h"
diff --git a/ash/wm/window_properties.cc b/ash/wm/window_properties.cc
index e4d4c3e..1364c08 100644
--- a/ash/wm/window_properties.cc
+++ b/ash/wm/window_properties.cc
@@ -5,35 +5,35 @@
 #include "ash/wm/window_properties.h"
 
 #include "ash/common/wm/window_state.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(ash::wm::WindowState*);
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(ASH_EXPORT, ash::WidgetCreationType);
+DECLARE_UI_CLASS_PROPERTY_TYPE(ash::wm::WindowState*);
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_EXPORT, ash::WidgetCreationType);
 
 namespace ash {
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kLockedToRootKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kLockedToRootKey, false);
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kPanelAttachedKey, true);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kPanelAttachedKey, true);
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Rect, kRestoreBoundsOverrideKey, NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect, kRestoreBoundsOverrideKey, NULL);
 
-DEFINE_WINDOW_PROPERTY_KEY(ui::WindowShowState,
-                           kRestoreShowStateOverrideKey,
-                           ui::SHOW_STATE_DEFAULT);
+DEFINE_UI_CLASS_PROPERTY_KEY(ui::WindowShowState,
+                             kRestoreShowStateOverrideKey,
+                             ui::SHOW_STATE_DEFAULT);
 
-DEFINE_WINDOW_PROPERTY_KEY(ShelfID, kShelfIDKey, kInvalidShelfID);
+DEFINE_UI_CLASS_PROPERTY_KEY(ShelfID, kShelfIDKey, kInvalidShelfID);
 
-DEFINE_WINDOW_PROPERTY_KEY(int32_t, kShelfItemTypeKey, TYPE_UNDEFINED);
+DEFINE_UI_CLASS_PROPERTY_KEY(int32_t, kShelfItemTypeKey, TYPE_UNDEFINED);
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kSnapChildrenToPixelBoundary, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kSnapChildrenToPixelBoundary, false);
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kUsesScreenCoordinatesKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kUsesScreenCoordinatesKey, false);
 
-DEFINE_WINDOW_PROPERTY_KEY(WidgetCreationType,
-                           kWidgetCreationTypeKey,
-                           WidgetCreationType::INTERNAL);
+DEFINE_UI_CLASS_PROPERTY_KEY(WidgetCreationType,
+                             kWidgetCreationTypeKey,
+                             WidgetCreationType::INTERNAL);
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(wm::WindowState, kWindowStateKey, NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(ash::wm::WindowState, kWindowStateKey, NULL);
 
 }  // namespace ash
diff --git a/ash/wm/window_properties.h b/ash/wm/window_properties.h
index e4cf4dbf..c0c3d035 100644
--- a/ash/wm/window_properties.h
+++ b/ash/wm/window_properties.h
@@ -9,12 +9,13 @@
 
 #include "ash/ash_export.h"
 #include "ash/common/shelf/shelf_item_types.h"
+#include "ui/base/class_property.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/gfx/geometry/rect.h"
 
 namespace aura {
 template <typename T>
-struct WindowProperty;
+using WindowProperty = ui::ClassProperty<T>;
 }
 
 namespace ash {
diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni
index 0252503c..a0e9940 100644
--- a/build/config/sanitizers/sanitizers.gni
+++ b/build/config/sanitizers/sanitizers.gni
@@ -140,7 +140,7 @@
 }
 
 if (use_afl && sanitizer_coverage_flags == "") {
-  sanitizer_coverage_flags = "trace-pc"
+  sanitizer_coverage_flags = "trace-pc-guard"
 } else if (use_sanitizer_coverage && sanitizer_coverage_flags == "") {
   sanitizer_coverage_flags = "edge,indirect-calls,8bit-counters"
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index 1e88167..b1d1ace 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -77,6 +77,7 @@
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
 import org.chromium.chrome.browser.gsa.ContextReporter;
 import org.chromium.chrome.browser.gsa.GSAAccountChangeListener;
+import org.chromium.chrome.browser.gsa.GSAHelper;
 import org.chromium.chrome.browser.gsa.GSAState;
 import org.chromium.chrome.browser.help.HelpAndFeedback;
 import org.chromium.chrome.browser.history.HistoryManagerUtils;
@@ -735,8 +736,8 @@
 
         if (syncController != null && syncController.isSyncingUrlsWithKeystorePassphrase()) {
             assert syncService != null;
-            mContextReporter = ((ChromeApplication) getApplicationContext()).createGsaHelper()
-                    .getContextReporter(this);
+            mContextReporter =
+                    ChromeApplication.createObject(GSAHelper.class).getContextReporter(this);
 
             if (mSyncStateChangedListener != null) {
                 syncService.removeSyncStateChangedListener(mSyncStateChangedListener);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java
index 96c9c59a..541ec84a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java
@@ -80,7 +80,7 @@
         assert !mIsStarted;
 
         ApplicationStatus.registerApplicationStateListener(createApplicationStateListener());
-        mVariationsSession = mApplication.createVariationsSession();
+        mVariationsSession = ChromeApplication.createObject(VariationsSession.class);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
index 2a1e095b..f591d4f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
@@ -29,22 +29,13 @@
 import org.chromium.chrome.browser.datausage.ExternalDataUseObserver;
 import org.chromium.chrome.browser.document.DocumentActivity;
 import org.chromium.chrome.browser.document.IncognitoDocumentActivity;
-import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
 import org.chromium.chrome.browser.feedback.EmptyFeedbackReporter;
 import org.chromium.chrome.browser.feedback.FeedbackReporter;
-import org.chromium.chrome.browser.gsa.GSAHelper;
-import org.chromium.chrome.browser.help.HelpAndFeedback;
 import org.chromium.chrome.browser.init.InvalidStartupDialog;
-import org.chromium.chrome.browser.instantapps.InstantAppsHandler;
-import org.chromium.chrome.browser.locale.LocaleManager;
 import org.chromium.chrome.browser.metrics.UmaUtils;
-import org.chromium.chrome.browser.metrics.VariationsSession;
-import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
 import org.chromium.chrome.browser.net.qualityprovider.ExternalEstimateProviderAndroid;
 import org.chromium.chrome.browser.omaha.RequestGenerator;
 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
-import org.chromium.chrome.browser.physicalweb.PhysicalWebBleClient;
-import org.chromium.chrome.browser.physicalweb.PhysicalWebEnvironment;
 import org.chromium.chrome.browser.policy.PolicyAuditor;
 import org.chromium.chrome.browser.preferences.LocationSettings;
 import org.chromium.chrome.browser.preferences.PreferencesLauncher;
@@ -122,13 +113,6 @@
     }
 
     /**
-     * Returns a new instance of VariationsSession.
-     */
-    public VariationsSession createVariationsSession() {
-        return new VariationsSession();
-    }
-
-    /**
      * Return a {@link AuthenticatorNavigationInterceptor} for the given {@link Tab}.
      * This can be null if there are no applicable interceptor to be built.
      */
@@ -288,20 +272,6 @@
     }
 
     /**
-     * @return An instance of ExternalAuthUtils to be installed as a singleton.
-     */
-    public ExternalAuthUtils createExternalAuthUtils() {
-        return new ExternalAuthUtils();
-    }
-
-    /**
-     * Returns a new instance of HelpAndFeedback.
-     */
-    public HelpAndFeedback createHelpAndFeedback() {
-        return new HelpAndFeedback();
-    }
-
-    /**
      * @return An instance of {@link CustomTabsConnection}. Should not be called
      * outside of {@link CustomTabsConnection#getInstance()}.
      */
@@ -309,39 +279,6 @@
         return new CustomTabsConnection(this);
     }
 
-    /**
-     * @return A new {@link PhysicalWebBleClient} instance.
-     */
-    public PhysicalWebBleClient createPhysicalWebBleClient() {
-        return new PhysicalWebBleClient();
-    }
-
-    /**
-     * @return A new {@link PhysicalWebEnvironment} instance.
-     */
-    public PhysicalWebEnvironment createPhysicalWebEnvironment() {
-        return new PhysicalWebEnvironment();
-    }
-
-    public InstantAppsHandler createInstantAppsHandler() {
-        return new InstantAppsHandler();
-    }
-
-    /**
-     * @return An instance of {@link GSAHelper} that handles the start point of chrome's integration
-     *         with GSA.
-     */
-    public GSAHelper createGsaHelper() {
-        return new GSAHelper();
-    }
-
-    /**
-     * @return An instance of {@link LocaleManager} that handles customized locale related logic.
-     */
-    public LocaleManager createLocaleManager() {
-        return new LocaleManager();
-    }
-
    /**
      * Registers various policy providers with the policy manager.
      * Providers are registered in increasing order of precedence so overrides should call this
@@ -362,13 +299,6 @@
     }
 
     /**
-     * @return An instance of MultiWindowUtils to be installed as a singleton.
-     */
-    public MultiWindowUtils createMultiWindowUtils() {
-        return new MultiWindowUtils();
-    }
-
-    /**
      * @return An instance of RequestGenerator to be used for Omaha XML creation.  Will be null if
      *         a generator is unavailable.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java
index c92e632..255dbcc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java
@@ -30,6 +30,7 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProvider;
 import org.chromium.chrome.browser.crash.MinidumpUploadService;
+import org.chromium.chrome.browser.gsa.GSAHelper;
 import org.chromium.chrome.browser.init.ProcessInitializationHandler;
 import org.chromium.chrome.browser.locale.LocaleManager;
 import org.chromium.chrome.browser.media.MediaCaptureNotificationService;
@@ -225,13 +226,11 @@
             }
         });
 
-        final ChromeApplication application = (ChromeApplication) mAppContext;
-
         mDeferredTasks.add(new Runnable() {
             @Override
             public void run() {
                 // Starts syncing with GSA.
-                application.createGsaHelper().startSync();
+                ChromeApplication.createObject(GSAHelper.class).startSync();
             }
         });
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
index 9329a451..8c3437c2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
@@ -123,7 +123,7 @@
                     return;
                 }
                 webContents.postMessageToFrame(
-                        frameName, message, targetOrigin, sentPortIds);
+                        frameName, message, mOrigin.toString(), targetOrigin, sentPortIds);
             }
 
             @Override
@@ -150,6 +150,7 @@
     }
 
     private void disconnectChannel() {
+        if (mChannel == null) return;
         mChannel[0].close();
         mChannel = null;
         mSenderDelegate = null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
index e1a78dca..20ab9c61 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
@@ -17,7 +17,6 @@
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.GoogleApiAvailability;
 
-import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.VisibleForTesting;
@@ -51,9 +50,7 @@
      */
     public static ExternalAuthUtils getInstance() {
         if (sInstance.get() == null) {
-            ChromeApplication application =
-                    (ChromeApplication) ContextUtils.getApplicationContext();
-            sInstance.compareAndSet(null, application.createExternalAuthUtils());
+            sInstance.compareAndSet(null, ChromeApplication.createObject(ExternalAuthUtils.class));
         }
         return sInstance.get();
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gsa/GSAServiceClient.java b/chrome/android/java/src/org/chromium/chrome/browser/gsa/GSAServiceClient.java
index 6983bca..bc7af23d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gsa/GSAServiceClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gsa/GSAServiceClient.java
@@ -175,8 +175,7 @@
         mHandler = new IncomingHandler();
         mMessenger = new Messenger(mHandler);
         mConnection = new GSAServiceConnection();
-        mGsaHelper = ((ChromeApplication) mContext.getApplicationContext())
-                .createGsaHelper();
+        mGsaHelper = ChromeApplication.createObject(GSAHelper.class);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/help/HelpAndFeedback.java b/chrome/android/java/src/org/chromium/chrome/browser/help/HelpAndFeedback.java
index 07d2002..7a6f81e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/help/HelpAndFeedback.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/help/HelpAndFeedback.java
@@ -41,8 +41,7 @@
     public static HelpAndFeedback getInstance(Context context) {
         ThreadUtils.assertOnUiThread();
         if (sInstance == null) {
-            sInstance = ((ChromeApplication) context.getApplicationContext())
-                    .createHelpAndFeedback();
+            sInstance = ChromeApplication.createObject(HelpAndFeedback.class);
         }
         return sInstance;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
index e75ee6c8..427469d6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
@@ -105,8 +105,7 @@
     public static InstantAppsHandler getInstance() {
         synchronized (INSTANCE_LOCK) {
             if (sInstance == null) {
-                Context appContext = ContextUtils.getApplicationContext();
-                sInstance = ((ChromeApplication) appContext).createInstantAppsHandler();
+                sInstance = ChromeApplication.createObject(InstantAppsHandler.class);
             }
         }
         return sInstance;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
index 8508e48..9f00540 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
@@ -70,8 +70,7 @@
     public static LocaleManager getInstance() {
         assert ThreadUtils.runningOnUiThread();
         if (sInstance == null) {
-            sInstance = ((ChromeApplication) ContextUtils.getApplicationContext())
-                    .createLocaleManager();
+            sInstance = ChromeApplication.createObject(LocaleManager.class);
         }
         return sInstance;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
index bb17f87..16b89f2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
@@ -17,7 +17,6 @@
 import org.chromium.base.ActivityState;
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ApplicationStatus.ActivityStateListener;
-import org.chromium.base.ContextUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.chrome.browser.ChromeApplication;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
@@ -57,9 +56,7 @@
      */
     public static MultiWindowUtils getInstance() {
         if (sInstance.get() == null) {
-            ChromeApplication application =
-                    (ChromeApplication) ContextUtils.getApplicationContext();
-            sInstance.compareAndSet(null, application.createMultiWindowUtils());
+            sInstance.compareAndSet(null, ChromeApplication.createObject(MultiWindowUtils.class));
         }
         return sInstance.get();
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
index f3c79fc3f..9d321fd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
@@ -211,6 +211,11 @@
         return this;
     }
 
+    /** Returns whether a small icon bitmap was set. */
+    public boolean hasSmallIconBitmap() {
+        return mSmallIconBitmap != null;
+    }
+
     /**
      * Sets the PendingIntent to send when the notification is clicked.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/WebApkNotificationClient.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/WebApkNotificationClient.java
index 7172c5a..7d34867 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/WebApkNotificationClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/WebApkNotificationClient.java
@@ -4,6 +4,11 @@
 
 package org.chromium.chrome.browser.notifications;
 
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Build;
 import android.os.RemoteException;
 
 import org.chromium.base.ContextUtils;
@@ -38,13 +43,27 @@
      * display. Handing over the notification makes the notification look like it originated from
      * the WebAPK - not Chrome - in the Android UI.
      */
-    public static void notifyNotification(String webApkPackage,
+    public static void notifyNotification(final String webApkPackage,
             final NotificationBuilderBase notificationBuilder, final String platformTag,
             final int platformID) {
         final ApiUseCallback connectionCallback = new ApiUseCallback() {
             @Override
             public void useApi(IWebApkApi api) throws RemoteException {
-                notificationBuilder.setSmallIcon(api.getSmallIconId());
+                int smallIconId = api.getSmallIconId();
+                // Prior to Android M, the small icon had to be from the resources of the app whose
+                // NotificationManager is used in {@link NotificationManager#notify()}. On Android
+                // M+, the small icon has to be from the resources of the app whose context is
+                // passed to the {@link Notification.Builder()} constructor.
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                    // Android M+ introduced
+                    // {@link Notification.Builder#setSmallIcon(Bitmap icon)}.
+                    if (!notificationBuilder.hasSmallIconBitmap()) {
+                        notificationBuilder.setSmallIcon(
+                                decodeImageResource(webApkPackage, smallIconId));
+                    }
+                } else {
+                    notificationBuilder.setSmallIcon(smallIconId);
+                }
                 api.notifyNotification(platformTag, platformID, notificationBuilder.build());
             }
         };
@@ -67,4 +86,15 @@
         WebApkServiceConnectionManager.getInstance().connect(
                 ContextUtils.getApplicationContext(), webApkPackage, connectionCallback);
     }
+
+    /** Decodes bitmap from WebAPK's resources. */
+    private static Bitmap decodeImageResource(String webApkPackage, int resourceId) {
+        PackageManager packageManager = ContextUtils.getApplicationContext().getPackageManager();
+        try {
+            Resources resources = packageManager.getResourcesForApplication(webApkPackage);
+            return BitmapFactory.decodeResource(resources, resourceId);
+        } catch (PackageManager.NameNotFoundException e) {
+            return null;
+        }
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBleClient.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBleClient.java
index 69139e2..d71bac5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBleClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBleClient.java
@@ -5,6 +5,8 @@
 package org.chromium.chrome.browser.physicalweb;
 
 import android.app.Activity;
+import android.os.Handler;
+import android.os.Looper;
 
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.nearby.Nearby;
@@ -12,7 +14,6 @@
 import com.google.android.gms.nearby.messages.MessageFilter;
 import com.google.android.gms.nearby.messages.MessageListener;
 
-import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.chrome.browser.ChromeApplication;
 
@@ -37,17 +38,27 @@
     protected static class BackgroundMessageListener extends MessageListener {
         @Override
         public void onFound(Message message) {
-            String url = PhysicalWebBleClient.getInstance().getUrlFromMessage(message);
+            final String url = PhysicalWebBleClient.getInstance().getUrlFromMessage(message);
             if (url != null) {
-                UrlManager.getInstance().addUrl(new UrlInfo(url));
+                new Handler(Looper.getMainLooper()).post(new Runnable() {
+                    @Override
+                    public void run() {
+                        UrlManager.getInstance().addUrl(new UrlInfo(url));
+                    }
+                });
             }
         }
 
         @Override
         public void onLost(Message message) {
-            String url = PhysicalWebBleClient.getInstance().getUrlFromMessage(message);
+            final String url = PhysicalWebBleClient.getInstance().getUrlFromMessage(message);
             if (url != null) {
-                UrlManager.getInstance().removeUrl(new UrlInfo(url));
+                new Handler(Looper.getMainLooper()).post(new Runnable() {
+                    @Override
+                    public void run() {
+                        UrlManager.getInstance().removeUrl(new UrlInfo(url));
+                    }
+                });
             }
         }
     };
@@ -58,8 +69,7 @@
      */
     public static PhysicalWebBleClient getInstance() {
         if (sInstance == null) {
-            sInstance = ((ChromeApplication) ContextUtils.getApplicationContext())
-                    .createPhysicalWebBleClient();
+            sInstance = ChromeApplication.createObject(PhysicalWebBleClient.class);
         }
         return sInstance;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebEnvironment.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebEnvironment.java
index fe235b21..e4ba572 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebEnvironment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebEnvironment.java
@@ -22,7 +22,7 @@
     public static PhysicalWebEnvironment getInstance(ChromeApplication chromeApplication) {
         synchronized (INSTANCE_LOCK) {
             if (sInstance == null) {
-                sInstance = chromeApplication.createPhysicalWebEnvironment();
+                sInstance = ChromeApplication.createObject(PhysicalWebEnvironment.class);
             }
         }
         return sInstance;
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 b5b67d9c..7bc8623 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -10,7 +10,7 @@
 <translation id="1121094540300013208">የአጠቃቀም እና የብልሽት ሪፖርቶች</translation>
 <translation id="1137305377394488060">ያለፈው ሰዓት</translation>
 <translation id="1145536944570833626">ነባሩን ውሂብ ይሰርዙ።</translation>
-<translation id="1146678959555564648">ቪአር አስገባ</translation>
+<translation id="1146678959555564648">ምናባዊ ዕውነታ አስገባ</translation>
 <translation id="1178581264944972037">ለአፍታ አቁም</translation>
 <translation id="1181037720776840403">አስወግድ</translation>
 <translation id="1197267115302279827">ዕልባቶችን ውሰድ</translation>
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">ካሜራዎን ይድረሱ</translation>
 <translation id="1656489000284462475">መውሰጃ</translation>
 <translation id="1661474178782861119">ተጨማሪ ጽሑፎች በቅርቡ ይታያሉ። የእርስዎን ምሽት ይዝናኑበት።</translation>
+<translation id="1670399744444387456">መሠረታዊ</translation>
 <translation id="1671236975893690980">ውርድ በመጠባበቅ ላይ...</translation>
 <translation id="169033420419426091">በጎደለ ኤስዲ ካርድ ምክንያት <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation>
 <translation id="1709438864123551175">የውሂብ አስቀማጭ</translation>
@@ -577,7 +578,7 @@
 <translation id="6937422995269576720">የካርድ ቁጥሩ ልክ ያልሆነ ነው</translation>
 <translation id="6945221475159498467">ይምረጡ</translation>
 <translation id="6963766334940102469">ዕልባቶችን ሰርዝ</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="6973630695168034713">አቃፊዎች</translation>
 <translation id="6978479750597523876">የትርጉም ቅንብሮችን ዳግም ይጀመሩ</translation>
 <translation id="6981982820502123353">ተደራሽነት</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 4ab7cf4..f765f6a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">الدخول إلى الكاميرا</translation>
 <translation id="1656489000284462475">الاستلام</translation>
 <translation id="1661474178782861119">ستظهر المزيد من المقالات قريبًا. استمتع بليلتك.</translation>
+<translation id="1670399744444387456">الأساسية</translation>
 <translation id="1671236975893690980">التنزيل معلّق...</translation>
 <translation id="169033420419426091">‏أخفق تنزيل الملف <ph name="FILE_NAME" /> بسبب عدم وجود بطاقة SD.</translation>
 <translation id="1709438864123551175">توفير البيانات</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 7b922f4..0648bc4 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Достъп до камерата</translation>
 <translation id="1656489000284462475">Вземане</translation>
 <translation id="1661474178782861119">Скоро ще се покажат още статии. Приятна вечер.</translation>
+<translation id="1670399744444387456">Основни</translation>
 <translation id="1671236975893690980">Предстои изтегляне…</translation>
 <translation id="169033420419426091">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради липсваща SD карта.</translation>
 <translation id="1709438864123551175">Икономия на данни</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 a886de8..93bf5d1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Accés a la càmera</translation>
 <translation id="1656489000284462475">Recollida</translation>
 <translation id="1661474178782861119">Aviat es mostraran més articles. Que tinguis un bon vespre.</translation>
+<translation id="1670399744444387456">Opcions bàsiques</translation>
 <translation id="1671236975893690980">Baixada pendent…</translation>
 <translation id="169033420419426091">No s'ha pogut baixar <ph name="FILE_NAME" /> perquè no s'ha trobat la targeta SD.</translation>
 <translation id="1709438864123551175">Economitzador de dades</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
index 6caefc3d..a576ffb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Přístup k fotoaparátu</translation>
 <translation id="1656489000284462475">Vyzvednutí</translation>
 <translation id="1661474178782861119">Brzy se zobrazí další články. Užijte si večer.</translation>
+<translation id="1670399744444387456">Základní</translation>
 <translation id="1671236975893690980">Nevyřízené stahování…</translation>
 <translation id="169033420419426091">Stažení souboru <ph name="FILE_NAME" /> se nezdařilo, protože není k dispozici SD karta.</translation>
 <translation id="1709438864123551175">Spořič dat</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">Zapnout funkci Verze webu pro PC</translation>
 <translation id="2045104531052923016">Ostatní aplikace: <ph name="GIGABYTES" /> GB</translation>
 <translation id="2073235970478114994">Načíst obrázky</translation>
-<translation id="2079545284768500474">Zpět</translation>
+<translation id="2079545284768500474" />
 <translation id="2082238445998314030">Výsledek <ph name="RESULT_NUMBER" /> z <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2095887075102408547">Je-li tato funkce zapnutá, Chrome navštívené stránky před stažením zkomprimuje pomocí serverů Google. Stránky zobrazené prostřednictvím soukromého připojení (HTTPS) nebo v anonymním režimu nebudou pro Google viditelné a nebudou optimalizovány.</translation>
 <translation id="2096396629993765042">Nebudete odhlášeni ze svého účtu Google. Na stránce <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> mohou být k dispozici další formy historie prohlížení zaznamenané ve vašem účtu Google.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
index 93c795f..cdbaacb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Adgang til dit kamera</translation>
 <translation id="1656489000284462475">Afhentning</translation>
 <translation id="1661474178782861119">Der vises snart flere artikler. Hav en god aften!</translation>
+<translation id="1670399744444387456">Grundlæggende oplysninger</translation>
 <translation id="1671236975893690980">Download afventer…</translation>
 <translation id="169033420419426091">Download af <ph name="FILE_NAME" /> mislykkedes, fordi der ikke er et SD-kort.</translation>
 <translation id="1709438864123551175">Datasparefunktion</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
index af08099..b4fa6fa0 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Kamerazugriff</translation>
 <translation id="1656489000284462475">Abholung</translation>
 <translation id="1661474178782861119">Weitere Artikel werden in Kürze erscheinen. Schönen Abend!</translation>
+<translation id="1670399744444387456">Grundlegend</translation>
 <translation id="1671236975893690980">Download ausstehend...</translation>
 <translation id="169033420419426091"><ph name="FILE_NAME" /> konnte nicht heruntergeladen werden, weil keine SD-Karte gefunden wurde.</translation>
 <translation id="1709438864123551175">Datensparmodus</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">"Desktopversion anfordern" aktivieren</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB sonstiger Apps</translation>
 <translation id="2073235970478114994">Bilder laden</translation>
-<translation id="2079545284768500474">Rückgängig</translation>
+<translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="2082238445998314030">Ergebnis <ph name="RESULT_NUMBER" /> von <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2095887075102408547">Wenn diese Funktion aktiviert ist, nutzt Chrome Google-Server, um besuchte Seiten vor dem Download zu komprimieren. Über private Verbindungen (HTTPS) oder in Inkognito-Tabs aufgerufene Seiten werden von Google nicht optimiert oder protokolliert.</translation>
 <translation id="2096396629993765042">Sie werden nicht von Ihrem Google-Konto abgemeldet. Eventuell finden Sie unter <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> weitere Arten von Browserverlaufsdaten für Ihr Google-Konto.</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 46440d1..eb9a37d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Πρόσβαση στην κάμερα</translation>
 <translation id="1656489000284462475">Παραλαβή</translation>
 <translation id="1661474178782861119">Περισσότερα άρθρα θα εμφανιστούν σύντομα. Απολαύστε το βράδυ σας.</translation>
+<translation id="1670399744444387456">Βασικά</translation>
 <translation id="1671236975893690980">Λήψη σε εκκρεμότητα…</translation>
 <translation id="169033420419426091">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε επειδή δεν υπάρχει κάρτα SD.</translation>
 <translation id="1709438864123551175">Εξοικονόμηση δεδομένων</translation>
@@ -577,7 +578,7 @@
 <translation id="6937422995269576720">Μη έγκυρος αριθμός κάρτας</translation>
 <translation id="6945221475159498467">Επιλογή</translation>
 <translation id="6963766334940102469">Διαγραφή σελιδοδεικτών</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="6973630695168034713">Φάκελοι</translation>
 <translation id="6978479750597523876">Επαναφορά ρυθμίσεων μετάφρασης</translation>
 <translation id="6981982820502123353">Προσβασιμότητα</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 9e68a5bd..37030695 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
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Access your camera</translation>
 <translation id="1656489000284462475">Pick up</translation>
 <translation id="1661474178782861119">More articles will appear soon. Enjoy your evening.</translation>
+<translation id="1670399744444387456">Basic</translation>
 <translation id="1671236975893690980">Download pending...</translation>
 <translation id="169033420419426091"><ph name="FILE_NAME" /> download failed due to missing SD Card.</translation>
 <translation id="1709438864123551175">Data Saver</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
index 15b444c6..7bab28f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Acceso a la cámara</translation>
 <translation id="1656489000284462475">Retiro</translation>
 <translation id="1661474178782861119">Pronto se mostrarán más artículos. Disfruta tu tarde.</translation>
+<translation id="1670399744444387456">Básicas</translation>
 <translation id="1671236975893690980">Descarga pendiente…</translation>
 <translation id="169033420419426091"><ph name="FILE_NAME" /> no se pudo descargar porque falta la tarjeta SD.</translation>
 <translation id="1709438864123551175">Reducir datos</translation>
@@ -577,7 +578,7 @@
 <translation id="6937422995269576720">Número de tarjeta no válido</translation>
 <translation id="6945221475159498467">Seleccionar</translation>
 <translation id="6963766334940102469">Borrar favoritos</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Carpetas</translation>
 <translation id="6978479750597523876">Restablecer la configuración de traducción</translation>
 <translation id="6981982820502123353">Accesibilidad</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 d941bfe..9a72916 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Acceder a la cámara</translation>
 <translation id="1656489000284462475">Recogida</translation>
 <translation id="1661474178782861119">Próximamente se mostrarán más artículos. Disfruta de la noche.</translation>
+<translation id="1670399744444387456">Básicas</translation>
 <translation id="1671236975893690980">Descarga pendiente…</translation>
 <translation id="169033420419426091">No se ha podido descargar <ph name="FILE_NAME" /> porque falta la tarjeta SD.</translation>
 <translation id="1709438864123551175">Ahorro de datos</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 fbc79fe..fa874314 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">دسترسی به دوربین</translation>
 <translation id="1656489000284462475">تحویل گرفتن</translation>
 <translation id="1661474178782861119">مقاله‌های بیشتر به‌زودی نشان داده می‌شوند. از غروبتان لذت ببرید.</translation>
+<translation id="1670399744444387456">پایه</translation>
 <translation id="1671236975893690980">بارگیری معلق است…</translation>
 <translation id="169033420419426091">‏به‌دلیل موجود نبودن کارت SD، بارگیری <ph name="FILE_NAME" /> انجام نشد.</translation>
 <translation id="1709438864123551175">صرفه‌جویی داده</translation>
@@ -576,7 +577,7 @@
 <translation id="6937422995269576720">شماره کارت معتبر نیست</translation>
 <translation id="6945221475159498467">انتخاب</translation>
 <translation id="6963766334940102469">حذف نشانک‌ها</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="6973630695168034713">پوشه‌ها</translation>
 <translation id="6978479750597523876">بازنشانی تنظیمات ترجمه</translation>
 <translation id="6981982820502123353">قابلیت دسترسی</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 6dd501e..36684a3 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -10,7 +10,7 @@
 <translation id="1121094540300013208">Käyttö- ja virheraportit</translation>
 <translation id="1137305377394488060">viimeisen tunnin ajalta</translation>
 <translation id="1145536944570833626">Poistaa olemassa olevat tiedot.</translation>
-<translation id="1146678959555564648">Siirry VR-maailmaan</translation>
+<translation id="1146678959555564648">Siirry VR-tilaan</translation>
 <translation id="1178581264944972037">Tauko</translation>
 <translation id="1181037720776840403">Poista</translation>
 <translation id="1197267115302279827">Siirrä kirjanmerkkejä</translation>
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Kameran käyttöoikeus</translation>
 <translation id="1656489000284462475">Noutoaika</translation>
 <translation id="1661474178782861119">Muita artikkeleita ilmestyy pian. Nauti illastasi.</translation>
+<translation id="1670399744444387456">Perusvaihtoehdot</translation>
 <translation id="1671236975893690980">Lataus odottaa…</translation>
 <translation id="169033420419426091">Tiedoston <ph name="FILE_NAME" /> lataus epäonnistui, koska SD-kortti puuttuu.</translation>
 <translation id="1709438864123551175">Data Saver</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 0e292530..b4f9a19 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">I-access ang iyong camera</translation>
 <translation id="1656489000284462475">I-pick up</translation>
 <translation id="1661474178782861119">Higit pang artikulo ang lalabas sa nalalapit na panahon. I-enjoy ang iyong gabi.</translation>
+<translation id="1670399744444387456">Pangunahin</translation>
 <translation id="1671236975893690980">Nakabinbin ang pag-download...</translation>
 <translation id="169033420419426091">Hindi na-download ang <ph name="FILE_NAME" /> dahil walang SD Card.</translation>
 <translation id="1709438864123551175">Data Saver</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
index 2f6c51e..e7a612d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Accéder à votre caméra</translation>
 <translation id="1656489000284462475">Enlèvement</translation>
 <translation id="1661474178782861119">D'autres articles vous seront bientôt proposés. Bonne soirée !</translation>
+<translation id="1670399744444387456">Général</translation>
 <translation id="1671236975893690980">Téléchargement en attente…</translation>
 <translation id="169033420419426091">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison d'une absence de carte SD.</translation>
 <translation id="1709438864123551175">Économiseur de données</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
index c97c9f6..a3f3cebe 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">अपना कैमरा एक्सेस करें</translation>
 <translation id="1656489000284462475">पिकअप</translation>
 <translation id="1661474178782861119">जल्द ही अधिक लेख दिखाई देंगे. अपनी शाम का आनंद लें.</translation>
+<translation id="1670399744444387456">मूलभूत</translation>
 <translation id="1671236975893690980">डाउनलोड लंबित…</translation>
 <translation id="169033420419426091">अनुपलब्‍ध SD कार्ड के कारण <ph name="FILE_NAME" /> डाउनलोड विफल रहा.</translation>
 <translation id="1709438864123551175">डेटा बचाने का साधन</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">अनुरोध डेस्कटॉप साइट चालू करें</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB अन्य ऐप्लिकेशन</translation>
 <translation id="2073235970478114994">चित्र लोड करें</translation>
-<translation id="2079545284768500474">पूर्ववत् करें</translation>
+<translation id="2079545284768500474">वापस लाएं</translation>
 <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> में से <ph name="RESULT_NUMBER" /> परिणाम</translation>
 <translation id="2095887075102408547">इस सुविधा के चालू होने पर, Chrome आपके द्वारा देखे जाने वाले पृष्ठों को डाउनलोड करने से पहले संपीड़ित करने के लिए Google सर्वर का उपयोग करेगा. निजी कनेक्शन (HTTPS) या गुप्त टैब का उपयोग करके एक्सेस किए गए पृष्ठों को Google द्वारा ऑप्‍टिमाइज़ या देखा नहीं जाएगा.</translation>
 <translation id="2096396629993765042">आप अपने Google खाते से प्रस्थान नहीं करेंगे. आपके Google खाते में <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> पर अन्य प्रकार के ब्राउज़िंग इतिहास हो सकते हैं.</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 e2f6f0d..1f8e6e82 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Pristup fotoaparatu</translation>
 <translation id="1656489000284462475">Preuzimanje</translation>
 <translation id="1661474178782861119">Uskoro će se prikazati više članaka. Želimo vam ugodnu večer.</translation>
+<translation id="1670399744444387456">Osnovne</translation>
 <translation id="1671236975893690980">Preuzimanje na čekanju…</translation>
 <translation id="169033420419426091">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo jer nema SD kartice.</translation>
 <translation id="1709438864123551175">Ušteda podataka</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
index 77568b2..8983de1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Hozzáférés a fényképezőgéphez</translation>
 <translation id="1656489000284462475">Átvétel</translation>
 <translation id="1661474178782861119">Hamarosan további cikkek jelennek meg. Kellemes estét kívánunk.</translation>
+<translation id="1670399744444387456">Alapvető</translation>
 <translation id="1671236975893690980">Letöltés függőben…</translation>
 <translation id="169033420419426091">A következő fájl letöltése hiányzó SD-kártya miatt nem sikerült: <ph name="FILE_NAME" />.</translation>
 <translation id="1709438864123551175">Adatforgalom-csökkentő</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 ada629b..3086710 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Mengakses kamera Anda</translation>
 <translation id="1656489000284462475">Pengambilan</translation>
 <translation id="1661474178782861119">Artikel lainnya akan segera muncul. Nikmati malam Anda.</translation>
+<translation id="1670399744444387456">Dasar</translation>
 <translation id="1671236975893690980">Proses download tertunda...</translation>
 <translation id="169033420419426091">Download <ph name="FILE_NAME" /> gagal karena Kartu SD tidak ada.</translation>
 <translation id="1709438864123551175">Penghemat Data</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">Aktifkan Ubah situs desktop</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB aplikasi lain</translation>
 <translation id="2073235970478114994">Muat gambar</translation>
-<translation id="2079545284768500474">Batalkan</translation>
+<translation id="2079545284768500474">Urungkan</translation>
 <translation id="2082238445998314030">Hasil <ph name="RESULT_NUMBER" /> dari <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2095887075102408547">Saat fitur ini diaktifkan, Chrome akan menggunakan server Google untuk mengompresi laman yang Anda kunjungi sebelum mendownloadnya. Laman yang diakses menggunakan sambungan pribadi (HTTPS) atau tab Penyamaran tidak akan dioptimalkan maupun dilihat oleh Google.</translation>
 <translation id="2096396629993765042">Anda tidak akan dikeluarkan dari Akun Google. Akun Google Anda mungkin memiliki bentuk riwayat penjelajahan lainnya di <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
@@ -596,7 +597,7 @@
 <translation id="7063006564040364415">Tidak dapat menyambung ke server sinkronisasi.</translation>
 <translation id="7064851114919012435">Info kontak</translation>
 <translation id="7094922512924405309">Laman Web Fisik di sekitar tidak ditemukan</translation>
-<translation id="7128222689758636196">Memungkinkan mesin telusur saat ini</translation>
+<translation id="7128222689758636196">Mengizinkan mesin telusur saat ini</translation>
 <translation id="7138678301420049075">Lainnya</translation>
 <translation id="7180611975245234373">Segarkan</translation>
 <translation id="7189372733857464326">Menunggu Layanan Google Play selesai di-update</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 1f7bce0a..2c253c9c 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Accesso alla videocamera</translation>
 <translation id="1656489000284462475">Ritiro</translation>
 <translation id="1661474178782861119">A breve verranno visualizzati altri articoli. Buona serata.</translation>
+<translation id="1670399744444387456">Di base</translation>
 <translation id="1671236975893690980">Download in attesa...</translation>
 <translation id="169033420419426091">Download di <ph name="FILE_NAME" /> non riuscito a causa dell'assenza di scheda SD.</translation>
 <translation id="1709438864123551175">Risparmio dati</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 60e235a..9dc51be 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">גישה אל המצלמה שלך</translation>
 <translation id="1656489000284462475">איסוף</translation>
 <translation id="1661474178782861119">בקרוב יופיעו מאמרים נוספים. תיהנה מהערב שלך.</translation>
+<translation id="1670399744444387456">בסיסי</translation>
 <translation id="1671236975893690980">המערכת ממתינה לתחילת ההורדה...</translation>
 <translation id="169033420419426091">‏הורדת <ph name="FILE_NAME" /> נכשלה מאחר שחסר כרטיס SD.</translation>
 <translation id="1709438864123551175">‏חוסך הנתונים (Data Saver)</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">הפעל את 'בקש אתר עבור מחשב שולחני'</translation>
 <translation id="2045104531052923016">‏‎<ph name="GIGABYTES" /> GB ליישומים אחרים</translation>
 <translation id="2073235970478114994">טען תמונות</translation>
-<translation id="2079545284768500474">בטל</translation>
+<translation id="2079545284768500474">בטל פעולה</translation>
 <translation id="2082238445998314030">תוצאה <ph name="RESULT_NUMBER" /> מתוך <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2095887075102408547">‏כשהתכונה הזו פועלת, Chrome ישתמש בשרתי Google כדי לדחוס דפים שבהם אתה מבקר לפני הורדתם. Google לא תראה דפים שהגישה אליהם בוצעה בחיבור פרטי (HTTPS) או בכרטיסיות גלישה בסתר', וגם לא תבצע אופטימיזציה שלהם.</translation>
 <translation id="2096396629993765042">‏לא תבוצע יציאה מחשבון Google שלך. ייתכן שתוכל לגשת לסוגים אחרים של היסטוריית גלישה בחשבון Google בכתובת <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
index c2c9186d..35b053d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">カメラへのアクセス</translation>
 <translation id="1656489000284462475">引取</translation>
 <translation id="1661474178782861119">記事は随時更新されます。また後でご覧ください。</translation>
+<translation id="1670399744444387456">基本</translation>
 <translation id="1671236975893690980">ダウンロードを待機しています...</translation>
 <translation id="169033420419426091">SD カードがないため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation>
 <translation id="1709438864123551175">データセーバー</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">[PC 版サイトを見る] をオンにします</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB を他のアプリで使用中</translation>
 <translation id="2073235970478114994">画像を読み込む</translation>
-<translation id="2079545284768500474">取り消す</translation>
+<translation id="2079545284768500474">元に戻す</translation>
 <translation id="2082238445998314030">結果 <ph name="TOTAL_RESULTS" /> 件中 <ph name="RESULT_NUMBER" /> 件目</translation>
 <translation id="2095887075102408547">この機能が有効になっている場合、アクセスしたページはダウンロード前に Google サーバーで圧縮されます。プライベート接続(HTTPS)やシークレット タブでアクセスしたページには、Google による最適化や確認は行われません。</translation>
 <translation id="2096396629993765042">Google アカウントへのログイン状態は維持されます。Google アカウントでの他の形式の閲覧履歴が <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> に残ることがあります。</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
index 8b623c03..575036b 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">카메라에 액세스</translation>
 <translation id="1656489000284462475">수령</translation>
 <translation id="1661474178782861119">더 많은 콘텐츠가 표시될 예정이니 기대해주세요. 즐거운 저녁 시간 보내세요.</translation>
+<translation id="1670399744444387456">기본</translation>
 <translation id="1671236975893690980">다운로드 대기 중...</translation>
 <translation id="169033420419426091">SD 카드가 없어서 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation>
 <translation id="1709438864123551175">데이터 절약 모드</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">데스크톱 버전으로 보기 사용 설정</translation>
 <translation id="2045104531052923016">기타 앱 <ph name="GIGABYTES" />GB</translation>
 <translation id="2073235970478114994">이미지 로드</translation>
-<translation id="2079545284768500474">실행 취소</translation>
+<translation id="2079545284768500474">실행취소</translation>
 <translation id="2082238445998314030">전체 결과 <ph name="TOTAL_RESULTS" />개 중 <ph name="RESULT_NUMBER" />개</translation>
 <translation id="2095887075102408547">이 기능을 사용 설정하면 Chrome은 Google 서버를 이용해 방문한 페이지를 압축한 후 다운로드합니다. 비공개 연결(HTTPS)이나 시크릿 탭을 통해 액세스한 페이지는 Google에서 최적화하거나 볼 수 없습니다.</translation>
 <translation id="2096396629993765042">Google 계정에서 로그아웃되지 않습니다. <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />에서 내 Google 계정에 있는 다른 형식의 탐색 기록을 확인할 수 있습니다.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
index a87e720c..a2e7d5a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Prieiga prie fotoaparato</translation>
 <translation id="1656489000284462475">Paėmimas</translation>
 <translation id="1661474178782861119">Netrukus bus rodoma daugiau straipsnių. Gero vakaro.</translation>
+<translation id="1670399744444387456">Bendrieji</translation>
 <translation id="1671236975893690980">Laukiama atsisiuntimo...</translation>
 <translation id="169033420419426091">Nepavyko atsisiųsti „<ph name="FILE_NAME" />“ dėl trūkstamos SD kortelės.</translation>
 <translation id="1709438864123551175">Duomenų taupymo priemonė</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
index d708437..3d06d235 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Piekļuve kamerai</translation>
 <translation id="1656489000284462475">Informācija par saņemšanu</translation>
 <translation id="1661474178782861119">Drīzumā būs pieejami citi raksti. Jauku vakaru!</translation>
+<translation id="1670399744444387456">Pamata</translation>
 <translation id="1671236975893690980">Lejupielāde tiek gaidīta...</translation>
 <translation id="169033420419426091">Neizdevās lejupielādēt failu <ph name="FILE_NAME" />, jo nav SD kartes.</translation>
 <translation id="1709438864123551175">Datu lietojuma samazinātājs</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
index cfbaf030..c258b6bd 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Toegang tot camera</translation>
 <translation id="1656489000284462475">Ophaaltijd</translation>
 <translation id="1661474178782861119">Er worden binnenkort meer artikelen weergegeven. Geniet van je avond.</translation>
+<translation id="1670399744444387456">Basis</translation>
 <translation id="1671236975893690980">Download in behandeling…</translation>
 <translation id="169033420419426091">Downloaden van <ph name="FILE_NAME" /> is mislukt door een ontbrekende SD-kaart.</translation>
 <translation id="1709438864123551175">Databesparing</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
index 45502c8..8bfb63e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Tilgang til kameraet ditt</translation>
 <translation id="1656489000284462475">Henting</translation>
 <translation id="1661474178782861119">Flere artikler kommer snart. Ha en fin kveld.</translation>
+<translation id="1670399744444387456">Enkle</translation>
 <translation id="1671236975893690980">Nedlasting venter</translation>
 <translation id="169033420419426091">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt fordi du ikke har noe SD-kort installert.</translation>
 <translation id="1709438864123551175">Datasparing</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 db2f596..ba8eb10 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Dostęp do kamery</translation>
 <translation id="1656489000284462475">Odbiór</translation>
 <translation id="1661474178782861119">Wkrótce pojawi się więcej artykułów. Życzymy miłego wieczoru.</translation>
+<translation id="1670399744444387456">Podstawy</translation>
 <translation id="1671236975893690980">Oczekuję na pobranie…</translation>
 <translation id="169033420419426091">Nie udało się pobrać pliku <ph name="FILE_NAME" /> z powodu braku karty SD.</translation>
 <translation id="1709438864123551175">Oszczędzanie danych</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 c7849236..da3feaac 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
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Acessar sua câmera</translation>
 <translation id="1656489000284462475">Retirada</translation>
 <translation id="1661474178782861119">Mais artigos serão exibidos em breve. Aproveite o fim do dia.</translation>
+<translation id="1670399744444387456">Básicas</translation>
 <translation id="1671236975893690980">Download pendente…</translation>
 <translation id="169033420419426091">Falha no download do arquivo <ph name="FILE_NAME" /> devido à falta de cartão SD.</translation>
 <translation id="1709438864123551175">Economia de dados</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 097da8c7..5d98c48da 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
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Aceder à câmara</translation>
 <translation id="1656489000284462475">Recolha</translation>
 <translation id="1661474178782861119">Serão apresentados mais artigos em breve. Desfrute do seu serão.</translation>
+<translation id="1670399744444387456">Básico</translation>
 <translation id="1671236975893690980">Transferência pendente…</translation>
 <translation id="169033420419426091">A transferência de <ph name="FILE_NAME" /> falhou porque o cartão SD não está presente.</translation>
 <translation id="1709438864123551175">Poupança de dados</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 348e999..ffbc444 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Accesează camera foto</translation>
 <translation id="1656489000284462475">Preluare</translation>
 <translation id="1661474178782861119">În curând vor apărea mai multe articole. O seară plăcută!</translation>
+<translation id="1670399744444387456">De bază</translation>
 <translation id="1671236975893690980">Descărcare în așteptare…</translation>
 <translation id="169033420419426091">Descărcarea fișierului <ph name="FILE_NAME" /> nu a reușit, deoarece lipsește cardul SD.</translation>
 <translation id="1709438864123551175">Economizor de date</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 b81ddd9..e2781c9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Доступ к камере</translation>
 <translation id="1656489000284462475">Получение</translation>
 <translation id="1661474178782861119">Другие статьи скоро появятся. Хорошего вечера!</translation>
+<translation id="1670399744444387456">Основные настройки</translation>
 <translation id="1671236975893690980">Ожидание скачивания…</translation>
 <translation id="169033420419426091">Не удалось скачать файл <ph name="FILE_NAME" />, так как отсутствует SD-карта.</translation>
 <translation id="1709438864123551175">Экономия трафика</translation>
@@ -577,7 +578,7 @@
 <translation id="6937422995269576720">Недействительный номер карты</translation>
 <translation id="6945221475159498467">Выбрать</translation>
 <translation id="6963766334940102469">Удалить закладки</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Папки</translation>
 <translation id="6978479750597523876">Сбросить настройки перевода</translation>
 <translation id="6981982820502123353">Специальные возможности</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 d4803e2..258c49f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Prístup ku kamere</translation>
 <translation id="1656489000284462475">Vyzdvihnutie</translation>
 <translation id="1661474178782861119">Čoskoro sa zobrazia ďalšie články. Príjemný večer!</translation>
+<translation id="1670399744444387456">Základné</translation>
 <translation id="1671236975893690980">Čaká sa na stiahnutie…</translation>
 <translation id="169033420419426091">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu chýbajúcej SD karty.</translation>
 <translation id="1709438864123551175">Šetrič dát</translation>
@@ -488,7 +489,7 @@
 <translation id="6012342843556706400">Na to, aby Chrome mohol s týmito webovými stránkami zdieľať polohu, musí mať k nej prístup.</translation>
 <translation id="6031101910111098835">Zbalené – kliknutím rozbaliť</translation>
 <translation id="6039379616847168523">Prechod na ďalšiu kartu</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="6042308850641462728">Viac</translation>
 <translation id="604996488070107836">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu neznámej chyby.</translation>
 <translation id="605721222689873409">RR</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
index 4f182ae..af21ae2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Dostop do fotoaparata</translation>
 <translation id="1656489000284462475">Prevzem</translation>
 <translation id="1661474178782861119">Kmalu bo prikazanih več člankov. Prijeten večer.</translation>
+<translation id="1670399744444387456">Osnovno</translation>
 <translation id="1671236975893690980">Prenos na čakanju …</translation>
 <translation id="169033420419426091">Prenos datoteke <ph name="FILE_NAME" /> ni uspel, ker ni kartice SD.</translation>
 <translation id="1709438864123551175">Varčevanje s podatki</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
index 96d12d96..645d32cf 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Приступ камери</translation>
 <translation id="1656489000284462475">Преузимање</translation>
 <translation id="1661474178782861119">Још чланака ће се појавити ускоро. Желимо вам пријатно вече.</translation>
+<translation id="1670399744444387456">Основна</translation>
 <translation id="1671236975893690980">Преузимање је на чекању…</translation>
 <translation id="169033420419426091">Преузимање датотеке <ph name="FILE_NAME" /> није успело јер нема SD картице.</translation>
 <translation id="1709438864123551175">Уштеда података</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 984e1f4..466b5cb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Tillgång till din kamera</translation>
 <translation id="1656489000284462475">Upphämtning</translation>
 <translation id="1661474178782861119">Fler artiklar visas snart. Trevlig kväll!</translation>
+<translation id="1670399744444387456">Grunder</translation>
 <translation id="1671236975893690980">Nedladdning väntar …</translation>
 <translation id="169033420419426091">Det gick inte att ladda ned <ph name="FILE_NAME" /> eftersom SD-kort saknas.</translation>
 <translation id="1709438864123551175">Databesparing</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 c85b5d9..e086a04 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Kufikia kamera yako</translation>
 <translation id="1656489000284462475">Muda wa kuabiri gari</translation>
 <translation id="1661474178782861119">Makala zaidi yataonekana hivi karibuni. Jioni njema.</translation>
+<translation id="1670399744444387456">Msingi</translation>
 <translation id="1671236975893690980">Inasubiri kupakua...</translation>
 <translation id="169033420419426091">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu hakuna Kadi ya SD.</translation>
 <translation id="1709438864123551175">Kiokoa Data</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
index 07845e8..79e4a232 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">เข้าถึงกล้องถ่ายรูป</translation>
 <translation id="1656489000284462475">การรับ</translation>
 <translation id="1661474178782861119">บทความอื่นๆ จะปรากฏขึ้นในอีกไม่ช้า ขอให้เพลิดเพลินกับยามค่ำ</translation>
+<translation id="1670399744444387456">พื้นฐาน</translation>
 <translation id="1671236975893690980">การดาวน์โหลดรอดำเนินการ…</translation>
 <translation id="169033420419426091">การดาวน์โหลด <ph name="FILE_NAME" /> ล้มเหลวเพราะไม่มีการ์ด SD</translation>
 <translation id="1709438864123551175">โปรแกรมประหยัดอินเทอร์เน็ต</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
index 25c42acb..ec86c631 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Kameranıza erişim</translation>
 <translation id="1656489000284462475">Alma</translation>
 <translation id="1661474178782861119">Yakında daha fazla seçenek gösterilecek. Akşamınızın keyfini çıkarın.</translation>
+<translation id="1670399744444387456">Temel</translation>
 <translation id="1671236975893690980">İndirme işlemi beklemede…</translation>
 <translation id="169033420419426091">Eksik SD Kart nedeniyle <ph name="FILE_NAME" /> dosyası indirilemedi.</translation>
 <translation id="1709438864123551175">Veri Tasarrufu</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">Masaüstü sitesi iste işlevini etkinleştir</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB diğer uygulamalar</translation>
 <translation id="2073235970478114994">Resimleri yükle</translation>
-<translation id="2079545284768500474">Geri Al</translation>
+<translation id="2079545284768500474">Geri al</translation>
 <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> sonuçtan <ph name="RESULT_NUMBER" /> numaralı sonuç</translation>
 <translation id="2095887075102408547">Bu özellik açık olduğunda, Chrome, ziyaret ettiğiniz sayfaları indirmeden önce sıkıştırmak için Google sunucularını kullanır. Gizli bağlantılar (HTTPS) veya Gizli sekmeler kullanarak erişilen sayfalar Google tarafından optimize edilmez veya görülmez.</translation>
 <translation id="2096396629993765042">Google hesabınızdaki oturumunuz kapatılmayacaktır. Google hesabınızla ilişkili başka biçimlerde tarama geçmişi <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> adresinde bulunabilir.</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
index 6e3e944..6b1d0b6 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -10,7 +10,7 @@
 <translation id="1121094540300013208">Звіти про використання й аварійне завершення роботи</translation>
 <translation id="1137305377394488060">останню годину</translation>
 <translation id="1145536944570833626">Видалити наявні дані.</translation>
-<translation id="1146678959555564648">Віртуальна реальність</translation>
+<translation id="1146678959555564648">Увійти у VR-режим</translation>
 <translation id="1178581264944972037">Пауза</translation>
 <translation id="1181037720776840403">Видалити</translation>
 <translation id="1197267115302279827">Перемістити закладки</translation>
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Доступ до камери</translation>
 <translation id="1656489000284462475">Отримання</translation>
 <translation id="1661474178782861119">Згодом тут з’являться інші статті. Гарного вечора.</translation>
+<translation id="1670399744444387456">Основні параметри</translation>
 <translation id="1671236975893690980">Очікується завантаження…</translation>
 <translation id="169033420419426091">Файл <ph name="FILE_NAME" /> не завантажено. Немає карти SD.</translation>
 <translation id="1709438864123551175">Заощадження трафіку</translation>
@@ -107,7 +108,7 @@
 <translation id="2038563949887743358">Увімкнути опцію "Запитувати версію сайту для комп’ютера"</translation>
 <translation id="2045104531052923016"><ph name="GIGABYTES" /> Гб використовується іншими додатками</translation>
 <translation id="2073235970478114994">Завантажити зображення</translation>
-<translation id="2079545284768500474">Скасувати</translation>
+<translation id="2079545284768500474">Відмінити</translation>
 <translation id="2082238445998314030">Результат <ph name="RESULT_NUMBER" /> з <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2095887075102408547">Якщо ввімкнути цю функцію, Chrome використовуватиме сервери Google, щоб стискати сторінки перед завантаженням. Однак це не стосується сторінок, відкритих під час конфіденційного з’єднання (HTTPS) або в режимі анонімного перегляду.</translation>
 <translation id="2096396629993765042">Ви не вийдете з облікового запису Google. У вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> можуть бути інші форми історії веб-перегляду.</translation>
@@ -577,7 +578,7 @@
 <translation id="6937422995269576720">Номер картки недійсний</translation>
 <translation id="6945221475159498467">Вибрати</translation>
 <translation id="6963766334940102469">Видалити закладки</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="6973630695168034713">Папки</translation>
 <translation id="6978479750597523876">Скинути налаштування перекладу</translation>
 <translation id="6981982820502123353">Доступність</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
index 7d7704b..861b09e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">Truy cập máy ảnh của bạn</translation>
 <translation id="1656489000284462475">Nhận hàng</translation>
 <translation id="1661474178782861119">Các bài viết khác sẽ sớm xuất hiện. Chúc bạn buổi tối vui vẻ.</translation>
+<translation id="1670399744444387456">Cơ bản</translation>
 <translation id="1671236975893690980">Đang chờ tải xuống...</translation>
 <translation id="169033420419426091">Tải xuống <ph name="FILE_NAME" /> không thành công do thiếu thẻ SD.</translation>
 <translation id="1709438864123551175">Trình tiết kiệm dữ liệu</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
index e9c0e4cb..16b39211 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">使用您的摄像头</translation>
 <translation id="1656489000284462475">取货</translation>
 <translation id="1661474178782861119">更多报道即将奉上。伴您度过美好的夜晚时光。</translation>
+<translation id="1670399744444387456">基本</translation>
 <translation id="1671236975893690980">正在等待下载…</translation>
 <translation id="169033420419426091">未能成功下载 <ph name="FILE_NAME" />,因为找不到 SD 卡。</translation>
 <translation id="1709438864123551175">流量节省程序</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
index 4573c6e..e64b172 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -10,7 +10,7 @@
 <translation id="1121094540300013208">使用資料和當機報告</translation>
 <translation id="1137305377394488060">過去 1 小時</translation>
 <translation id="1145536944570833626">刪除現有資料。</translation>
-<translation id="1146678959555564648">進入虛擬實境</translation>
+<translation id="1146678959555564648">進入 VR</translation>
 <translation id="1178581264944972037">暫停</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1197267115302279827">移動書籤</translation>
@@ -73,6 +73,7 @@
 <translation id="1647391597548383849">存取您的攝影機</translation>
 <translation id="1656489000284462475">取件</translation>
 <translation id="1661474178782861119">系統即將顯示更多文章供您閱覽,伴你度過美好的夜晚。</translation>
+<translation id="1670399744444387456">基本</translation>
 <translation id="1671236975893690980">正在等候下載…</translation>
 <translation id="169033420419426091">找不到 SD 卡,因此無法下載 <ph name="FILE_NAME" />。</translation>
 <translation id="1709438864123551175">Data Saver</translation>
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
index 7d81050b..7e9c0763 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
@@ -21,7 +21,6 @@
 import android.widget.TextView;
 
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ShortcutHelper;
@@ -411,9 +410,8 @@
         waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
     }
 
-    // @MediumTest
-    // @Feature({"AppBanners"})
-    @DisabledTest
+    @MediumTest
+    @Feature({"AppBanners"})
     public void testBannerAppearsThenDoesNotAppearAgainForCustomTime() throws Exception {
         AppBannerManager.setDaysAfterDismissAndIgnoreForTesting(7, 7);
         triggerWebAppBanner(mWebAppUrl, WEB_APP_TITLE, false);
diff --git a/chrome/app/main_dll_loader_win.cc b/chrome/app/main_dll_loader_win.cc
index 720041b..5ceed8f 100644
--- a/chrome/app/main_dll_loader_win.cc
+++ b/chrome/app/main_dll_loader_win.cc
@@ -69,8 +69,6 @@
   GoogleUpdateSettings::UpdateDidRunState(false);
 }
 
-typedef int (*InitMetro)();
-
 bool ProcessTypeUsesMainDll(const std::string& process_type) {
   return process_type.empty() || process_type == switches::kServiceProcess;
 }
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 1519920c..d043238f 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">በራስ-ሰር በዚህ መለያ ወደ Google ጣቢያዎች ለማስገባት አቅርብ</translation>
 <translation id="1596174774107741586">የGoogle ክፍያዎች ማጠሪያ አገልጋዮችን ይጠቀሙ</translation>
 <translation id="1598233202702788831">ዝማኔዎች በእርስዎ አስተዳዳሪ ተሰናክሏል።</translation>
-<translation id="1598604884989842103">የTouchView ከፍተኛ ማድረጊያ በይነገጽ ለሙከራ ያንቁ</translation>
 <translation id="1600857548979126453">የገጽ አራሚ ደጀኑን ይደርስበታል</translation>
 <translation id="1601560923496285236">ተግብር</translation>
 <translation id="1603914832182249871">(ስውር)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">«$1» የሚል ፋይል አስቀድሞ አለ። ሊተኩት ይፈልጋሉ?</translation>
 <translation id="320825648481311438">የነቃ ሲሆን አሳሹ ወደ Google መለያዎች በመለያ መግባትና ዘግቶ መውጣትን ያስተዳድራል።</translation>
 <translation id="3208703785962634733">ያልተረጋገጠ</translation>
-<translation id="3209459032754159027">በራስ-ሙላ ተቆልቋይ ውስጥ የክሬዲት ካርድ መግቢያ ማስተዋወቂያን ማሳየትን ያንቁ</translation>
 <translation id="3211904643589960506">ዩአርኤሎችን ከአካላዊ ድር ነገሮች መቃኘትን ያንቁ።</translation>
 <translation id="3216508313927987948">ይህ እንዲሆን፣ የእርስዎን <ph name="DEVICE_TYPE" /> በሚከተለው ደረጃ መሰረት ማሰልጠን ያስፈልገዎታል።</translation>
 <translation id="3220586366024592812">የ<ph name="CLOUD_PRINT_NAME" /> አገናኙ ተሰናክሏል። ዳግም ይጀመር?</translation>
@@ -1873,7 +1871,7 @@
 <translation id="3341703758641437857">ለፋይል ዩአርኤልዎች መዳረሻ ፍቀድ</translation>
 <translation id="3344786168130157628">የመዳረሻ ነጥብ ስም፦</translation>
 <translation id="3345886924813989455">ምንም የሚደገፍ አሳሽ አልተገኘም።</translation>
-<translation id="3346734205185115290">ለዚህ መሣሪያ የሚገኝ ከሆነ በቪአር መመልከቻ ማሰስን ይፍቀዱ።</translation>
+<translation id="3346734205185115290">ለዚህ መሣሪያ የሚገኝ ከሆነ በምናባዊ ዕውነታ መመልከቻ ማሰስን ይፍቀዱ።</translation>
 <translation id="3347086966102161372">የምስል አድራሻ &amp;ቅዳ</translation>
 <translation id="3348038390189153836">ተነቃይ መሣሪያ ተገኝቷል</translation>
 <translation id="3348459612390503954">እንኳን ደስ አለዎት</translation>
@@ -2157,7 +2155,7 @@
 <translation id="3704162925118123524">እየተጠቀሙ ያሉት አውታረ መረብ በመለያ መግቢያ ገጹን እንዲጎበኙ ሊጠይቅዎት ይችላል።</translation>
 <translation id="3704331259350077894">የክንውን መቋረጥ</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">በመጫን ላይ...</translation>
+<translation id="370665806235115550">በመጫን ላይ…</translation>
 <translation id="3706919628594312718">የመዳፊት ቅንብሮች</translation>
 <translation id="3707020109030358290">የእውቅና ማረጋገጫ ባለስልጣን አይደለም።</translation>
 <translation id="3709244229496787112">አሳሹ ውርዱ ከመጠናቀቁ በፊት ተዘግቷል።</translation>
@@ -3320,7 +3318,7 @@
 <translation id="529175790091471945">ይህን መሣሪያ ቅርጸት ይስሩለት</translation>
 <translation id="5292890015345653304">የSD ካርድ ወይም የUSB ማህደረ ትውስታ መሰኪያ ያስገቡ</translation>
 <translation id="5294529402252479912">Adobe Readerን አሁን ያዘምኑት</translation>
-<translation id="5297526204711817721">ከዚህ ጣቢያ ጋር ያለዎት ግንኙነት ግላዊ አይደለም። ከቪአር ሁነታ በማናቸውም ጊዜ ለመውጣት፣ የጆሮ ማዳመጫን ያስወግዱ እና ተመለስ የሚለውን ይጫኑ።</translation>
+<translation id="5297526204711817721">ከዚህ ጣቢያ ጋር ያለዎት ግንኙነት ግላዊ አይደለም። ከምናባዊ ዕውነታ ሁነታ በማናቸውም ጊዜ ለመውጣት፣ የጆሮ ማዳመጫን ያስወግዱ እና ተመለስ የሚለውን ይጫኑ።</translation>
 <translation id="5298219193514155779">ገጽታ የተፈጠረው በ</translation>
 <translation id="5298363578196989456">የተጋራ ሞጂዩል ስላልሆነ «<ph name="IMPORT_NAME" />» ቅጥያን ማስመጣት አልተቻለም።</translation>
 <translation id="5299109548848736476">አትከታተል</translation>
@@ -4541,7 +4539,7 @@
 <translation id="695755122858488207">ያልተመረጠ የሬዲዮ አዝራር</translation>
 <translation id="696203921837389374">በሞባይል ውሂብ ላይ ማመሳሰልን አንቃ</translation>
 <translation id="6964390816189577014">ጀግና</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="6965648386495488594">ወደብ</translation>
 <translation id="6965978654500191972">መሣሪያ</translation>
 <translation id="6969104364835835175">PNaCl Subzeroን አስገድድ</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">ለ&amp;ጥፍ እና ፈልግ</translation>
 <translation id="7045480833981818310">ለሰነዶች፣ ሉሆች እና ተንሸራታቾች የOffice አርትዖት</translation>
 <translation id="7047998246166230966">ጠቋሚ</translation>
-<translation id="7048141481140415714">የTouchView ከፍተኛ ማድረጊያ ሁነታን ለመቀያየር Ctrl+Alt+Shift+8ን ያንቁ።</translation>
 <translation id="7049293980323620022">ፋይል ይቀመጥ?</translation>
 <translation id="7051943809462976355">መዳፊትን በመፈለግ ላይ...</translation>
 <translation id="7052237160939977163">አፈጻጸም መከታተያ ውሂብ ይላኩ</translation>
@@ -5794,7 +5791,6 @@
 <translation id="8632275030377321303">ተኪው በተጠቃሚው ሊቀየር አይችልም።</translation>
 <translation id="8636038761987659075">ሁሉም ጣቢያዎች እና የጣቢያ ዝርዝሮች ያላቸው የጣቢያ ቅንብሮች</translation>
 <translation id="8637688295594795546">የስርዓት ዝማኔ አለ። ለማውረድ በመዘጋጀት ላይ…</translation>
-<translation id="8638602948366220068">የራስ-ሙላ ክሬዲት ካርድ መግቢያ ማስተዋወቂያን አንቃ</translation>
 <translation id="8639504893694748827">ዜሮ-ቅጂ ራስቴሳይዘር</translation>
 <translation id="8639963783467694461">የራስ-ሙላ ቅንብሮች</translation>
 <translation id="8642171459927087831">የመዳረሻ ማስመሰያ</translation>
@@ -6172,7 +6168,7 @@
 <translation id="9109122242323516435">ባዶ ቦታ ለማስለቀቅ ከመሣሪያ ማከማቻ ፋይሎችን ይሰርዙ።</translation>
 <translation id="9110990317705400362">የእርስዎን አሰሳ ይበልጥ ደህንነቱ የተጠበቀ የሚሆንባቸው መንገዶችን በቋሚነት እየፈለግን ነው። ከዚህ ቀደም ማንኛውም ድር ጣቢያ ቅጥያ በአሳሽዎ ላይ እንዲያክሉ ሊጠይቅዎ ይችል ነበር። በቅርቦቹ የGoogle Chrome ስሪቶች ላይ እነዚህን ቅጥያዎች በቅጥያዎች ገጹ በኩል በማከል እንደሚፈልጓቸው በግልጽ ለChrome መንገር አለብዎት። <ph name="BEGIN_LINK" />ተጨማሪ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="9111102763498581341">ክፈት</translation>
-<translation id="9111296877637560526">ይህን አማራጭ ማንቃት የድር መተግበሪያዎች የሙከራ Virtual Reality ኤፒአይዎችን እንዲደርሱባቸው ይፈቅዳል።</translation>
+<translation id="9111296877637560526">ይህን አማራጭ ማንቃት የድር መተግበሪያዎች የሙከራ ምናባዊ ዕውነታ ኤፒአይዎችን እንዲደርሱባቸው ይፈቅዳል።</translation>
 <translation id="9111395131601239814"><ph name="NETWORKDEVICE" />: <ph name="STATUS" /></translation>
 <translation id="9112614144067920641">እባክዎ አዲስ ፒን ይምረጡ።</translation>
 <translation id="9112748030372401671">የእርስዎን ግድግዳ ወረቀት ይቀይራል</translation>
@@ -6230,9 +6226,8 @@
 <translation id="9181716872983600413">ዩኒኮድ</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> ከ<ph name="DOWNLOAD_DOMAIN" />፣ <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">ዳግም ንክኪን እና በማፈናጠር ጊዜ የሚኖረው በአንድ የሽብለላ ክስተት አዳማጮች ጊዜ የሚኖረው የመጀመሪያው ንክኪ እንቅስቃሴ እንደ ተቀማጭ እንዲታይ ያስገድደዋል።</translation>
-<translation id="9184473426683023988">ያስመጡ እና ከመሣሪያ ጋር ይሰሩ</translation>
 <translation id="9186729806195986201">እንዲሁም ወደ ቀዳሚው የተጫነው የ<ph name="IDS_SHORT_PRODUCT_NAME" /> ስሪት ይመለሱ።</translation>
-<translation id="9187651461283037651">Chrome ቪአርን አንቃ።</translation>
+<translation id="9187651461283037651">Chrome ምናባዊ ዕውነታን አንቃ።</translation>
 <translation id="9188441292293901223">ይህን <ph name="DEVICE_TYPE" /> ለማስከፈት እባክዎ ስልክዎን ወደ አዲስ የAndroid ስሪት ያዘምኑት።</translation>
 <translation id="9189690067274055051">ለመግባት ስልክዎን ያስከፍቱት እና ከእርስዎ <ph name="DEVICE_TYPE" /> አጠገብ ያምጡት።</translation>
 <translation id="9190063653747922532">L2TP/IPsec + ቅድሚያ የተጋራ ቁልፍ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index ad14acf..f55a6a57 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">‏عرض تسجيل الدخول إلى مواقع Google تلقائيًا باستخدام هذا الحساب</translation>
 <translation id="1596174774107741586">‏استخدام خوادم وضع الحماية لـ Google Payments</translation>
 <translation id="1598233202702788831">عطّل المشرف التحديثات.</translation>
-<translation id="1598604884989842103">‏تمكين واجهة مستخدم الحد الأقصى في TouchView للاختبار</translation>
 <translation id="1600857548979126453">الدخول إلى الواجهة الخلفية لبرنامج تصحيح خلل الصفحة</translation>
 <translation id="1601560923496285236">تطبيق</translation>
 <translation id="1603914832182249871">(التصفح المتخفي)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">هناك ملف بالاسم "$1" موجود فعلاً. هل تريد استبداله؟</translation>
 <translation id="320825648481311438">‏عند تمكينه، يدير المتصفح تسجيل الدخول والخروج من حسابات Google.</translation>
 <translation id="3208703785962634733">لم يتم تأكيده</translation>
-<translation id="3209459032754159027">تمكين عرض ترويج تسجيل الدخول لبطاقة الائتمان داخل قائمة الملء التلقائي المُنسدلة.</translation>
 <translation id="3211904643589960506">‏تمكين البحث عن عناوين URL من كائنات الشبكة المادية.</translation>
 <translation id="3216508313927987948">لتحقيق ذلك، ستحتاج إلى اختبار <ph name="DEVICE_TYPE" /> في الخطوة التالية.</translation>
 <translation id="3220586366024592812">تعطلت عملية موصل <ph name="CLOUD_PRINT_NAME" /> . هل تريد إعادة التشغيل؟</translation>
@@ -2154,7 +2152,7 @@
 <translation id="3704162925118123524">قد تتطلب الشبكة التي تستخدمها زيارة صفحة تسجيل الدخول.</translation>
 <translation id="3704331259350077894">إيقاف العملية</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">تحميل...</translation>
+<translation id="370665806235115550">جارٍ التحميل...</translation>
 <translation id="3706919628594312718">إعدادات الماوس</translation>
 <translation id="3707020109030358290">ليست مرجعًا مصدقًا.</translation>
 <translation id="3709244229496787112">تم إيقاف تشغيل المتصفح قبل انتهاء التنزيل.</translation>
@@ -4616,7 +4614,6 @@
 <translation id="7042418530779813870">ل&amp;صق وبحث</translation>
 <translation id="7045480833981818310">‏تعديل Office للمستندات، وجداول البيانات، والعروض التقديمية</translation>
 <translation id="7047998246166230966">المؤشر</translation>
-<translation id="7048141481140415714">‏تمكين Ctrl+Alt+Shift+8 للتبديل إلى وضع التكبير في TouchView.</translation>
 <translation id="7049293980323620022">هل تريد الاحتفاظ بالملف؟</translation>
 <translation id="7051943809462976355">جارٍ البحث عن الماوس...</translation>
 <translation id="7052237160939977163">إرسال بيانات تتبع مستوى الأداء</translation>
@@ -5785,7 +5782,6 @@
 <translation id="8632275030377321303">لا يمكن تعديل الخادم الوكيل من قِبل المستخدم.</translation>
 <translation id="8636038761987659075">إعدادات الموقع مع كل المواقع وتفاصيل الموقع</translation>
 <translation id="8637688295594795546">يتوفر تحديث النظام الآن. جارٍ التحضير للتنزيل...</translation>
-<translation id="8638602948366220068">تمكين ترويج تسجيل الدخول لبطاقة الائتمان للملء التلقائي</translation>
 <translation id="8639504893694748827">بدون نسخة من أداة التحويل</translation>
 <translation id="8639963783467694461">إعدادات الملء التلقائي</translation>
 <translation id="8642171459927087831">رمز الدخول المميز</translation>
@@ -6221,7 +6217,6 @@
 <translation id="9181716872983600413">يونيكود</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> من <ph name="DOWNLOAD_DOMAIN" />، <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">تفرض أدوات معالجة الأحداث حسب التمرير للبدء باللمس، والحركة باللمس الأولية أثناء الانتقال لتتم معالجتها كعناصر سلبية.</translation>
-<translation id="9184473426683023988">استيراد شهادات وربط الجهاز بها</translation>
 <translation id="9186729806195986201">بالإضافة إلى العودة إلى الإصدار المثبت مسبقًا من <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">‏تمكين الواقع الافتراضي لـ Chrome.</translation>
 <translation id="9188441292293901223">‏يُرجى تحديث هاتفك إلى الإصدار الأحدث من Android لإلغاء قفل <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index f573112ec..255488e 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -484,7 +484,6 @@
 <translation id="1594234040488055839">Да се показва предложение за автоматично влизане в сайтове на Google с този профил</translation>
 <translation id="1596174774107741586">Използване на тестовите сървъри на Google Payments</translation>
 <translation id="1598233202702788831">Актуализациите са деактивирани от администратора ви.</translation>
-<translation id="1598604884989842103">Активиране на потребителския интерфейс за увеличаване TouchView с цел тестване</translation>
 <translation id="1600857548979126453">Достъп до задния слой на инструмента за откриване и отстраняване на грешки в страниците</translation>
 <translation id="1601560923496285236">Прилагане</translation>
 <translation id="1603914832182249871">(„Инкогнито“)</translation>
@@ -1757,7 +1756,6 @@
 <translation id="3206175707080061730">Файлът с име „$1“ вече съществува. Искате ли да го замените?</translation>
 <translation id="320825648481311438">Когато функцията е активирана, браузърът управлява влизането в профили в Google и излизането от тях.</translation>
 <translation id="3208703785962634733">Непотвърдено</translation>
-<translation id="3209459032754159027">Активиране на показването на текст в падащото меню за автоматично попълване, който подканва потребителите да влязат в профила си, за да използват кредитна карта.</translation>
 <translation id="3211904643589960506">Активирайте сканирането за URL адреси от обекти във физическата мрежа.</translation>
 <translation id="3216508313927987948">За целта трябва да обучите своя <ph name="DEVICE_TYPE" /> в следващата стъпка.</translation>
 <translation id="3220586366024592812">Процесът за връзка с <ph name="CLOUD_PRINT_NAME" /> претърпя срив. Да се рестартира ли?</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">Поставяне и търсе&amp;не</translation>
 <translation id="7045480833981818310">Редактиране на файлове от Office в Документи, Таблици и Презентации</translation>
 <translation id="7047998246166230966">Курсор</translation>
-<translation id="7048141481140415714">Активирайте „Ctrl+Alt+Shift+8“ за превключване на режима TouchView за максимално увеличаване.</translation>
 <translation id="7049293980323620022">Да се запази ли файлът?</translation>
 <translation id="7051943809462976355">Търси се мишка...</translation>
 <translation id="7052237160939977163">Да се изпратят данните от проследяването на ефективността</translation>
@@ -5786,7 +5783,6 @@
 <translation id="8632275030377321303">Прокси сървърът не може да бъде променен от потребителя.</translation>
 <translation id="8636038761987659075">Активиране на опциите „Всички сайтове“ и „Подробности за сайта“ в настройките за сайтове</translation>
 <translation id="8637688295594795546">Налице е системна актуализация. Подготвя се за изтегляне...</translation>
-<translation id="8638602948366220068">Активиране на текст, подканващ към влизане в профил с цел автоматично попълване на данни за кредитна карта</translation>
 <translation id="8639504893694748827">Растеризатор без копиране</translation>
 <translation id="8639963783467694461">Настройки за автоматично попълване</translation>
 <translation id="8642171459927087831">Означение за достъп</translation>
@@ -6222,7 +6218,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> от <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Налага приемателите на събитията „touchstart“ и първото „touchmove“ при превъртане да се третират като пасивни при бързо прекарване с пръст.</translation>
-<translation id="9184473426683023988">Импортиране и свързване с устройство</translation>
 <translation id="9186729806195986201">Също така връщане към предишната инсталирана версия на <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Активиране на режима за виртуална реалност в Chrome.</translation>
 <translation id="9188441292293901223">Моля, актуализирайте телефона си до по-нова версия на Android, за да отключите този <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index a05f44aa..509bff7 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">এই অ্যাকাউন্টের সাথে Google এর সাইটগুলিতে স্বয়ংক্রিয়ভাবে প্রবেশ করুন করার প্রস্তাব দেয়</translation>
 <translation id="1596174774107741586">Google Payments স্যান্ডবক্স সার্ভার ব্যবহার করুন</translation>
 <translation id="1598233202702788831">আপনার প্রশাসক দ্বারা আপডেট অক্ষম করা হয়েছে।</translation>
-<translation id="1598604884989842103">পরীক্ষার জন্য টাচভিউ পূর্ণবিস্তার UI সক্ষম করুন</translation>
 <translation id="1600857548979126453">পৃষ্ঠা ডিবাগার ব্যাকএন্ড অ্যাক্সেস করুন</translation>
 <translation id="1601560923496285236">প্রয়োগ করুন</translation>
 <translation id="1603914832182249871">(ছদ্মবেশী)</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">আপনি এখন Chrome এ প্রবেশ করুন করেছেন</translation>
 <translation id="2287590536030307392">সব বেতার সংযোগ বন্ধ করুন৷</translation>
 <translation id="2291643155573394834">পরবর্তী ট্যাব</translation>
-<translation id="2292848386125228270">দয়া করে একজন সাধারন ব্যবহারকারী হিসেবে <ph name="PRODUCT_NAME" /> আরম্ভ করুন। আপনার যদি বিকাশ করার জন্য রুট হিসাবে চালানোর প্রয়োজন হয়, তাহলে --নো-স্যান্ডবক্স ফ্ল্যাগটি আবার চালান।</translation>
+<translation id="2292848386125228270">অনুগ্রহ করে একজন সাধারন ব্যবহারকারী হিসেবে <ph name="PRODUCT_NAME" /> আরম্ভ করুন। আপনার যদি বিকাশ করার জন্য রুট হিসাবে চালানোর প্রয়োজন হয়, তাহলে --নো-স্যান্ডবক্স ফ্ল্যাগটি আবার চালান।</translation>
 <translation id="2294358108254308676">আপনি কি <ph name="PRODUCT_NAME" /> ইনস্টল করতে চান?</translation>
 <translation id="2296019197782308739">EAP পদ্ধতি:</translation>
 <translation id="2301382460326681002">এক্সটেনশন রুট ডিরেক্টরিটি অবৈধ৷</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">"$1" নামের একটি ফাইল ইতিমধ্যেই বিদ্যমান৷ আপনি কি এটি প্রতিস্থাপন করতে চান?</translation>
 <translation id="320825648481311438">যখন সক্ষম করা থাকে, তখন ব্রাউজার Google অ্যাকাউন্টগুলির প্রবেশ করুন হওয়া বা আউট  হওয়া পরিচালনা করে।</translation>
 <translation id="3208703785962634733">অনিশ্চিত</translation>
-<translation id="3209459032754159027">স্বতঃপূর্ণ ড্রপডাউনের ভিতরে ক্রেডিট কার্ড সাইনইন প্রচার দেখানো সক্ষম করে।</translation>
 <translation id="3211904643589960506">বাস্তবিক ওয়েব বস্তুগুলি থেকে URL স্ক্যানিং সক্ষম করুন।</translation>
 <translation id="3216508313927987948">এটি করতে হলে, আপনার <ph name="DEVICE_TYPE" /> কে নিম্নোল্লিখিত ধাপে প্রশিক্ষিত করতে হবে।</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> সংযোগকারী প্রক্রিয়া ক্র্যাশ হয়েছে৷ পুর্নসূচনা করবেন?</translation>
@@ -4614,7 +4612,6 @@
 <translation id="7042418530779813870">প্রতি&amp;লেপন এবং অনুসন্ধান করুন</translation>
 <translation id="7045480833981818310">দস্তাবেজ, পত্রক, এবং স্লাইডসের জন্য Office সম্পাদনা</translation>
 <translation id="7047998246166230966">পয়েন্টার</translation>
-<translation id="7048141481140415714">TouchView পূর্ণবিস্তার মোডে টগল করার জন্য Ctrl+Alt+Shift+8 সক্ষম করুন৷</translation>
 <translation id="7049293980323620022">ফাইল রাখবেন?</translation>
 <translation id="7051943809462976355">মাউসের জন্য অনুসন্ধান করা হচ্ছে...</translation>
 <translation id="7052237160939977163">কার্য-সম্পাদনা ট্রেস ডেটা পাঠান</translation>
@@ -5782,7 +5779,6 @@
 <translation id="8632275030377321303">প্রক্সি ব্যবহারকারীর দ্বারা পরিবর্তন করা যায় না৷</translation>
 <translation id="8636038761987659075">সমস্ত সাইট এবং সাইট বিবরণ দিয়ে সাইট সেটিংস</translation>
 <translation id="8637688295594795546">সিস্টেম আপডেট উপলব্ধ৷ ডাউনলোড করতে প্রস্তুত হচ্ছে...</translation>
-<translation id="8638602948366220068">স্বতঃপূর্ণ ক্রেডিট কার্ড সাইনইন প্রচার সক্ষম করুন</translation>
 <translation id="8639504893694748827">শূন্য-অনুলিপি রাস্টারাইজার</translation>
 <translation id="8639963783467694461">স্বতঃপূর্ণ সেটিংস</translation>
 <translation id="8642171459927087831">অ্যাক্সেস টোকেন</translation>
@@ -6218,7 +6214,6 @@
 <translation id="9181716872983600413">ইউনিকোড</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" />, থেকে <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">স্পর্শের-মাধ্যমে-শুরু বলবৎ করে, এবং নিক্ষেপের সময় স্ক্রোল প্রতি ইভেন্ট শ্রোতাদের প্রথম স্পর্শের-মাধ্যমে-নড়ানোকে অক্রিয় হিসাবে গণ্য করা হয়।</translation>
-<translation id="9184473426683023988">ডিভাইসে আমদানি করুন এবং বাইন্ড করুন</translation>
 <translation id="9186729806195986201">এছাড়াও <ph name="IDS_SHORT_PRODUCT_NAME" /> এর পূর্বে ইনস্টল করা সংস্করণ ফিরিয়ে আনুন৷</translation>
 <translation id="9187651461283037651">Chrome ভইআর ((ভিআর)VR) সক্ষম করুন।</translation>
 <translation id="9188441292293901223">এই <ph name="DEVICE_TYPE" /> আনলক করতে দয়া করে আপনার ফোনকে একটি আরো নতুন সংস্করণের Android এ আপডেট করুন৷</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 5d81d40..b8fcdaff 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Ofereix iniciar la sessió automàticament als llocs de Google amb aquest compte</translation>
 <translation id="1596174774107741586">Utilitza els servidors de la zona de proves de Google Payments</translation>
 <translation id="1598233202702788831">El vostre administrador ha desactivat les actualitzacions.</translation>
-<translation id="1598604884989842103">Activa la interfície d'usuari de maximització de TouchView per realitzar proves</translation>
 <translation id="1600857548979126453">Accedir al servidor de depuració de pàgina</translation>
 <translation id="1601560923496285236">Aplica</translation>
 <translation id="1603914832182249871">(Incògnit)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">El nom de fitxer "$1" ja existeix. El voleu substituir?</translation>
 <translation id="320825648481311438">Si està activada, el navegador gestiona els inicis i els tancaments de sessió dels comptes de Google.</translation>
 <translation id="3208703785962634733">No confirmat</translation>
-<translation id="3209459032754159027">Activa el missatge d'inici de sessió per a targetes de crèdit al desplegable d'emplenament automàtic.</translation>
 <translation id="3211904643589960506">Activa l'anàlisi d'URL des d'objectes del Web físic.</translation>
 <translation id="3216508313927987948">Amb aquesta finalitat, heu d'entrenar el dispositiu <ph name="DEVICE_TYPE" /> al pas següent.</translation>
 <translation id="3220586366024592812">El procés del connector <ph name="CLOUD_PRINT_NAME" /> s'ha bloquejat. Voleu reiniciar-lo?</translation>
@@ -4616,7 +4614,6 @@
 <translation id="7042418530779813870">En&amp;ganxa i cerca</translation>
 <translation id="7045480833981818310">Edició d'Office per a Documents, Fulls de càlcul i Presentacions</translation>
 <translation id="7047998246166230966">Busca</translation>
-<translation id="7048141481140415714">Activa Ctrl + Alt + Maj + 8 per alternar el mode de maximització de TouchView.</translation>
 <translation id="7049293980323620022">Vols desar el fitxer?</translation>
 <translation id="7051943809462976355">S'està cercant el ratolí...</translation>
 <translation id="7052237160939977163">Envia dades de seguiment del rendiment</translation>
@@ -5776,7 +5773,6 @@
 <translation id="8632275030377321303">L'usuari no pot modificar el servidor intermediari.</translation>
 <translation id="8636038761987659075">Configuració del lloc amb Tots els llocs i Detalls del lloc</translation>
 <translation id="8637688295594795546">Actualització del sistema disponible. S'està preparant la baixada…</translation>
-<translation id="8638602948366220068">Activa el missatge d'inici de sessió per a targetes de crèdit amb l'emplenament automàtic</translation>
 <translation id="8639504893694748827">Rasteritzador sense còpies</translation>
 <translation id="8639963783467694461">Configuració d'Emplenament automàtic</translation>
 <translation id="8642171459927087831">Testimoni d'accés</translation>
@@ -6211,7 +6207,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Força que els detectors d'esdeveniments de desplaçament de toc per iniciar i toc per moure es tractin com a passius durant el desplaçament.</translation>
-<translation id="9184473426683023988">Importa i vincula amb el dispositiu</translation>
 <translation id="9186729806195986201">Torna també a la versió instal·lada anteriorment de <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9187651461283037651">Activa l'RV de Chrome.</translation>
 <translation id="9188441292293901223">Feu l'actualització del telèfon a una versió més recent d'Android per desbloquejar aquest dispositiu <ph name="DEVICE_TYPE" /></translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index e54e8642..38885cc 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Nabízet automatické přihlášení na weby Google pomocí tohoto účtu</translation>
 <translation id="1596174774107741586">Používat izolované testovací servery služby Google Payments</translation>
 <translation id="1598233202702788831">Administrátor aktualizace zakázal.</translation>
-<translation id="1598604884989842103">Povolit aplikaci TouchView maximalizovat uživatelské rozhraní za účelem testování</translation>
 <translation id="1600857548979126453">Získat přístup k ladicímu programu stránky na serveru</translation>
 <translation id="1601560923496285236">Použít</translation>
 <translation id="1603914832182249871">(Anonymní režim)</translation>
@@ -825,7 +824,7 @@
 <translation id="2077129598763517140">V případě dostupnosti použít hardwarovou akceleraci</translation>
 <translation id="2078019350989722914">Před ukončením upozornit (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">Smažete-li jeden z vlastních certifikátů, nebudete ho již moci používat k identifikaci své osoby.</translation>
-<translation id="2079545284768500474">Zpět</translation>
+<translation id="2079545284768500474" />
 <translation id="2080010875307505892">Srbská klávesnice</translation>
 <translation id="2080070583977670716">Další nastavení</translation>
 <translation id="2081322486940989439">Tento web nepřijímá karty Visa.</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Soubor s názvem „$1“ již existuje. Chcete jej nahradit?</translation>
 <translation id="320825648481311438">Pokud je tato možnost povolena, prohlížeč spravuje přihlášení k účtům Google a odhlášení od nich.</translation>
 <translation id="3208703785962634733">Nepotvrzeno</translation>
-<translation id="3209459032754159027">Povolit zobrazování propagace přihlašování pomocí platební karty v rozbalovací nabídce Automatické vyplňování.</translation>
 <translation id="3211904643589960506">Bude povoleno vyhledávání adres URL objektů Fyzického webu.</translation>
 <translation id="3216508313927987948">Aby se tak stalo, budete zařízení <ph name="DEVICE_TYPE" /> muset v následujícím kroku zacvičit.</translation>
 <translation id="3220586366024592812">Proces konektoru služby <ph name="CLOUD_PRINT_NAME" /> selhal. Restartovat?</translation>
@@ -4613,7 +4611,6 @@
 <translation id="7042418530779813870">Vložit a vyhledat</translation>
 <translation id="7045480833981818310">Úpravy souborů systému Office v Dokumentech, Tabulkách a Prezentacích Google</translation>
 <translation id="7047998246166230966">Kurzor</translation>
-<translation id="7048141481140415714">Povolí přepínání režimu maximalizace aplikace TouchView pomocí kombinace kláves Ctrl+Alt+Shift+8.</translation>
 <translation id="7049293980323620022">Ponechat soubor?</translation>
 <translation id="7051943809462976355">Vyhledávání myši...</translation>
 <translation id="7052237160939977163">Odesílat údaje sledování výkonu</translation>
@@ -5779,7 +5776,6 @@
 <translation id="8632275030377321303">Uživatel nemůže proxy server změnit.</translation>
 <translation id="8636038761987659075">Nastavení webů s možnostmi Všechny weby a Podrobnosti webu</translation>
 <translation id="8637688295594795546">K dispozici je aktualizace systému. Příprava stahování...</translation>
-<translation id="8638602948366220068">Povolit propagaci přihlašování pomocí platební karty v Automatickém doplňování</translation>
 <translation id="8639504893694748827">Rasterizér bez kopií</translation>
 <translation id="8639963783467694461">Nastavení automatického vyplňování</translation>
 <translation id="8642171459927087831">Přístupový token</translation>
@@ -6215,7 +6211,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> z <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Vynutí, aby posluchač události touchstart a první posluchač události touchmove při rychlém posouvání byly považovány za pasivní.</translation>
-<translation id="9184473426683023988">Importovat a svázat se zařízením</translation>
 <translation id="9186729806195986201">Také obnovit předchozí nainstalovanou verzi aplikace <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9187651461283037651">Povolit v Chromu virtuální realitu</translation>
 <translation id="9188441292293901223">Chcete-li odemknout toto zařízení <ph name="DEVICE_TYPE" />, aktualizujte svůj telefon na novější verzi platformy Android.</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 67c00f57..9e9f050 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Få tilbudt at logge automatisk ind på Google-websites med denne konto</translation>
 <translation id="1596174774107741586">Brug sandbox-serverne for Google Payments</translation>
 <translation id="1598233202702788831">Opdateringer er deaktiveret af din administrator.</translation>
-<translation id="1598604884989842103">Aktivér grænsefladen for TouchView-maksimering til testformål</translation>
 <translation id="1600857548979126453">Få adgang til administration af fejlfinding på siden</translation>
 <translation id="1601560923496285236">Anvend</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Der findes allerede en fil med navnet "$1". Vil du erstatte den?</translation>
 <translation id="320825648481311438">Når denne funktion er aktiveret, håndterer browseren det at logge ind og ud af Google-konti.</translation>
 <translation id="3208703785962634733">Ikke bekræftet</translation>
-<translation id="3209459032754159027">Aktivér visning af promoveringen for udfyldning af kreditkortoplysninger i rullemenuen for AutoFyld.</translation>
 <translation id="3211904643589960506">Aktivér scanning efter webadresser fra Fysisk web-objekter.</translation>
 <translation id="3216508313927987948">For at gøre det skal du oplære din <ph name="DEVICE_TYPE" /> via de følgende trin.</translation>
 <translation id="3220586366024592812">Behandlingen af forbindelsen til <ph name="CLOUD_PRINT_NAME" /> er gået ned. Vil du genstarte?</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">Indsæt og søg</translation>
 <translation id="7045480833981818310">Office-redigering til Docs, Sheets og Slides</translation>
 <translation id="7047998246166230966">Markør</translation>
-<translation id="7048141481140415714">Aktivér Ctrl+Alt+Shift+8 for at skifte til tilstanden TouchView-maksimering.</translation>
 <translation id="7049293980323620022">Vil du beholde filen?</translation>
 <translation id="7051943809462976355">Søger efter mus...</translation>
 <translation id="7052237160939977163">Send data om ydeevne</translation>
@@ -5787,7 +5784,6 @@
 <translation id="8632275030377321303">Proxyen kan ikke ændres af brugeren.</translation>
 <translation id="8636038761987659075">Indstillinger for website med Alle websites og Websiteoplysninger</translation>
 <translation id="8637688295594795546">Der findes en tilgængelig opdatering til systemet. Forbereder download...</translation>
-<translation id="8638602948366220068">Aktivér promoveringen af AutoFyld til udfyldning af kreditkortoplysninger</translation>
 <translation id="8639504893694748827">Rasterisering med nul kopier</translation>
 <translation id="8639963783467694461">Indstillinger for AutoFyld</translation>
 <translation id="8642171459927087831">Adgangstoken</translation>
@@ -6224,7 +6220,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> fra <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Gennemtvinger trykstart, og lyttefunktionerne for første trykbevægelse pr. rulning ved hurtigt fingerstrøg behandles som passive.</translation>
-<translation id="9184473426683023988">Importér og knyt til enhed</translation>
 <translation id="9186729806195986201">Vend også tilbage til den tidligere version af <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Aktivér Chrome VR.</translation>
 <translation id="9188441292293901223">Opdater din telefon til en nyere version af Android for at låse denne <ph name="DEVICE_TYPE" /> op.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 89d2cf4..eb78200 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -484,7 +484,6 @@
 <translation id="1594234040488055839">Automatische Anmeldungen in Google-Websites mit diesem Konto ermöglichen</translation>
 <translation id="1596174774107741586">Google Payments-Sandbox-Server verwenden</translation>
 <translation id="1598233202702788831">Updates sind durch Ihren Administrator deaktiviert.</translation>
-<translation id="1598604884989842103">Maximierungsbenutzeroberfläche in TouchView zu Testzwecken aktivieren</translation>
 <translation id="1600857548979126453">Auf das Back-End für Seiten-Debugger zugreifen</translation>
 <translation id="1601560923496285236">Übernehmen</translation>
 <translation id="1603914832182249871">(Anonym)</translation>
@@ -821,7 +820,7 @@
 <translation id="2077129598763517140">Hardwarebeschleunigung verwenden, falls verfügbar</translation>
 <translation id="2078019350989722914">Vor Beenden warnen (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">Falls Sie eines Ihrer eigenen Zertifikate löschen, können Sie sich damit nicht mehr identifizieren.</translation>
-<translation id="2079545284768500474">Rückgängig</translation>
+<translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="2080010875307505892">Serbische Tastatur</translation>
 <translation id="2080070583977670716">Weitere Einstellungen</translation>
 <translation id="2081322486940989439">Visa wird von dieser Website nicht akzeptiert.</translation>
@@ -892,7 +891,7 @@
 <translation id="216169395504480358">WLAN hinzufügen...</translation>
 <translation id="2163470535490402084">Stellen Sie eine Internetverbindung her, um sich auf Ihrem Gerät (<ph name="DEVICE_TYPE" />) anzumelden.</translation>
 <translation id="2164862903024139959">Vietnamesische Tastatur (TCVN)</translation>
-<translation id="2165722503303595908">Abmessungen</translation>
+<translation id="2165722503303595908">Bildmaße</translation>
 <translation id="2166369534954157698">Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich</translation>
 <translation id="2167276631610992935">JavaScript</translation>
 <translation id="2168214441502403371">Persische Tastatur</translation>
@@ -1711,7 +1710,7 @@
 <translation id="3150927491400159470">Vollständiges Aktualisieren (Hard Reload)</translation>
 <translation id="315116470104423982">Mobilfunk</translation>
 <translation id="315141861755603168">"<ph name="BUNDLE_NAME" />" fügt diese Apps hinzu:</translation>
-<translation id="3151539355209957474">Beginn</translation>
+<translation id="3151539355209957474">Startzeit</translation>
 <translation id="3151786313568798007">Ausrichtung</translation>
 <translation id="3153177132960373163">Verwendung von Plug-ins für den Zugriff auf Ihren Computer für alle Websites zulassen</translation>
 <translation id="3154351730702813399">Der Geräteadministrator überwacht unter Umständen Ihre Browseraktivitäten.</translation>
@@ -1756,7 +1755,6 @@
 <translation id="3206175707080061730">Eine Datei mit dem Namen "$1" existiert bereits. Möchten Sie sie ersetzen?</translation>
 <translation id="320825648481311438">Ist die Funktion aktiviert, verwaltet der Browser die Anmeldung in und die Abmeldung von Google-Konten.</translation>
 <translation id="3208703785962634733">Nicht bestätigt</translation>
-<translation id="3209459032754159027">Anzeige des Hinweises zur Anmeldung in Chrome im AutoFill-Drop-down für Kreditkarten aktivieren.</translation>
 <translation id="3211904643589960506">Scannen nach URLs von Physical Web-Objekten aktivieren.</translation>
 <translation id="3216508313927987948">Damit dies geschieht, müssen Sie Ihr <ph name="DEVICE_TYPE" /> im folgenden Schritt trainieren.</translation>
 <translation id="3220586366024592812">Der <ph name="CLOUD_PRINT_NAME" />-Connector-Prozess ist abgestürzt. Neu starten?</translation>
@@ -2309,7 +2307,7 @@
 <translation id="3899879303189199559">Seit über einem Jahr offline</translation>
 <translation id="3899968422636198696"><ph name="ORGNAME" /> <ph name="HOSTNAME" /></translation>
 <translation id="3901991538546252627">Verbindung mit <ph name="NAME" /> wird hergestellt.</translation>
-<translation id="3902365939851986963">Touchscreen-Begrenzungen auf dem Display definieren</translation>
+<translation id="3902365939851986963">Touchscreen-Begrenzungen auf dem Display festlegen</translation>
 <translation id="3902799646152133632">Überspringt "no-store"-Hauptframe.</translation>
 <translation id="3904196543277238487">Höchste aktivierte TLS-Version.</translation>
 <translation id="3904709815599435085">Richtet die Android Hintergründe App als Standard-App für Hintergründe unter Chrome OS ein.</translation>
@@ -4609,7 +4607,6 @@
 <translation id="7042418530779813870">Einfügen und &amp;suchen</translation>
 <translation id="7045480833981818310">Office-Dateien in Google Docs, Tabellen und Präsentationen bearbeiten</translation>
 <translation id="7047998246166230966">Mauszeiger</translation>
-<translation id="7048141481140415714">Drücken Sie Strg + Alt + Shift + 8, um den Maximierungsmodus in TouchView zu aktivieren bzw. deaktivieren.</translation>
 <translation id="7049293980323620022">Datei beibehalten?</translation>
 <translation id="7051943809462976355">Suche nach Maus läuft...</translation>
 <translation id="7052237160939977163">Daten der Leistungsnachverfolgung senden</translation>
@@ -5780,7 +5777,6 @@
 <translation id="8632275030377321303">Der Proxy kann nicht vom Nutzer geändert werden.</translation>
 <translation id="8636038761987659075">Website-Einstellungen mit "Alle Websites" und "Websitedetails"</translation>
 <translation id="8637688295594795546">Systemupdate verfügbar. Download wird vorbereitet...</translation>
-<translation id="8638602948366220068">AutoFill-Anmeldehinweis für Kreditkarten aktivieren</translation>
 <translation id="8639504893694748827">Rasterung ohne Kopie</translation>
 <translation id="8639963783467694461">AutoFill-Einstellungen</translation>
 <translation id="8642171459927087831">Zugriffs-Token</translation>
@@ -6215,7 +6211,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> von <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Dadurch werden die Ereignis-Listener "touchstart" und "first touchmove" bei jedem Scrollen während des Ziehens als passiv behandelt.</translation>
-<translation id="9184473426683023988">Importieren und an Gerät binden</translation>
 <translation id="9186729806195986201">Auch die zuvor installierte Version von <ph name="IDS_SHORT_PRODUCT_NAME" /> wiederherstellen</translation>
 <translation id="9187651461283037651">Chrome VR aktivieren.</translation>
 <translation id="9188441292293901223">Bitte aktualisieren Sie Ihr Telefon auf eine neuere Android-Version, um dieses <ph name="DEVICE_TYPE" /> zu entsperren.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 38a4d6f80..3efe815f 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -489,7 +489,6 @@
 <translation id="1594234040488055839">Προσφορά για αυτόματη σύνδεση σε ιστότοπους της Google με αυτόν το λογαριασμό</translation>
 <translation id="1596174774107741586">Χρήση των διακομιστών περιβάλλοντος δοκιμών του Google Payments</translation>
 <translation id="1598233202702788831">Οι ενημερώσεις έχουν απενεργοποιηθεί από τον διαχειριστή σας.</translation>
-<translation id="1598604884989842103">Ενεργοποίηση διεπαφής μεγιστοποίησης TouchView για δοκιμή</translation>
 <translation id="1600857548979126453">Πρόσβαση στο σύστημα υποστήριξης εντοπισμού σφαλμάτων σελίδων</translation>
 <translation id="1601560923496285236">Εφαρμογή</translation>
 <translation id="1603914832182249871">(Ανώνυμη περιήγηση)</translation>
@@ -1766,7 +1765,6 @@
 <translation id="3206175707080061730">Υπάρχει ήδη αρχείο με το όνομα "$1". Θέλετε να το αντικαταστήσετε;</translation>
 <translation id="320825648481311438">Όταν είναι ενεργοποιημένο, το πρόγραμμα περιήγησης διαχειρίζεται τη σύνδεση και την αποσύνδεση στους Λογαριασμούς Google.</translation>
 <translation id="3208703785962634733">Μη επιβεβαιωμένη</translation>
-<translation id="3209459032754159027">Ενεργοποίηση της εμφάνισης του προωθητικού μηνύματος σύνδεσης πιστωτικής κάρτας στο αναπτυσσόμενο μενού της αυτόματης συμπλήρωσης.</translation>
 <translation id="3211904643589960506">Ενεργοποίηση  σάρωσης για διευθύνσεις URL από τα αντικείμενα του Φυσικού δικτύου.</translation>
 <translation id="3216508313927987948">Για να γίνει αυτό, θα πρέπει να εκπαιδεύσετε τη συσκευή σας <ph name="DEVICE_TYPE" /> στο ακόλουθο βήμα.</translation>
 <translation id="3220586366024592812">Η διαδικασία σύνδεσης <ph name="CLOUD_PRINT_NAME" /> παρουσίασε σφάλμα. Να γίνει επανεκκίνηση;</translation>
@@ -4561,7 +4559,7 @@
 <translation id="695755122858488207">Μη επιλεγμένο κουμπί επιλογής</translation>
 <translation id="696203921837389374">Ενεργοποίηση συγχρονισμού μέσω δεδομένων κινητής τηλεφωνίας</translation>
 <translation id="6964390816189577014">Ήρωας</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="6965648386495488594">Θύρα</translation>
 <translation id="6965978654500191972">Συσκευή</translation>
 <translation id="6969104364835835175">Υποχρεωτική ενεργοποίηση του PNaCl Subzero</translation>
@@ -4638,7 +4636,6 @@
 <translation id="7042418530779813870">Επικό&amp;λληση και αναζήτηση</translation>
 <translation id="7045480833981818310">Επεξεργασία αρχείων του Office για Έγγραφα, Υπολογιστικά φύλλα και Παρουσιάσεις</translation>
 <translation id="7047998246166230966">Δείκτης</translation>
-<translation id="7048141481140415714">Ενεργοποίηση Ctrl+Alt+Shift+8 για εναλλαγή της λειτουργίας μεγιστοποίησης TouchView.</translation>
 <translation id="7049293980323620022">Διατήρηση αρχείου;</translation>
 <translation id="7051943809462976355">Αναζήτηση για το ποντίκι…</translation>
 <translation id="7052237160939977163">Αποστολή δεδομένων εντοπισμού απόδοσης</translation>
@@ -5814,7 +5811,6 @@
 <translation id="8632275030377321303">Δεν είναι δυνατή η τροποποίηση του διακομιστή μεσολάβησης από το χρήστη.</translation>
 <translation id="8636038761987659075">Ρυθμίσεις ιστοτόπου με λεπτομέρειες για όλους τους ιστότοπους και τον ιστότοπο</translation>
 <translation id="8637688295594795546">Υπάρχει διαθέσιμη ενημέρωση του συστήματος. Προετοιμασία για λήψη...</translation>
-<translation id="8638602948366220068">Ενεργοποίηση του προωθητικού μηνύματος σύνδεσης κατά την αυτόματη συμπλήρωση των στοιχείων της πιστωτικής κάρτας</translation>
 <translation id="8639504893694748827">Εφαρμογή raster μηδενικού αντιγράφου</translation>
 <translation id="8639963783467694461">Ρυθμίσεις αυτόματης συμπλήρωσης</translation>
 <translation id="8642171459927087831">Διακριτικό πρόσβασης</translation>
@@ -6250,7 +6246,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> από <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Επιβάλλει τη μεταχείριση των λειτουργιών επεξεργασίας συμβάντων έναρξης με άγγιγμα και μετακίνησης με πρώτο άγγιγμα ανά κύλιση κατά την κίνηση ως παθητικών.</translation>
-<translation id="9184473426683023988">Εισαγωγή και δέσμευση σε συσκευή</translation>
 <translation id="9186729806195986201">Γίνεται επίσης επαναφορά στην προηγούμενη εγκατεστημένη έκδοση του <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Ενεργοποίηση Chrome VR.</translation>
 <translation id="9188441292293901223">Ενημερώστε το τηλέφωνό σας σε μια νεότερη έκδοση του Android για να ξεκλειδώσετε αυτό το <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index c33d500..c6fd9d0 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Offer to sign in to Google sites automatically with this account</translation>
 <translation id="1596174774107741586">Use Google Payments sandbox servers</translation>
 <translation id="1598233202702788831">Updates are disabled by your administrator.</translation>
-<translation id="1598604884989842103">Enable TouchView maximising UI for testing</translation>
 <translation id="1600857548979126453">Access the page debugger backend</translation>
 <translation id="1601560923496285236">Apply</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">A file named "$1" already exists. Do you want to replace it?</translation>
 <translation id="320825648481311438">When enabled, the browser manages signing in and out of Google accounts.</translation>
 <translation id="3208703785962634733">Unconfirmed</translation>
-<translation id="3209459032754159027">Enable showing the credit card sign-in promo inside the Auto-fill drop-down.</translation>
 <translation id="3211904643589960506">Enable scanning for URLs from Physical Web objects.</translation>
 <translation id="3216508313927987948">To make this happen, you'll need to train your <ph name="DEVICE_TYPE" /> in the following step.</translation>
 <translation id="3220586366024592812">The <ph name="CLOUD_PRINT_NAME" /> connector process has crashed. Restart?</translation>
@@ -4621,7 +4619,6 @@
 <translation id="7042418530779813870">Pa&amp;ste and search</translation>
 <translation id="7045480833981818310">Office Editing for Docs, Sheets &amp; Slides</translation>
 <translation id="7047998246166230966">Pointer</translation>
-<translation id="7048141481140415714">Enable Ctrl+Alt+Shift+8 to toggle the TouchView maximising mode.</translation>
 <translation id="7049293980323620022">Keep file?</translation>
 <translation id="7051943809462976355">Searching for mouse...</translation>
 <translation id="7052237160939977163">Send performance trace data</translation>
@@ -5791,7 +5788,6 @@
 <translation id="8632275030377321303">The proxy cannot be modified by the user.</translation>
 <translation id="8636038761987659075">Site settings with All sites and Site details</translation>
 <translation id="8637688295594795546">System update available. Preparing to download…</translation>
-<translation id="8638602948366220068">Enable Auto-fill Credit Card Sign-in Promo</translation>
 <translation id="8639504893694748827">Zero-copy rasteriser</translation>
 <translation id="8639963783467694461">Auto-fill settings</translation>
 <translation id="8642171459927087831">Access Token</translation>
@@ -6169,7 +6165,7 @@
 <translation id="9109122242323516435">To free up space, delete files from device storage.</translation>
 <translation id="9110990317705400362">We're constantly looking for ways to make your browsing safer. Previously, any website could prompt you to add an extension into your browser. In the latest versions of Google Chrome, you must explicitly tell Chrome that you want to install these extensions by adding them through the Extensions page. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="9111102763498581341">Unlock</translation>
-<translation id="9111296877637560526">Enabling this option allows web applications to access experimental Virtual Reality APIs.</translation>
+<translation id="9111296877637560526">Enabling this option allows web applications to access experimental virtual reality APIs.</translation>
 <translation id="9111395131601239814"><ph name="NETWORKDEVICE" />: <ph name="STATUS" /></translation>
 <translation id="9112614144067920641">Please choose a new PIN.</translation>
 <translation id="9112748030372401671">Change your wallpaper</translation>
@@ -6227,7 +6223,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> from <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Forces touch start, and first touch move per scroll event listeners during fling to be treated as passive.</translation>
-<translation id="9184473426683023988">Import and Bind to Device</translation>
 <translation id="9186729806195986201">Also return to the previously installed version of <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Enable Chrome VR.</translation>
 <translation id="9188441292293901223">Please update your phone to a newer version of Android to unlock this <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 9bd26b8..1891ca5 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -484,7 +484,6 @@
 <translation id="1594234040488055839">Ofrecer acceso automático en los sitios de Google con esta cuenta</translation>
 <translation id="1596174774107741586">Usar los servidores de zona de pruebas de Google Payments</translation>
 <translation id="1598233202702788831">Tu administrador inhabilitó las actualizaciones.</translation>
-<translation id="1598604884989842103">Habilitar la interfaz de usuario de ampliación de TouchView para realizar pruebas</translation>
 <translation id="1600857548979126453">Acceder al servidor del depurador de páginas</translation>
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Incógnito)</translation>
@@ -1213,7 +1212,7 @@
 <translation id="2565670301826831948">Velocidad del panel táctil:</translation>
 <translation id="2566124945717127842">Usa la función Powerwash para restablecer el dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> y que quede como nuevo.</translation>
 <translation id="2568774940984945469">Contenedor de la barra de información</translation>
-<translation id="2570000010887652771">Datos guardados.</translation>
+<translation id="2570000010887652771">Consumo de datos reducido</translation>
 <translation id="2570648609346224037">Se produjo un error durante la descarga de la imagen de recuperación.</translation>
 <translation id="257088987046510401">Temas</translation>
 <translation id="2572032849266859634">Se concedió acceso de solo lectura a <ph name="VOLUME_NAME" />.</translation>
@@ -1757,7 +1756,6 @@
 <translation id="3206175707080061730">Ya existe un archivo llamado "$1". ¿Deseas reemplazarlo?</translation>
 <translation id="320825648481311438">Si se habilita esta opción, el navegador administrará el proceso para acceder a las cuentas de Google y salir de ellas.</translation>
 <translation id="3208703785962634733">Sin confirmar</translation>
-<translation id="3209459032754159027">Permite mostrar la promoción de acceso de la tarjeta de crédito en la lista desplegable de Autocompletar.</translation>
 <translation id="3211904643589960506">Habilitar el escaneo de URL de los objetos de la Web física</translation>
 <translation id="3216508313927987948">Para que esto suceda, debes enseñarle a tu <ph name="DEVICE_TYPE" /> en el siguiente paso.</translation>
 <translation id="3220586366024592812">Se ha producido un bloqueo en el proceso del conector de <ph name="CLOUD_PRINT_NAME" />. ¿Deseas reiniciarlo?</translation>
@@ -2310,7 +2308,7 @@
 <translation id="3899879303189199559">Sin conexión durante más de un año</translation>
 <translation id="3899968422636198696"><ph name="ORGNAME" /> <ph name="HOSTNAME" /></translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME" /></translation>
-<translation id="3902365939851986963">Definir los límites de la pantalla táctil</translation>
+<translation id="3902365939851986963">Definir los límites de la pantalla táctil en Pantallas</translation>
 <translation id="3902799646152133632">Omite el marco principal sin almacenamiento.</translation>
 <translation id="3904196543277238487">Versión de TLS máxima habilitada</translation>
 <translation id="3904709815599435085">Habilita la app Fondos de pantalla para Android como la app de fondos de pantalla predeterminada en el Sistema operativo Chrome.</translation>
@@ -4540,7 +4538,7 @@
 <translation id="695755122858488207">Botón de radio no seleccionado</translation>
 <translation id="696203921837389374">Habilitar la sincronización mediante datos móviles</translation>
 <translation id="6964390816189577014">Héroe</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6965648386495488594">Puerto</translation>
 <translation id="6965978654500191972">Dispositivo</translation>
 <translation id="6969104364835835175">Forzar Subzero de PNaCl</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">Pe&amp;gar y buscar</translation>
 <translation id="7045480833981818310">Edición de Office para Documentos, Hojas de cálculo y Presentaciones de Google</translation>
 <translation id="7047998246166230966">Puntero</translation>
-<translation id="7048141481140415714">Habilita Ctrl + Alt + Mayús + 8 para activar el modo de ampliación de TouchView.</translation>
 <translation id="7049293980323620022">¿Deseas conservar el archivo?</translation>
 <translation id="7051943809462976355">Buscando mouse…</translation>
 <translation id="7052237160939977163">Enviar datos de seguimiento de rendimiento</translation>
@@ -5785,7 +5782,6 @@
 <translation id="8632275030377321303">El usuario no puede modificar el proxy.</translation>
 <translation id="8636038761987659075">Configuración del sitio con Todos los sitios y Detalles del sitio</translation>
 <translation id="8637688295594795546">Actualización del sistema disponible. Preparando para descargar...</translation>
-<translation id="8638602948366220068">Habilitar función de promoción de acceso de la tarjeta de crédito con Autocompletar</translation>
 <translation id="8639504893694748827">Rasterizador de copia cero</translation>
 <translation id="8639963783467694461">Configuración de Autocompletar</translation>
 <translation id="8642171459927087831">Token de acceso</translation>
@@ -6220,7 +6216,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Fuerza los objetos de escucha de eventos touchstart y primer touchmove por desplazamiento en la navegación para que se consideren pasivos.</translation>
-<translation id="9184473426683023988">Importar y vincular con el dispositivo</translation>
 <translation id="9186729806195986201">Volver también a la versión de <ph name="IDS_SHORT_PRODUCT_NAME" /> instalada previamente</translation>
 <translation id="9187651461283037651">Habilitar Chrome VR</translation>
 <translation id="9188441292293901223">Actualiza el teléfono a una nueva versión de Android para desbloquear el dispositivo <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 259d5c46..030c13b 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Ofrecer inicio de sesión en sitios de Google automáticamente con esta cuenta</translation>
 <translation id="1596174774107741586">Utilizar servidores de zona de pruebas de Google Payments</translation>
 <translation id="1598233202702788831">El administrador ha inhabilitado las actualizaciones.</translation>
-<translation id="1598604884989842103">Habilitar la interfaz de usuario de ampliación de TouchView para realizar pruebas</translation>
 <translation id="1600857548979126453">Acceder al servidor de depuración de página</translation>
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Incógnito)</translation>
@@ -1763,7 +1762,6 @@
 <translation id="3206175707080061730">Ya existe un archivo "$1". ¿Quieres sustituirlo?</translation>
 <translation id="320825648481311438">Cuando esta opción está habilitada, el navegador administra el inicio y el cierre de sesión de las cuentas de Google.</translation>
 <translation id="3208703785962634733">Sin confirmar</translation>
-<translation id="3209459032754159027">Habilitar mensaje de inicio de sesión para tarjetas de crédito en el menú desplegable de Autocompletar.</translation>
 <translation id="3211904643589960506">Habilitar la detección de URLs desde objetos de la Web física.</translation>
 <translation id="3216508313927987948">Para que esto sea posible, debes entrenar tu <ph name="DEVICE_TYPE" /> en el paso siguiente.</translation>
 <translation id="3220586366024592812">Se ha producido un error en el proceso de conector de <ph name="CLOUD_PRINT_NAME" />. ¿Reiniciar?</translation>
@@ -2737,7 +2735,7 @@
 <translation id="4530494379350999373">Origen</translation>
 <translation id="4532499992208253975">emcargando</translation>
 <translation id="4533259260976001693">Reducir/ampliar</translation>
-<translation id="4533985347672295764">Tiempo de CPU</translation>
+<translation id="4533985347672295764">Tiempo de uso de la CPU</translation>
 <translation id="4534166495582787863">Habilita el clic con tres de dedos del panel táctil como botón central.</translation>
 <translation id="4534799089889278411">Di "Ok Google" en una nueva pestaña, en google.es y en el menú de aplicaciones</translation>
 <translation id="4535127706710932914">Perfil predeterminado</translation>
@@ -4180,7 +4178,7 @@
 <translation id="6442697326824312960">No fijar pestaña</translation>
 <translation id="6443783728907198276">Si se habilita, los mensajes Stun generados por WebRTC incluirán el encabezado de origen.</translation>
 <translation id="6444070574980481588">Establecer fecha y hora</translation>
-<translation id="6444688254019178081">Habilitar ventanas acopladas.</translation>
+<translation id="6444688254019178081">Habilitar acoplamiento de ventanas.</translation>
 <translation id="6445450263907939268">Si no querías realizar estos cambios, puedes restaurar la configuración anterior.</translation>
 <translation id="6447842834002726250">Cookies</translation>
 <translation id="6449285849137521213">Se ha añadido la aplicación <ph name="EXTENSION_NAME" />.</translation>
@@ -4615,7 +4613,6 @@
 <translation id="7042418530779813870">Pe&amp;gar y buscar</translation>
 <translation id="7045480833981818310">Edición de Office para Documentos, Hojas de Cálculo y Presentaciones de Google</translation>
 <translation id="7047998246166230966">Puntero</translation>
-<translation id="7048141481140415714">Habilita Ctrl+Alt+Mayús+8 para activar el modo de ampliación de TouchView.</translation>
 <translation id="7049293980323620022">¿Quieres conservar el archivo?</translation>
 <translation id="7051943809462976355">Buscando el ratón...</translation>
 <translation id="7052237160939977163">Enviar datos de seguimiento de rendimiento</translation>
@@ -5784,7 +5781,6 @@
 <translation id="8632275030377321303">El usuario no puede modificar el proxy.</translation>
 <translation id="8636038761987659075">Configuración de sitios web con los detalles del sitio web y todos los sitios</translation>
 <translation id="8637688295594795546">Hay disponible una actualización del sistema. Preparando para descargar…</translation>
-<translation id="8638602948366220068">Habilitar función de iniciar sesión para tarjetas de crédito de Autocompletar</translation>
 <translation id="8639504893694748827">Rasterizador de copia cero</translation>
 <translation id="8639963783467694461">Configuración de Autocompletar</translation>
 <translation id="8642171459927087831">Token de acceso</translation>
@@ -6220,7 +6216,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Fuerza los procesadores de eventos touchstart y el primer procesador de eventos touchmove por desplazamiento durante el deslizamiento para que se consideren pasivos.</translation>
-<translation id="9184473426683023988">Importar y vincular al dispositivo</translation>
 <translation id="9186729806195986201">Volver también a la versión de <ph name="IDS_SHORT_PRODUCT_NAME" /> instalada previamente.</translation>
 <translation id="9187651461283037651">Habilitar Chrome VR.</translation>
 <translation id="9188441292293901223">Instala una versión más reciente de Android en el teléfono para desbloquear este <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index a873470..aa658f81 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Paku selle konto puhul automaatset sisselogimist Google'i saitidele</translation>
 <translation id="1596174774107741586">Teenuse Google Payments liivakasti serverite kasutamine</translation>
 <translation id="1598233202702788831">Administraator on värskendused keelanud.</translation>
-<translation id="1598604884989842103">Luba kasutajaliidest maksimeeriv TouchView testimiseks</translation>
 <translation id="1600857548979126453">Juurdepääs lehesiluri tagaosale</translation>
 <translation id="1601560923496285236">Rakenda</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Fail nimega „$1” on juba olemas. Kas soovite selle asendada?</translation>
 <translation id="320825648481311438">Kui see on lubatud, siis haldab brauser Google'i kontodele sisselogimist ja sealt väljalogimist.</translation>
 <translation id="3208703785962634733">Kinnitamata</translation>
-<translation id="3209459032754159027">Lubage krediitkaardivormi täitmisel sisselogimisviiba kuvamine automaattäite menüüs.</translation>
 <translation id="3211904643589960506">Lubatakse URL-ide skannimine füüsilise veebi objektidest.</translation>
 <translation id="3216508313927987948">Selleks peate seadet <ph name="DEVICE_TYPE" /> järgmises etapis treenima.</translation>
 <translation id="3220586366024592812">Üksuse <ph name="CLOUD_PRINT_NAME" /> ühendusprotsess jooksis kokku. Kas soovite taaskäivitada?</translation>
@@ -3877,7 +3875,7 @@
 <translation id="60357267506638014">Tšehhi QWERTY</translation>
 <translation id="6039651071822577588">Võrguatribuudi sõnastiku vorming on vale</translation>
 <translation id="604001903249547235">Pilvepõhine varundus</translation>
-<translation id="6040143037577758943">Sule</translation>
+<translation id="6040143037577758943">Sulge</translation>
 <translation id="604124094241169006">Automaatne</translation>
 <translation id="6042308850641462728">Rohkem</translation>
 <translation id="6043317578411397101">Rakendus <ph name="APP_NAME" /> jagab Chrome'i vahelehte vahelehega <ph name="TAB_NAME" />.</translation>
@@ -4543,7 +4541,7 @@
 <translation id="695755122858488207">Valimata raadionupp</translation>
 <translation id="696203921837389374">Luba sünkroonimine mobiilse andmeside kaudu</translation>
 <translation id="6964390816189577014">Kangelane</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="6965648386495488594">Port</translation>
 <translation id="6965978654500191972">Seade</translation>
 <translation id="6969104364835835175">Funktsiooni PNaCl Subzero jõustamine</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">Kl&amp;eebi ja otsi</translation>
 <translation id="7045480833981818310">Office'i failide muutmine rakendustega Dokumendid, Arvutustabelid ja Esitlused</translation>
 <translation id="7047998246166230966">Kursor</translation>
-<translation id="7048141481140415714">Lubage klahvikombinatsiooni Ctrl + Alt + Tõstuklahv + 8 kasutamine TouchView' maksimeerimisrežiimi sisse- ja väljalülitamiseks.</translation>
 <translation id="7049293980323620022">Kas soovite faili säilitada?</translation>
 <translation id="7051943809462976355">Hiire otsimine ...</translation>
 <translation id="7052237160939977163">Saada toimivuse jälgimise andmeid</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">Kasutaja ei saa puhverserveri seadeid muuta.</translation>
 <translation id="8636038761987659075">Saidi seaded valikutega Kõik saidid ja Saidi üksikasjad</translation>
 <translation id="8637688295594795546">Süsteemiuuendus on saadaval. Allalaadimiseks valmistumine …</translation>
-<translation id="8638602948366220068">Sisselogimisviiba lubamine krediitkaardivormi automaattäitmisel</translation>
 <translation id="8639504893694748827">Nullkoopia rasterdaja</translation>
 <translation id="8639963783467694461">Automaatse täitmise seaded</translation>
 <translation id="8642171459927087831">Juurdepääsuluba</translation>
@@ -6225,7 +6221,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> domeenist <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Sõrmega libistamise ajal jõustatakse sündmusekuulajate kerimise puhul puutega käivitamise ja esimese puutega teisaldamise kohtlemine passiivselt.</translation>
-<translation id="9184473426683023988">Impordi ja seo seadmega</translation>
 <translation id="9186729806195986201">Taastatakse ka toote <ph name="IDS_SHORT_PRODUCT_NAME" /> varem installitud versioon.</translation>
 <translation id="9187651461283037651">Luba Chrome'i VR.</translation>
 <translation id="9188441292293901223">Seadme <ph name="DEVICE_TYPE" /> avamiseks värskendage oma telefon uuemale Androidi versioonile.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 772984f..fa06b11 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -485,7 +485,6 @@
 <translation id="1594234040488055839">‏پیشنهاد ورود به سیستم خودکار به سایت‌های Google با این حساب</translation>
 <translation id="1596174774107741586">‏استفاده از سرورهای جعبه ایمنی Google Payments</translation>
 <translation id="1598233202702788831">سرپرست سیستم شما به‌روزرسانی‌ها را غیرفعال کرده است.</translation>
-<translation id="1598604884989842103">‏فعال کردن واسط کاربر بزرگ کردن TouchView برای آزمایش</translation>
 <translation id="1600857548979126453">دسترسی به مرحله پایانی اشکال‌زدای صفحه</translation>
 <translation id="1601560923496285236">اعمال</translation>
 <translation id="1603914832182249871">(ناشناس)</translation>
@@ -1758,7 +1757,6 @@
 <translation id="3206175707080061730">فایلی به نام «$1» از قبل وجود دارد. آیا می‌خواهید آن را جایگزین کنید؟</translation>
 <translation id="320825648481311438">‏وقتی فعال باشد، مرورگر ورود و خروج از حساب‌های Google را مدیریت می‌کند.</translation>
 <translation id="3208703785962634733">تأیید نشده</translation>
-<translation id="3209459032754159027">نمایش تبلیغ ورود به سیستم کارت‌ اعتباری در فهرست کشویی «تکمیل خودکار» فعال شود.</translation>
 <translation id="3211904643589960506">فعال کردن جستجوی نشانی‌های وب از اشیای وب فیزیکی.</translation>
 <translation id="3216508313927987948">برای تنظیم این مورد، باید به روش زیر به <ph name="DEVICE_TYPE" /> آموزش دهید.</translation>
 <translation id="3220586366024592812">فرآیند رابط <ph name="CLOUD_PRINT_NAME" /> متوقف شد. مجدداً راه‌اندازی شود؟</translation>
@@ -4540,7 +4538,7 @@
 <translation id="695755122858488207">دکمه رادیویی انتخاب نشده</translation>
 <translation id="696203921837389374">فعال کردن همگام‌سازی از طریق داده تلفن همراه</translation>
 <translation id="6964390816189577014">قهرمان</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="6965648386495488594">درگاه</translation>
 <translation id="6965978654500191972">دستگاه</translation>
 <translation id="6969104364835835175">‏اجبار کردن PNaCl Subzero</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">جا&amp;گذاری و جستجو</translation>
 <translation id="7045480833981818310">‏ویرایش Office برای سندنگار، کاربرگ‌نگار و اسلایدنگار</translation>
 <translation id="7047998246166230966">اشاره‌گر</translation>
-<translation id="7048141481140415714">‏فعال کردن Ctrl+Alt+Shift+8 برای روشن/خاموش کردن حالت بزرگ کردن TouchView.</translation>
 <translation id="7049293980323620022">فایل حفظ شود؟</translation>
 <translation id="7051943809462976355">در حال جستجو برای موشواره...</translation>
 <translation id="7052237160939977163">ارسال داده‌های ردیابی عملکرد</translation>
@@ -5786,7 +5783,6 @@
 <translation id="8632275030377321303">کاربر نمی‌تواند تنظیمات پروکسی را تغییر بدهد.</translation>
 <translation id="8636038761987659075">تنظیمات سایت با همه سایت‌ها و جزئیات سایت</translation>
 <translation id="8637688295594795546">به‌روزرسانی سیستم موجود است. در حال آماده سازی برای بارگیری...</translation>
-<translation id="8638602948366220068">فعال کردن تبلیغ تکمیل خودکار ورود به سیستم کارت‌ اعتباری</translation>
 <translation id="8639504893694748827">شطرنجی‌ساز کپی صفر</translation>
 <translation id="8639963783467694461">تنظیمات تکمیل خودکار</translation>
 <translation id="8642171459927087831">کد دسترسی</translation>
@@ -6222,7 +6218,6 @@
 <translation id="9181716872983600413">یونیکد</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> از <ph name="DOWNLOAD_DOMAIN" />، <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">باعث می‌شود گوش‌دهنده‌های شروع لمسی و حرکت لمسی به‌ازای رویداد پیمایش درطول روانه شدن به اجبار به‌عنوان منفعل مورد عمل قرار بگیرند.</translation>
-<translation id="9184473426683023988">وارد کردن و اتصال به دستگاه</translation>
 <translation id="9186729806195986201">همچنین به نسخه نصب‌شده قبلی <ph name="IDS_SHORT_PRODUCT_NAME" /> بازگردد.</translation>
 <translation id="9187651461283037651">‏Chrome VR را فعال کنید.</translation>
 <translation id="9188441292293901223">‏لطفاً تلفنتان را به نسخه جدیدتر Android به‌روزرسانی کنید تا قفل <ph name="DEVICE_TYPE" /> را باز کنید.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 9406a56..7d84400 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Tarjoa automaattista kirjautumista Google-sivustoihin tällä tilillä</translation>
 <translation id="1596174774107741586">Käytä Google Paymentsin hiekkalaatikkopalvelimia</translation>
 <translation id="1598233202702788831">Järjestelmänvalvoja on estänyt päivitykset.</translation>
-<translation id="1598604884989842103">Ota TouchView-zoomauskäyttöliittymä koekäyttöön</translation>
 <translation id="1600857548979126453">Käyttää sivun viankorjausta</translation>
 <translation id="1601560923496285236">Käytä</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Tiedosto nimeltä $1 on jo olemassa. Haluatko korvata sen?</translation>
 <translation id="320825648481311438">Kun ominaisuus on käytössä, selain huolehtii Google-tilien sisään- ja uloskirjautumisista.</translation>
 <translation id="3208703785962634733">Vahvistamaton</translation>
-<translation id="3209459032754159027">Salli luottokortin lisäämismainoksen näyttäminen automaattisen täytön avattavassa valikossa.</translation>
 <translation id="3211904643589960506">Ota käyttöön URL-osoitteiden skannaus Fyysisen webin esineistä.</translation>
 <translation id="3216508313927987948">Voit tehdä tämän opettamalla laitetta <ph name="DEVICE_TYPE" /> seuraavassa vaiheessa.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" />-yhteysohjelman prosessi keskeytyi. Käynnistetäänkö uudelleen?</translation>
@@ -3312,7 +3310,7 @@
 <translation id="529175790091471945">Alusta tämä laite</translation>
 <translation id="5292890015345653304">Aseta SD-kortti tai USB-muistitikku</translation>
 <translation id="5294529402252479912">Päivitä Adobe Reader nyt</translation>
-<translation id="5297526204711817721">Yhteytesi tähän sivustoon ei ole yksityinen. Voit poistua virtuaalitilasta milloin tahansa ottamalla headsetin pois ja valitsemalla Takaisin.</translation>
+<translation id="5297526204711817721">Yhteytesi tähän sivustoon ei ole yksityinen. Voit poistua VR-tilasta milloin tahansa ottamalla headsetin pois ja valitsemalla Takaisin.</translation>
 <translation id="5298219193514155779">Teeman loi</translation>
 <translation id="5298363578196989456">Laajennusta <ph name="IMPORT_NAME" /> ei voi tuoda, koska se ei ole jaettu moduuli.</translation>
 <translation id="5299109548848736476">Do Not Track</translation>
@@ -4612,7 +4610,6 @@
 <translation id="7042418530779813870">&amp;Liitä ja tee haku</translation>
 <translation id="7045480833981818310">Office Editing for Docs, Sheets &amp; Slides</translation>
 <translation id="7047998246166230966">Osoitin</translation>
-<translation id="7048141481140415714">Ota käyttöön TouchView-zoomaustilan valinta pikanäppäimellä Ctrl+Alt+Shift+8.</translation>
 <translation id="7049293980323620022">Pidetäänkö tiedosto?</translation>
 <translation id="7051943809462976355">Hiirtä etsitään…</translation>
 <translation id="7052237160939977163">Lähetä tehokkuuden tarkkailutietoja</translation>
@@ -5778,7 +5775,6 @@
 <translation id="8632275030377321303">Käyttäjä ei voi muokata välityspalvelinta.</translation>
 <translation id="8636038761987659075">Sivustoasetukset: Kaikki sivustot ja Sivuston tiedot</translation>
 <translation id="8637688295594795546">Järjestelmäpäivitys saatavilla. Valmistellaan latausta...</translation>
-<translation id="8638602948366220068">Salli luottokortin automaattiseen täyttöön lisäämisen mainos</translation>
 <translation id="8639504893694748827">Kopioimaton rasteroija</translation>
 <translation id="8639963783467694461">Automaattisen täytön asetukset</translation>
 <translation id="8642171459927087831">Käyttötunnus</translation>
@@ -6155,7 +6151,7 @@
 <translation id="9109122242323516435">Vapauta tilaa poistamalla laitteeseen tallennettuja tiedostoja.</translation>
 <translation id="9110990317705400362">Pyrimme jatkuvasti tekemään selaamisesta turvallisempaa. Aiemmin mikä tahansa sivusto pystyi pyytämään laajennuksen lisäämistä selaimeen. Uusimmissa Google Chrome -versioissa sinun on erikseen ilmoitettava Chromelle, että haluat asentaa nämä laajennukset, lisäämällä ne Laajennukset-sivulla. <ph name="BEGIN_LINK" />Lisätietoja<ph name="END_LINK" /></translation>
 <translation id="9111102763498581341">Poista lukitus</translation>
-<translation id="9111296877637560526">Kun tämä asetus on käytössä, verkkosovellukset voivat käyttää kokeellisia virtuaalisen todellisuuden sovellusliittymiä.</translation>
+<translation id="9111296877637560526">Kun tämä asetus on käytössä, verkkosovellukset voivat käyttää kokeellisia virtuaalitodellisuuden sovellusliittymiä.</translation>
 <translation id="9111395131601239814"><ph name="NETWORKDEVICE" />: <ph name="STATUS" /></translation>
 <translation id="9112614144067920641">Valitse uusi PIN-koodi.</translation>
 <translation id="9112748030372401671">Vaihda taustakuva</translation>
@@ -6213,7 +6209,6 @@
 <translation id="9181716872983600413">unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> verkkotunnuksesta <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Touchstart-tapahtumaseuraimia ja kunkin vierityskerran ensimmäistä touchmove-tapahtumaseurainta kohdellaan oletuksena passiivisina pyyhkäisyn aikana.</translation>
-<translation id="9184473426683023988">Tuo ja sido laitteeseen</translation>
 <translation id="9186729806195986201">Palaa myön tuotteen <ph name="IDS_SHORT_PRODUCT_NAME" /> aiemmin asennettuun versioon.</translation>
 <translation id="9187651461283037651">Ota käyttöön Chrome VR.</translation>
 <translation id="9188441292293901223">Päivitä puhelimesi uudempaan Android-versioon, jotta voit avata laitteen <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index eed01c8..8a815c8 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Mag-alok na awtomatikong mag-sign in sa mga site ng Google gamit ang account na ito</translation>
 <translation id="1596174774107741586">Gamitin ang mga sandbox server ng Google Payments</translation>
 <translation id="1598233202702788831">Na-disable ng iyong administrator ang mga update.</translation>
-<translation id="1598604884989842103">I-enable ang UI sa pag-maximize sa TouchView para sa pagsubok</translation>
 <translation id="1600857548979126453">I-access ang backend ng debugger ng pahina</translation>
 <translation id="1601560923496285236">Ilapat</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Umiiral na ang isang file na pinangalanang "$1". Nais mo ba itong palitan?</translation>
 <translation id="320825648481311438">Kapag naka-enable, pinamamahalaan ng browser ang pag-sign in at pag-sign out sa mga Google account.</translation>
 <translation id="3208703785962634733">Hindi kumpirmado</translation>
-<translation id="3209459032754159027">I-enable ang pagpapakita ng promo sa pag-sign in ng credit card sa loob ng dropdown na Autofill.</translation>
 <translation id="3211904643589960506">I-enable ang pag-i-scan para sa mga URL mula sa mga bagay sa Pisikal na Web.</translation>
 <translation id="3216508313927987948">Upang maisagawa ito, kakailanganin mong sanayin ang iyong <ph name="DEVICE_TYPE" /> sa sumusunod na hakbang.</translation>
 <translation id="3220586366024592812">Nag-crash ang proseso ng tagakonekta ng <ph name="CLOUD_PRINT_NAME" />. I-restart?</translation>
@@ -2158,7 +2156,7 @@
 <translation id="3704162925118123524">Ang network na ginagamit mo ay maaaring humiling sa iyo na bisitahin ang page ng pag-login nito.</translation>
 <translation id="3704331259350077894">Pagtigil ng Pagpapatakbo</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Kumakarga...</translation>
+<translation id="370665806235115550">Naglo-load...</translation>
 <translation id="3706919628594312718">Mga setting ng mouse</translation>
 <translation id="3707020109030358290">Hindi isang Certification Authority.</translation>
 <translation id="3709244229496787112">Nag-shut down ang browser bago makumpleto ang pag-download.</translation>
@@ -4625,7 +4623,6 @@
 <translation id="7042418530779813870">Pa&amp;ste at paghahanap</translation>
 <translation id="7045480833981818310">Office Editing para sa Docs, Sheets at Slides</translation>
 <translation id="7047998246166230966">Pointer</translation>
-<translation id="7048141481140415714">I-enable ang Ctrl+Alt+Shift+8 upang i-toggle ang TouchView na mode ng pag-maximize</translation>
 <translation id="7049293980323620022">Gusto mo bang panatilihin ang file?</translation>
 <translation id="7051943809462976355">Naghahanap ng mouse...</translation>
 <translation id="7052237160939977163">Ipadala ang data ng pagte-trace sa pagganap</translation>
@@ -5797,7 +5794,6 @@
 <translation id="8632275030377321303">Hindi mababago ng user ang proxy.</translation>
 <translation id="8636038761987659075">Mga setting ng Site kasama ang Lahat ng site at mga detalye ng Site</translation>
 <translation id="8637688295594795546">Available ang update sa system. Hinahandang i-download…</translation>
-<translation id="8638602948366220068">I-enable Ang I-autofill Ang Promo sa Pag-sign In ng Credit Card</translation>
 <translation id="8639504893694748827">Zero-copy rasterizer</translation>
 <translation id="8639963783467694461">Mga setting ng autofill</translation>
 <translation id="8642171459927087831">Token ng Access</translation>
@@ -6234,7 +6230,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> mula sa <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Pinupuwersa ang touchstart at ang unang touchmove sa bawat pag-scroll na mga listener ng kaganapan sa panahon ng fling ay ituturing na passive.</translation>
-<translation id="9184473426683023988">I-import at Ipailalim sa Device</translation>
 <translation id="9186729806195986201">Ibalik din sa dating naka-install na bersyon ng <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">I-enable ang Chrome VR.</translation>
 <translation id="9188441292293901223">Paki-update ang iyong telepono sa mas bagong bersyon ng Android upang i-unlock ang <ph name="DEVICE_TYPE" /> na ito.</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 1740ca7..1a2b0a9 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Proposer la connexion automatique aux sites Google avec ce compte</translation>
 <translation id="1596174774107741586">Utiliser les serveurs de bac à sable Google Payments</translation>
 <translation id="1598233202702788831">L'administrateur a désactivé les mises à jour.</translation>
-<translation id="1598604884989842103">Activer l'interface utilisateur d'agrandissement TouchView pour le test</translation>
 <translation id="1600857548979126453">Accéder au système du débogueur de pages</translation>
 <translation id="1601560923496285236">Appliquer</translation>
 <translation id="1603914832182249871">(Navigation privée)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Un fichier nommé "$1" existe déjà. Voulez-vous le remplacer ?</translation>
 <translation id="320825648481311438">Lorsque cette option est activée, le navigateur gère les connexions aux comptes Google, ainsi que les déconnexions.</translation>
 <translation id="3208703785962634733">Non confirmé</translation>
-<translation id="3209459032754159027">Activer l'invite à se connecter pour remplir le champ de carte de paiement dans le menu déroulant de saisie automatique.</translation>
 <translation id="3211904643589960506">Activer l'analyse des URL provenant d'objets Web physique</translation>
 <translation id="3216508313927987948">Pour ce faire, vous devez apprendre à votre appareil <ph name="DEVICE_TYPE" /> à reconnaître votre modèle de voix à l'étape suivante.</translation>
 <translation id="3220586366024592812">Le processus du connecteur <ph name="CLOUD_PRINT_NAME" /> est bloqué. Voulez-vous le redémarrer ?</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">Pour utiliser ce réseau, il est possible que vous deviez vous rendre sur la page de connexion correspondante.</translation>
 <translation id="3704331259350077894">Arrêt du fonctionnement</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Chargement...</translation>
+<translation id="370665806235115550">Chargement en cours...</translation>
 <translation id="3706919628594312718">Paramètres de la souris</translation>
 <translation id="3707020109030358290">N'est pas une autorité de certification.</translation>
 <translation id="3709244229496787112">Le navigateur s'est fermé avant la fin du téléchargement.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">Co&amp;ller et rechercher</translation>
 <translation id="7045480833981818310">Éditeur Office pour Docs, Sheets et Slides</translation>
 <translation id="7047998246166230966">Curseur</translation>
-<translation id="7048141481140415714">Activer Ctrl + Alt + Maj + 8 pour activer ou désactiver le mode d'agrandissement TouchView</translation>
 <translation id="7049293980323620022">Conserver le fichier ?</translation>
 <translation id="7051943809462976355">Recherche de la souris en cours…</translation>
 <translation id="7052237160939977163">Envoyer des informations relatives au suivi des performances</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">L'utilisateur ne peut pas modifier le proxy.</translation>
 <translation id="8636038761987659075">Paramètres de site avec tous les sites et les détails de site</translation>
 <translation id="8637688295594795546">Mise à jour du système disponible. Préparation du téléchargement…</translation>
-<translation id="8638602948366220068">Activer l'invite de connexion pour la saisie automatique de la carte de paiement</translation>
 <translation id="8639504893694748827">Rastériseur sans copie</translation>
 <translation id="8639963783467694461">Paramètres de saisie automatique</translation>
 <translation id="8642171459927087831">Jeton d'accès</translation>
@@ -6225,7 +6221,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> depuis <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Force le traitement en tant qu'écouteurs passifs des écouteurs des événements "touchstart" et du premier événement "touchmove" par défilement lors des balayages rapides de l'écran.</translation>
-<translation id="9184473426683023988">Importer et associer à l'appareil</translation>
 <translation id="9186729806195986201">Retournez également à la version précédemment installée de <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Activer Chrome VR.</translation>
 <translation id="9188441292293901223">Installer une version plus récente d'Android sur votre téléphone pour déverrouiller votre <ph name="DEVICE_TYPE" /></translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 04d1439..c639d79 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -483,7 +483,6 @@
 <translation id="1594234040488055839">આ એકાઉન્ટથી આપમેળે Google Sites પર સાઇન ઇન થવાની ઓફર</translation>
 <translation id="1596174774107741586">Google Payments સેન્ડબોક્સ સર્વર્સનો ઉપયોગ કરો</translation>
 <translation id="1598233202702788831">તમારા વ્યવસ્થાપક દ્વારા અપડેટ્સ અક્ષમ કરાયા છે.</translation>
-<translation id="1598604884989842103">પરીક્ષણ માટે TouchView મોટું કરોને સક્ષમ કરો</translation>
 <translation id="1600857548979126453">પૃષ્ઠ ડીબગર બૅકએંડ ઍક્સેસ કરો</translation>
 <translation id="1601560923496285236">લાગુ કરો</translation>
 <translation id="1603914832182249871">(છૂપી)</translation>
@@ -819,7 +818,7 @@
 <translation id="2077129598763517140">હાર્ડવેર ઍક્સિલરેશન ઉપલબ્ધ હોવા પર ઉપયોગ કરો</translation>
 <translation id="2078019350989722914">(<ph name="KEY_EQUIVALENT" />) ને છોડતા પહેલા ચેતવો</translation>
 <translation id="2079053412993822885">જો તમે તમારા પોતાના પ્રમાણપત્રમાંથી કોઈ એક કાઢી નાખો છો, તો તમે તેનો ઉપયોગ તમને ઓળખવા માટે કરી શકશો નહીં.</translation>
-<translation id="2079545284768500474">પૂર્વવત્ કરો</translation>
+<translation id="2079545284768500474">પૂર્વવત કરો</translation>
 <translation id="2080010875307505892">સર્બિયન કીબોર્ડ</translation>
 <translation id="2080070583977670716">વધુ સેટિંગ્સ</translation>
 <translation id="2081322486940989439">આ સાઇટ Visa ને સ્વીકારતી નથી.</translation>
@@ -1756,7 +1755,6 @@
 <translation id="3206175707080061730">"$1" નામવાળી એક ફાઇલ પહેલાથી અસ્તિત્વમાં છે. શું તમે તેને બદલવા માગો છો?</translation>
 <translation id="320825648481311438">જ્યારે સક્ષમ હોય, ત્યારે બ્રાઉઝર Google એકાઉન્ટ્સના સાઇન ઇન અને આઉટનું સંચાલન કરે છે.</translation>
 <translation id="3208703785962634733">પુષ્ટિ થયેલ નથી</translation>
-<translation id="3209459032754159027">સ્વતઃભરણ ડ્રોપડાઉનની અંદર ક્રેડિટ કાર્ડ સાઇનઇન પ્રોમો બતાવવાનું સક્ષમ કરો.</translation>
 <translation id="3211904643589960506">વાસ્તવિક વેબ પદાર્થોમાંથી URLs માટે સ્કેનીંગને સક્ષમ કરો.</translation>
 <translation id="3216508313927987948">આવું કરવા માટે, તમારે આ પછીના પગલાંમાં તમારા <ph name="DEVICE_TYPE" /> ને તાલીમ આપવી જરૂરી બનશે.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> કનેક્ટર પ્રક્રિયા ક્રેશ થઈ ગઈ. ફરીથી શરૂ કરીએ?</translation>
@@ -3892,7 +3890,7 @@
 <translation id="6062697480277116433">તમે સેલ્યુલર ડેટાનો ઉપયોગ કરી રહ્યાં છો</translation>
 <translation id="6064217302520318294">સ્ક્રીન લૉક</translation>
 <translation id="6065289257230303064">પ્રમાણપત્ર વિષય નિર્દેશિકાના લક્ષણો </translation>
-<translation id="6067080187494608396">ધીમ UI એનિમેશનો</translation>
+<translation id="6067080187494608396">ધીમા UI એનિમેશનો</translation>
 <translation id="6071181508177083058">પાસવર્ડની પુષ્ટિ કરો</translation>
 <translation id="6073903501322152803">ઍક્સેસિબિલિટી સુવિધાઓ ઉમેરો</translation>
 <translation id="6074825444536523002">Google ફોર્મ</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">પેસ્ટ&amp; કરો અને શોધો</translation>
 <translation id="7045480833981818310">દસ્તાવેજો, શીટ્સ અને સ્લાઇડ્સ માટે Office સંપાદન</translation>
 <translation id="7047998246166230966">પોઇન્ટર</translation>
-<translation id="7048141481140415714">TouchView મોટું કરો મોડને ટોગલ કરવા માટે Ctrl+Alt+Shift+8 ને સક્ષમ કરો.</translation>
 <translation id="7049293980323620022">ફાઇલ રાખીએ?</translation>
 <translation id="7051943809462976355">માઉસ માટે શોધી રહ્યું છે...</translation>
 <translation id="7052237160939977163">પ્રદર્શન ટ્રેસ ડેટા મોકલો</translation>
@@ -5782,7 +5779,6 @@
 <translation id="8632275030377321303">પ્રોક્સીને વપરાશકર્તા દ્વારા સંશોધિત કરી શકાતી નથી.</translation>
 <translation id="8636038761987659075">તમામ સાઇટ્સ અને સાઇટ વિગતો સાથેની સાઇટ સેટિંગ્સ</translation>
 <translation id="8637688295594795546">સિસ્ટમ અપડેટ ઉપલબ્ધ છે. ડાઉનલોડ કરવા માટે તૈયાર થઈ રહ્યું છે...</translation>
-<translation id="8638602948366220068">સ્વતઃભરણ ક્રેડિટ કાર્ડ સાઇનઇન પ્રોમો સક્ષમ કરો</translation>
 <translation id="8639504893694748827">શૂન્ય-કૉપિ રાસ્ટરાઇઝર</translation>
 <translation id="8639963783467694461">સ્વતઃભરો સેટિંગ્સ</translation>
 <translation id="8642171459927087831">ઍક્સેસ ટોકન</translation>
@@ -6218,7 +6214,6 @@
 <translation id="9181716872983600413">યુનિકોડ</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> માંથી <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">ફ્લિંગ દરમિયાન ટચસ્ટાર્ટ અને સ્ક્રોલ દીઠ પ્રથમ ટચમૂવ ઇવેન્ટ શ્રોતાઓને નિષ્ક્રિય તરીકે ગણવા માટેની ફરજ પાડે છે.</translation>
-<translation id="9184473426683023988">આયાત કરો અને ઉપકરણમાં જોડો</translation>
 <translation id="9186729806195986201">સાથે જ <ph name="IDS_SHORT_PRODUCT_NAME" /> ના પાછલા ઇન્સ્ટોલ કરેલ સંસ્કરણ પર પરત ફરો.</translation>
 <translation id="9187651461283037651">Chrome VR સક્ષમ કરો.</translation>
 <translation id="9188441292293901223">આ <ph name="DEVICE_TYPE" /> ને અનલૉક કરવા માટે, કૃપા કરીને તમારા ફોનને Android ના નવા સંસ્કરણ પર અપડેટ કરો.</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 3f0b4c6..25ac98dcb 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">इस खाते से Google साइटों में स्अपने आप प्रवेश करना ऑफ़र करें</translation>
 <translation id="1596174774107741586">Google पेमेंट्स सैंडबॉक्स सर्वर का उपयोग करना</translation>
 <translation id="1598233202702788831">आपके व्‍यवस्‍थापक के द्वारा अपडेट अक्षम किए गए हैं</translation>
-<translation id="1598604884989842103">परीक्षण के लिए TouchView विस्तारण UI सक्षम करें</translation>
 <translation id="1600857548979126453">पेज डीबगर बैकएंड तक पहुंचें</translation>
 <translation id="1601560923496285236">लागू करें</translation>
 <translation id="1603914832182249871">(गुप्त)</translation>
@@ -824,7 +823,7 @@
 <translation id="2077129598763517140">उपलब्ध होने पर हार्डवेयर त्वरण का उपयोग करें</translation>
 <translation id="2078019350989722914">छोड़ने के पहले चेतावनी दें (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">यदि आप अपने प्रमाणपत्रों में से किसी एक को हटाते हैं, तो आप आगे इसका उपयोग स्वयं की पहचान करने के लिए नहीं कर सकते हैं.</translation>
-<translation id="2079545284768500474">पूर्ववत् करें</translation>
+<translation id="2079545284768500474">वापस लाएं</translation>
 <translation id="2080010875307505892">सर्बियाई कीबोर्ड</translation>
 <translation id="2080070583977670716">अधिक सेटिंग</translation>
 <translation id="2081322486940989439">यह साइट Visa स्वीकार नहीं करती.</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">अब आपने Chrome में प्रवेश कर लिया है</translation>
 <translation id="2287590536030307392">सभी वायरलेस कनेक्‍शन बंद करें.</translation>
 <translation id="2291643155573394834">अगला टैब</translation>
-<translation id="2292848386125228270">कृपया <ph name="PRODUCT_NAME" /> को सामान्‍य उपयोगकर्ता के रूप में शुरू करें. अगर आपको डेवलपमेंट के लिए रूट के रूप में चलाने की आवश्यकता है, तो --no-sandbox फ़्लैग के साथ फिर से चलाएं.</translation>
+<translation id="2292848386125228270">कृपया <ph name="PRODUCT_NAME" /> को सामान्‍य उपयोगकर्ता की तरह शुरू करें. अगर आपको डेवलपमेंट के लिए रूट के रूप में चलाने की आवश्यकता है, तो --no-sandbox फ़्लैग के साथ फिर से चलाएं.</translation>
 <translation id="2294358108254308676">क्या आप <ph name="PRODUCT_NAME" /> को इंस्‍टॉल करना चाहते हैं?</translation>
 <translation id="2296019197782308739">EAP विधि:</translation>
 <translation id="2301382460326681002">एक्‍सटेंशन मूल निर्देशिका अमान्य है.</translation>
@@ -1715,7 +1714,7 @@
 <translation id="3150927491400159470">कठिन पुन: लोड</translation>
 <translation id="315116470104423982">मोबाइल डेटा</translation>
 <translation id="315141861755603168">"<ph name="BUNDLE_NAME" />" इन ऐप्‍स को जोड़ता है:</translation>
-<translation id="3151539355209957474">प्रारंभ समय</translation>
+<translation id="3151539355209957474">शुरू होने का समय</translation>
 <translation id="3151786313568798007">अभिविन्‍यास</translation>
 <translation id="3153177132960373163">सभी साइटों को आपका कंप्यूटर एक्सेस करने के लिए प्लग इन का उपयोग करने दें</translation>
 <translation id="3154351730702813399">डिवाइस व्यवस्थापक आपकी ब्राउज़िंग गतिविधि की निगरानी कर सकता है.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">"$1" नामक एक फ़ाइल पहले से ही मौजूद है. क्‍या आप इसे प्रतिस्थापित करना चाहते हैं?</translation>
 <translation id="320825648481311438">जब सक्षम हो, तो ब्राउज़र Google खाते में प्रवेश और प्रस्थान करना प्रबंधित करता है.</translation>
 <translation id="3208703785962634733">पुष्टि न की गई</translation>
-<translation id="3209459032754159027">ऑटोमैटिक भरने वाले ड्रॉपडाउन में क्रेडिट कार्ड प्रवेश प्रोमो दिखाना सक्षम करें.</translation>
 <translation id="3211904643589960506">जीते-जागते वेब ऑब्जेक्ट के लिए URL की स्कैनिंग सक्षम करें.</translation>
 <translation id="3216508313927987948">ऐसा करने के लिए, आपको अपने <ph name="DEVICE_TYPE" /> को निम्न चरण में सिखाना होगा.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> कनेक्‍टर प्रक्रिया क्रैश हो गई है. पुन: प्रारंभ करें?</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">आप जिस नेटवर्क का उपयोग कर रहे हैं उसके लिए आपको प्रवेश पृष्‍ठ पर जाने की आवश्‍यकता हो सकती है.</translation>
 <translation id="3704331259350077894">कार्रवाई का अंत</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">लोड हो रहा है...</translation>
+<translation id="370665806235115550">लोड हो रही हैं...</translation>
 <translation id="3706919628594312718">माउस सेटिंग</translation>
 <translation id="3707020109030358290">कोई प्रमाणन प्राधिकरण नहीं.</translation>
 <translation id="3709244229496787112">डाउनलोड पूर्ण होने से पहले ही ब्राउज़र बंद हो गया था.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">चिप&amp;काएं और खोजें</translation>
 <translation id="7045480833981818310">दस्तावेज़, पत्रक और स्लाइड के लिए Office संपादन</translation>
 <translation id="7047998246166230966">सूचक</translation>
-<translation id="7048141481140415714">TouchView विस्तारण मोड टॉगल करने के लिए Ctrl+Alt+Shift+8 सक्षम करें.</translation>
 <translation id="7049293980323620022">फ़ाइल रखें?</translation>
 <translation id="7051943809462976355">माउस खोजा जा रहा है...</translation>
 <translation id="7052237160939977163">निष्पादन ट्रेस डेटा भेजें</translation>
@@ -5788,7 +5785,6 @@
 <translation id="8632275030377321303">उपयोगकर्ता द्वारा प्रॉक्सी में बदलाव नहीं किया जा सकता.</translation>
 <translation id="8636038761987659075">साइट की सेटिंग, सभी साइट और साइट के विवरण के साथ</translation>
 <translation id="8637688295594795546">सिस्टम अपडेट उपलब्ध है. डाउनलोड करने के लिए तैयार हो रहा है...</translation>
-<translation id="8638602948366220068">ऑटोमैटिक भरने वाला क्रेडिट कार्ड प्रवेश प्रोमो सक्षम करें</translation>
 <translation id="8639504893694748827">शून्य-कॉपी वाला रास्टराइज़र</translation>
 <translation id="8639963783467694461">ऑटोमैटिक भरना की सेटिंग...</translation>
 <translation id="8642171459927087831">पहुंच टोकन</translation>
@@ -6223,7 +6219,6 @@
 <translation id="9181716872983600413">यूनिकोड</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> से प्राप्‍त <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">touchstart और प्रति स्क्रॉल पहले touchmove घटना श्रोताओं को फ़्लिंग के दौरान निष्क्रिय माने जाने के लिए बाध्य करता है.</translation>
-<translation id="9184473426683023988">आयात करें और डिवाइस से आबद्ध करें</translation>
 <translation id="9186729806195986201">साथ ही <ph name="IDS_SHORT_PRODUCT_NAME" /> के पूर्व में इंस्‍टॉल किए गए संस्‍करण पर वापस लौटें.</translation>
 <translation id="9187651461283037651">Chrome VR सक्षम करें.</translation>
 <translation id="9188441292293901223">इस <ph name="DEVICE_TYPE" /> को अनलाॅक करने के लिए कृपया अपने फ़ोन को Android के नए वर्शन में अपडेट करें.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index e870763..5618b7e1 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Ponudi automatsku prijavu na Googleove web-lokacije ovim računom</translation>
 <translation id="1596174774107741586">Upotrijebi poslužitelje testnog okruženja Google Paymentsa</translation>
 <translation id="1598233202702788831">Administrator je onemogućio ažuriranja.</translation>
-<translation id="1598604884989842103">Omogući testiranje korisničkog sučelja za maksimiziranje TouchView</translation>
 <translation id="1600857548979126453">pristupiti pozadini programa za ispravljanje pogrešaka na stranici</translation>
 <translation id="1601560923496285236">Primijeni</translation>
 <translation id="1603914832182249871">(Anonimno)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Datoteka pod nazivom "$1" već postoji. Želite li je zamijeniti?</translation>
 <translation id="320825648481311438">Kada je omogućeno, preglednik upravlja prijavljivanjem na Google račune i odjavljivanjem s njih.</translation>
 <translation id="3208703785962634733">Nepotvrđeno</translation>
-<translation id="3209459032754159027">Omogućuje da se na padajućem izborniku Automatskog popunjavanja prikazuje promotivna poruka o unosu podataka o kreditnoj kartici uz prijavu.</translation>
 <translation id="3211904643589960506">Omogućuje traženje URL-ova u objektima fizičkog weba.</translation>
 <translation id="3216508313927987948">Da biste to postigli, morat ćete obučiti uređaj <ph name="DEVICE_TYPE" /> na sljedeći način.</translation>
 <translation id="3220586366024592812">Pao je proces konektora <ph name="CLOUD_PRINT_NAME" />. Pokrenuti ponovo?</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">Za&amp;lijepi i pretraži</translation>
 <translation id="7045480833981818310">Office Editing za Dokumente, Tablice i Prezentacije</translation>
 <translation id="7047998246166230966">Pokazivač</translation>
-<translation id="7048141481140415714">Omogući Ctrl + Alt + Shift + 8 za naizmjenično prikazivanje i skrivanje načina maksimiziranja TouchView.</translation>
 <translation id="7049293980323620022">Želite li zadržati datoteku?</translation>
 <translation id="7051943809462976355">Traženje miša...</translation>
 <translation id="7052237160939977163">Šalji podatke o praćenju izvedbe</translation>
@@ -5786,7 +5783,6 @@
 <translation id="8632275030377321303">Korisnik ne može mijenjati proxy.</translation>
 <translation id="8636038761987659075">Postavke web-lokacije s popisom svih web-lokacija i pojedinostima web-lokacije</translation>
 <translation id="8637688295594795546">Dostupno ažuriranje sustava. Priprema za preuzimanje…</translation>
-<translation id="8638602948366220068">Omogući promotivnu poruku o automatskom popunjavanju podataka o kreditnoj kartici uz prijavu</translation>
 <translation id="8639504893694748827">Rasterizator bez kopija</translation>
 <translation id="8639963783467694461">Postavke automatske ispune</translation>
 <translation id="8642171459927087831">Token pristupa</translation>
@@ -6221,7 +6217,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> s domene <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Nameće da se kao pasivni tretiraju slušatelji događaja pokretanja dodirom i prvog pomicanja dodirom po pomicanju tijekom zamahivanja.</translation>
-<translation id="9184473426683023988">Uvezi i veži za uređaj</translation>
 <translation id="9186729806195986201">Također će vratiti prethodnu verziju proizvoda <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Omogući Chrome VR.</translation>
 <translation id="9188441292293901223">Ažurirajte svoj telefon na najnoviju verziju Androida kako biste otključali ovaj <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 18e63cd..1328daba 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">A Google-webhelyekre történő automatikus bejelentkezés felajánlása ezzel a fiókkal</translation>
 <translation id="1596174774107741586">Google Payments tesztkörnyezeti szerverek használata</translation>
 <translation id="1598233202702788831">A frissítéseket a rendszergazda letiltotta.</translation>
-<translation id="1598604884989842103">A TouchView maximális méret felhasználói felületének engedélyezése tesztelés céljából</translation>
 <translation id="1600857548979126453">Hozzáférés az oldal háttérben történő hibakereséséhez</translation>
 <translation id="1601560923496285236">Alkalmaz</translation>
 <translation id="1603914832182249871">(Inkognitómód)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">A(z) "$1" nevű fájl már létezik. Szeretné lecserélni?</translation>
 <translation id="320825648481311438">Ha engedélyezi, a böngésző kezeli a Google-fiókokba való be- és kijelentkezéseket.</translation>
 <translation id="3208703785962634733">Nincs megerősítve</translation>
-<translation id="3209459032754159027">A hitelkártyás bejelentkezés promóció megjelenítésének engedélyezése az Automatikus kitöltés legördülő listában.</translation>
 <translation id="3211904643589960506">URL-ek keresésének engedélyezése a Fizikai webhez tartozó objektumoknál.</translation>
 <translation id="3216508313927987948">Ennek eléréséhez a következő lépésben be kell tanítania <ph name="DEVICE_TYPE" /> eszközét.</translation>
 <translation id="3220586366024592812">A <ph name="CLOUD_PRINT_NAME" /> csatlakozó folyamat összeomlott. Újraindítja?</translation>
@@ -2157,7 +2155,7 @@
 <translation id="3704162925118123524">Előfordulhat, hogy az Ön által használt hálózat megköveteli a bejelentkezési oldalán történő bejelentkezést.</translation>
 <translation id="3704331259350077894">Működés megszüntetése</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Betöltés…</translation>
+<translation id="370665806235115550">Betöltés...</translation>
 <translation id="3706919628594312718">Egérbeállítások</translation>
 <translation id="3707020109030358290">Nem tanúsítványkibocsátó.</translation>
 <translation id="3709244229496787112">A böngészőt leállították, mielőtt a letöltés befejeződött volna.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">Beille&amp;sztés és keresés</translation>
 <translation id="7045480833981818310">Office-szerkesztés a Dokumentumok, Táblázatok és Diák alkalmazáshoz</translation>
 <translation id="7047998246166230966">Mutató</translation>
-<translation id="7048141481140415714">A Ctrl+Alt+Shift+8 billentyűkód engedélyezése a TouchView maximális méret módjának be- és kikapcsolásához.</translation>
 <translation id="7049293980323620022">Megtartja a fájlt?</translation>
 <translation id="7051943809462976355">Egér keresése…</translation>
 <translation id="7052237160939977163">Teljesítménykövetési adatok elküldése</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">A felhasználó nem módosíthatja a proxyt.</translation>
 <translation id="8636038761987659075">Webhelybeállítások „Az összes webhely” és a „Webhely adatai” elemekkel</translation>
 <translation id="8637688295594795546">Megjelent egy rendszerfrissítés. Felkészülés a letöltésre...</translation>
-<translation id="8638602948366220068">Az automatikus kitöltésű hitelkártyás bejelentkezés promóció engedélyezése</translation>
 <translation id="8639504893694748827">Nulla példányos raszterizáló</translation>
 <translation id="8639963783467694461">Automatikus kitöltési beállítások</translation>
 <translation id="8642171459927087831">Hozzáférési token</translation>
@@ -6224,7 +6220,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> a(z) <ph name="DOWNLOAD_DOMAIN" /> webhelyről, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Kényszeríti a touchstart és az első touchmove per scroll eseményfigyelők passzívként történő kezelését húzás közben.</translation>
-<translation id="9184473426683023988">Importálás és az eszközhöz kapcsolás</translation>
 <translation id="9186729806195986201">Továbbá visszatérés a(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> korábban telepített verziójához.</translation>
 <translation id="9187651461283037651">A Chrome VR engedélyezése.</translation>
 <translation id="9188441292293901223">Kérjük, frissítse telefonja operációs rendszerét az Android egy újabb verziójára, hogy feloldhassa <ph name="DEVICE_TYPE" /> eszközét.</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index f306ba0..4ac644f 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Tawarkan untuk masuk ke situs Google secara otomatis dengan akun ini</translation>
 <translation id="1596174774107741586">Gunakan server kotak pasir Google Payments</translation>
 <translation id="1598233202702788831">Pembaruan dinonaktifkan oleh administrator.</translation>
-<translation id="1598604884989842103">Aktifkan UI pemaksimalan TouchView untuk uji coba</translation>
 <translation id="1600857548979126453">Mengakses backend debugger laman</translation>
 <translation id="1601560923496285236">Terapkan</translation>
 <translation id="1603914832182249871">(Penyamaran)</translation>
@@ -824,7 +823,7 @@
 <translation id="2077129598763517140">Gunakan percepatan perangkat keras saat tersedia</translation>
 <translation id="2078019350989722914">Peringatan Sebelum Berhenti (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">Jika salah satu sertifikat dihapus, Anda tidak akan dapat lagi menggunakannya untuk mengidentifikasi diri Anda.</translation>
-<translation id="2079545284768500474">Batalkan</translation>
+<translation id="2079545284768500474">Urungkan</translation>
 <translation id="2080010875307505892">Keyboard untuk bahasa Serbia</translation>
 <translation id="2080070583977670716">Setelan lain</translation>
 <translation id="2081322486940989439">Situs ini tidak menerima Visa.</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">Anda sudah masuk ke Chrome</translation>
 <translation id="2287590536030307392">Matikan semua sambungan nirkabel.</translation>
 <translation id="2291643155573394834">Tab berikutnya</translation>
-<translation id="2292848386125228270">Mulai <ph name="PRODUCT_NAME" /> sebagai pengguna normal. Jika perlu menjalankan sebagai root untuk pengembangan, jalankan ulang tanpa tanda sandbox.</translation>
+<translation id="2292848386125228270">Mulai <ph name="PRODUCT_NAME" /> sebagai pengguna normal. Jika perlu menjalankan sebagai root untuk pengembangan, jalankan ulang dengan tanda tanpa sandbox.</translation>
 <translation id="2294358108254308676">Apakah Anda ingin memasang <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2296019197782308739">Metode EAP:</translation>
 <translation id="2301382460326681002">Direktori akar ekstensi tidak valid.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">File dengan nama "$1" sudah ada. Apakah Anda ingin menggantikannya?</translation>
 <translation id="320825648481311438">Saat diaktifkan, browser mengelola proses masuk dan keluar akun Google.</translation>
 <translation id="3208703785962634733">Tidak dipastikan</translation>
-<translation id="3209459032754159027">Mengaktifkan penayangan promo info masuk kartu kredit dalam menu tarik-turun IsiOtomatis.</translation>
 <translation id="3211904643589960506">Aktifkan pemindaian URL dari objek Web Fisik.</translation>
 <translation id="3216508313927987948">Agar dapat melakukannya, Anda perlu melatih <ph name="DEVICE_TYPE" /> dengan langkah berikut.</translation>
 <translation id="3220586366024592812">Proses penyambung <ph name="CLOUD_PRINT_NAME" /> ngadat. Mulai ulang?</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">Jaringan yang digunakan mungkin mewajibkan Anda mengunjungi laman masuk jaringan.</translation>
 <translation id="3704331259350077894">Penghentian Operasi</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Membuka...</translation>
+<translation id="370665806235115550">Memuat...</translation>
 <translation id="3706919628594312718">Setelan Mouse</translation>
 <translation id="3707020109030358290">Bukan Otoritas Sertifikasi.</translation>
 <translation id="3709244229496787112">Browser ditutup sebelum download selesai.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">Tempel dan telu&amp;sur</translation>
 <translation id="7045480833981818310">Pengeditan Office untuk Dokumen, Spreadsheet, dan Slide</translation>
 <translation id="7047998246166230966">Penunjuk</translation>
-<translation id="7048141481140415714">Mengaktifkan Ctrl+Alt+Shift+8 untuk beralih mode pemaksimalan TouchView.</translation>
 <translation id="7049293980323620022">Simpan file?</translation>
 <translation id="7051943809462976355">Mencari mouse...</translation>
 <translation id="7052237160939977163">Mengirim data pelacakan kinerja</translation>
@@ -5788,7 +5785,6 @@
 <translation id="8632275030377321303">Proxy tidak dapat dimodifikasi oleh pengguna.</translation>
 <translation id="8636038761987659075">Setelan situs dengan Semua situs dan Detail situs</translation>
 <translation id="8637688295594795546">Pembaruan sistem tersedia. Bersiap mendownload...</translation>
-<translation id="8638602948366220068">Aktifkan Promo IsiOtomatis Info Masuk Kartu Kredit</translation>
 <translation id="8639504893694748827">Rasterizer nol salinan</translation>
 <translation id="8639963783467694461">Setelan Isi-otomatis</translation>
 <translation id="8642171459927087831">Token Akses</translation>
@@ -6223,7 +6219,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> dari <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Memaksa touchstart, dan touchmove per guliran pemroses kejadian pertama selama proses mengayun agar dianggap sebagai pasif.</translation>
-<translation id="9184473426683023988">Impor dan Kaitkan ke Perangkat</translation>
 <translation id="9186729806195986201">Juga kembalikan ke versi <ph name="IDS_SHORT_PRODUCT_NAME" /> yang terpasang sebelumnya.</translation>
 <translation id="9187651461283037651">Aktifkan VR Chrome.</translation>
 <translation id="9188441292293901223">Perbarui ponsel Anda ke versi Android yang lebih baru untuk membuka <ph name="DEVICE_TYPE" /> ini.</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 4050a4b..d7faa9fe 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Offerta di accesso automatico ai siti di Google con questo account</translation>
 <translation id="1596174774107741586">Utilizza i server sandbox di Google Payments</translation>
 <translation id="1598233202702788831">Gli aggiornamenti sono stati disattivati dall'amministratore.</translation>
-<translation id="1598604884989842103">Attiva interfaccia utente di espansione TouchView per eseguire i test</translation>
 <translation id="1600857548979126453">Accesso al backend del debugger delle pagine</translation>
 <translation id="1601560923496285236">Applica</translation>
 <translation id="1603914832182249871">(In incognito)</translation>
@@ -1759,7 +1758,6 @@
 <translation id="3206175707080061730">Esiste già un file denominato "$1". Sostituirlo?</translation>
 <translation id="320825648481311438">Quando è attivato, il bowser riesce ad accedere e uscire dagli account Google.</translation>
 <translation id="3208703785962634733">Non confermato</translation>
-<translation id="3209459032754159027">Attiva visualizzazione della funzione di accesso mediante carta di credito nell'elenco a discesa Compilazione automatica.</translation>
 <translation id="3211904643589960506">Abilita scansione degli URL dagli oggetti Physical Web.</translation>
 <translation id="3216508313927987948">A tale scopo, dovrai impostare il tuo dispositivo <ph name="DEVICE_TYPE" /> procedendo come descritto di seguito.</translation>
 <translation id="3220586366024592812">Il processo del connettore <ph name="CLOUD_PRINT_NAME" /> si è bloccato. Riavviarlo?</translation>
@@ -2226,7 +2224,7 @@
 <translation id="3790909017043401679">Inserisci il PIN della scheda SIM</translation>
 <translation id="3792890930871100565">Scollega stampanti</translation>
 <translation id="3796648294839530037">Reti preferite:</translation>
-<translation id="3797900183766075808">&amp;Cerca <ph name="SEARCH_ENGINE" /> con "<ph name="SEARCH_TERMS" />"</translation>
+<translation id="3797900183766075808">&amp;Cerca "<ph name="SEARCH_TERMS" />" su <ph name="SEARCH_ENGINE" /></translation>
 <translation id="3798325802885154040">Consente di attivare/disattivare il tocco per fare clic</translation>
 <translation id="3798449238516105146">Versione</translation>
 <translation id="3798935682015223249">Supporto MTP in Gestione file</translation>
@@ -4614,7 +4612,6 @@
 <translation id="7042418530779813870">In&amp;colla e cerca</translation>
 <translation id="7045480833981818310">Estensione Editor Office per Documenti, Fogli e Presentazioni</translation>
 <translation id="7047998246166230966">Puntatore</translation>
-<translation id="7048141481140415714">Abilita Ctrl+Alt+Maiusc+8 per attivare/disattivare la modalità di espansione TouchView.</translation>
 <translation id="7049293980323620022">Conservare il file?</translation>
 <translation id="7051943809462976355">Ricerca mouse in corso...</translation>
 <translation id="7052237160939977163">Invia dati di rilevamento del rendimento</translation>
@@ -5773,7 +5770,6 @@
 <translation id="8632275030377321303">Il proxy non può essere modificato dall'utente.</translation>
 <translation id="8636038761987659075">Impostazioni sito con Tutti i siti e Dettagli del sito</translation>
 <translation id="8637688295594795546">Aggiornamento del sistema disponibile. Preparazione per il download in corso…</translation>
-<translation id="8638602948366220068">Attiva funzione di accesso mediante carta di credito in Compilazione automatica</translation>
 <translation id="8639504893694748827">Unità di rasterizzazione zero-copy</translation>
 <translation id="8639963783467694461">Impostazioni di Compilazione automatica</translation>
 <translation id="8642171459927087831">Token di accesso</translation>
@@ -6208,7 +6204,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> da <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Consente di imporre i listener di eventi touchstart e first touchmove per scroll come passivi durante lo scorrimento.</translation>
-<translation id="9184473426683023988">Importa e associa a dispositivo</translation>
 <translation id="9186729806195986201">Ripristina anche la versione precedente installata di <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Attiva la realtà virtuale di Chrome.</translation>
 <translation id="9188441292293901223">Aggiorna il telefono a una versione più recente di Android per sbloccare questo dispositivo <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 70c3a87..1de8d9e 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -483,7 +483,6 @@
 <translation id="1594234040488055839">‏הצע כניסה אוטומטית לאתרי Google באמצעות חשבון זה</translation>
 <translation id="1596174774107741586">‏השתמש בשרתי ארגז החול של Google Payments</translation>
 <translation id="1598233202702788831">מנהל המערכת השבית את העדכונים.</translation>
-<translation id="1598604884989842103">‏הפעל את ממשק המשתמש של הגדלת TouchView לבדיקה</translation>
 <translation id="1600857548979126453">להיכנס לניפוי הבאגים העורפי של הדף</translation>
 <translation id="1601560923496285236">החל</translation>
 <translation id="1603914832182249871">(גלישה בסתר)</translation>
@@ -819,7 +818,7 @@
 <translation id="2077129598763517140">השתמש בהאצת חומרה כשניתן</translation>
 <translation id="2078019350989722914">הזהר לפני היציאה (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">אם תמחק את אחד מהאישורים שלך, לא תוכל להמשיך ולהשתמש בו כדי לזהות את עצמך.</translation>
-<translation id="2079545284768500474">בטל</translation>
+<translation id="2079545284768500474">בטל פעולה</translation>
 <translation id="2080010875307505892">מקלדת סרבית</translation>
 <translation id="2080070583977670716">הגדרות נוספות</translation>
 <translation id="2081322486940989439">‏אתר זה אינו מקבל כרטיסי אשראי מסוג Visa.</translation>
@@ -1754,7 +1753,6 @@
 <translation id="3206175707080061730">קובץ בשם "$ 1" כבר קיים. האם אתה רוצה להחליף אותו?</translation>
 <translation id="320825648481311438">‏כשתכונה זו מופעלת, הדפדפן מנהל כניסה ויציאה מחשבונות Google.</translation>
 <translation id="3208703785962634733">לא מאושר</translation>
-<translation id="3209459032754159027">אפשר הצגת קידום הרשמה עם כרטיס אשראי בתפריט הנפתח של 'מילוי אוטומטי'.</translation>
 <translation id="3211904643589960506">הפעל סריקה של כתובות אתרים מאובייקטים באינטרנט הווירטופיזי.</translation>
 <translation id="3216508313927987948">כדי לעשות זאת, יהיה עליך לאמן את ה-<ph name="DEVICE_TYPE" /> בשלב הבא.</translation>
 <translation id="3220586366024592812">תהליך המחבר <ph name="CLOUD_PRINT_NAME" /> קרס. להפעיל מחדש?</translation>
@@ -4614,7 +4612,6 @@
 <translation id="7042418530779813870">הדבק וחפש</translation>
 <translation id="7045480833981818310">‏עריכת Office עבור Docs‏, Sheets ו-Slides</translation>
 <translation id="7047998246166230966">מצביע</translation>
-<translation id="7048141481140415714">‏הפעל את מקשי הקיצור Ctrl+Alt+Shift+8 להפעלה/כיבוי של מצב ההגדלה של TouchView.</translation>
 <translation id="7049293980323620022">להשאיר את הקובץ?</translation>
 <translation id="7051943809462976355">מחפש עכבר...</translation>
 <translation id="7052237160939977163">שלח נתוני מעקב אחר ביצועים</translation>
@@ -5773,7 +5770,6 @@
 <translation id="8632275030377321303">‏המשתמש לא יכול לשנות את שרת ה-proxy.</translation>
 <translation id="8636038761987659075">הגדרות אתרים עם 'כל האתרים' ו'פרטי אתר'</translation>
 <translation id="8637688295594795546">עדכון מערכת זמין. מתכונן להוריד…</translation>
-<translation id="8638602948366220068">אפשר קידום הרשמה עם כרטיס אשראי במילוי האוטומטי</translation>
 <translation id="8639504893694748827">יוצר רשת הנקודות לעותק אפס</translation>
 <translation id="8639963783467694461">הגדרות מילוי אוטומטי</translation>
 <translation id="8642171459927087831">אסימון גישה</translation>
@@ -6208,7 +6204,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> מ-<ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">‏כופה התייחסות אל touchstart, ואל touchmove ראשון בכל מעבד אירוע גלילה במהלך הנפה, כאל פסיביים.</translation>
-<translation id="9184473426683023988">יבא ואגד למכשיר</translation>
 <translation id="9186729806195986201">כמו כן, חזור לגרסה המותקנת הקודמת של <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">‏הפעל את Chrome VR.</translation>
 <translation id="9188441292293901223">‏עדכן את הטלפון לגרסה חדשה יותר של Android כדי לבטל את הנעילה של <ph name="DEVICE_TYPE" /> זה.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 05306dee..f727daa1 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">このアカウントによる Google サイトへの自動ログインを申し込む</translation>
 <translation id="1596174774107741586">Google ペイメントのサンドボックス サーバーを使用する</translation>
 <translation id="1598233202702788831">更新は管理者によって無効になっています。</translation>
-<translation id="1598604884989842103">テスト用に TouchView 最大化のユーザー インターフェースを有効にする</translation>
 <translation id="1600857548979126453">ページ デバッガ バックエンドにアクセスする</translation>
 <translation id="1601560923496285236">適用</translation>
 <translation id="1603914832182249871">(シークレット モード)</translation>
@@ -825,7 +824,7 @@
 <translation id="2077129598763517140">ハードウェア アクセラレーションが使用可能な場合は使用する</translation>
 <translation id="2078019350989722914">終了する前に警告メッセージを表示する(<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">ユーザーの証明書のいずれかを削除すると、それを使って身元を証明することはできなくなります。</translation>
-<translation id="2079545284768500474">取り消す</translation>
+<translation id="2079545284768500474">元に戻す</translation>
 <translation id="2080010875307505892">セルビア語のキーボード</translation>
 <translation id="2080070583977670716">詳細設定</translation>
 <translation id="2081322486940989439">このサイトでは Visa は使用できません。</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">「$1」という名前のファイルは既に存在します。置き換えますか?</translation>
 <translation id="320825648481311438">有効にした場合、ブラウザで Google アカウントのログインとログアウトが管理されます。</translation>
 <translation id="3208703785962634733">未確認</translation>
-<translation id="3209459032754159027">自動入力のプルダウンにクレジット カードのログイン プロモーションを表示します。</translation>
 <translation id="3211904643589960506">フィジカル ウェブ オブジェクトの URL のスキャンを有効にします。</translation>
 <translation id="3216508313927987948">これには、次の手順で <ph name="DEVICE_TYPE" /> に音声を認識させる必要があります。</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> コネクタのプロセスで問題が発生しました。再起動しますか?</translation>
@@ -2157,7 +2155,7 @@
 <translation id="3704162925118123524">ご利用のネットワークでは、ログインページへのアクセスが必要な可能性があります。</translation>
 <translation id="3704331259350077894">処理が停止した</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">読み込み中...</translation>
+<translation id="370665806235115550">読み込んでいます...</translation>
 <translation id="3706919628594312718">マウスの設定</translation>
 <translation id="3707020109030358290">認証局ではありません。</translation>
 <translation id="3709244229496787112">ダウンロードの完了前に、ブラウザがシャットダウンされました。</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">貼り付けて検索(&amp;S)</translation>
 <translation id="7045480833981818310">ドキュメント、スプレッドシート、スライドでの Office 編集</translation>
 <translation id="7047998246166230966">ポインタ</translation>
-<translation id="7048141481140415714">Ctrl+Alt+Shift+8 で TouchView 最大化モードを切り替えられるようにします。</translation>
 <translation id="7049293980323620022">ファイルを保存しますか?</translation>
 <translation id="7051943809462976355">マウスを探しています...</translation>
 <translation id="7052237160939977163">パフォーマンス追跡データを送信する</translation>
@@ -5792,7 +5789,6 @@
 <translation id="8632275030377321303">このユーザーはプロキシを変更できません。</translation>
 <translation id="8636038761987659075">サイト設定にすべてのサイトとサイトの詳細を表示する</translation>
 <translation id="8637688295594795546">システムのアップデートが見つかりました。ダウンロードの準備をしています...</translation>
-<translation id="8638602948366220068">自動入力でクレジット カードのログイン プロモーションを有効にする</translation>
 <translation id="8639504893694748827">ゼロコピー ラスタライザ</translation>
 <translation id="8639963783467694461">自動入力の設定</translation>
 <translation id="8642171459927087831">アクセス トークン</translation>
@@ -6227,7 +6223,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> を <ph name="DOWNLOAD_DOMAIN" /> からダウンロード(<ph name="TIME_LEFT" />)</translation>
 <translation id="9184146175870444618">フリング(指で軽く払う操作)時の touchstart イベント リスナーとスクロールごとの最初の touchmove イベント リスナーを、強制的に受動的リスナーとして扱います。</translation>
-<translation id="9184473426683023988">インポートしてデバイスにバインド</translation>
 <translation id="9186729806195986201"><ph name="IDS_SHORT_PRODUCT_NAME" /> の以前のインストール バージョンに戻す。</translation>
 <translation id="9187651461283037651">Chrome VR を有効にする。</translation>
 <translation id="9188441292293901223">この <ph name="DEVICE_TYPE" /> のロックを解除するには、スマートフォンを新しいバージョンの Android に更新してください。</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index e1eccb8f..779729e7 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -145,7 +145,7 @@
 <translation id="1189418886587279221">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಬಳಸಲು ಸುಲಭಗೊಳಿಸಲು ಪ್ರವೇಶದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="1190144681599273207">ಈ ಫೈಲ್ ಅನ್ನು ಪಡೆಯುವುದರಿಂದ ಮೊಬೈಲ್ ಡೇಟಾದ ಸುಮಾರು <ph name="FILE_SIZE" /> ಅನ್ನು ಬಳಸುತ್ತದೆ.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ}one{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ # ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ}other{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ # ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ}}</translation>
-<translation id="1190596385362128063">ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಿ</translation>
+<translation id="1190596385362128063">ಕ್ಯಾಲಿಬ್ರೇಟ್‌</translation>
 <translation id="1190855992966397019">AppContainer ಲಾಕ್‌ಡೌನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="1195447618553298278">ಅಪರಿಚಿತ ದೋಷ.</translation>
 <translation id="1196338895211115272">ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ರಫ್ತು ಮಾಡಲು ವಿಫಲವಾಗಿದೆ.</translation>
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">ಈ ಖಾತೆಯೊಂದಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ Google ಸೈಟ್‌ಗಳಿಗೆ ಸೈನ್‌ ಇನ್‌ ಮಾಡಲು ಅವಕಾಶ ಕೊಡು</translation>
 <translation id="1596174774107741586">Google Payments ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್‌ ಸರ್ವರ್‌ಗಳನ್ನು ಬಳಸಿ</translation>
 <translation id="1598233202702788831">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ.</translation>
-<translation id="1598604884989842103">ಪರೀಕ್ಷೆಗಾಗಿ TouchView ಗರಿಷ್ಠಗೊಳಿಸುವ UI ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="1600857548979126453">ಡೀಬಗರ್ ಅನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವ ಪುಟವನ್ನು ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="1601560923496285236">ಅನ್ವಯಿಸು</translation>
 <translation id="1603914832182249871">(ಅದೃಶ್ಯ)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">"$1" ಹೆಸರಿನ ಫೈಲ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಇದನ್ನು ನೀವು ಸ್ಥಳಾಂತರಿಸಬೇಕಾಗಿದೆಯೇ?</translation>
 <translation id="320825648481311438">ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, Google ಖಾತೆಗಳಿಂದ ಸೈನ್ ಇನ್ ಮಾಡುವುದು ಮತ್ತು ಸೈನ್ ಔಟ್ ಮಾಡುವುದನ್ನು ಬ್ರೌಸರ್ ನಿರ್ವಹಿಸುತ್ತದೆ.</translation>
 <translation id="3208703785962634733">ದೃಢೀಕರಿಸಲಾಗಿಲ್ಲ</translation>
-<translation id="3209459032754159027">ಸ್ವಯಂ ಭರ್ತಿ ಡ್ರಾಪ್‌ಡೌನ್ ಒಳಗೆ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸೈನ್ ಇನ್ ಪ್ರೊಮೋ ತೋರಿಸುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="3211904643589960506">ಪ್ರತ್ಯಕ್ಷ ವೆಬ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳಿಂದ URL ಗಳ ಸ್ಕ್ಯಾನಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="3216508313927987948">ಇದನ್ನು ಪೂರೈಸುವಂತೆ ಮಾಡಲು, ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ನೀವು ಈ ಮುಂದಿನ ಹಂತದಂತೆ ತರಬೇತಿಗೊಳಿಸಬೇಕಾಗಿರುತ್ತದೆ.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> ಕನೆಕ್ಟರ್ ಪ್ರಕ್ರಿಯೆಯು ಕ್ರ‍್ಯಾಶ್‌ ಆಗಿದೆ. ಮರುಪ್ರಾರಂಭಿಸುವುದೆ?</translation>
@@ -2155,7 +2153,7 @@
 <translation id="3704162925118123524">ನೀವು ಬಳಸುತ್ತಿರುವ ನೆಟ್‌ವರ್ಕ್‌ನ ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಬೇಕಾದ ಅಗತ್ಯವಿದೆ.</translation>
 <translation id="3704331259350077894">ಕಾರ್ಯಾಚರಣೆಯ ಅಂತ್ಯ</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="370665806235115550">ಲೋಡ್ ಆಗುತ್ತಿದೆ...</translation>
 <translation id="3706919628594312718">ಮೌಸ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="3707020109030358290">ಪ್ರಮಾಣೀಕರಣದ ಪ್ರಾಧಿಕಾರವಲ್ಲ.</translation>
 <translation id="3709244229496787112">ಡೌನ್‌ಲೋಡ್ ಪೂರ್ಣಗೊಳ್ಳುವುದಕ್ಕೂ ಮುನ್ನ ಬ್ರೌಸರ್ ಶಟ್‌ಡೌನ್ ಆಗಿದೆ.</translation>
@@ -3882,7 +3880,7 @@
 <translation id="60357267506638014">ಜೆಕ್ QWERTY</translation>
 <translation id="6039651071822577588">ನೆಟ್‌ವರ್ಕ್ ಗುಣಲಕ್ಷಣದ ನಿಘಂಟು ದೋಷಪೂರಿತವಾಗಿದೆ</translation>
 <translation id="604001903249547235">ಮೇಘ ಬ್ಯಾಕಪ್</translation>
-<translation id="6040143037577758943">ಮುಚ್ಚು</translation>
+<translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="604124094241169006">ಸ್ವಯಂಚಾಲಿತ</translation>
 <translation id="6042308850641462728">ಇನ್ನಷ್ಟು</translation>
 <translation id="6043317578411397101"><ph name="TAB_NAME" /> ಜೊತೆಗೆ <ph name="APP_NAME" /> Chrome ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದೆ.</translation>
@@ -4625,7 +4623,6 @@
 <translation id="7042418530779813870">ಅಂಟಿ&amp;ಸಿ ಮತ್ತು ಹುಡುಕಾಡಿ</translation>
 <translation id="7045480833981818310">ಡಾಕ್ಸ್‌, ಶೀಟ್‌ಗಳು ಮತ್ತು ಸ್ಲೈಡ್‌ಗಳಿಗೆ Office ಎಡಿಟ್</translation>
 <translation id="7047998246166230966">ಪಾಯಿಂಟರ್‌</translation>
-<translation id="7048141481140415714">TouchView ಗರಿಷ್ಠಗೊಳಿಸುವ ಮೋಡ್‌ ಅನ್ನು ಟಾಗಲ್‌ ಮಾಡಲು Ctrl+Alt+Shift+8 ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="7049293980323620022">ಫೈಲ್ ಇರಿಸುವುದೇ?</translation>
 <translation id="7051943809462976355">ಮೌಸ್‍ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7052237160939977163">ಕಾರ್ಯಕ್ಷಮತೆ ಟ್ರೇಸ್‌ ಡೇಟಾ ಕಳುಹಿಸಿ</translation>
@@ -5794,7 +5791,6 @@
 <translation id="8632275030377321303">ಪ್ರಾಕ್ಸಿಯನ್ನು ಬಳಕೆದಾರರಿಂದ ಮಾರ್ಪಡಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="8636038761987659075">ಎಲ್ಲಾ ಸೈಟ್‌ಗಳು ಮತ್ತು ಸೈಟ್ ವಿವರಗಳ ಜೊತೆಗೆ ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌‌ಗಳು</translation>
 <translation id="8637688295594795546">ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌‌ ಲಭ್ಯವಿದೆ. ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ತಯಾರಾಗುತ್ತಿದೆ...</translation>
-<translation id="8638602948366220068">ಸ್ವಯಂ ಭರ್ತಿ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸೈನ್ಇನ್ ಪ್ರೊಮೋ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="8639504893694748827">ಶೂನ್ಯ-ಪ್ರತಿ-ರಾಸ್ಟರೈಸರ್</translation>
 <translation id="8639963783467694461">ಸ್ವಯಂತುಂಬುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="8642171459927087831">ಪ್ರವೇಶ ಟೋಕನ್</translation>
@@ -6230,7 +6226,6 @@
 <translation id="9181716872983600413">ಯುನಿಕೋಡ್</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /> ನಿಂದ <ph name="DOWNLOAD_RECEIVED" /></translation>
 <translation id="9184146175870444618">ಫ್ಲಿಂಗ್ ಸಮಯದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯ ಎಂಬುದಾಗಿ ಪರಿಗಣಿಸಲು ಪ್ರತಿ ಸ್ಕ್ರಾಲ್ ಈವೆಂಟ್‌ ಕೇಳುಗರ ಫೋರ್ಸಸ್ ಟಚ್‌ಸ್ಟಾರ್ಟ್ ಮತ್ತು ಫಸ್ಟ್ ಟಚ್‌ಮೂವ್ ಅನ್ನು ಬಲವಂತಪಡಿಸುತ್ತದೆ.</translation>
-<translation id="9184473426683023988">ಸಾಧನಕ್ಕೆ ಆಮದು ಮಾಡಿ ಮತ್ತು ಬೈಂಡ್ ಮಾಡಿ</translation>
 <translation id="9186729806195986201">ಅಲ್ಲದೆ <ph name="IDS_SHORT_PRODUCT_NAME" /> ನ ಹಿಂದೆ ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.</translation>
 <translation id="9187651461283037651">Chrome VR ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="9188441292293901223">ದಯವಿಟ್ಟು ಈ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು Android ಹೊಸ ಆವೃತ್ತಿಗೆ ನಿಮ್ಮ ಫೋನ್‌ ನವೀಕರಿಸಿ.</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 8daf7ca..7f46efff 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">이 계정을 사용하여 Google 사이트에 자동으로 로그인할지 묻는 메시지 표시</translation>
 <translation id="1596174774107741586">Google Payments 샌드박스 서버 사용</translation>
 <translation id="1598233202702788831">관리자가 업데이트를 사용 중지했습니다.</translation>
-<translation id="1598604884989842103">테스트용으로 TouchView 최대화 UI 사용</translation>
 <translation id="1600857548979126453">페이지 디버거 백엔드에 액세스</translation>
 <translation id="1601560923496285236">적용</translation>
 <translation id="1603914832182249871">(시크릿 모드)</translation>
@@ -825,7 +824,7 @@
 <translation id="2077129598763517140">가능한 경우 하드웨어 가속 사용</translation>
 <translation id="2078019350989722914">종료하기 전 경고(<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">인증서 중 하나를 삭제하면 더 이상 삭제한 인증서를 사용하여 신원을 확인할 수 없습니다.</translation>
-<translation id="2079545284768500474">실행 취소</translation>
+<translation id="2079545284768500474">실행취소</translation>
 <translation id="2080010875307505892">세르비아어 키보드</translation>
 <translation id="2080070583977670716">설정 더보기</translation>
 <translation id="2081322486940989439">이 사이트에서는 Visa를 사용할 수 없습니다.</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">이름이 '$1'인 파일이 이미 존재합니다. 대체하시겠습니까?</translation>
 <translation id="320825648481311438">사용하도록 설정하면 브라우저에서 Google 계정의 로그인과 로그아웃을 관리합니다.</translation>
 <translation id="3208703785962634733">미확인</translation>
-<translation id="3209459032754159027">자동완성 드롭다운에 신용카드 로그인 프로모션 표시 사용</translation>
 <translation id="3211904643589960506">피지컬 웹 사물에서 URL을 스캔할 수 있도록 허용합니다.</translation>
 <translation id="3216508313927987948">이렇게 하려면 다음 단계에 따라 <ph name="DEVICE_TYPE" />에서 음성을 인식하도록 해야 합니다.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> 커넥터 프로세스가 중단되었습니다. 다시 시작하시겠습니까?</translation>
@@ -4621,7 +4619,6 @@
 <translation id="7042418530779813870">붙여넣어 검색하기(&amp;S)</translation>
 <translation id="7045480833981818310">문서, 스프레드시트, 프레젠테이션용 Office 수정</translation>
 <translation id="7047998246166230966">포인터</translation>
-<translation id="7048141481140415714">TouchView 최대화 모드를 전환하려면 Ctrl+Alt+Shift+8을 사용하도록 설정합니다.</translation>
 <translation id="7049293980323620022">파일을 보관하시겠습니까?</translation>
 <translation id="7051943809462976355">마우스 검색 중...</translation>
 <translation id="7052237160939977163">성능 추적 데이터 전송</translation>
@@ -5791,7 +5788,6 @@
 <translation id="8632275030377321303">프록시는 사용자가 수정할 수 없습니다.</translation>
 <translation id="8636038761987659075">사이트 설정에서 전체 사이트 및 사이트 세부정보 보기</translation>
 <translation id="8637688295594795546">시스템 업데이트 사용가능. 다운로드 준비 중…</translation>
-<translation id="8638602948366220068">자동완성 신용카드 로그인 프로모션 사용</translation>
 <translation id="8639504893694748827">Zero-copy 래스터라이저</translation>
 <translation id="8639963783467694461">자동완성 설정</translation>
 <translation id="8642171459927087831">액세스 토큰</translation>
@@ -6227,7 +6223,6 @@
 <translation id="9181716872983600413">유니코드</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" />에서 <ph name="DOWNLOAD_RECEIVED" /> 다운로드(남은 시간: <ph name="TIME_LEFT" />)</translation>
 <translation id="9184146175870444618">터치스타트, 플링 중 스크롤 이벤트 리스너에 따른 첫 터치무브는 패시브로 처리되도록 강제 적용합니다.</translation>
-<translation id="9184473426683023988">가져와서 기기에 연결</translation>
 <translation id="9186729806195986201">또한 <ph name="IDS_SHORT_PRODUCT_NAME" />의 이전 설치 버전으로 되돌아갑니다.</translation>
 <translation id="9187651461283037651">Chrome VR 사용</translation>
 <translation id="9188441292293901223"><ph name="DEVICE_TYPE" />을(를) 잠금 해제하려면 휴대전화의 Android를 최신 버전으로 업데이트하세요.</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index a7918917..12e1178 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Pasiūlymas automatiškai prisijungti prie „Google“ svetainių naudojant šią paskyrą</translation>
 <translation id="1596174774107741586">„Google Payments“ „sandbox“ (smėlio dėžės) serverių naudojimas</translation>
 <translation id="1598233202702788831">Administratorius išjungė naujinius</translation>
-<translation id="1598604884989842103">Įgalinti „TouchView“ padidinimo NS bandymo tikslais</translation>
 <translation id="1600857548979126453">Pasiekti puslapio derintuvės vidinę pusę</translation>
 <translation id="1601560923496285236">Taikyti</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Failas pavadinimu „$1“ jau yra. Ar norite jį pakeisti?</translation>
 <translation id="320825648481311438">Kai įgalinta, naršyklė tvarko prisijungimą prie ir atsijungimą nuo „Google“ paskyrų.</translation>
 <translation id="3208703785962634733">Nepatvirtinta</translation>
-<translation id="3209459032754159027">Įgalinti kredito kortelės prisijungimo reklaminį tekstą automatinio pildymo išskleidžiamajame meniu.</translation>
 <translation id="3211904643589960506">Įgalinti URL nuskaitymą iš fizinio žiniatinklio objektų.</translation>
 <translation id="3216508313927987948">Kad tai būtų vykdoma, reikės išmokyti „<ph name="DEVICE_TYPE" />“ atliekant kitą veiksmą.</translation>
 <translation id="3220586366024592812">Užstrigo „<ph name="CLOUD_PRINT_NAME" />“ jungties procesas. Paleisti iš naujo?</translation>
@@ -4624,7 +4622,6 @@
 <translation id="7042418530779813870">Įkl&amp;ijuoti ir ieškoti</translation>
 <translation id="7045480833981818310">„Office Editing“ programa, skirta Dokumentams, Skaičiuoklėms ir Skaidrėms</translation>
 <translation id="7047998246166230966">Žymeklis</translation>
-<translation id="7048141481140415714">Įgalinkite „Ctrl“ + „Alt“ + „Shift“ + 8, kad perjungtumėte „TouchView“ didinimo režimą.</translation>
 <translation id="7049293980323620022">Palikti failą?</translation>
 <translation id="7051943809462976355">Ieškoma pelės...</translation>
 <translation id="7052237160939977163">Siųsti našumo stebėjimo duomenis</translation>
@@ -5794,7 +5791,6 @@
 <translation id="8632275030377321303">Naudotojas negali keisti įgaliotojo serverio.</translation>
 <translation id="8636038761987659075">Svetainės nustatymai su visomis svetainėmis ir išsamia svetainės informacija</translation>
 <translation id="8637688295594795546">Galimas sistemos naujinys. Ruošiamasi atsisiųsti...</translation>
-<translation id="8638602948366220068">Įgalinti automatinį kredito kortelės prisijungimo reklaminio teksto pildymą</translation>
 <translation id="8639504893694748827">Rastrinio vaizdo keitimo priemonė be kopijų</translation>
 <translation id="8639963783467694461">Automatinio pildymo nustatymai</translation>
 <translation id="8642171459927087831">Prieigos raktas</translation>
@@ -6230,7 +6226,6 @@
 <translation id="9181716872983600413">Unikodas</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> iš <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Pradžios palietus ir judėjimo palietus pirmą kartą slinkimo įvykių apdorojimo vertės siunčiant priverstinai laikomos pasyviomis.</translation>
-<translation id="9184473426683023988">Importuoti ir susaistyti su įrenginiu</translation>
 <translation id="9186729806195986201">Taip pat grąžinti anksčiau įdiegtą „<ph name="IDS_SHORT_PRODUCT_NAME" />“ versiją.</translation>
 <translation id="9187651461283037651">Įgalinti „Chrome“ virtualiąją realybę.</translation>
 <translation id="9188441292293901223">Atnaujinkite telefoną į naujesnę „Android“ versiją, kad atrakintumėte šį „<ph name="DEVICE_TYPE" />“.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 7b25dd4..3f76996 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Piedāvāt automātiski pierakstīties Google vietnēs ar šo kontu</translation>
 <translation id="1596174774107741586">Izmantot Google Payments smilškastes serverus</translation>
 <translation id="1598233202702788831">Administrators ir atspējojis atjauninājumus.</translation>
-<translation id="1598604884989842103">Iespējot TouchView maksimizēšanas lietotāja saskarni testēšanai</translation>
 <translation id="1600857548979126453">Piekļūtu lapas atkļūdotāja aizmugursistēmai</translation>
 <translation id="1601560923496285236">Lietot</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Fails ar nosaukumu $1 jau eksistē. Vai vēlaties to aizstāt?</translation>
 <translation id="320825648481311438">Ja iespējots, pārlūks pārvalda pierakstīšanos Google kontos un izrakstīšanos no tiem.</translation>
 <translation id="3208703785962634733">Neapstiprināts</translation>
-<translation id="3209459032754159027">Iespējot reklāmas rādīšanu par pierakstīšanos, izmantojot kredītkarti, nolaižamajā izvēlnē Automātiskā aizpilde.</translation>
 <translation id="3211904643589960506">Vietrāžu URL skenēšanas iespējošana no Fiziskā tīmekļa objektiem</translation>
 <translation id="3216508313927987948">Lai to izdarītu, jums būs jāiemāca savai <ph name="DEVICE_TYPE" /> ierīcei tālāk norādītā darbība.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> savienotāja process ir avarējis. Vai restartēt?</translation>
@@ -4623,7 +4621,6 @@
 <translation id="7042418530779813870">Ielīmēt un meklēt</translation>
 <translation id="7045480833981818310">Office Editing dokumentiem, izklājlapām un prezentācijām</translation>
 <translation id="7047998246166230966">Rādītājs</translation>
-<translation id="7048141481140415714">Tiek iespējota kombinācija Ctrl+Alt+Shift+8, lai pārslēgtu TouchView maksimizēšanas režīmu.</translation>
 <translation id="7049293980323620022">Vai paturēt failu?</translation>
 <translation id="7051943809462976355">Notiek peles meklēšana...</translation>
 <translation id="7052237160939977163">Sūtīt veiktspējas izsekošanas datus</translation>
@@ -5792,7 +5789,6 @@
 <translation id="8632275030377321303">Lietotājs nevar modificēt starpniekservera iestatījumus.</translation>
 <translation id="8636038761987659075">Vietnes iestatījumi ar vienumiem “Visas vietnes” un “Vietnes informācija”</translation>
 <translation id="8637688295594795546">Ir pieejams sistēmas atjauninājums. Notiek sagatavošana lejupielādei…</translation>
-<translation id="8638602948366220068">Kredītkartes pierakstīšanās reklāmas iespējošana automātiskajā aizpildē</translation>
 <translation id="8639504893694748827">Rastrētājs, kas neveido kopijas</translation>
 <translation id="8639963783467694461">Automātiskās aizpildes iestatījumi</translation>
 <translation id="8642171459927087831">Piekļuves pilnvara</translation>
@@ -6228,7 +6224,6 @@
 <translation id="9181716872983600413">Unikoda</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> no <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Iestata katras ritināšanas skāriena sākuma un pirmās skāriena kustības notikumu uztvērējus kā pasīvus straujas darbības veikšanas laikā.</translation>
-<translation id="9184473426683023988">Importēt ierīcē un saistīt ar to</translation>
 <translation id="9186729806195986201">Atjaunot arī iepriekš instalēto <ph name="IDS_SHORT_PRODUCT_NAME" /> versiju.</translation>
 <translation id="9187651461283037651">Iespējot Chrome virtuālo realitāti</translation>
 <translation id="9188441292293901223">Lūdzu, izmantojiet tālrunī jaunāku Android versiju, lai atbloķētu šo <ph name="DEVICE_TYPE" /> ierīci.</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index c5aa38e..6698e8aa 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -485,7 +485,6 @@
 <translation id="1594234040488055839">ഈ അക്കൗണ്ട് ഉപയോഗിച്ച് Google സൈറ്റുകളിലേക്ക് സ്വയമേവ സൈൻ ഇൻ ചെയ്യാനുള്ള ഓഫർ</translation>
 <translation id="1596174774107741586">Google പേയ്‌മെന്റ് സാൻഡ്‌ബോക്‌സ് സെർവറുകൾ ഉപയോഗിക്കുക</translation>
 <translation id="1598233202702788831">അപ്‌ഡേറ്റുകളെ നിങ്ങളുടെ അഡ്‌മിനിസ്‌ട്രേറ്റര്‍ പ്രവർത്തനരഹിതമാക്കി.</translation>
-<translation id="1598604884989842103">പരിശോധിക്കുന്നതിനായി TouchView വിപുലീകരിക്കൽ UI പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="1600857548979126453">പേജ് ഡീബഗ്ഗർ ബാക്ക്എൻഡ് ആക്‌സസ്സുചെയ്യുക</translation>
 <translation id="1601560923496285236">പ്രയോഗിക്കുക</translation>
 <translation id="1603914832182249871">(ആള്‍മാറാട്ടം)</translation>
@@ -822,7 +821,7 @@
 <translation id="2077129598763517140">ലഭ്യമാകുമ്പോൾ ഹാർഡ്‌വെയർ ത്വരിതപ്പെടുത്തൽ ഉപയോഗിക്കുക</translation>
 <translation id="2078019350989722914">(<ph name="KEY_EQUIVALENT" />) എന്നതില്‍ നിന്ന് പുറത്തുകടക്കും മുമ്പ് മുന്നറിയിപ്പ് നല്‍കുക</translation>
 <translation id="2079053412993822885">നിങ്ങളുടെ സ്വന്തം സാക്‍ഷ്യപത്രങ്ങളിലൊന്ന് ഇല്ലാതാക്കുകയാണെങ്കില്‍, സ്വയം തിരിച്ചറിയുന്നതിന് നിങ്ങള്‍ക്കത് ഇനിമുതല്‍ ഉപയോഗിക്കാന്‍ കഴിയില്ല.</translation>
-<translation id="2079545284768500474">പൂര്‍‌വ്വാവസ്ഥയിലാക്കുക</translation>
+<translation id="2079545284768500474">പഴയപടിയാക്കുക</translation>
 <translation id="2080010875307505892">സെര്‍ബിയന്‍ കീബോര്‍ഡ്</translation>
 <translation id="2080070583977670716">കൂടുതൽ ക്രമീകരണങ്ങൾ</translation>
 <translation id="2081322486940989439">ഈ സൈറ്റ് Visa-യെ അംഗീകരിക്കുന്നില്ല.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">"$1" എന്ന നാമത്തോട് കൂടിയ ഒരു ഫയൽ ഇതിനകം തന്നെ ഉണ്ട്. ഇത് മാറ്റി മറ്റൊന്നുവയ്ക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹമുണ്ടോ?</translation>
 <translation id="320825648481311438">പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുമ്പോൾ, Google അക്കൗണ്ടുകളുടെ സൈൻ ഇന്നും സൈൻ ഔട്ടും ബ്രൗസർ നിയന്ത്രിക്കുന്നു.</translation>
 <translation id="3208703785962634733">സ്ഥിരീകരികരിക്കാത്തത്</translation>
-<translation id="3209459032754159027">സ്വയമേവയുള്ള പൂരിപ്പിക്കൽ ഡ്രോപ്പ്‌ഡൗണിനുള്ളിൽ ക്രെഡിറ്റ് കാർഡ് സൈൻ ഇൻ പ്രൊമോ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="3211904643589960506">ഫിസിക്കൽ വെബ് ഒബ്‌ജക്‌റ്റുകളിൽ നിന്നുള്ള URL-കൾക്കായി സ്‌കാനിംഗ് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="3216508313927987948">ഇങ്ങനെ നടക്കുന്നതിന്, <ph name="DEVICE_TYPE" /> ഉപകരണത്തെ ഇനിപ്പറയുന്ന ഘട്ടത്തിലൂടെ പരിശീലിപ്പിക്കേണ്ടിവരും.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> കണക്റ്റര്‍ പ്രോസസ്സ് ക്രാഷുചെയ്തു. പുനരാരംഭിക്കണോ?</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">ഒട്ടി&amp;ച്ച് തിരയൂ</translation>
 <translation id="7045480833981818310">ഡോക്‌സ്, ഷീറ്റ്, സ്ലൈഡ് എന്നിവയ്‌ക്കുള്ള ഓഫീസ് എഡിറ്റിംഗ്</translation>
 <translation id="7047998246166230966">പോയിന്റർ</translation>
-<translation id="7048141481140415714">TouchView വിപുലീകരിക്കൽ മോഡ് ടോഗിൾ ചെയ്യുന്നതിന് Ctrl+Alt+Shift+D പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="7049293980323620022">ഫയൽ സൂക്ഷിക്കണോ?</translation>
 <translation id="7051943809462976355">മൗസിനായി തിരയുന്നു...</translation>
 <translation id="7052237160939977163">പ്രകടന ട്രെയിസ് ഡാറ്റ അയയ്‌ക്കുക</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">ഉപയോക്താവിന് പ്രോക്‌സി പരിഷ്‌ക്കരിക്കാനാവില്ല.</translation>
 <translation id="8636038761987659075">എല്ലാ സൈറ്റുകളും സൈറ്റ് വിശദാംശങ്ങളും ഉള്ള സൈറ്റ് ക്രമീകരണം</translation>
 <translation id="8637688295594795546">സിസ്റ്റം അപ്ഡേറ്റ് ലഭ്യമാണ്. ഡൌണ്‍ലോഡുചെയ്യുന്നതിന് തയ്യാറെടുക്കുന്നു...</translation>
-<translation id="8638602948366220068">'ക്രെഡിറ്റ് കാർഡ് സൈൻ ഇൻ പ്രമോ സ്വയമേവ പൂരിപ്പിക്കുക' പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="8639504893694748827">സീറോ-കോപ്പി റാസ്‌റ്ററൈസർ</translation>
 <translation id="8639963783467694461">ഓട്ടോഫില്‍ ക്രമീകരണങ്ങള്‍</translation>
 <translation id="8642171459927087831">ആക്‌സസ്സ് ടോക്കൺ</translation>
@@ -6224,7 +6220,6 @@
 <translation id="9181716872983600413">യൂണിക്കോഡ്</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" />-ൽ നിന്ന് <ph name="DOWNLOAD_RECEIVED" /> സ്വീകരിച്ചു, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">ഫ്ലിംഗുചെയ്യുമ്പോൾ touchstart-നെയും ഓരോ സ്‌ക്രോൾ ഇവന്റ് ലിസണർമാർക്കുമുള്ള ഫസ്‌റ്റ് touchmove-നെയും നിഷ്‌ക്രിയമായി കണക്കാക്കാൻ നിർബന്ധിക്കുന്നു.</translation>
-<translation id="9184473426683023988">ഉപകരണത്തിലേയ്‌ക്ക് ഇമ്പോർട്ടുചെയ്‌ത് ബന്ധിപ്പിക്കുക</translation>
 <translation id="9186729806195986201"><ph name="IDS_SHORT_PRODUCT_NAME" /> എന്നതിന്റെ മുമ്പ് ഇൻസ്റ്റാളുചെയ്‌ത പതിപ്പിലേക്ക് മടങ്ങുകയും ചെയ്യും.</translation>
 <translation id="9187651461283037651">Chrome VR പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="9188441292293901223">ഈ <ph name="DEVICE_TYPE" /> അൺലോക്കുചെയ്യാൻ, നിങ്ങളുടെ ഫോൺ ഏറ്റവും പുതിയ Android പതിപ്പിലേക്ക് അപ്‌ഡേറ്റുചെയ്യുക.</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 33583ff..919bc2a9 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -319,7 +319,7 @@
 <translation id="1410616244180625362">आपल्या कॅमेर्‍यावर प्रवेश करण्यासाठी <ph name="HOST" /> ला अनुमती देणे सुरू ठेवा</translation>
 <translation id="1413372529771027206">आपला फोन Smart Lock बदलण्यासाठी वापरला. या डिव्हाइसवर Chromebook साठी Smart Lock अद्यतनित करण्यासाठी आपला संकेतशब्द टाइप करा. पुढील वेळी, प्रविष्ट करण्यासाठी आपण फक्त आपले चित्र क्लिक करू शकता.</translation>
 <translation id="1414648216875402825">आपण <ph name="PRODUCT_NAME" /> च्या अस्थिर आवृत्तीवर अद्यतनित करत आहात ज्यात प्रगतीपथावर असलेली वैशिष्ट्ये आहेत. क्रॅश आणि अनपेक्षित दोष आढळतील. कृपया सावधगिरीसह पुढे जा.</translation>
-<translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> ("<ph name="EXTENSION_ID" />" विस्तार ID) या प्रकारच्या सत्रामध्ये अनुमत नाही.</translation>
+<translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> ("<ph name="EXTENSION_ID" />" विस्तार आयडी) या प्रकारच्या सत्रामध्ये अनुमत नाही.</translation>
 <translation id="1416836038590872660">EAP-MD5</translation>
 <translation id="14171126816530869"><ph name="ISSUER" /> द्वारे <ph name="LOCALITY" /> स्थित <ph name="ORGANIZATION" /> ची ओळख सत्यापित केली गेली आहे.</translation>
 <translation id="1420684932347524586">अरेरे! यादृच्छिक RSA खासगी की व्युत्पन्न करण्यात अयशस्वी.</translation>
@@ -486,7 +486,6 @@
 <translation id="1594234040488055839">या खात्यासह स्वयंचलितपणे Google Sites वर साइन इन करण्याची ऑफर</translation>
 <translation id="1596174774107741586">Google Payments सॅन्डबॉक्स सर्व्हर वापरा</translation>
 <translation id="1598233202702788831">आपल्‍या प्रशासकाने अद्यतने अक्षम केली आहेत.</translation>
-<translation id="1598604884989842103">चाचणीसाठी TouchView अधिकतम UI सक्षम करा</translation>
 <translation id="1600857548979126453">पृष्‍ठ ‍डीबगर बॅकएंडवर प्रवेश करा</translation>
 <translation id="1601560923496285236">लागू करा</translation>
 <translation id="1603914832182249871">(गुप्त)</translation>
@@ -580,7 +579,7 @@
 <translation id="1707463636381878959">अन्य वापरकर्त्यांसह हा नेटवर्क सामायिक करा</translation>
 <translation id="1708199901407471282">नवीन टॅब पृष्‍ठामधून सुचविलेले वेबपृष्ठ उघडताना, सूचनेसाठी टॅब आधीपासून उघडा असल्‍यास, नवीन टॅबमध्‍ये सूचना लोड करण्‍याऐवजी त्यावर स्विच करा.</translation>
 <translation id="1708338024780164500">(निष्क्रिय)</translation>
-<translation id="1708713382908678956"><ph name="NAME_PH" /> (ID: <ph name="ID_PH" />)</translation>
+<translation id="1708713382908678956"><ph name="NAME_PH" /> (आयडी: <ph name="ID_PH" />)</translation>
 <translation id="1709106626015023981"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (मूळ)</translation>
 <translation id="1711973684025117106">झिप करणे अयशस्वी, अनपेक्षित त्रुटी: $1</translation>
 <translation id="1717733954209022288">Google Payments कार्ड जतन करणारा चेकबॉक्स</translation>
@@ -1012,7 +1011,7 @@
 <translation id="2286950485307333924">आपण आता Chrome वर साइन इन केले आहे</translation>
 <translation id="2287590536030307392">सर्व वायरलेस कनेक्शन बंद करा.</translation>
 <translation id="2291643155573394834">पुढील टॅब</translation>
-<translation id="2292848386125228270">कृपया <ph name="PRODUCT_NAME" /> चा सामान्य वापरकर्ता म्हणून प्रारंभ करा. आपल्याला विकासासाठी मूळ म्हणून चालविणे आवश्यक असल्यास, सॅन्डबॉक्स ध्वजांकन--नाही सह पुन्हा चालवा.</translation>
+<translation id="2292848386125228270">कृपया <ph name="PRODUCT_NAME" /> चा सामान्य वापरकर्ता म्हणून प्रारंभ करा. आपल्याला विकासासाठी मूळ म्हणून चालविणे आवश्यक असल्यास, सॅन्डबॉक्स ध्वजांकन नाही -- सह पुन्हा चालवा.</translation>
 <translation id="2294358108254308676">आपण <ph name="PRODUCT_NAME" /> स्‍थापित करू इच्छिता?</translation>
 <translation id="2296019197782308739">EAP पद्धत:</translation>
 <translation id="2301382460326681002">विस्तार मूळ निर्देशिका अवैध आहे.</translation>
@@ -1124,7 +1123,7 @@
 <translation id="2453860139492968684">समाप्त</translation>
 <translation id="2454247629720664989">कीवर्ड</translation>
 <translation id="2457246892030921239"><ph name="APP_NAME" /> <ph name="VOLUME_NAME" /> वरून कॉपी करू इच्छित आहे.</translation>
-<translation id="2462724976360937186">प्रमाणन अधिकृतता की ID</translation>
+<translation id="2462724976360937186">प्रमाणन अधिकृतता की आयडी</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> जोडले</translation>
 <translation id="246335896104539386">बुकमार्क आयात करा</translation>
 <translation id="2464089476039395325">HTTP प्रॉक्सी</translation>
@@ -1501,7 +1500,7 @@
 <translation id="289426338439836048">इतर मोबाइल नेटवर्क...</translation>
 <translation id="2894745200702272315">हार्डवेअर अवलंबित्व आहे अशी 'Ok Google' हॉटवर्ड शोध वैशिष्ट्यांची प्रायोगिक आवृत्ती सक्षम करते.</translation>
 <translation id="289644616180464099">सिम कार्ड लॉक केले आहे</translation>
-<translation id="289695669188700754">की ID: <ph name="KEY_ID" /></translation>
+<translation id="289695669188700754">की आयडी: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">आपली खात्री आहे की आपण <ph name="TAB_COUNT" /> टॅब उघडू इच्छिता?</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ला या प्रिंटरसह संप्रेषण करणे शक्य झाले नाही. प्रिंटर प्लग इन केले आहे हे सुनिश्चित करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="2902734494705624966">यूएस विस्तारित</translation>
@@ -1564,7 +1563,7 @@
 <translation id="2966459079597787514">स्वीडिश कीबोर्ड</translation>
 <translation id="2966598748518102999">Google ला "Ok Google" आणि त्याच्या काही सेकंदांपूर्वीचा ध्वनी पाठवून व्हॉइस शोधात सुधारणा करा.</translation>
 <translation id="2967544384642772068">नष्ट करा</translation>
-<translation id="2971033837577180453">&lt;span&gt;ID:&lt;/span&gt;<ph name="EXTENSION_ID" /></translation>
+<translation id="2971033837577180453">&lt;span&gt;आयडी:&lt;/span&gt;<ph name="EXTENSION_ID" /></translation>
 <translation id="2971213274238188218">चकाकी कमी करा</translation>
 <translation id="2971422413423640756">मीडिया url सह पृष्ठ उघडताना डाउनलोड बटण.</translation>
 <translation id="2972557485845626008">फर्मवेयर</translation>
@@ -1604,7 +1603,7 @@
 <translation id="3016641847947582299">घटक अद्यतनित केला</translation>
 <translation id="3016780570757425217">आपले स्थान जाणून घ्या</translation>
 <translation id="3018346972744622514">अन्य मोबाइल नेटवर्क जोडा</translation>
-<translation id="302014277942214887">अनुप्रयोग id किंवा वेबस्टोअर URL प्रविष्ट करा.</translation>
+<translation id="302014277942214887">अनुप्रयोग आयडी किंवा वेबस्टोअर URL प्रविष्ट करा.</translation>
 <translation id="3020990233660977256">अनुक्रमांक: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021678814754966447">फ्रेम स्त्रोत &amp;पहा</translation>
 <translation id="3024374909719388945">24-तासांचे घड्याळ वापरा</translation>
@@ -1755,7 +1754,6 @@
 <translation id="3206175707080061730">"$1" नावाची फाइल आधीपासून विद्यमान आहे. आपण ती बदलु इच्छिता?</translation>
 <translation id="320825648481311438">सक्षम असताना, ब्राउझर Google खात्यांचे साइन इन आणि साइन आउट व्यवस्थापित करतो.</translation>
 <translation id="3208703785962634733">पुष्टी न झालेले</translation>
-<translation id="3209459032754159027">स्वयं-भरण ड्रॉपडाउन मधील क्रेडिट कार्ड साइन इन प्रोमो दर्शविणे सक्षम करा.</translation>
 <translation id="3211904643589960506">वास्तविक वेब ऑब्जेक्टवरून URL साठी स्कॅन करणे सक्षम करा.</translation>
 <translation id="3216508313927987948">हे करण्‍यासाठी, आपल्‍याला आपल्या <ph name="DEVICE_TYPE" /> ला खालील चरणामध्‍ये प्रशिक्षित करण्‍याची आवश्‍यकता आहे.</translation>
 <translation id="3220586366024592812">कनेक्टर प्रक्रिया <ph name="CLOUD_PRINT_NAME" /> क्रॅश झाली. रीस्टार्ट करायचे?</translation>
@@ -2232,7 +2230,7 @@
 <translation id="3802282970260083766">डिव्हाइस सेटिंग्ज</translation>
 <translation id="3803991353670408298">कृपया ही दूर करण्यापूर्वी दुसरी इनपुट पद्धत जोडा.</translation>
 <translation id="380408572480438692">कार्यप्रदर्शन डेटाचे संकलन सक्षम केल्याने वेळोवेळी सिस्टीम सुधारण्यात Google ला मदत होईल. आपण एक अभिप्राय अहवाल दाखल करेपर्यंत (Alt-Shift-I) आणि कार्यप्रदर्शन डेटा समाविष्ट करेपर्यंत कोणताही डेटा पाठविला जात नाही. आपण संकलन अक्षम करण्यासाठी या स्क्रीनवर कधीही परत येऊ शकता.</translation>
-<translation id="3807249107536149332"><ph name="EXTENSION_NAME" /> लॉगिन स्क्रीनवर (विस्तार ID "<ph name="EXTENSION_ID" />") ची अनुमती नाही.</translation>
+<translation id="3807249107536149332"><ph name="EXTENSION_NAME" /> लॉगिन स्क्रीनवर (विस्तार आयडी "<ph name="EXTENSION_ID" />") ची अनुमती नाही.</translation>
 <translation id="3807747707162121253">&amp;रद्द करा</translation>
 <translation id="3809280248639369696">चंद्रकिरण</translation>
 <translation id="3810973564298564668">व्यवस्थापित करा</translation>
@@ -3260,7 +3258,7 @@
 <translation id="5232178406098309195">आपण "Ok Google" किंवा मायक्रोफोन चिन्हास स्पर्श करणे यासारखे ऑडिओ सक्रियकरण आदेश वापरता तेव्‍हा, आपला खाजगी व्हॉइस आणि ऑडिओ क्रियाकलाप काही व्हॉइस आणि इतर ऑडिओ आपल्‍या खात्यामध्‍ये संचयित करतो. खालील उच्चारांचे/ऑडिओचे तसेच काही सेकंदांपूर्वीचे रेकॉर्डिंग संचयित केले जाईल.</translation>
 <translation id="523299859570409035">सूचना अपवाद</translation>
 <translation id="5233019165164992427">NaCl डीबग पोर्ट</translation>
-<translation id="5233231016133573565">प्रक्रिया ID</translation>
+<translation id="5233231016133573565">प्रक्रिया आयडी</translation>
 <translation id="5233638681132016545">नवीन टॅब</translation>
 <translation id="5233736638227740678">&amp;पेस्ट करा</translation>
 <translation id="5234764350956374838">डिसमिस करा</translation>
@@ -3809,7 +3807,7 @@
 <translation id="5941907479813014493">इनपुट पद्धतींमध्ये स्विच करण्यासाठी Ctrl+Shift+Space.</translation>
 <translation id="5942207977017515242">https://support.google.com/chrome/?hl=<ph name="GRITLANGCODE_1" />&amp;p=settings_sign_in</translation>
 <translation id="594301743853606029">हे सेटिंग बदलल्याने सर्व सामायिक केलेले नेटवर्क प्रभावित होतील.</translation>
-<translation id="5946591249682680882">अहवाल ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation>
+<translation id="5946591249682680882">अहवाल आयडी <ph name="WEBRTC_LOG_REPORT_ID" /></translation>
 <translation id="5948205789991352045">उघडू नका</translation>
 <translation id="5948544841277865110">खाजगी नेटवर्क जोडा</translation>
 <translation id="5951823343679007761">बॅटरी नाही</translation>
@@ -4341,12 +4339,12 @@
 <translation id="6659594942844771486">टॅब</translation>
 <translation id="6660768694571958712">Pointer Events API साठी प्रायोगिक समर्थन सक्षम करेल. हे वेब विकासकाद्वारे फक्त चाचणी करण्याच्या हेतूसाठी आहे, यामुळे काही वेबसाइट योग्यरित्या कार्य करणार नाहीत.</translation>
 <translation id="6663792236418322902">आपण निवडलेल्या संकेतशब्दाला या फाइलमध्ये नंतर पुनर्संचयित करणे आवश्यक आहे. कृपया एखाद्या सुरक्षित स्थानावर त्याचे रेकॉर्ड ठेवा.</translation>
-<translation id="6664237456442406323">दुर्दैवाने, आपला संगणक एका विकृत हार्डवेअर ID सह कॉन्फिगर केला आहे. हे नवीनतम सुरक्षितता निराकरणे अद्यतनित करण्यापासून Chrome OS ला प्रतिबंध करते आणि आपल्या संगणकावर <ph name="BEGIN_BOLD" />दुर्भावनापूर्ण आक्रमणांमुळे सहज परिणाम होऊ शकतो<ph name="END_BOLD" />.</translation>
+<translation id="6664237456442406323">दुर्दैवाने, आपला संगणक एका विकृत हार्डवेअर आयडी सह कॉन्फिगर केला आहे. हे नवीनतम सुरक्षितता निराकरणे अद्यतनित करण्यापासून Chrome OS ला प्रतिबंध करते आणि आपल्या संगणकावर <ph name="BEGIN_BOLD" />दुर्भावनापूर्ण आक्रमणांमुळे सहज परिणाम होऊ शकतो<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">आपले प्रोफाईल उघडताना काहीतरी चूक झाली. कृपया साइन आउट करा नंतर पुन्हा साइन इन करा.</translation>
 <translation id="6666647326143344290">आपल्या Google खात्यासह</translation>
 <translation id="667517062706956822">Google ने हे पृष्ठ <ph name="SOURCE_LANGUAGE" /> मधून <ph name="TARGET_LANGUAGE" /> मध्ये भाषांतरित करावे असे आपण इच्छिता?</translation>
 <translation id="6675665718701918026">निर्देशित करणारे डिव्हाइस कनेक्‍ट केले</translation>
-<translation id="6677037229676347494">अपेक्षित ID "<ph name="EXPECTED_ID" />",परंतु ID "<ph name="NEW_ID" />" होता.</translation>
+<translation id="6677037229676347494">अपेक्षित आयडी "<ph name="EXPECTED_ID" />",परंतु आयडी "<ph name="NEW_ID" />" होता.</translation>
 <translation id="6678717876183468697">क्वेरी URL</translation>
 <translation id="6680028776254050810">वापरकर्ते स्‍वीच करा</translation>
 <translation id="6681668084120808868">फोटो घ्या</translation>
@@ -4560,7 +4558,7 @@
 <translation id="6983783921975806247">नोंदणीकृत OID</translation>
 <translation id="6983991971286645866">सर्व संपादने $1 वर जतन केली जातील.</translation>
 <translation id="6985235333261347343">Microsoft Key Recovery Agent</translation>
-<translation id="6985276906761169321">ID:</translation>
+<translation id="6985276906761169321">आयडी:</translation>
 <translation id="6985607387932385770">प्रिंटर</translation>
 <translation id="6990081529015358884">आपली जागा समाप्त झाली आहे</translation>
 <translation id="6990778048354947307">गडद थीम</translation>
@@ -4613,7 +4611,6 @@
 <translation id="7042418530779813870">पे&amp;स्ट करा आणि शोधा</translation>
 <translation id="7045480833981818310">दस्तऐवज, पत्रके आणि स्लाइड करिता Office संपादन</translation>
 <translation id="7047998246166230966">पॉइंटर</translation>
-<translation id="7048141481140415714">TouchView अधिकतम मोड टॉगल करण्यासाठी Ctrl+Alt+Shift+8 सक्षम करा.</translation>
 <translation id="7049293980323620022">फाईल ठेवायची?</translation>
 <translation id="7051943809462976355">माउसचा शोध घेत आहे...</translation>
 <translation id="7052237160939977163">कार्यप्रदर्शन ट्रेस डेटा पाठवा</translation>
@@ -5123,7 +5120,7 @@
 <translation id="7767646430896201896">पर्याय:</translation>
 <translation id="7768784765476638775">बोलण्यासाठी-निवडा</translation>
 <translation id="7769353642898261262">फोन सुरक्षित कसा करावा</translation>
-<translation id="7769672763586021400">मॉडेल ID</translation>
+<translation id="7769672763586021400">मॉडेल आयडी</translation>
 <translation id="7771452384635174008">लेआउट</translation>
 <translation id="7772032839648071052">सांकेतिक वाक्यांशाची पुष्टी करा</translation>
 <translation id="7772127298218883077"><ph name="PRODUCT_NAME" /> बद्दल</translation>
@@ -5174,7 +5171,7 @@
 <translation id="7831493768366098287">Google मुद्रण</translation>
 <translation id="7831754656372780761"><ph name="TAB_TITLE" /> <ph name="EMOJI_MUTING" /></translation>
 <translation id="7839051173341654115">पहा/बॅकअप घ्‍या मीडिया</translation>
-<translation id="7839192898639727867">प्रमाणपत्र विषय की ID</translation>
+<translation id="7839192898639727867">प्रमाणपत्र विषय की आयडी</translation>
 <translation id="7839580021124293374">3</translation>
 <translation id="7839804798877833423">या फायली प्राप्त करताना अंदाजे <ph name="FILE_SIZE" /> मोबाइल डेटा वापरला जाईल.</translation>
 <translation id="7839963980801867006">भाषा मेनूमध्ये कोणत्या विस्तार IMEs उपलब्ध होतील ते निवडा.</translation>
@@ -5283,7 +5280,7 @@
 <translation id="7977551819349545646">Chromebox अद्यतनित करत आहे...</translation>
 <translation id="7978412674231730200">खाजगी की</translation>
 <translation id="7979036127916589816">समक्रमण त्रुटी</translation>
-<translation id="7980084013673500153">मालमत्ता ID: <ph name="ASSET_ID" /></translation>
+<translation id="7980084013673500153">मालमत्ता आयडी: <ph name="ASSET_ID" /></translation>
 <translation id="7982083145464587921">कृपया या त्रुटीचे निराकरण करण्यासाठी आपले डिव्हाइस रीस्टार्ट करा.</translation>
 <translation id="7982283708762922719">उंची</translation>
 <translation id="7982789257301363584">नेटवर्क</translation>
@@ -5779,7 +5776,6 @@
 <translation id="8632275030377321303">वापरकर्त्याद्वारे प्रॉक्सी सुधारित केली जाऊ शकत नाही.</translation>
 <translation id="8636038761987659075">सर्व साइट आणि साइट तपशीलांसह साइट सेटिंग्ज</translation>
 <translation id="8637688295594795546">सिस्टम अद्यतन उपलब्ध. डाउनलोड करण्याची तयारी करत आहे…</translation>
-<translation id="8638602948366220068">स्वयं-भरण क्रेडिट कार्ड साइन इन प्रोमो सक्षम करा</translation>
 <translation id="8639504893694748827">शून्य-प्रत रास्टरायझर</translation>
 <translation id="8639963783467694461">स्वयंभरण सेटिंग्ज</translation>
 <translation id="8642171459927087831">प्रवेश टोकन</translation>
@@ -6032,7 +6028,7 @@
 <translation id="8946284507644756416">आपल्या Android फोनसह आपले <ph name="DEVICE_TYPE" /> अनलॉक केले जाऊ शकते.</translation>
 <translation id="8946359700442089734">या <ph name="IDS_SHORT_PRODUCT_NAME" /> डिव्हाइसवर डीबगिंग वैशिष्ट्ये पूर्णपणे सक्षम केलेली नव्हती.</translation>
 <translation id="8946784827990177241">WebUSB समर्थन सक्षम करा.</translation>
-<translation id="89515141420106838">प्रिंटर ड्राइव्हरसाठी Chrome वेब स्टोअर गॅलरी अॅप सक्षम करते. अॅप विशिष्ट USB ID सह एका USB प्रिंटरवर मुद्रणास समर्थन देणार्‍या विस्तारांसाठी Chrome वेब स्टोअर शोधते.</translation>
+<translation id="89515141420106838">प्रिंटर ड्राइव्हरसाठी Chrome वेब स्टोअर गॅलरी अॅप सक्षम करते. अॅप विशिष्ट USB आयडी सह एका USB प्रिंटरवर मुद्रणास समर्थन देणार्‍या विस्तारांसाठी Chrome वेब स्टोअर शोधते.</translation>
 <translation id="895347679606913382">प्रारंभ करीत आहे...</translation>
 <translation id="8954952943849489823">हलविणे अयशस्वी अनपेक्षित त्रुटी: $1</translation>
 <translation id="895586998699996576">$1 प्रतिमा</translation>
@@ -6215,7 +6211,6 @@
 <translation id="9181716872983600413">युनिकोड</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> वरून <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">फ्लिंग दरम्यान स्पर्श करून प्रारंभ करणारे आणि प्रथम स्पर्श करून हलवणारे प्रति स्क्रोल इव्हेंट ऐकणार्‍यांना निष्क्रिय म्हणून हाताळण्यासाठी सक्ती करते.</translation>
-<translation id="9184473426683023988">डिव्हाइसमध्ये आयात करा आणि प्रतिबद्ध करा</translation>
 <translation id="9186729806195986201">पूर्वी स्‍थापित केलेल्या <ph name="IDS_SHORT_PRODUCT_NAME" /> च्या आवृत्तीवर परत देखील या.</translation>
 <translation id="9187651461283037651">Chrome VR सक्षम करा.</translation>
 <translation id="9188441292293901223">कृपया हा <ph name="DEVICE_TYPE" /> अनलॉक करण्यासाठी Android च्या नवीनतम आवृत्तीवर आपला फोन अद्यतनित करा.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 7489475..e4a7d32c 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Tawaran untuk melog masuk ke tapak Google secara automatik dengan akaun ini</translation>
 <translation id="1596174774107741586">Gunakan pelayan kotak pasir Google Payments</translation>
 <translation id="1598233202702788831">Kemas kini dilumpuhkan oleh pentadbir anda</translation>
-<translation id="1598604884989842103">Dayakan Touchview memaksimumkan UI untuk ujian</translation>
 <translation id="1600857548979126453">Akses bahagian belakang penyahpepijat halaman</translation>
 <translation id="1601560923496285236">Gunakan</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Fail bernama "$1" sudah wujud. Adakah anda mahu menggantikannya?</translation>
 <translation id="320825648481311438">Apabila didayakan, penyemak imbas menguruskan mendaftar masuk dan keluar dari akaun Google.</translation>
 <translation id="3208703785962634733">Tidak disahkan</translation>
-<translation id="3209459032754159027">Dayakan paparan promosi log masuk kad kredit dalam menu lungsur Autolengkap.</translation>
 <translation id="3211904643589960506">Dayakan pengimbasan untuk URL daripada objek Web Fizikal.</translation>
 <translation id="3216508313927987948">Untuk merealisasikannya, anda perlu melatih <ph name="DEVICE_TYPE" /> anda dalam langkah berikut.</translation>
 <translation id="3220586366024592812">Proses penyambung <ph name="CLOUD_PRINT_NAME" /> telah mengalami nahas. Mulakan semula?</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">Ta&amp;mpal dan cari</translation>
 <translation id="7045480833981818310">Pengeditan Fail Office untuk Dokumen, Helaian &amp; Slaid</translation>
 <translation id="7047998246166230966">Penunjuk</translation>
-<translation id="7048141481140415714">Dayakan Ctrl+Alt+Shift+8 untuk menogol mod memaksimumkan TouchView.</translation>
 <translation id="7049293980323620022">Simpan fail?</translation>
 <translation id="7051943809462976355">Mencari tetikus...</translation>
 <translation id="7052237160939977163">Hantar data surih prestasi</translation>
@@ -5791,7 +5788,6 @@
 <translation id="8632275030377321303">Proksi tidak boleh diubah suai oleh pengguna.</translation>
 <translation id="8636038761987659075">Tetapan tapak dengan Semua tapak dan Butiran tapak</translation>
 <translation id="8637688295594795546">Kemas kini sistem tersedia. Bersedia untuk  muat turun…</translation>
-<translation id="8638602948366220068">Dayakan Promosi Log Masuk Butiran Kad Kredit Autolengkap</translation>
 <translation id="8639504893694748827">Rasterizer salinan sifar</translation>
 <translation id="8639963783467694461">Tetapan auto isi</translation>
 <translation id="8642171459927087831">Token Akses</translation>
@@ -6226,7 +6222,6 @@
 <translation id="9181716872983600413">Unikod</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> daripada <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Memaksa sentuhan mula dan sentuhan gerak pertama bagi setiap tindakan tatal pendengar acara semasa menguis untuk dianggap sebagai pasif.</translation>
-<translation id="9184473426683023988">Import dan Ikat kepada Peranti</translation>
 <translation id="9186729806195986201">Kembali kepada versi <ph name="IDS_SHORT_PRODUCT_NAME" /> yang dipasang sebelum ini juga.</translation>
 <translation id="9187651461283037651">Dayakan VR Chrome.</translation>
 <translation id="9188441292293901223">Sila kemas kini telefon anda kepada versi Android yang lebih baharu untuk membuka kunci <ph name="DEVICE_TYPE" /> ini.</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 4fdfc98..2472441 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Aanbieden om automatisch op Google-sites in te loggen met dit account</translation>
 <translation id="1596174774107741586">Sandbox-servers van Google Payments gebruiken</translation>
 <translation id="1598233202702788831">Updates zijn uitgeschakeld door je beheerder.</translation>
-<translation id="1598604884989842103">UI voor het maximaliseren van TouchView inschakelen voor testen</translation>
 <translation id="1600857548979126453">Back-end voor foutopsporing van pagina openen</translation>
 <translation id="1601560923496285236">Toepassen</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">Er bestaat al een bestand met de naam '$1'. Wil je dit bestand vervangen?</translation>
 <translation id="320825648481311438">Indien ingeschakeld, beheert de browser het in- en uitloggen op Google-accounts.</translation>
 <translation id="3208703785962634733">Niet bevestigd</translation>
-<translation id="3209459032754159027">Optie voor inloggen met creditcard weergeven in dropdownmenu 'Automatisch aanvullen'.</translation>
 <translation id="3211904643589960506">Zoeken naar URL's van fysieke web-objecten inschakelen.</translation>
 <translation id="3216508313927987948">Hiervoor moet je je <ph name="DEVICE_TYPE" /> trainen in de volgende stap.</translation>
 <translation id="3220586366024592812">Het proces van de connector voor <ph name="CLOUD_PRINT_NAME" /> is vastgelopen. Wil je opnieuw starten?</translation>
@@ -2157,7 +2155,7 @@
 <translation id="3704162925118123524">Het is mogelijk dat je de inlogpagina moet bezoeken van het netwerk dat je gebruikt.</translation>
 <translation id="3704331259350077894">Activiteit gestaakt</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Laden...</translation>
+<translation id="370665806235115550">Bezig met laden...</translation>
 <translation id="3706919628594312718">Muisinstellingen</translation>
 <translation id="3707020109030358290">Geen certificeringsinstantie.</translation>
 <translation id="3709244229496787112">De browser is afgesloten voordat het downloaden is voltooid.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">&amp;Plakken en zoeken</translation>
 <translation id="7045480833981818310">Office-bewerkingen voor Documenten, Spreadsheets en Presentaties</translation>
 <translation id="7047998246166230966">Pijltje</translation>
-<translation id="7048141481140415714">Ctrl+Alt+Shift+8 inschakelen om de modus voor het maximaliseren van TouchView in of uit te schakelen.</translation>
 <translation id="7049293980323620022">Bestand behouden?</translation>
 <translation id="7051943809462976355">Muis zoeken...</translation>
 <translation id="7052237160939977163">Gegevens over het bijhouden van prestaties verzenden</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">De proxy kan niet worden aangepast door de gebruiker.</translation>
 <translation id="8636038761987659075">Site-instelingen met 'Alle sites' en 'Sitegegevens'</translation>
 <translation id="8637688295594795546">Systeemupdate beschikbaar. Download voorbereiden...</translation>
-<translation id="8638602948366220068">Aanbieding voor inloggen met creditcard in 'Automatisch aanvullen' inschakelen</translation>
 <translation id="8639504893694748827">In raster plaatsen van nulexemplaar</translation>
 <translation id="8639963783467694461">Instellingen voor Automatisch aanvullen</translation>
 <translation id="8642171459927087831">Toegangstoken</translation>
@@ -6226,7 +6222,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> van <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Hiermee wordt afgedwongen dat touchstart- en first touchmove-per-scroll-event-listeners als passief worden behandeld tijdens zwaaien.</translation>
-<translation id="9184473426683023988">Importeren en aan apparaat koppelen</translation>
 <translation id="9186729806195986201">Gebruik de vorige geïnstalleerde versie van <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Chrome VR inschakelen.</translation>
 <translation id="9188441292293901223">Werk je telefoon bij naar een nieuwere versie van Android om dit <ph name="DEVICE_TYPE" /> te ontgrendelen.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index e0beadc..ef6bbae17 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -484,7 +484,6 @@
 <translation id="1594234040488055839">Tilby automatisk pålogging til Google-nettsteder med denne kontoen</translation>
 <translation id="1596174774107741586">Bruk testmiljøtjenerne til Google Payments</translation>
 <translation id="1598233202702788831">Administratoren din har slått av oppdateringer.</translation>
-<translation id="1598604884989842103">Aktiver TouchView-maksimeringsgrensesnittet for testing</translation>
 <translation id="1600857548979126453">få tilgang til bakdata for sidefeilsøkingsprogrammet</translation>
 <translation id="1601560923496285236">Bruk</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1756,7 +1755,6 @@
 <translation id="3206175707080061730">En fil med navnet $1 finnes allerede. Vil du erstatte den?</translation>
 <translation id="320825648481311438">Når funksjonen er aktivert, kan nettleseren logge av og på Google-kontoer.</translation>
 <translation id="3208703785962634733">Ikke bekreftet</translation>
-<translation id="3209459032754159027">Slå på visning av kampanjen for kredittkortpålogging i autofyll-nedtrekksmenyen.</translation>
 <translation id="3211904643589960506">Slå på søk etter nettadresser fra objekter på det fysiske nettet.</translation>
 <translation id="3216508313927987948">For å få til dette må du lære opp din <ph name="DEVICE_TYPE" /> på neste trinn.</translation>
 <translation id="3220586366024592812">Programstopp for kontaktprosessen for <ph name="CLOUD_PRINT_NAME" />. Vil du starte på nytt?</translation>
@@ -2151,7 +2149,7 @@
 <translation id="3704162925118123524">Det kan hende at det er et krav for nettverket du bruker, at du besøker påloggingssiden for nettverket.</translation>
 <translation id="3704331259350077894">Handlingsstopp</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Laster inn...</translation>
+<translation id="370665806235115550">Laster inn ...</translation>
 <translation id="3706919628594312718">Innstillinger for mus</translation>
 <translation id="3707020109030358290">Ikke en sertifiseringsinstans.</translation>
 <translation id="3709244229496787112">Nettleseren ble lukket før nedlastingen var ferdig.</translation>
@@ -4608,7 +4606,6 @@
 <translation id="7042418530779813870">Lim inn og &amp;søk</translation>
 <translation id="7045480833981818310">Office-redigering for Dokumenter, Regneark og Presentasjoner</translation>
 <translation id="7047998246166230966">Peker</translation>
-<translation id="7048141481140415714">Aktiver Ctrl+Alt+Shift+8 for å slå TouchView-maksimeringsmodusen av eller på.</translation>
 <translation id="7049293980323620022">Vil du beholde filen?</translation>
 <translation id="7051943809462976355">Søker etter musen …</translation>
 <translation id="7052237160939977163">Send ytelsessporingsdata</translation>
@@ -5768,7 +5765,6 @@
 <translation id="8632275030377321303">Mellomtjenerinnstillingene kan ikke endres av brukeren.</translation>
 <translation id="8636038761987659075">Nettstedsinnstillinger med Alle nettsteder og Nettstedsdetaljer</translation>
 <translation id="8637688295594795546">Systemoppdatering er tilgjengelig. Forbereder nedlasting ...</translation>
-<translation id="8638602948366220068">Slå på kampanjen for autofyll av kredittkortpålogging</translation>
 <translation id="8639504893694748827">Rasterisering med null kopier</translation>
 <translation id="8639963783467694461">Innstillinger for autofyll</translation>
 <translation id="8642171459927087831">Tilgangstoken</translation>
@@ -6204,7 +6200,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> fra <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Tvinger aktivitetslytterne for touchstart og touchmove for rulling ved «fling» (raskt sveip) til å bli behandlet som passive.</translation>
-<translation id="9184473426683023988">Importér og bind til enheten</translation>
 <translation id="9186729806195986201">Gå tilbake til den forrige installerte versjonen av <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Slå på Chrome VR.</translation>
 <translation id="9188441292293901223">Du må oppdatere telefonen til en nyere versjon av Android for å låse opp <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 74730aa..d93bf0bc 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Zaoferuj automatyczne logowanie do witryn Google za pomocą tego konta</translation>
 <translation id="1596174774107741586">Użyj serwerów piaskownicy Google Payments</translation>
 <translation id="1598233202702788831">Aktualizacje zostały wyłączone przez administratora.</translation>
-<translation id="1598604884989842103">Włącz interfejs maksymalizacji TouchView do testowania</translation>
 <translation id="1600857548979126453">Uzyskiwać dostęp do programu debugera stron</translation>
 <translation id="1601560923496285236">Zastosuj</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">Jesteś teraz zalogowany w Chrome</translation>
 <translation id="2287590536030307392">Wyłącz wszystkie połączenia bezprzewodowe.</translation>
 <translation id="2291643155573394834">Następna karta</translation>
-<translation id="2292848386125228270">Uruchom <ph name="PRODUCT_NAME" /> jako normalny użytkownik. Jeśli jesteś programistą i chcesz skorzystać z konta użytkownika root, uruchom program jeszcze raz z flagą --no-sandbox.</translation>
+<translation id="2292848386125228270">Uruchom <ph name="PRODUCT_NAME" /> jako normalny użytkownik. Jeśli jesteś programistą i chcesz skorzystać z konta roota, uruchom program jeszcze raz z flagą --no-sandbox.</translation>
 <translation id="2294358108254308676">Czy chcesz zainstalować aplikację <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2296019197782308739">Metoda EAP:</translation>
 <translation id="2301382460326681002">Główny katalog rozszerzenia jest nieprawidłowy.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Plik o nazwie „$1” już istnieje. Czy chcesz go zastąpić?</translation>
 <translation id="320825648481311438">Po włączeniu tej opcji przeglądarka zarządza logowaniem się na konta Google i wylogowywaniem się z nich.</translation>
 <translation id="3208703785962634733">Niepotwierdzony</translation>
-<translation id="3209459032754159027">Pokazuj  w menu Autouzupełniania opcję logowania się w Chrome przy wypełnianiu danych karty kredytowej.</translation>
 <translation id="3211904643589960506">Włącz skanowanie obiektów internetu rzeczy w poszukiwaniu adresów URL.</translation>
 <translation id="3216508313927987948">Aby to było możliwe, musisz przeszkolić swoje urządzenie <ph name="DEVICE_TYPE" /> w następnym kroku.</translation>
 <translation id="3220586366024592812">Proces oprogramowania sprzęgającego usługi <ph name="CLOUD_PRINT_NAME" /> uległ awarii. Uruchomić go ponownie?</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">Wk&amp;lej i wyszukaj</translation>
 <translation id="7045480833981818310">Edytuj pliki Office w Dokumentach, Arkuszach i Prezentacjach</translation>
 <translation id="7047998246166230966">Wskaźnik</translation>
-<translation id="7048141481140415714">Włącz skrót Ctrl+Alt+Shift+8, by przełączyć tryb maksymalizacji TouchView.</translation>
 <translation id="7049293980323620022">Zachować plik?</translation>
 <translation id="7051943809462976355">Szukam myszy...</translation>
 <translation id="7052237160939977163">Wyślij dane śledzenia wydajności</translation>
@@ -5778,7 +5775,6 @@
 <translation id="8632275030377321303">Użytkownik nie może zmodyfikować serwera proxy.</translation>
 <translation id="8636038761987659075">Ustawienia witryny z elementami „Wszystkie witryny” i „Szczegóły witryny”</translation>
 <translation id="8637688295594795546">Jest dostępna aktualizacja systemu. Trwa przygotowanie do pobrania…</translation>
-<translation id="8638602948366220068">Włącz autouzupełnianie danych karty kredytowej</translation>
 <translation id="8639504893694748827">Mechanizm rastrowania bez żadnej kopii</translation>
 <translation id="8639963783467694461">Ustawienia autouzupełniania</translation>
 <translation id="8642171459927087831">Token dostępu</translation>
@@ -6213,7 +6209,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> z <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Wymusza traktowanie detektorów zdarzeń uruchamiania dotknięciem i przewijania przez przesuwanie po pierwszym dotknięciu jako pasywnych podczas przesunięcia.</translation>
-<translation id="9184473426683023988">Zaimportuj i powiąż z urządzeniem</translation>
 <translation id="9186729806195986201">Przywróć też poprzednio zainstalowaną wersję <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Włącz Chrome VR.</translation>
 <translation id="9188441292293901223">Aby odblokować to urządzenie <ph name="DEVICE_TYPE" />, zaktualizuj Androida na telefonie do nowszej wersji.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 025164af..c8e5eb09 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Oferecer a opção de fazer login no Google Sites automaticamente com esta conta</translation>
 <translation id="1596174774107741586">Usar os servidores de sandbox do Google Payments</translation>
 <translation id="1598233202702788831">As atualizações foram desativadas pelo seu administrador.</translation>
-<translation id="1598604884989842103">Ativar interface do usuário da maximização do TouchView para teste</translation>
 <translation id="1600857548979126453">Acessar back-end do depurador de página</translation>
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Modo anônimo)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Um arquivo chamado "$1" já existe. Deseja substituí-lo?</translation>
 <translation id="320825648481311438">Quando ativado, o navegador gerencia o login e a saída das Contas do Google.</translation>
 <translation id="3208703785962634733">Não confirmado</translation>
-<translation id="3209459032754159027">Ativar exibição da promoção de login com o cartão de crédito no menu suspenso de Preenchimento automático.</translation>
 <translation id="3211904643589960506">Ativar a verificação de URLs de objetos da Web física.</translation>
 <translation id="3216508313927987948">Para que isso aconteça, você precisa treinar seu <ph name="DEVICE_TYPE" /> na próxima etapa.</translation>
 <translation id="3220586366024592812">Houve uma falha no processo de conexão de <ph name="CLOUD_PRINT_NAME" />. Deseja reiniciá-lo?</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">&amp;Colar e pesquisar</translation>
 <translation id="7045480833981818310">Editor do Office para Documentos, Planilhas e Apresentações</translation>
 <translation id="7047998246166230966">Ponteiro</translation>
-<translation id="7048141481140415714">Usa Ctrl+Alt+Shift+8 para ativar/desativar o modo de maximização TouchView.</translation>
 <translation id="7049293980323620022">Manter arquivo?</translation>
 <translation id="7051943809462976355">Procurando mouse...</translation>
 <translation id="7052237160939977163">Enviar dados de rastreamento de desempenho</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">O proxy não pode ser modificado pelo usuário.</translation>
 <translation id="8636038761987659075">Configurações do site com "Todos os sites" e "Detalhes do site"</translation>
 <translation id="8637688295594795546">A atualização do sistema está disponível. Preparando para fazer download...</translation>
-<translation id="8638602948366220068">Ativar promoção de login com preenchimento automático de cartão de crédito</translation>
 <translation id="8639504893694748827">Rasterizador de cópia zero</translation>
 <translation id="8639963783467694461">Configurações de preenchimento automático</translation>
 <translation id="8642171459927087831">Token de acesso</translation>
@@ -6224,7 +6220,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Força o touchstart e o primeiro touchmove por listener de eventos de rolagem durante o deslize a serem tratados como passivos.</translation>
-<translation id="9184473426683023988">Importar e vincular ao dispositivo</translation>
 <translation id="9186729806195986201">Retornar também à versão previamente instalada do <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Ativar RV do Chrome.</translation>
 <translation id="9188441292293901223">Atualize o Android do seu smartphone para uma versão mais recente a fim de desbloquear este <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index eb9fee75..57fd3a709 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Propor iniciar sessão automaticamente nos sites do Google com esta conta</translation>
 <translation id="1596174774107741586">Utilizar servidores de isolamento de processos do Google Payments</translation>
 <translation id="1598233202702788831">As atualizações estão desativadas pelo seu administrador.</translation>
-<translation id="1598604884989842103">Ativar TouchView maximizando IU para testes</translation>
 <translation id="1600857548979126453">Aceder ao back-end do depurador da página</translation>
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Navegação anónima)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Já existe um ficheiro "$1". Pretende substituí-lo?</translation>
 <translation id="320825648481311438">Quando ativado, o navegador consegue iniciar e terminar sessão em Contas Google.</translation>
 <translation id="3208703785962634733">Não confirmado</translation>
-<translation id="3209459032754159027">Ativar a apresentação da promoção de início de sessão do cartão de crédito no menu pendente do Preenchimento automático.</translation>
 <translation id="3211904643589960506">Ativar a procura de URLs a partir de objetos da Web física.</translation>
 <translation id="3216508313927987948">Para que tal ocorra, é necessário configurar o <ph name="DEVICE_TYPE" /> no passo seguinte.</translation>
 <translation id="3220586366024592812">O processo do conector <ph name="CLOUD_PRINT_NAME" /> falhou. Reiniciar?</translation>
@@ -2315,7 +2313,7 @@
 <translation id="3899879303189199559">Offline durante mais de um ano</translation>
 <translation id="3899968422636198696"><ph name="ORGNAME" /> <ph name="HOSTNAME" /></translation>
 <translation id="3901991538546252627">A ligar a <ph name="NAME" /></translation>
-<translation id="3902365939851986963">Defina os limites do seu ecrã tátil na visualização</translation>
+<translation id="3902365939851986963">Defina os limites da visualização no seu ecrã tátil</translation>
 <translation id="3902799646152133632">Ignora o frame principal no-store.</translation>
 <translation id="3904196543277238487">Versão TLS máxima ativada.</translation>
 <translation id="3904709815599435085">Ativa a aplicação Imagens de fundo Android como a aplicação de imagens de fundo predefinida no SO Chrome.</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">Colar e pesqui&amp;sar</translation>
 <translation id="7045480833981818310">Edição do Office para Documentos, Folhas de cálculo e Apresentações</translation>
 <translation id="7047998246166230966">Ponteiro</translation>
-<translation id="7048141481140415714">Ative Ctrl+Alt+Shift+8 para alternar para o modo de maximização TouchView.</translation>
 <translation id="7049293980323620022">Pretende manter este ficheiro?</translation>
 <translation id="7051943809462976355">A pesquisar rato...</translation>
 <translation id="7052237160939977163">Enviar dados de rastreio do desempenho</translation>
@@ -5790,7 +5787,6 @@
 <translation id="8632275030377321303">O proxy não pode ser modificado pelo utilizador.</translation>
 <translation id="8636038761987659075">Definições do site com Todos os sites e Detalhes do site</translation>
 <translation id="8637688295594795546">Actualização do sistema disponível. A preparar para transferir…</translation>
-<translation id="8638602948366220068">Ativar promoção de início de sessão do cartão de crédito do Preenchimento automático</translation>
 <translation id="8639504893694748827">Rasterizador de cópia zero</translation>
 <translation id="8639963783467694461">Definições de Preenchimento automático</translation>
 <translation id="8642171459927087831">Chave de Acesso</translation>
@@ -6225,7 +6221,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Força os event listeners de touchstart e do primeiro touchmove durante a movimentação a serem tratados como passivos.</translation>
-<translation id="9184473426683023988">Importar e vincular ao dispositivo</translation>
 <translation id="9186729806195986201">Regressar também à versão anteriormente instalada do <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Ativar RV do Chrome.</translation>
 <translation id="9188441292293901223">Atualize o telemóvel para uma versão mais recente do Android para desbloquear este <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index fc761ac..2d66fd23 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -288,7 +288,7 @@
 <translation id="1377600615067678409">Ignorați deocamdată</translation>
 <translation id="1378613616312864539"><ph name="NAME" /> controlează această setare</translation>
 <translation id="1378727793141957596">Bun venit la Disc Google!</translation>
-<translation id="1383170267963800969">Face lente toate animațiile din IU.</translation>
+<translation id="1383170267963800969">Încetinește toate animațiile din IU.</translation>
 <translation id="1383861834909034572">Se va deschide după finalizare</translation>
 <translation id="1383876407941801731">Caută</translation>
 <translation id="1384211230590313258">Handler de descoperire a serviciului</translation>
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Se oferă automat conectarea la site-urile Google pentru acest cont</translation>
 <translation id="1596174774107741586">Folosește serverele mediului de testare securizat Google Payments</translation>
 <translation id="1598233202702788831">Actualizările sunt dezactivate de administrator.</translation>
-<translation id="1598604884989842103">Activați interfața de utilizare de maximizare TouchView pentru testare</translation>
 <translation id="1600857548979126453">Accesează procesul de fundal al depanatorului de pagină</translation>
 <translation id="1601560923496285236">Aplicați</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Un fișier numit „$1” există deja. Vrei să-l înlocuiești?</translation>
 <translation id="320825648481311438">Dacă este activat, browserul gestionează conectarea și deconectarea de la Conturile Google.</translation>
 <translation id="3208703785962634733">Neconfirmat</translation>
-<translation id="3209459032754159027">Activează afișarea mesajului promoțional de conectare cu cardul de credit în meniul drop-down al completării automate.</translation>
 <translation id="3211904643589960506">Activează scanarea adreselor URL de la obiectele din Webul material.</translation>
 <translation id="3216508313927987948">Pentru acesta, va trebui să configurezi dispozitivul <ph name="DEVICE_TYPE" /> la pasul următor.</translation>
 <translation id="3220586366024592812">Procesul conectorului <ph name="CLOUD_PRINT_NAME" /> s-a blocat. Repornești?</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">In&amp;serează și caută</translation>
 <translation id="7045480833981818310">Office Editing pentru Documente, Foi de calcul și Prezentări</translation>
 <translation id="7047998246166230966">Cursor</translation>
-<translation id="7048141481140415714">Activează combinația Ctrl+Alt+Shift+8 pentru a activa/dezactiva modul de maximizare TouchView.</translation>
 <translation id="7049293980323620022">Păstrezi fișierul?</translation>
 <translation id="7051943809462976355">Se caută mouse-ul...</translation>
 <translation id="7052237160939977163">Trimiteți datele privind urmărirea performanței</translation>
@@ -5787,7 +5784,6 @@
 <translation id="8632275030377321303">Setările de proxy nu pot fi modificate de utilizator.</translation>
 <translation id="8636038761987659075">Setările pentru site-uri cu Toate site-urile și Detaliile site-ului</translation>
 <translation id="8637688295594795546">Este disponibilă o actualizare de sistem. Se pregătește descărcarea...</translation>
-<translation id="8638602948366220068">Activează mesajul promoțional de conectare cu cardul de credit în completarea automată</translation>
 <translation id="8639504893694748827">Rasterizerul copie zero</translation>
 <translation id="8639963783467694461">Setări pentru Completare automată</translation>
 <translation id="8642171459927087831">Indicativ de acces</translation>
@@ -6222,7 +6218,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de la <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Forțează instrumentele de monitorizare a evenimentelor privind pornirea prin atingere și prima mutare prin atingere per derulare în timpul glisării rapide să fie considerate pasive.</translation>
-<translation id="9184473426683023988">Importă și asociază la dispozitiv</translation>
 <translation id="9186729806195986201">Revino la versiunea <ph name="IDS_SHORT_PRODUCT_NAME" /> instalată anterior.</translation>
 <translation id="9187651461283037651">Activează Chrome VR.</translation>
 <translation id="9188441292293901223">Pentru a debloca acest dispozitiv <ph name="DEVICE_TYPE" />, actualizează-ți telefonul la o versiune Android mai nouă.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 76719bb..d5d8791 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -486,7 +486,6 @@
 <translation id="1594234040488055839">Предлагать автоматически входить в службы Google с этим аккаунтом</translation>
 <translation id="1596174774107741586">Использовать тестовую среду для Google Payments</translation>
 <translation id="1598233202702788831">Функция обновления отключена администратором.</translation>
-<translation id="1598604884989842103">Разрешить тестовый режим TouchView для отображения окон в развернутом виде</translation>
 <translation id="1600857548979126453">Доступ к работе отладчика страниц</translation>
 <translation id="1601560923496285236">Применить</translation>
 <translation id="1603914832182249871">(инкогнито)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Файл "$1" уже существует. Заменить его?</translation>
 <translation id="320825648481311438">Если этот флажок установлен, входом и выходом из аккаунтов Google управляет браузер.</translation>
 <translation id="3208703785962634733">Не подтвержден</translation>
-<translation id="3209459032754159027">Показывать возможность ввода данных кредитной карты в меню автозаполнения</translation>
 <translation id="3211904643589960506">Включает поиск URL по объектам Интернета вокруг нас.</translation>
 <translation id="3216508313927987948">Чтобы продолжить, настройте устройство <ph name="DEVICE_TYPE" />, следуя инструкциям.</translation>
 <translation id="3220586366024592812">Процесс коннектора <ph name="CLOUD_PRINT_NAME" /> завершился с ошибкой. Перезапустить?</translation>
@@ -4545,7 +4543,7 @@
 <translation id="695755122858488207">Отключенное положение переключателя</translation>
 <translation id="696203921837389374">Синхронизировать по мобильной сети</translation>
 <translation id="6964390816189577014">Герой</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6965648386495488594">Порт</translation>
 <translation id="6965978654500191972">Устройство</translation>
 <translation id="6969104364835835175">Принудительно использовать Subzero из PNaCl</translation>
@@ -4623,7 +4621,6 @@
 <translation id="7042418530779813870">Вст&amp;авить из буфера и найти</translation>
 <translation id="7045480833981818310">Редактирование файлов Office в Документах, Таблицах и Презентациях</translation>
 <translation id="7047998246166230966">Указатель</translation>
-<translation id="7048141481140415714">Включать и выключать режим TouchView нажатием клавиш Ctrl + Alt + Shift + 8</translation>
 <translation id="7049293980323620022">Сохранить файл?</translation>
 <translation id="7051943809462976355">Поиск мыши…</translation>
 <translation id="7052237160939977163">Отправлять данные отслеживания производительности</translation>
@@ -5791,7 +5788,6 @@
 <translation id="8632275030377321303">Пользователь не может изменять настройки прокси-сервера.</translation>
 <translation id="8636038761987659075">Настройки сайта, все сайты и сведения о сайте</translation>
 <translation id="8637688295594795546">Доступно обновление системы. Подготовка к скачиванию…</translation>
-<translation id="8638602948366220068">Предлагать автозаполнение данных кредитной карты</translation>
 <translation id="8639504893694748827">Растеризация без копирования</translation>
 <translation id="8639963783467694461">Настройки автозаполнения</translation>
 <translation id="8642171459927087831">Токен доступа</translation>
@@ -6226,7 +6222,6 @@
 <translation id="9181716872983600413">Юникод</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> с <ph name="DOWNLOAD_DOMAIN" />, ещё <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Принудительно делает блоки прослушивания событий touchstart и touchmove per scroll пассивными, когда пользователь проводит по экрану.</translation>
-<translation id="9184473426683023988">Импортировать и привязать к устройству</translation>
 <translation id="9186729806195986201">Вернуться к предыдущей версии <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Включить Chrome VR</translation>
 <translation id="9188441292293901223">Чтобы разблокировать <ph name="DEVICE_TYPE" />, установите последнюю версию Android на телефоне.</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 7fca05d..551fcd1 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Ponúkať možnosť automatického prihlásenia na stránky Google pomocou tohto účtu</translation>
 <translation id="1596174774107741586">Použiť servery karantény služby Google Payments</translation>
 <translation id="1598233202702788831">Aktualizácie zakázal váš správca.</translation>
-<translation id="1598604884989842103">Povolí testovanie používateľského rozhrania na maximalizáciu aplikácie TouchView</translation>
 <translation id="1600857548979126453">Pristupovať k ladiacemu nástroju stránok na strane servera</translation>
 <translation id="1601560923496285236">Použiť</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Súbor s názvom $1 už existuje. Chcete ho nahradiť?</translation>
 <translation id="320825648481311438">V prípade povolenia bude prehliadač spravovať prihlasovanie a odhlasovanie z účtov Google.</translation>
 <translation id="3208703785962634733">Nepotvrdené</translation>
-<translation id="3209459032754159027">Aktivovať zobrazovanie možnosti dopĺňania údajov kreditnej karty v rámci rozbaľovacej ponuky Automatického dopĺňania.</translation>
 <translation id="3211904643589960506">Povolenie hľadania webových adries z objektov fyzického webu.</translation>
 <translation id="3216508313927987948">Ak chcete používať túto funkciu, musíte svoje zariadenie <ph name="DEVICE_TYPE" /> natrénovať v nasledujúcom kroku.</translation>
 <translation id="3220586366024592812">Proces konektora <ph name="CLOUD_PRINT_NAME" /> zlyhal. Spustiť znova?</translation>
@@ -1874,7 +1872,7 @@
 <translation id="3341703758641437857">Povoliť prístup k webovým adresám súboru</translation>
 <translation id="3344786168130157628">Názov prístupového bodu:</translation>
 <translation id="3345886924813989455">Nenašiel sa žiadny podporovaný prehliadač</translation>
-<translation id="3346734205185115290">Povoliť prechádzanie s náhlavnou súpravou pre virtuálnu realitu (ak je na tomto zariadení k dispozícii).</translation>
+<translation id="3346734205185115290">Povoliť prechádzanie s náhlavnou súpravou pre VR (ak je na tomto zariadení k dispozícii).</translation>
 <translation id="3347086966102161372">K&amp;opírovať adresu obrázka</translation>
 <translation id="3348038390189153836">Bolo zistené odnímateľné zariadenie</translation>
 <translation id="3348459612390503954">Blahoželáme</translation>
@@ -3879,7 +3877,7 @@
 <translation id="60357267506638014">Česká klávesnica QWERTY</translation>
 <translation id="6039651071822577588">Slovník sieťového vlastníctva je v nesprávnom tvare</translation>
 <translation id="604001903249547235">Záloha v cloude</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="604124094241169006">Automatické</translation>
 <translation id="6042308850641462728">Viac</translation>
 <translation id="6043317578411397101"><ph name="APP_NAME" /> zdieľa kartu Chromu s kartou <ph name="TAB_NAME" />.</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">Vl&amp;ožiť a hľadať</translation>
 <translation id="7045480833981818310">Úpravy súborov balíka Office v Dokumentoch, Tabuľkách a Prezentáciách</translation>
 <translation id="7047998246166230966">Kurzor</translation>
-<translation id="7048141481140415714">Povolí prepínanie režimu maximalizácie aplikácie TouchView pomocou kombinácie klávesov Ctrl+Alt+Shift+D.</translation>
 <translation id="7049293980323620022">Ponechať súbor?</translation>
 <translation id="7051943809462976355">Prebieha hľadanie myši...</translation>
 <translation id="7052237160939977163">Odosielať údaje sledovania výkonnosti</translation>
@@ -5791,7 +5788,6 @@
 <translation id="8632275030377321303">Používateľ nemôže meniť server proxy.</translation>
 <translation id="8636038761987659075">Nastavenia webov so zoznamom všetkých webov a podrobnosťami o weboch</translation>
 <translation id="8637688295594795546">K dispozícii je systémová aktualizácia. Pripravuje sa stiahnutie...</translation>
-<translation id="8638602948366220068">Povoliť možnosť dopĺňania údajov kreditnej karty</translation>
 <translation id="8639504893694748827">Rasterizátor bez kópie</translation>
 <translation id="8639963783467694461">Nastavenia automatického dopĺňania</translation>
 <translation id="8642171459927087831">Prístupový token</translation>
@@ -6226,7 +6222,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117">Prijaté údaje z domény <ph name="DOWNLOAD_DOMAIN" />: <ph name="DOWNLOAD_RECEIVED" />. Zvyšný čas: <ph name="TIME_LEFT" />.</translation>
 <translation id="9184146175870444618">Vynútenie, aby prijímače udalostí spustenia klepnutím a pohybu klepnutím pri posunutí počas rýchleho pohybu prstom boli spracované ako pasívne.</translation>
-<translation id="9184473426683023988">Importovať a spojiť so zariadením</translation>
 <translation id="9186729806195986201">Vrátiť sa späť na predchádzajúcu nainštalovanú verziu produktu <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9187651461283037651">Povolenie prostredia Chrome VR</translation>
 <translation id="9188441292293901223">Ak chcete odomknúť toto zariadenie <ph name="DEVICE_TYPE" />, aktualizujte svoj telefón na novšiu verziu Androidu.</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 6176498..c52d734 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Ponudi samodejno prijavo v Googlova spletna mesta s tem računom</translation>
 <translation id="1596174774107741586">Uporabi strežnike za Google Payments v peskovniku</translation>
 <translation id="1598233202702788831">Skrbnik je onemogočil posodobitve.</translation>
-<translation id="1598604884989842103">Omogočanje uporabniškega vmesnika načina maksimiranja TouchView za preskušanje</translation>
 <translation id="1600857548979126453">Dostopajte do podsistema iskalnika napak na strani</translation>
 <translation id="1601560923496285236">Uporabi</translation>
 <translation id="1603914832182249871">(Način brez beleženja zgodovine)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Datoteka z imenom »$1« že obstaja. Ali jo želite zamenjati?</translation>
 <translation id="320825648481311438">Če je omogočeno, brskalnik upravlja prijave v Google Račune in odjave iz njih.</translation>
 <translation id="3208703785962634733">Nepotrjeno</translation>
-<translation id="3209459032754159027">Omogočanje oglaševalnega besedila za prijavo s kreditno kartico v spustnem oknu samodejnega izpolnjevanja.</translation>
 <translation id="3211904643589960506">Omogočanje iskanja URL-jev pri predmetih Fizičnega spleta.</translation>
 <translation id="3216508313927987948">Če želite to izvesti, morate usposobiti napravo <ph name="DEVICE_TYPE" /> s tem postopkom.</translation>
 <translation id="3220586366024592812">Proces priključka <ph name="CLOUD_PRINT_NAME" /> se je zrušil. Ga želite znova zagnati?</translation>
@@ -2158,7 +2156,7 @@
 <translation id="3704162925118123524">Omrežje, ki ga uporabljate, morda zahteva, da obiščete stran za prijavo.</translation>
 <translation id="3704331259350077894">Prenehanje operacije</translation>
 <translation id="3705722231355495246">–</translation>
-<translation id="370665806235115550">Nalagam ...</translation>
+<translation id="370665806235115550">Nalaganje ...</translation>
 <translation id="3706919628594312718">Nastavitve miške</translation>
 <translation id="3707020109030358290">Ni overitelj potrdil.</translation>
 <translation id="3709244229496787112">Brskalnik se je zaprl pred dokončanjem prenosa.</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">Pri&amp;lepi in išči</translation>
 <translation id="7045480833981818310">Urejanje dokumentov zbirke Office za Google Dokumente, Google Preglednice in Google Predstavitve</translation>
 <translation id="7047998246166230966">Kazalec</translation>
-<translation id="7048141481140415714">Omogoči kombinacijo tipk Ctrl + Alt + Shift + 8 za preklop v način maksimiranja TouchView.</translation>
 <translation id="7049293980323620022">Želite obdržati datoteko?</translation>
 <translation id="7051943809462976355">Iskanje miške ...</translation>
 <translation id="7052237160939977163">Pošlji podatke za sledenje učinkovitosti delovanja</translation>
@@ -5792,7 +5789,6 @@
 <translation id="8632275030377321303">Strežnika proxy ne more spreminjati uporabnik.</translation>
 <translation id="8636038761987659075">Nastavitve spletnih mest z »Vsemi spletnimi mesti« in »Podrobnostmi spletnega mesta«</translation>
 <translation id="8637688295594795546">Na voljo je sistemska posodobitev. Priprava za prenos ...</translation>
-<translation id="8638602948366220068">Omogočanje oglaševalnega besedila za prijavo s kreditno kartico pri samodejnem izpolnjevanju</translation>
 <translation id="8639504893694748827">Rasterizator »zero-copy«</translation>
 <translation id="8639963783467694461">Nastavitve samodejnega izpolnjevanja</translation>
 <translation id="8642171459927087831">Žeton za dostop</translation>
@@ -6228,7 +6224,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> iz domene <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Vsili, da se poslušalniki dogodkov »touchstart« in prvi poslušalniki dogodkov »touchmove« na posamezni pomik med dejanjem »fling« obravnavajo kot pasivni.</translation>
-<translation id="9184473426683023988">Uvozi in poveži z napravo</translation>
 <translation id="9186729806195986201">Tudi povrnitev prej nameščene različice izdelka <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Omogočanje navidezne resničnosti za Chrome.</translation>
 <translation id="9188441292293901223">Posodobite telefon na novejšo različico Androida, če želite odkleniti to napravo <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 34a23548..9f0975b4 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -485,7 +485,6 @@
 <translation id="1594234040488055839">Понуди аутоматско пријављивање на Google сајтове помоћу овог налога</translation>
 <translation id="1596174774107741586">Користи сервере Google Payments-а у заштићеном окружењу</translation>
 <translation id="1598233202702788831">Администратор је онемогућио ажурирања.</translation>
-<translation id="1598604884989842103">Омогући кориснички интерфејс за TouchView увећање ради тестирања</translation>
 <translation id="1600857548979126453">Приступ позадинском механизму програма за отклањање грешака на страници</translation>
 <translation id="1601560923496285236">Примени</translation>
 <translation id="1603914832182249871">(Без архивирања)</translation>
@@ -1758,7 +1757,6 @@
 <translation id="3206175707080061730">Датотека са називом „$1“ већ постоји. Желите ли да је замените?</translation>
 <translation id="320825648481311438">Када је ово омогућено, прегледач управља пријављивањем на Google налоге и одјављивањем са њих.</translation>
 <translation id="3208703785962634733">Непотврђено</translation>
-<translation id="3209459032754159027">Омогућите приказивање промотивног садржаја за пријављивање за кредитну картицу унутар падајућег менија Аутоматско попуњавање.</translation>
 <translation id="3211904643589960506">Омогући скенирање за URL-ове из објеката Интернета око нас.</translation>
 <translation id="3216508313927987948">Да бисте то остварили, мораћете да обучите <ph name="DEVICE_TYPE" /> у следећем кораку.</translation>
 <translation id="3220586366024592812">Процес конектора за <ph name="CLOUD_PRINT_NAME" /> је отказао. Желите ли поново да га покренете?</translation>
@@ -4619,7 +4617,6 @@
 <translation id="7042418530779813870">На&amp;лепи и претражи</translation>
 <translation id="7045480833981818310">Измене у Office-у за Документе, Табеле и Презентације</translation>
 <translation id="7047998246166230966">Показивач</translation>
-<translation id="7048141481140415714">Омогућите пречицу Ctrl+Alt+Shift+8 за укључивање/искључивање TouchView режима увећања.</translation>
 <translation id="7049293980323620022">Желите ли да задржите датотеку?</translation>
 <translation id="7051943809462976355">Тражи се миш...</translation>
 <translation id="7052237160939977163">Шаљи податке о праћењу учинка</translation>
@@ -5783,7 +5780,6 @@
 <translation id="8632275030377321303">Корисник не може да мења прокси.</translation>
 <translation id="8636038761987659075">Подешавања сајтова са опцијама Сви сајтови и Детаљи сајта</translation>
 <translation id="8637688295594795546">Доступно је ажурирање система. Припрема за преузимање...</translation>
-<translation id="8638602948366220068">Омогући промотивни садржај за пријављивање за кредитну картицу у Аутоматском попуњавању</translation>
 <translation id="8639504893694748827">Алатка за растеризацију за нулту копију</translation>
 <translation id="8639963783467694461">Подешавања Аутоматског попуњавања</translation>
 <translation id="8642171459927087831">Ознака приступа</translation>
@@ -6219,7 +6215,6 @@
 <translation id="9181716872983600413">Уникод</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> са <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Принудно бира да обрађивачи догађаја touchstart и first touchmove per scroll током пребацивања буду третирани као пасивни.</translation>
-<translation id="9184473426683023988">Увези и вежи за уређај</translation>
 <translation id="9186729806195986201">Такође врати и на претходно инсталирану верзију производа <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Омогући виртуелну реалност у Chrome-у.</translation>
 <translation id="9188441292293901223">Ажурирајте телефон на новију верзију Android-а да бисте откључали овај <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index ee3a78a5..40a382d 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Erbjud inloggning på Googles webbplatser automatiskt med det här kontot</translation>
 <translation id="1596174774107741586">Använd Google Payments sandlådeservrar</translation>
 <translation id="1598233202702788831">Uppdateringar har inaktiverats av administratören.</translation>
-<translation id="1598604884989842103">Aktivera gränssnittet för maximering av TouchView i testsyfte</translation>
 <translation id="1600857548979126453">Få åtkomst till serverdelen för felsökning av sida</translation>
 <translation id="1601560923496285236">Verkställ</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">En fil med namnet $1 finns redan. Vill du ersätta den?</translation>
 <translation id="320825648481311438">När detta alternativ är markerat hanteras inloggning på och utloggning från Google-konton av webbläsaren.</translation>
 <translation id="3208703785962634733">Obekräftade</translation>
-<translation id="3209459032754159027">Tillåt att erbjudandet om att fylla i kreditkortsuppgifter visas på rullgardinsmenyn Autofyll.</translation>
 <translation id="3211904643589960506">Aktivera sökning efter webbadresser från Physical Web-objekt.</translation>
 <translation id="3216508313927987948">För att kunna göra det måste du träna <ph name="DEVICE_TYPE" /> enligt dessa anvisningar.</translation>
 <translation id="3220586366024592812">Anslutningen till <ph name="CLOUD_PRINT_NAME" /> har kraschat. Vill du starta om?</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">Nätverket du använder kanske kräver att du besöker dess inloggningssida.</translation>
 <translation id="3704331259350077894">Upphörande av verksamhet</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">Laddar...</translation>
+<translation id="370665806235115550">Läser in...</translation>
 <translation id="3706919628594312718">Musinställningar</translation>
 <translation id="3707020109030358290">Inte från certifikatutfärdare.</translation>
 <translation id="3709244229496787112">Webbläsaren stängdes innan nedladdningen var klar.</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">Kl&amp;istra in och sök</translation>
 <translation id="7045480833981818310">Redigera Office-filer i Dokument, Kalkylark och Presentationer</translation>
 <translation id="7047998246166230966">Pekare</translation>
-<translation id="7048141481140415714">Aktivera möjligheten att slå på och av maximeringsläget för TouchView med Ctrl+Alt+Skift+8.</translation>
 <translation id="7049293980323620022">Vill du behålla filen?</translation>
 <translation id="7051943809462976355">Söker efter mus …</translation>
 <translation id="7052237160939977163">Skicka data från resultatspårning</translation>
@@ -5787,7 +5784,6 @@
 <translation id="8632275030377321303">Proxyinställningarna kan inte ändras av användaren.</translation>
 <translation id="8636038761987659075">Webbplatsinställningar med Alla webbplatser och Webbplatsinformation</translation>
 <translation id="8637688295594795546">Systemuppdatering tillgänglig. Förbereder nedladdning...</translation>
-<translation id="8638602948366220068">Aktivera erbjudande om Autofyll för kreditkortsuppgifter</translation>
 <translation id="8639504893694748827">Rastrering utan kopior</translation>
 <translation id="8639963783467694461">Inställningar för Autofyll</translation>
 <translation id="8642171459927087831">Åtkomsttoken</translation>
@@ -6223,7 +6219,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> från <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Tvingar händelselyssnare för touchstart och första touchmove vid rullning att behandlas som passiva vid svep.</translation>
-<translation id="9184473426683023988">Importera och bind till enheten</translation>
 <translation id="9186729806195986201">Återgå också till den tidigare installerade versionen av <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Aktivera Chrome VR.</translation>
 <translation id="9188441292293901223">Uppdatera mobilen till en nyare version av Android om du vill låsa upp denna <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index a30979a..74720a4b 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -145,7 +145,7 @@
 <translation id="1189418886587279221">Washa vipengele vya ufikiaji ili kufanya kifaa chako kiwe rahisi zaidi kutumia.</translation>
 <translation id="1190144681599273207">Kuleta faili hii kutatumia takriban <ph name="FILE_SIZE" /> wa data ya simu.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Fikia faili iliyohifadhiwa kwenye kompyuta yako}other{Fikia faili # zilizohifadhiwa kwenye kompyuta yako}}</translation>
-<translation id="1190596385362128063">Tekeleza</translation>
+<translation id="1190596385362128063">Rekebisha usahihi</translation>
 <translation id="1190855992966397019">Washa Kipengee cha Kufunga AppContainer.</translation>
 <translation id="1195447618553298278">Hitilafu isiyojulikana.</translation>
 <translation id="1196338895211115272">Uhamishaji wa ufunguo binafsi haukufaulu.</translation>
@@ -485,7 +485,6 @@
 <translation id="1594234040488055839">Kubali kuingia katika tovuti za Google kiotomatiki kwa akaunti hii</translation>
 <translation id="1596174774107741586">Tumia seva za sehemu ya majaribio za Google Payments</translation>
 <translation id="1598233202702788831">Sasisho zimezimwa na msimamizi wako.</translation>
-<translation id="1598604884989842103">Washa kiolesura cha kukuza TouchView kwa majaribio</translation>
 <translation id="1600857548979126453">Fikia sehemu ya nyuma ya kitatuzi ukurasa</translation>
 <translation id="1601560923496285236">Tekeleza</translation>
 <translation id="1603914832182249871">(Hali fiche)</translation>
@@ -1758,7 +1757,6 @@
 <translation id="3206175707080061730">Faili iitwayo "$1" tayari ipo. Je, unataka kuibadilisha?</translation>
 <translation id="320825648481311438">Inapowashwa, kivinjari kinadhibiti kuingia na kuondoka katika akaunti za Google.</translation>
 <translation id="3208703785962634733">Haijathibitishwa</translation>
-<translation id="3209459032754159027">Washa kipengele cha kuonyesha tangazo la kuingia katika akaunti la kadi ya mikopo ndani ya menyu kunjuzi ya Kujaza Otomatiki.</translation>
 <translation id="3211904643589960506">Washa kipengele cha kuchanganua URL kutoka kwenye vifaa vya Wavuti Kila Mahali.</translation>
 <translation id="3216508313927987948">Ili kufanya hili litokee, itabidi ufunze kifaa chako cha <ph name="DEVICE_TYPE" /> katika hatua ifuatayo.</translation>
 <translation id="3220586366024592812">Mchakato wa kiunganishi cha <ph name="CLOUD_PRINT_NAME" /> umeharibika. Ungetaka kuzima na uwashe tena?</translation>
@@ -2729,7 +2727,7 @@
 <translation id="4530494379350999373">Asili</translation>
 <translation id="4532499992208253975">inapakia</translation>
 <translation id="4533259260976001693">Sinyaa/Panua</translation>
-<translation id="4533985347672295764">Muda wa CPU</translation>
+<translation id="4533985347672295764">Muda wa Kuchakata</translation>
 <translation id="4534166495582787863">Inawezesha mbofyo wa mgusopadi wa vidole vitatu kama kitufe cha kati.</translation>
 <translation id="4534799089889278411">Sema "Ok Google" katika kichupo kipya, google.com, na Kifungua Programu cha Chrome</translation>
 <translation id="4535127706710932914">Wasifu Chaguo-msingi</translation>
@@ -3888,7 +3886,7 @@
 <translation id="6062697480277116433">Unatumia data ya simu za mkononi</translation>
 <translation id="6064217302520318294">Kufunga skrini</translation>
 <translation id="6065289257230303064">Vipengele vya Saraka ya Vichwa cha Vyeti</translation>
-<translation id="6067080187494608396">Uhuishaji wa kiolesura wa pole pole</translation>
+<translation id="6067080187494608396">Uhuishaji wa kiolesura pole pole</translation>
 <translation id="6071181508177083058">thibitisha nenosiri</translation>
 <translation id="6073903501322152803">Ongeza vipengele vya zana za walio na matatizo ya kuona au kusikia</translation>
 <translation id="6074825444536523002">Fomu ya Google</translation>
@@ -4175,7 +4173,7 @@
 <translation id="6442697326824312960">Banua Kichupo</translation>
 <translation id="6443783728907198276">Ikiwashwa, ujumbe wa Stun unaoundwa na WebRTC utakuwa na kijajuu Asili.</translation>
 <translation id="6444070574980481588">Weka tarehe na saa</translation>
-<translation id="6444688254019178081">Washa madirisha yaliyowekwa.</translation>
+<translation id="6444688254019178081">Washa madirisha yaliyowekwa mahali kwenye skrini.</translation>
 <translation id="6445450263907939268">Kama hutaki mabadiliko haya, unaweza kurejesha mipangilio yako ya awali.</translation>
 <translation id="6447842834002726250">Vidakuzi</translation>
 <translation id="6449285849137521213">Programu "<ph name="EXTENSION_NAME" />" imeongezwa.</translation>
@@ -4611,7 +4609,6 @@
 <translation id="7042418530779813870">&amp;Bandika na utafute</translation>
 <translation id="7045480833981818310">Office Editing kwa Hati, Majedwali na Slaidi za Google</translation>
 <translation id="7047998246166230966">Kionyeshi</translation>
-<translation id="7048141481140415714">Washa Ctrl+Alt+Shift+D ili ugeuze hali ya kukuza TouchView.</translation>
 <translation id="7049293980323620022">Ungependa kuhifadhi faili?</translation>
 <translation id="7051943809462976355">Inatafuta kipanya...</translation>
 <translation id="7052237160939977163">Tuma data ya ufuatiliaji wa utendaji</translation>
@@ -5783,7 +5780,6 @@
 <translation id="8632275030377321303">Proksi haiwezi kurekebishwa na mtumiaji.</translation>
 <translation id="8636038761987659075">Mipangilio ya Tovuti yenye tovuti Zote na maelezo ya Tovuti</translation>
 <translation id="8637688295594795546">Usasishaji wa mfumo unaopatikana. Inajitayarisha kupakua...</translation>
-<translation id="8638602948366220068">Washa Kipengele cha Tangazo la Kujaza Kiotomatiki la Kuingia Katika Akaunti la Kadi ya Mikopo</translation>
 <translation id="8639504893694748827">Kiwekaji safu za picha bila nakala</translation>
 <translation id="8639963783467694461">Mipangilio ya Kujaza Kiotomatiki</translation>
 <translation id="8642171459927087831">Tokeni ya Ufikiaji</translation>
@@ -6219,7 +6215,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> kutoka <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Hulazimisha kuanza kwa kugusa, na wasikilizaji wa kwanza wa tukio wa kugusa kwa kila usogezaji wakati wa kutangaza ili kuchukuliwa kuwa tuli.</translation>
-<translation id="9184473426683023988">Leta na Uunganishe kwenye Kifaa</translation>
 <translation id="9186729806195986201">Pia rudi kwenye matoleo yaliyosakinishwa ya <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Washa Chrome VR.</translation>
 <translation id="9188441292293901223">Tafadhali pata toleo jipya zaidi la simu yako ya Android ili ufungue <ph name="DEVICE_TYPE" /> hii.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 30b3b7a1..280dfa4 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">இந்த கணக்கு மூலம் தானாகவே Google தளங்களில் உள்நுழைய வைக்கிறது</translation>
 <translation id="1596174774107741586">Google Payments சாண்ட்பாக்ஸ் சேவையகங்களைப் பயன்படுத்தவும்</translation>
 <translation id="1598233202702788831">உங்கள் நிர்வாகியால் புதுப்பிப்புகள் முடக்கப்பட்டுள்ளன.</translation>
-<translation id="1598604884989842103">சோதனை செய்ய TouchView பெரிதாக்கப் பயன்முறை UI ஐ இயக்கு</translation>
 <translation id="1600857548979126453">பக்க பிழைதிருத்தியின் பின்தளத்தை அணுகலாம்</translation>
 <translation id="1601560923496285236">பயன்படுத்து</translation>
 <translation id="1603914832182249871">(மறைநிலை)</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">இப்போது Chrome இல் உள்நுழைந்துள்ளீர்கள்</translation>
 <translation id="2287590536030307392">எல்லா கம்பியில்லா இணைப்புகளையும் நிறுத்து.</translation>
 <translation id="2291643155573394834">அடுத்த தாவல்</translation>
-<translation id="2292848386125228270"><ph name="PRODUCT_NAME" />ஐ வழக்கமான பயனராகத் தொடங்குங்கள். அதை மேம்பாட்டிற்கான மூலமாக இயக்க வேண்டும் எனில், --no-sandbox கொடியைப் பயன்படுத்தி மீண்டும் இயக்கவும்.</translation>
+<translation id="2292848386125228270"><ph name="PRODUCT_NAME" />ஐ வழக்கமான பயனராகத் தொடங்குங்கள். டெவெலப்மென்ட்டுக்காக அதை ரூட் பயனராக இயக்க வேண்டும் எனில், --no-sandbox விருப்பத்தைப் பயன்படுத்தி மீண்டும் இயக்கவும்.</translation>
 <translation id="2294358108254308676"><ph name="PRODUCT_NAME" /> ஐ நிறுவ விரும்புகிறீர்களா?</translation>
 <translation id="2296019197782308739">EAP முறை:</translation>
 <translation id="2301382460326681002">நீட்டிப்பு மூல கோப்பகம் செல்லாதது.</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">"$1" என்ற பெயருள்ள கோப்பு ஏற்கனவே உள்ளது. அதை இடமாற்ற வேண்டுமா?</translation>
 <translation id="320825648481311438">இயக்கப்பட்டிருக்கும்போது, உலாவியானது Google கணக்குகளின் உள்நுழைவு மற்றும் வெளியேறுதலை நிர்வகிக்கிறது.</translation>
 <translation id="3208703785962634733">உறுதிசெய்யப்படாதது</translation>
-<translation id="3209459032754159027">தன்னிரப்பி கீழ்தோன்றலுக்குள் கிரெடிட் கார்டு உள்நுழைவு புரோமோவைக் காட்டுவதை இயக்கும்.</translation>
 <translation id="3211904643589960506">இயல்நிலை இணையக் கூறுகளிலிருந்து URLகளை ஸ்கேன் செய்வதை இயக்கும்.</translation>
 <translation id="3216508313927987948">இதைச் செயல்படுத்த, பின்வரும் படியில் உங்கள் <ph name="DEVICE_TYPE" />க்கு பயிற்சி அளிக்க வேண்டும்.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> இணைப்பான் செயல்முறை செயலிழந்தது. மறுதொடக்கம் செய்யவா?</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">நீங்கள் பயன்படுத்திக் கொண்டிருக்கும் நெட்வொர்க், அதன் உள்நுழைவுப் பக்கத்தை நீங்கள் பார்க்க வேண்டலாம்.</translation>
 <translation id="3704331259350077894">செயல்பாட்டின் இடைநிறுத்தம்</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">நினைவேறுகிறது...</translation>
+<translation id="370665806235115550">ஏற்றுகிறது…</translation>
 <translation id="3706919628594312718">சுட்டி அமைப்புகள்</translation>
 <translation id="3707020109030358290">சான்றளிக்கும் மையம் அல்ல.</translation>
 <translation id="3709244229496787112">பதிவிறக்கம் நிறைவுபெறுவதற்கு முன்பாகவே உலாவி மூடப்பட்டது.</translation>
@@ -2764,7 +2762,7 @@
 <translation id="4556110439722119938">புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள் ஆகியவை உங்கள் Google கணக்குடன் ஒத்திசைக்கப்படும் என்பதால் அவற்றை எல்லா சாதனங்களிலும் பயன்படுத்தலாம்</translation>
 <translation id="4557136421275541763">எச்சரிக்கை: </translation>
 <translation id="4558426062282641716">தானியங்கு துவக்கத்திற்கான அனுமதி கோரப்பட்டது</translation>
-<translation id="4563488537534296354">திரையின் இடதுபுறத்திலும் வலதுபுறத்தில் சாளரங்களை டாக் செய்வதை இயக்கும்.</translation>
+<translation id="4563488537534296354">திரையின் இடதுபுறத்திலும் வலதுபுறத்தில் சாளரங்களை டாக் செய்யும் வசதியை இயக்கும்.</translation>
 <translation id="456664934433279154">டூல்கிட்-வியூஸ் சார்ந்த Chrome பயன்பாட்டுச் சாளரங்களைப் பயன்படுத்துவதைக் கட்டுப்படுத்தும்.</translation>
 <translation id="4567772783389002344">சொல்லைச் சேர்</translation>
 <translation id="4569998400745857585">மறைக்கப்பட்ட நீட்டிப்புகளைக் கொண்ட மெனு</translation>
@@ -4181,7 +4179,7 @@
 <translation id="6442697326824312960">பொருத்தப்படாத தாவல்</translation>
 <translation id="6443783728907198276">இயக்கப்படும் போது, WebRTC உருவாக்கும் ஸ்டன் செய்திகளில் அசல் மேற்தலைப்பு இருக்கும்.</translation>
 <translation id="6444070574980481588">தேதியையும் நேரத்தையும் அமை</translation>
-<translation id="6444688254019178081">சாளரங்களை டாக் செய்வதை இயக்கு.</translation>
+<translation id="6444688254019178081">சாளரங்களை டாக் செய்யும் வசதியை இயக்கு.</translation>
 <translation id="6445450263907939268">உங்களுக்கு இந்த மாற்றங்கள் பிடிக்கவில்லை எனில், முந்தைய அமைப்புகளை நீங்கள் மீட்டெடுக்கலாம்.</translation>
 <translation id="6447842834002726250">குக்கீகள்</translation>
 <translation id="6449285849137521213">பயன்பாட்டின் "<ph name="EXTENSION_NAME" />" சேர்க்கப்பட்டது.</translation>
@@ -4617,7 +4615,6 @@
 <translation id="7042418530779813870">ஒ&amp;ட்டி விட்டு தேடு</translation>
 <translation id="7045480833981818310">ஆவணம், விரிதாள் மற்றும் ஸ்லைடிற்கான Office எடிட்டிங்</translation>
 <translation id="7047998246166230966">பாயிண்டர்</translation>
-<translation id="7048141481140415714">TouchView பெரிதாக்கும் பயன்முறைக்கு மாற Ctrl+Alt+Shift+8 ஐ இயக்கவும்.</translation>
 <translation id="7049293980323620022">கோப்பை வைத்திருக்கவா?</translation>
 <translation id="7051943809462976355">மவுஸைத் தேடுகிறது...</translation>
 <translation id="7052237160939977163">செயல்திறன் தடமறிதல் தரவை அனுப்பு</translation>
@@ -5778,7 +5775,6 @@
 <translation id="8632275030377321303">பயனரால் பிராக்ஸியை மாற்ற முடியாது.</translation>
 <translation id="8636038761987659075">எல்லாத் தளங்களும் தள விவரங்களும் உள்ள தள அமைப்புகள்</translation>
 <translation id="8637688295594795546">கணினிப் புதுப்பிப்பு உள்ளது. பதிவிறக்கத் தயாராகிறது...</translation>
-<translation id="8638602948366220068">தன்னிரப்பி கிரெடிட் கார்டு உள்நுழைவு புரோமோவை இயக்கு</translation>
 <translation id="8639504893694748827">பூஜ்ஜிய-நகல் ராஸ்டரைசர்</translation>
 <translation id="8639963783467694461">தானியங்குநிரப்பி அமைப்புகள்</translation>
 <translation id="8642171459927087831">அணுகல் டோக்கன்</translation>
@@ -6213,7 +6209,6 @@
 <translation id="9181716872983600413">யுனிகோட்</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /> இலிருந்து <ph name="DOWNLOAD_RECEIVED" /></translation>
 <translation id="9184146175870444618">அனுப்பும் போது டச்ஸ்டார்ட், மற்றும் ஒரு ஸ்க்ரோல் ஈவன்ட் லிசனர்களுக்கான ஃபர்ஸ்ட் டச்மூவ் ஆகியவற்றை செயலற்றதாக நடத்த நிர்பந்திக்கும்.</translation>
-<translation id="9184473426683023988">இறக்குமதி செய்து சாதனத்தில் செயல்படுத்து</translation>
 <translation id="9186729806195986201">மேலும் <ph name="IDS_SHORT_PRODUCT_NAME" /> இன் பழைய பதிப்பிற்கும் திரும்பும்.</translation>
 <translation id="9187651461283037651">Chrome VRஐ இயக்கு.</translation>
 <translation id="9188441292293901223"><ph name="DEVICE_TYPE" />ஐத் திறக்க, உங்கள் மொபைலை Android இன் மிகச் சமீபத்திய பதிப்பிற்குப் புதுப்பிக்கவும்.</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 4c0ee5f..5d06496 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -312,7 +312,7 @@
 <translation id="1406500794671479665">ధృవీకరిస్తోంది...</translation>
 <translation id="1407050882688520094">ఈ సర్టిఫికెట్ అధికారాలను గుర్తించే ఫైల్‌లో మీకు సర్టిఫికెట్‌లు ఉన్నాయి:</translation>
 <translation id="1407489512183974736">మధ్యకు కత్తిరించు</translation>
-<translation id="1408504635543854729">ఫైల్‌లు అనువర్తనంలో పరికర కంటెంట్‌ను విశ్లేషించండి. కంటెంట్‌ని నిర్వహకులు పరిమితం చేశారు మరియు దాన్ని సవరించడం సాధ్యపడదు.</translation>
+<translation id="1408504635543854729">ఫైల్‌లు అనువర్తనంలో పరికర కంటెంట్‌ను విశ్లేషించండి. కంటెంట్‌ని నిర్వాహకులు పరిమితం చేశారు మరియు దాన్ని సవరించడం సాధ్యపడదు.</translation>
 <translation id="1408789165795197664">అధునాతన...</translation>
 <translation id="1409390508152595145">పర్యవేక్షించబడే వినియోగదారుని సృష్టించు</translation>
 <translation id="1409662552980122915">పరికరాన్ని జత చేయి</translation>
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">ఈ ఖాతాతో స్వయంచాలకంగా Google సైట్‌లకు సైన్ ఇన్ చేసే సౌకర్యాన్ని అందించు</translation>
 <translation id="1596174774107741586">Google Payments శాండ్‌బాక్స్ సర్వర్‌లను ఉపయోగించండి</translation>
 <translation id="1598233202702788831">నవీకరణలను మీ నిర్వాహకులు నిలిపివేసారు.</translation>
-<translation id="1598604884989842103">పరీక్ష చేయడం కోసం TouchView గరిష్టీకరణ UIని ప్రారంభించండి</translation>
 <translation id="1600857548979126453">పేజీ డీబగ్గర్ బ్యాకెండ్‌ను ప్రాప్యత చేయండి</translation>
 <translation id="1601560923496285236">వర్తించు</translation>
 <translation id="1603914832182249871">(అజ్ఞాతంగా)</translation>
@@ -824,7 +823,7 @@
 <translation id="2077129598763517140">హార్డ్‌వేర్ త్వరితం అందుబాటులో ఉన్నప్పుడు ఉపయోగించు</translation>
 <translation id="2078019350989722914">నిష్క్రమించే ముందు హెచ్చరించు (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">మీరు మీ స్వంత ప్రమాణపత్రాలలోని ఒకదాన్ని తొలగించినట్లయితే, మీరు దీన్ని గుర్తించడానికి మీరే ఇకపై ఉపయోగించలేరు.</translation>
-<translation id="2079545284768500474">అన్డు</translation>
+<translation id="2079545284768500474">చర్య రద్దు</translation>
 <translation id="2080010875307505892">సెర్బియన్ కీబోర్డ్</translation>
 <translation id="2080070583977670716">మరిన్ని సెట్టింగ్‌లు</translation>
 <translation id="2081322486940989439">ఈ సైట్ Visa కార్డ్‌ని ఆమోదించదు.</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">మీరు ఇప్పుడు Chromeకి సైన్ ఇన్ చేసారు</translation>
 <translation id="2287590536030307392">అన్ని వైర్‌లెస్ కనెక్షన్‌లను ఆపివేయండి.</translation>
 <translation id="2291643155573394834">తదుపరి ట్యాబ్</translation>
-<translation id="2292848386125228270">దయచేసి సాధారణ వినియోగదారుగా <ph name="PRODUCT_NAME" />ని ప్రారంభించండి. మీరు అభివృద్ధికి మూలమైన దాని వలె అమలు చేయాలనుకుంటే, నో-శాండ్ బాక్స్ ఫ్లాగ్‌తో మళ్లీ అమలు చేయండి.</translation>
+<translation id="2292848386125228270">దయచేసి సాధారణ వినియోగదారుగా <ph name="PRODUCT_NAME" />ని ప్రారంభించండి. మీరు అభివృద్ధికి మూలమైన దాని వలె అమలు చేయాలనుకుంటే, --no-sandbox ఫ్లాగ్‌తో మళ్లీ అమలు చేయండి.</translation>
 <translation id="2294358108254308676">మీరు <ph name="PRODUCT_NAME" />ను వ్యవస్థాపించాలనుకుంటున్నారా?</translation>
 <translation id="2296019197782308739">EAP విధానం:</translation>
 <translation id="2301382460326681002">పొడిగింపు మూలం డైరెక్టరీ చెల్లదు.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">"$1" పేరుగల ఫైల్ ఇప్పటికే ఉంది. మీరు దాన్ని భర్తీ చేయాలనుకొంటున్నారా?</translation>
 <translation id="320825648481311438">ప్రారంభించబడినప్పుడు, బ్రౌజర్ Google ఖాతాల సైన్ ఇన్‌ను మరియు సైవ్ అవుట్‌ను నిర్వహిస్తుంది.</translation>
 <translation id="3208703785962634733">నిర్థారించబడలేదు</translation>
-<translation id="3209459032754159027">స్వీయపూరణ డ్రాప్‌‍డౌన్‌లో క్రెడిట్ కార్డ్ సైన్ఇన్ ప్రోమోను చూపడం ప్రారంభిస్తుంది.</translation>
 <translation id="3211904643589960506">భౌతిక వెబ్ ఆబ్జెక్ట్‌ల నుండి URLలను స్కాన్ చేయడాన్ని ప్రారంభిస్తుంది.</translation>
 <translation id="3216508313927987948">దీన్ని చేయడానికి, మీరు క్రింది దశలో మీ <ph name="DEVICE_TYPE" />కి శిక్షణనివ్వాలి.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> కనెక్టర్ విధానం క్రాష్ అయ్యింది. పునఃప్రారంభించాలా?</translation>
@@ -2763,7 +2761,7 @@
 <translation id="4556110439722119938">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వీటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు</translation>
 <translation id="4557136421275541763">హెచ్చరిక:</translation>
 <translation id="4558426062282641716">స్వీయ-ప్రారంభ అనుమతి అభ్యర్థించబడింది</translation>
-<translation id="4563488537534296354">విండోలను స్క్రీన్‌కు ఎడమ వైపు మరియు కుడి వైపుకు లాగే సామర్థ్యం అనుమతిస్తుంది.</translation>
+<translation id="4563488537534296354">విండోలను స్క్రీన్‌కు ఎడమ వైపు మరియు కుడి వైపున ఉంచగల సామర్థ్యాన్ని అందిస్తుంది.</translation>
 <translation id="456664934433279154">టూల్‌‍కిట్ వీక్షణల ఆధారిత Chrome అనువర్తన విండోలను ఉపయోగించాలో లేదో నియంత్రిస్తుంది.</translation>
 <translation id="4567772783389002344">పదాన్ని జోడించు</translation>
 <translation id="4569998400745857585">మెను దాచబడిన ఎక్స్‌టెన్షన్స్‌ను కలిగి ఉంది</translation>
@@ -4184,7 +4182,7 @@
 <translation id="6442697326824312960">టాబ్‌కు పిన్ తీసివేయి</translation>
 <translation id="6443783728907198276">ప్రారంభించినప్పుడు, WebRTC ద్వారా రూపొందించబడిన స్టన్ సందేశాలు మూల శీర్షికను కలిగి ఉంటాయి.</translation>
 <translation id="6444070574980481588">తేదీ మరియు సమయాన్ని సెట్ చేయండి</translation>
-<translation id="6444688254019178081">విండోలను లాగే సామర్థ్యం అనుమతించండి.</translation>
+<translation id="6444688254019178081">విండోలను పక్కన ఉంచే సామర్థ్యాన్ని ప్రారంభించండి.</translation>
 <translation id="6445450263907939268">మీరు ఈ మార్పులు అవసరం లేదని భావిస్తే, మీ మునుపటి సెట్టింగ్‌లను పునరుద్ధరించవచ్చు.</translation>
 <translation id="6447842834002726250">కుక్కీలు</translation>
 <translation id="6449285849137521213">"<ph name="EXTENSION_NAME" />" అనువర్తనం జోడించబడింది.</translation>
@@ -4621,7 +4619,6 @@
 <translation id="7042418530779813870">పే&amp;స్ట్ చేసి మరియు శోధించండి</translation>
 <translation id="7045480833981818310">డాక్స్, షీట్‌లు &amp; స్లయిడ్‌ల కోసం Office సవరణ</translation>
 <translation id="7047998246166230966">పాయింటర్</translation>
-<translation id="7048141481140415714">TouchView గరిష్టీకరణ మోడ్‌ను టోగుల్ చేయడానికి Ctrl+Alt+Shift+8ని అనుమతించండి.</translation>
 <translation id="7049293980323620022">ఫైల్ అలాగే ఉంచాలా?</translation>
 <translation id="7051943809462976355">మౌస్ కోసం శోధిస్తోంది...</translation>
 <translation id="7052237160939977163">పనితీరు గుర్తింపు డేటాను పంపు</translation>
@@ -5785,7 +5782,6 @@
 <translation id="8632275030377321303">వినియోగదారు ద్వారా ప్రాక్సీ సవరించబడదు.</translation>
 <translation id="8636038761987659075">అన్ని సైట్‌లు మరియు సైట్ వివరాలతో సైట్ సెట్టింగ్‌లు</translation>
 <translation id="8637688295594795546">సిస్టమ్ నవీకరణ అందుబాటులో ఉంది. డౌన్‌లోడ్ చెయ్యడానికి సిద్ధం చేస్తోంది...</translation>
-<translation id="8638602948366220068">స్వీయపూరణ క్రెడిట్ కార్డ్ సైన్ఇన్ ప్రోమోను ప్రారంభించండి</translation>
 <translation id="8639504893694748827">సున్నా-కాపీ రేస్టరైజర్</translation>
 <translation id="8639963783467694461">స్వీయపూర్తి సెట్టింగ్‌లు</translation>
 <translation id="8642171459927087831">ప్రాప్యత టోకెన్</translation>
@@ -6220,7 +6216,6 @@
 <translation id="9181716872983600413">యునీకోడ్</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> నుండి <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">ఫ్లింగ్ సమయంలో touchstart మరియు స్క్రోల్ ఈవెంట్ శ్రోతలకి మొదటి touchmoveని నిష్క్రియంగా పరిగణించేలా నిర్బంధిస్తుంది.</translation>
-<translation id="9184473426683023988">దిగుమతి చేసి, పరికరానికి అనుబంధించు</translation>
 <translation id="9186729806195986201">అలాగే, మునుపు ఇన్‌స్టాల్ చేసిన <ph name="IDS_SHORT_PRODUCT_NAME" /> సంస్కరణకు తిరిగి మారండి.</translation>
 <translation id="9187651461283037651">Chrome VRను ప్రారంభించండి.</translation>
 <translation id="9188441292293901223">దయచేసి ఈ <ph name="DEVICE_TYPE" />ని అన్‌లాక్ చేయడానికి మీ ఫోన్‌ను Android తాజా సంస్కరణకు నవీకరించండి.</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 176d895..770d7b5 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">เสนอให้ลงชื่อเข้าใช้ไซต์ของ Google อัตโนมัติด้วยบัญชีนี้</translation>
 <translation id="1596174774107741586">ใช้แซนด์บ็อกซ์เซิร์ฟเวอร์ของ Google Payments</translation>
 <translation id="1598233202702788831">ผู้ดูแลระบบปิดใช้การอัปเดต</translation>
-<translation id="1598604884989842103">เปิดใช้ UI การขยาย TouchView สำหรับการทดสอบ</translation>
 <translation id="1600857548979126453">เข้าถึงแบ็คเอนด์เครื่องซ่อมแซมหน้าเว็บ</translation>
 <translation id="1601560923496285236">นำไปใช้</translation>
 <translation id="1603914832182249871">(โหมดไม่ระบุตัวตน)</translation>
@@ -1013,7 +1012,7 @@
 <translation id="2286950485307333924">คุณได้ลงชื่อเข้าใช้ Chrome แล้ว</translation>
 <translation id="2287590536030307392">ปิดการเชื่อมต่อไร้สายทั้งหมด</translation>
 <translation id="2291643155573394834">แท็บถัดไป</translation>
-<translation id="2292848386125228270">โปรดเริ่มต้น <ph name="PRODUCT_NAME" /> ในฐานะผู้ใช้ทั่วไป หากต้องการเรียกใช้ในฐานะผู้ใช้ระดับรากเพื่อการพัฒนา ให้เรียกใช้อีกครั้งโดยมีการตั้งค่าสถานะ --no-sandbox</translation>
+<translation id="2292848386125228270">โปรดเริ่มต้น <ph name="PRODUCT_NAME" /> ในฐานะผู้ใช้ทั่วไป หากต้องการเรียกใช้ในฐานะผู้ใช้ระดับรากเพื่อการพัฒนา ให้เรียกใช้อีกครั้งโดยตั้งค่าสถานะเป็น no-sandbox</translation>
 <translation id="2294358108254308676">คุณต้องการติดตั้ง <ph name="PRODUCT_NAME" /> หรือไม่</translation>
 <translation id="2296019197782308739">วิธีการ EAP:</translation>
 <translation id="2301382460326681002">ไดเรกทอรีหลักของส่วนขยายไม่ถูกต้อง</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">ไฟล์ชื่อ "$1" มีอยู่แล้ว คุณต้องการแทนที่ไฟล์ดังกล่าวหรือไม่</translation>
 <translation id="320825648481311438">เมื่อเปิดใช้ เบราว์เซอร์จะจัดการการลงชื่อเข้าใช้และการออกจากระบบบัญชี Google</translation>
 <translation id="3208703785962634733">ยังไม่ยืนยัน</translation>
-<translation id="3209459032754159027">เปิดใช้การแสดงโปรโมชันการลงชื่อเข้าใช้บัตรเครดิตในรายการป้อนอัตโนมัติแบบเลื่อนลง</translation>
 <translation id="3211904643589960506">เปิดใช้การสแกน URL จากออบเจ็กต์ของ Physical Web</translation>
 <translation id="3216508313927987948">ในการเริ่มใช้งาน คุณจะต้องฝึกให้ <ph name="DEVICE_TYPE" /> เรียนรู้ตามขั้นตอนต่อไปนี้</translation>
 <translation id="3220586366024592812">การทำงานของตัวเชื่อมต่อ <ph name="CLOUD_PRINT_NAME" /> ขัดข้อง จะรีสตาร์ทหรือไม่</translation>
@@ -2156,7 +2154,7 @@
 <translation id="3704162925118123524">เครือข่ายที่คุณใช้อาจต้องการให้คุณไปที่หน้าการเข้าสู่ระบบ</translation>
 <translation id="3704331259350077894">หยุดดำเนินกิจการ</translation>
 <translation id="3705722231355495246">-</translation>
-<translation id="370665806235115550">กำลังโหลด...</translation>
+<translation id="370665806235115550">กำลังโหลด ...</translation>
 <translation id="3706919628594312718">การตั้งค่าเมาส์</translation>
 <translation id="3707020109030358290">ไม่ใช่ผู้ออกใบรับรอง</translation>
 <translation id="3709244229496787112">เบราว์เซอร์ถูกปิดลงก่อนที่จะดาวน์โหลดเสร็จ</translation>
@@ -4620,7 +4618,6 @@
 <translation id="7042418530779813870">&amp;วางและค้นหา</translation>
 <translation id="7045480833981818310">การแก้ไขไฟล์ Office สำหรับเอกสาร ชีต และสไลด์</translation>
 <translation id="7047998246166230966">ตัวชี้</translation>
-<translation id="7048141481140415714">เปิดใช้ Ctrl+Alt+Shift+8 เพื่อสลับโหมดการขยาย TouchView</translation>
 <translation id="7049293980323620022">เก็บไฟล์ไว้ไหม</translation>
 <translation id="7051943809462976355">กำลังค้นหาเมาส์...</translation>
 <translation id="7052237160939977163">ส่งข้อมูลการติดตามผลการปฏิบัติงาน</translation>
@@ -5788,7 +5785,6 @@
 <translation id="8632275030377321303">ผู้ใช้ไม่สามารถแก้ไขพร็อกซีได้</translation>
 <translation id="8636038761987659075">การตั้งค่าไซต์พร้อมไซต์ทั้งหมดและรายละเอียดไซต์</translation>
 <translation id="8637688295594795546">มีอัปเดตระบบพร้อมใช้งาน กำลังเตรียมการดาวน์โหลด…</translation>
-<translation id="8638602948366220068">เปิดใช้โปรโมชันการลงชื่อเข้าใช้บัตรเครดิตแบบป้อนอัตโนมัติ</translation>
 <translation id="8639504893694748827">โปรแกรมแรสเตอร์แบบไม่มีสำเนา</translation>
 <translation id="8639963783467694461">การตั้งค่าป้อนอัตโนมัติ</translation>
 <translation id="8642171459927087831">โทเค็นการเข้าถึง</translation>
@@ -6223,7 +6219,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> จาก <ph name="DOWNLOAD_DOMAIN" /> เหลือ <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">บังคับให้ใช้ Listener เหตุการณ์แบบแตะเปิดและแตะย้ายครั้งแรกต่อการเลื่อน 1 ครั้งในระหว่างการสะบัดเป็นแบบแพสซีฟ</translation>
-<translation id="9184473426683023988">นำเข้าและเชื่อมโยงกับอุปกรณ์</translation>
 <translation id="9186729806195986201">กลับไปใช้เวอร์ชันที่ติดตั้งไว้ก่อนหน้านี้ของ <ph name="IDS_SHORT_PRODUCT_NAME" /> ด้วย</translation>
 <translation id="9187651461283037651">เปิดใช้ Chrome VR</translation>
 <translation id="9188441292293901223">โปรดอัปเดตโทรศัพท์เป็น Android เวอร์ชันใหม่กว่าเพื่อปลดล็อก <ph name="DEVICE_TYPE" /> นี้</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 2b8d5c87..da988b0d 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -312,7 +312,7 @@
 <translation id="1406500794671479665">Doğrulanıyor...</translation>
 <translation id="1407050882688520094">Dosyada şu sertifika yetkililerini tanımlayan sertifikalarınız var:</translation>
 <translation id="1407489512183974736">Ortala ve Kırp</translation>
-<translation id="1408504635543854729">Cihazın içeriğini Dosyalar uygulamasında keşfedin. İçerik, bir yönetici tarafından kısıtlanmış ve üzerinde değişiklik yapılması engellenmiş durumda.</translation>
+<translation id="1408504635543854729">Cihazın içeriğini Dosyalar uygulamasında keşfedin. İçerik, bir yönetici tarafından kısıtlanmış ve üzerinde değişiklik yapılamaz.</translation>
 <translation id="1408789165795197664">Gelişmiş...</translation>
 <translation id="1409390508152595145">Denetlenen kullanıcı oluştur</translation>
 <translation id="1409662552980122915">Cihazı eşle</translation>
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Bu hesapla Google sitelerinde otomatik olarak oturum açmayı öner</translation>
 <translation id="1596174774107741586">Google Payments korumalı alan sunucularını kullan</translation>
 <translation id="1598233202702788831">Güncellemeler yöneticiniz tarafından devre dışı bırakıldı.</translation>
-<translation id="1598604884989842103">Test için TouchView'un ekranı kaplamasını sağlayan kullanıcı arayüzünü etkinleştir</translation>
 <translation id="1600857548979126453">Sayfa hata ayıklayıcı arka ucuna erişme</translation>
 <translation id="1601560923496285236">Uygula</translation>
 <translation id="1603914832182249871">(Gizli mod)</translation>
@@ -824,7 +823,7 @@
 <translation id="2077129598763517140">Kullanılabilir olduğunda donanım ivmesini kullan</translation>
 <translation id="2078019350989722914">Çıkmadan Önce Uyar (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">Sertifikalarınızdan birini silerseniz, kendinizi tanıtmak için artık bu sertifikayı kullanamazsınız.</translation>
-<translation id="2079545284768500474">Geri Al</translation>
+<translation id="2079545284768500474">Geri al</translation>
 <translation id="2080010875307505892">Sırpça klavye</translation>
 <translation id="2080070583977670716">Daha fazla ayar</translation>
 <translation id="2081322486940989439">Bu sitede Visa kabul edilmiyor.</translation>
@@ -1014,7 +1013,7 @@
 <translation id="2286950485307333924">Şu anda Chrome'da oturum açmış bulunmaktasınız</translation>
 <translation id="2287590536030307392">Tüm kablosuz bağlantıları devre dışı bırakın.</translation>
 <translation id="2291643155573394834">Sonraki sekme</translation>
-<translation id="2292848386125228270">Lütfen <ph name="PRODUCT_NAME" /> uygulamasını normal bir kullanıcı olarak başlatın. Geliştirme amacıyla uygulamayı root olarak çalıştırmanız gerekiyorsa --no-sandbox seçeneğini işaretleyerek yeniden çalıştırın.</translation>
+<translation id="2292848386125228270">Lütfen <ph name="PRODUCT_NAME" /> uygulamasını normal bir kullanıcı olarak başlatın. Geliştirme amacıyla uygulamayı root kullanıcı olarak çalıştırmanız gerekiyorsa korumasız alan seçeneğini işaretleyerek yeniden çalıştırın.</translation>
 <translation id="2294358108254308676"><ph name="PRODUCT_NAME" /> ürününü yüklemek istiyor musunuz?</translation>
 <translation id="2296019197782308739">EAP yöntemi:</translation>
 <translation id="2301382460326681002">Uzantı kök dizini geçersiz.</translation>
@@ -1761,7 +1760,6 @@
 <translation id="3206175707080061730">"$1" adlı bir dosya zaten var. Değiştirmek istiyor musunuz?</translation>
 <translation id="320825648481311438">Etkinleştirildiğinde, Google hesaplarında oturum açıp kapatmayı tarayıcı yönetir.</translation>
 <translation id="3208703785962634733">Onaylanmayan</translation>
-<translation id="3209459032754159027">Otomatik Doldurma açılır listesinde kredi kartı bilgilerinin yanında oturum açma tanıtımının gösterilmesini etkinleştirin.</translation>
 <translation id="3211904643589960506">Fiziksel Web nesnelerinden URL'ler için taramayı etkinleştirin.</translation>
 <translation id="3216508313927987948">Bunun yapılabilmesi için aşağıdaki adımı izleyerek <ph name="DEVICE_TYPE" /> cihazınızı eğitmeniz gerekecektir.</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> bağlayıcı işlemi kilitlendi. Tekrar başlatılsın mı?</translation>
@@ -2230,7 +2228,7 @@
 <translation id="3790909017043401679">SIM kart PIN'ini girme</translation>
 <translation id="3792890930871100565">Yazıcıların bağlantısını kes</translation>
 <translation id="3796648294839530037">Sık Kullanılan Ağlar:</translation>
-<translation id="3797900183766075808">"<ph name="SEARCH_TERMS" />" İçin <ph name="SEARCH_ENGINE" /> &amp;Arama Motorunda Arama Yap</translation>
+<translation id="3797900183766075808">"<ph name="SEARCH_TERMS" />" İçin <ph name="SEARCH_ENGINE" /> &amp;Üzerinde Arama Yap</translation>
 <translation id="3798325802885154040">Dokunarak tıklama işlevini etkinleştirmenize/devre dışı bırakmanıza olanak tanır</translation>
 <translation id="3798449238516105146">Sürüm</translation>
 <translation id="3798935682015223249">Dosya Yöneticisi'nde MTP desteği</translation>
@@ -4186,7 +4184,7 @@
 <translation id="6442697326824312960">Sekmeyi Ayır</translation>
 <translation id="6443783728907198276">Etkinleştirildiğinde WebRTC tarafından oluşturulan Stun iletileri Kaynak başlığı içerir.</translation>
 <translation id="6444070574980481588">Tarihi ve saati ayarlayın</translation>
-<translation id="6444688254019178081">Yerleştirilmiş pencereleri etkinleştir.</translation>
+<translation id="6444688254019178081">Pencere yerleştirmeyi etkinleştir.</translation>
 <translation id="6445450263907939268">Bu değişiklikleri istemiyorsanız önceki ayarlarınızı geri yükleyebilirsiniz.</translation>
 <translation id="6447842834002726250">Çerezler</translation>
 <translation id="6449285849137521213">"<ph name="EXTENSION_NAME" />" uygulaması eklendi.</translation>
@@ -4622,7 +4620,6 @@
 <translation id="7042418530779813870">Ya&amp;pıştır ve ara</translation>
 <translation id="7045480833981818310">Dokümanlar, E-Tablolar ve Slaytlar için Office Dosyası Düzenlemesi</translation>
 <translation id="7047998246166230966">İşaretçi</translation>
-<translation id="7048141481140415714">TouchView'un ekranı kaplama modunu açmak veya kapatmak için Ctrl+Alt+ÜstKrktr+8 kısayolunu etkinleştirin.</translation>
 <translation id="7049293980323620022">Dosya tutulsun mu?</translation>
 <translation id="7051943809462976355">Fare aranıyor...</translation>
 <translation id="7052237160939977163">Performans izleme verilerini gönder</translation>
@@ -5792,7 +5789,6 @@
 <translation id="8632275030377321303">Proxy kullanıcı tarafından değiştirilemez.</translation>
 <translation id="8636038761987659075">Tüm siteler ve Site ayrıntılarıyla site ayarları</translation>
 <translation id="8637688295594795546">Kullanılabilir sistem güncellemesi mevcut. İndirmeye hazırlanılıyor...</translation>
-<translation id="8638602948366220068">Otomatik Doldurma Kredi Kartı Oturum Açma Tanıtımını Etkinleştir</translation>
 <translation id="8639504893694748827">Sıfır kopyalı pikselleştirici</translation>
 <translation id="8639963783467694461">Otomatik doldurma ayarları</translation>
 <translation id="8642171459927087831">Erişim Verisi</translation>
@@ -6228,7 +6224,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> alan adından <ph name="DOWNLOAD_RECEIVED" /> alındı, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Hızlıca kaydırma sırasında kaydırma etkinlik işleyicilerine göre dokunarak başlatma ve ilk dokunmayla taşımanın pasif olarak ele alınmasını zorlar.</translation>
-<translation id="9184473426683023988">İçe Aktar ve Cihaza Bağla</translation>
 <translation id="9186729806195986201">Ayrıca daha önce yüklü <ph name="IDS_SHORT_PRODUCT_NAME" /> sürümüne de geri döndür.</translation>
 <translation id="9187651461283037651">Chrome VR'yi etkinleştir.</translation>
 <translation id="9188441292293901223">Bu <ph name="DEVICE_TYPE" /> cihazın kilidini açmak için lütfen telefonunuzu daha yeni bir Android sürümüne güncelleyin.</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 64896ca..1c03ef9 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">Пропонувати автоматичний вхід на сайти Google, використовуючи дані цього облікового запису</translation>
 <translation id="1596174774107741586">Використовувати сервери ізольованого програмного середовища Google Payments</translation>
 <translation id="1598233202702788831">Адміністратор вимкнув оновлення.</translation>
-<translation id="1598604884989842103">Активувати тестовий режим TouchView для відображення вікон у розгорнутому вигляді</translation>
 <translation id="1600857548979126453">Отримувати доступ до серверної частини налагоджувача сторінки</translation>
 <translation id="1601560923496285236">Застосувати</translation>
 <translation id="1603914832182249871">(Анонімний перегляд)</translation>
@@ -824,7 +823,7 @@
 <translation id="2077129598763517140">Використовувати апаратне прискорення, якщо доступно</translation>
 <translation id="2078019350989722914">Попереджати перед виходом (<ph name="KEY_EQUIVALENT" />)</translation>
 <translation id="2079053412993822885">Якщо видалити один зі своїх власних сертифікатів, ви більше не зможете використовувати його для власної ідентифікації.</translation>
-<translation id="2079545284768500474">Скасувати</translation>
+<translation id="2079545284768500474">Відмінити</translation>
 <translation id="2080010875307505892">Сербська розкладка</translation>
 <translation id="2080070583977670716">Більше налаштувань</translation>
 <translation id="2081322486940989439">Цей сайт не приймає картки Visa.</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">Файл із назвою "$1" уже існує. Замінити його?</translation>
 <translation id="320825648481311438">Якщо ввімкнено, веб-переглядач керуватиме входами в облікові записи Google і виходами з них.</translation>
 <translation id="3208703785962634733">Не підтверджено</translation>
-<translation id="3209459032754159027">Показувати заклик до входу в спадному меню "Автозаповнення" для даних кредитної картки.</translation>
 <translation id="3211904643589960506">Увімкнути пошук URL-адрес з об’єктів, сумісних із функцією "Інтернет навколо нас".</translation>
 <translation id="3216508313927987948">Для цього потрібно навчити пристрій <ph name="DEVICE_TYPE" />, як описано нижче.</translation>
 <translation id="3220586366024592812">Відбулося аварійне завершення процесу для функції підключення  <ph name="CLOUD_PRINT_NAME" />. Перезапустити?</translation>
@@ -4544,7 +4542,7 @@
 <translation id="695755122858488207">Невибраний перемикач</translation>
 <translation id="696203921837389374">Увімкнути синхронізацію через мобільний Інтернет</translation>
 <translation id="6964390816189577014">Герой</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="6965648386495488594">Порт</translation>
 <translation id="6965978654500191972">Пристрій</translation>
 <translation id="6969104364835835175">Примусове використання Subzero від PNaCl</translation>
@@ -4621,7 +4619,6 @@
 <translation id="7042418530779813870">Вста&amp;вити та здійснити пошук</translation>
 <translation id="7045480833981818310">Редагування файлів Документів, Таблиць і Презентацій в Office</translation>
 <translation id="7047998246166230966">Курсор</translation>
-<translation id="7048141481140415714">Вмикати й вимикати режим TouchView комбінацією клавіш Ctrl+Alt+Shift+8.</translation>
 <translation id="7049293980323620022">Завантажити файл?</translation>
 <translation id="7051943809462976355">Пошук миші…</translation>
 <translation id="7052237160939977163">Надсилати дані відстеження ефективності</translation>
@@ -5789,7 +5786,6 @@
 <translation id="8632275030377321303">Користувач не може змінювати налаштування проксі.</translation>
 <translation id="8636038761987659075">Увімкнути розділи "Усі сайти" та "Деталі сайту" в налаштуваннях сайту</translation>
 <translation id="8637688295594795546">Доступне оновлення системи. Підготовка до завантаження…</translation>
-<translation id="8638602948366220068">Увімкнути заклик до входу в меню автозаповнення даних кредитної картки</translation>
 <translation id="8639504893694748827">Перетворення в растровий формат ("нуль-копія")</translation>
 <translation id="8639963783467694461">Налаштування автозаповнення</translation>
 <translation id="8642171459927087831">Маркер доступу</translation>
@@ -6224,9 +6220,8 @@
 <translation id="9181716872983600413">Юнікод</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> з домену <ph name="DOWNLOAD_DOMAIN" />, залишилось: <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Під час гортання примусово робити пасивними такі обробники подій: запуск дотиком і переміщення дотиком.</translation>
-<translation id="9184473426683023988">Імпортувати та зв’язати з пристроєм</translation>
 <translation id="9186729806195986201">Також повернутися до попередньої встановленої версії <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
-<translation id="9187651461283037651">Увімкнути віртуальну реальність у Chrome.</translation>
+<translation id="9187651461283037651">Увімкнути Chrome VR.</translation>
 <translation id="9188441292293901223">Щоб розблоковувати цей <ph name="DEVICE_TYPE" />, оновіть свій телефон до останньої версії ОС Android.</translation>
 <translation id="9189690067274055051">Щоб отримати доступ, розблокуйте телефон і розташуйте його ближче до <ph name="DEVICE_TYPE" />.</translation>
 <translation id="9190063653747922532">L2TP/IPSec + Спільний ключ</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 958f4ea..102a475 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -488,7 +488,6 @@
 <translation id="1594234040488055839">Cung cấp khả năng đăng nhập tự động vào các trang của Google bằng tài khoản này</translation>
 <translation id="1596174774107741586">Sử dụng máy chủ hộp cát Google Payments</translation>
 <translation id="1598233202702788831">Quản trị viên của bạn đã tắt bản cập nhật.</translation>
-<translation id="1598604884989842103">Bật UI phóng to TouchView để kiểm tra</translation>
 <translation id="1600857548979126453">Truy cập chương trình phụ trợ trình gỡ lỗi trang</translation>
 <translation id="1601560923496285236">Áp dụng</translation>
 <translation id="1603914832182249871">(Ẩn danh)</translation>
@@ -1762,7 +1761,6 @@
 <translation id="3206175707080061730">Tệp có tên là "$1" đã tồn tại. Bạn có muốn thay thế tệp đó không?</translation>
 <translation id="320825648481311438">Khi được bật, trình duyệt sẽ quản lý quá trình đăng nhập và đăng xuất các tài khoản Google.</translation>
 <translation id="3208703785962634733">Không được xác nhận</translation>
-<translation id="3209459032754159027">Bật hiển thị quảng cáo đăng nhập thẻ tín dụng bên trong menu thả xuống Tự động điền.</translation>
 <translation id="3211904643589960506">Cho phép quét tìm URL từ đối tượng Web trong cuộc sống.</translation>
 <translation id="3216508313927987948">Để thực hiện việc này, bạn cần huấn luyện <ph name="DEVICE_TYPE" /> của mình theo bước sau.</translation>
 <translation id="3220586366024592812">Quy trình của trình kết nối <ph name="CLOUD_PRINT_NAME" /> đã xảy ra lỗi. Khởi động lại?</translation>
@@ -4624,7 +4622,6 @@
 <translation id="7042418530779813870">Dán &amp;và tìm kiếm</translation>
 <translation id="7045480833981818310">Chỉnh sửa Office cho Tài liệu, Trang tính và Trang trình bày</translation>
 <translation id="7047998246166230966">Con trỏ</translation>
-<translation id="7048141481140415714">Bật Ctrl+Alt+Shift+8 để chuyển đối chế độ phóng to TouchView.</translation>
 <translation id="7049293980323620022">Giữ tệp?</translation>
 <translation id="7051943809462976355">Đang tìm kiếm chuột...</translation>
 <translation id="7052237160939977163">Gửi dữ liệu theo dõi hoạt động</translation>
@@ -5792,7 +5789,6 @@
 <translation id="8632275030377321303">Người dùng không thể sửa đổi proxy.</translation>
 <translation id="8636038761987659075">Cài đặt trang web với Tất cả các trang web và Chi tiết trang web</translation>
 <translation id="8637688295594795546">Cập nhật hệ thống có sẵn. Đang chuẩn bị tải xuống…</translation>
-<translation id="8638602948366220068">Bật quảng cáo tính năng tự động điền thông tin đăng nhập thẻ tín dụng</translation>
 <translation id="8639504893694748827">Bộ quét không bản sao</translation>
 <translation id="8639963783467694461">Cài đặt tự động điền</translation>
 <translation id="8642171459927087831">Mã thông báo truy cập</translation>
@@ -6228,7 +6224,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> từ <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">Buộc xử lý thụ động trình xử lý sự kiện di chuyển bằng thao tác chạm đầu tiên mỗi lần cuộn và khởi động bằng thao tác chạm trong khi truyền.</translation>
-<translation id="9184473426683023988">Nhập và liên kết với thiết bị</translation>
 <translation id="9186729806195986201">Đồng thời, quay lại phiên bản được cài đặt trước của <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="9187651461283037651">Bật VR trên Chrome.</translation>
 <translation id="9188441292293901223">Hãy cập nhật điện thoại của bạn lên phiên bản Android mới hơn để mở khóa <ph name="DEVICE_TYPE" /> này.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index d6f75a8..389856e2 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -484,7 +484,6 @@
 <translation id="1594234040488055839">使用此帐号可自动登录到Google网站</translation>
 <translation id="1596174774107741586">使用 Google Payments 沙盒服务器</translation>
 <translation id="1598233202702788831">您的管理员已停用更新。</translation>
-<translation id="1598604884989842103">启用TouchView最大化界面进行测试</translation>
 <translation id="1600857548979126453">访问页面调试程序后端</translation>
 <translation id="1601560923496285236">应用</translation>
 <translation id="1603914832182249871">(隐身)</translation>
@@ -1756,7 +1755,6 @@
 <translation id="3206175707080061730">名为“$1”的文件已存在。要替换它吗?</translation>
 <translation id="320825648481311438">启用此项后,浏览器将管理Google帐号的用户登录和退出。</translation>
 <translation id="3208703785962634733">未确认</translation>
-<translation id="3209459032754159027">允许在“自动填充”下拉列表中显示信用卡登录宣传信息。</translation>
 <translation id="3211904643589960506">启用实物网物件网址扫描功能。</translation>
 <translation id="3216508313927987948">为此,您需要按以下步骤训练 <ph name="DEVICE_TYPE" />。</translation>
 <translation id="3220586366024592812">该 <ph name="CLOUD_PRINT_NAME" /> 连接器进程已崩溃。是否重新启动?</translation>
@@ -3303,7 +3301,7 @@
 <translation id="529175790091471945">将此设备格式化</translation>
 <translation id="5292890015345653304">插入 SD 卡或 USB 记忆棒</translation>
 <translation id="5294529402252479912">立即更新 Adobe Reader</translation>
-<translation id="5297526204711817721">您与此网站建立的不是私密连接。您可以随时取下头戴式设备,然后按“返回”,以退出虚拟实境模式。</translation>
+<translation id="5297526204711817721">您与此网站建立的不是私密连接。您可以随时取下头戴式设备,然后按“返回”,以退出 VR 模式。</translation>
 <translation id="5298219193514155779">主题背景创建者:</translation>
 <translation id="5298363578196989456">“<ph name="IMPORT_NAME" />”扩展程序不是共享模块,因此无法导入。</translation>
 <translation id="5299109548848736476">不跟踪</translation>
@@ -4600,7 +4598,6 @@
 <translation id="7042418530779813870">粘贴并搜索(&amp;S)</translation>
 <translation id="7045480833981818310">Google 文档、表格和幻灯片的 Office 编辑扩展程序</translation>
 <translation id="7047998246166230966">指针</translation>
-<translation id="7048141481140415714">启用通过按Ctrl+Alt+Shift+8切换到TouchView最大化模式。</translation>
 <translation id="7049293980323620022">要保留文件吗?</translation>
 <translation id="7051943809462976355">正在搜索鼠标…</translation>
 <translation id="7052237160939977163">发送性能跟踪数据</translation>
@@ -5759,7 +5756,6 @@
 <translation id="8632275030377321303">该用户无法修改代理。</translation>
 <translation id="8636038761987659075">网站设置(包含所有网站和网站详情)</translation>
 <translation id="8637688295594795546">有系统更新,开始下载...</translation>
-<translation id="8638602948366220068">允许自动填充信用卡登录宣传信息</translation>
 <translation id="8639504893694748827">零副本光栅化处理程序</translation>
 <translation id="8639963783467694461">自动填充设置</translation>
 <translation id="8642171459927087831">访问令牌</translation>
@@ -6136,7 +6132,7 @@
 <translation id="9109122242323516435">要释放空间,请将文件从设备存储空间中删除。</translation>
 <translation id="9110990317705400362">我们在不断寻找各种方式来提高上网安全。之前,任何网站都可以提示您在浏览器中添加扩展程序;而在最新版本的Google Chrome中,您必须明确告诉Chrome您想要安装这些扩展程序(即:在“扩展程序”页添加它们)后才可以。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="9111102763498581341">解锁</translation>
-<translation id="9111296877637560526">启用此选项后,网络应用将可以访问实验性虚拟现实 API。</translation>
+<translation id="9111296877637560526">启用此选项后,网络应用将可以访问实验性虚拟实境 API。</translation>
 <translation id="9111395131601239814"><ph name="NETWORKDEVICE" />:<ph name="STATUS" /></translation>
 <translation id="9112614144067920641">请选择新的 PIN。</translation>
 <translation id="9112748030372401671">更换您的壁纸</translation>
@@ -6194,7 +6190,6 @@
 <translation id="9181716872983600413">Unicode</translation>
 <translation id="9183836083779743117">已从 <ph name="DOWNLOAD_DOMAIN" /> 下载 <ph name="DOWNLOAD_RECEIVED" />,还剩 <ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">强制将滑动过程中的触摸启动和每次滚动的首次触摸移动事件监听器视为被动式。</translation>
-<translation id="9184473426683023988">导入并绑定到设备</translation>
 <translation id="9186729806195986201">同时还原到之前安装的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 版本。</translation>
 <translation id="9187651461283037651">启用 Chrome VR。</translation>
 <translation id="9188441292293901223">您必须将手机更新到更高版本的Android,才能为此<ph name="DEVICE_TYPE" />解锁。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index a37fcce37..4f55aca 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -487,7 +487,6 @@
 <translation id="1594234040488055839">自動使用這個帳戶登入 Google 網站</translation>
 <translation id="1596174774107741586">使用 Google Payments 沙箱伺服器</translation>
 <translation id="1598233202702788831">您的管理員停用了更新功能。</translation>
-<translation id="1598604884989842103">允許 TouchView 最大化 UI 可供測試使用</translation>
 <translation id="1600857548979126453">存取網頁偵錯工具後端</translation>
 <translation id="1601560923496285236">套用</translation>
 <translation id="1603914832182249871">(無痕模式)</translation>
@@ -1760,7 +1759,6 @@
 <translation id="3206175707080061730">名稱為「$1」的檔案已經存在,您要取代這個檔案嗎?</translation>
 <translation id="320825648481311438">啟用後即由瀏覽器管理 Google 帳戶的登入和登出作業。</translation>
 <translation id="3208703785962634733">尚未確認的</translation>
-<translation id="3209459032754159027">允許在 [自動填入] 下拉式選單中顯示信用卡資訊登入宣傳文字。</translation>
 <translation id="3211904643589960506">啟用實體化網路物件網址掃描功能。</translation>
 <translation id="3216508313927987948">如要順利完成這項操作,您必須按照下列步驟訓練 <ph name="DEVICE_TYPE" /> 的辨識能力。</translation>
 <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> 連接器處理程序當掉了,您要重新啟動嗎?</translation>
@@ -1872,7 +1870,7 @@
 <translation id="3341703758641437857">允許存取檔案網址</translation>
 <translation id="3344786168130157628">存取點名稱:</translation>
 <translation id="3345886924813989455">找不到支援的瀏覽器</translation>
-<translation id="3346734205185115290">允許使用虛擬實境耳機瀏覽 (如果適用於這個裝置的話)。</translation>
+<translation id="3346734205185115290">允許使用 VR 耳機瀏覽 (如果適用於這個裝置的話)。</translation>
 <translation id="3347086966102161372">複製圖片位址(&amp;O)</translation>
 <translation id="3348038390189153836">偵測到卸除式裝置</translation>
 <translation id="3348459612390503954">恭喜您</translation>
@@ -3316,7 +3314,7 @@
 <translation id="529175790091471945">格式化這台裝置</translation>
 <translation id="5292890015345653304">請插入 SD 卡或 USB 隨身碟</translation>
 <translation id="5294529402252479912">立即更新 Adobe Reader</translation>
-<translation id="5297526204711817721">你與這個網站之間的連線不是私人連線。你隨時可以摘下頭戴式裝置,然後按下返回鍵退出虛擬實境模式。</translation>
+<translation id="5297526204711817721">你與這個網站之間的連線不是私人連線。你隨時可以摘下頭戴式裝置,然後按下返回鍵退出 VR 模式。</translation>
 <translation id="5298219193514155779">主題製作者</translation>
 <translation id="5298363578196989456">「<ph name="IMPORT_NAME" />」擴充功能不是共用模組,因此無法匯入。</translation>
 <translation id="5299109548848736476">不追蹤</translation>
@@ -4614,7 +4612,6 @@
 <translation id="7042418530779813870">貼上及搜尋(&amp;S)</translation>
 <translation id="7045480833981818310">文件、試算表和簡報的 Office 檔案編輯功能</translation>
 <translation id="7047998246166230966">指標裝置</translation>
-<translation id="7048141481140415714">按下 Ctrl+Alt+Shift+8 鍵即可切換 TouchView 最大化模式。</translation>
 <translation id="7049293980323620022">要保留檔案嗎?</translation>
 <translation id="7051943809462976355">正在搜尋滑鼠...</translation>
 <translation id="7052237160939977163">傳送效能追蹤資料</translation>
@@ -5779,7 +5776,6 @@
 <translation id="8632275030377321303">這位使用者無法修改 Proxy。</translation>
 <translation id="8636038761987659075">提供「所有網站」和「網站詳細資料」的網站設定</translation>
 <translation id="8637688295594795546">可安裝系統更新,正在準備下載…</translation>
-<translation id="8638602948366220068">啟用自動填入信用卡資訊登入宣傳文字</translation>
 <translation id="8639504893694748827">零副本點陣圖轉換器</translation>
 <translation id="8639963783467694461">自動填入設定</translation>
 <translation id="8642171459927087831">存取憑證</translation>
@@ -6214,9 +6210,8 @@
 <translation id="9181716872983600413">萬國碼 (Unicode)</translation>
 <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> (來源網域:<ph name="DOWNLOAD_DOMAIN" />),<ph name="TIME_LEFT" /></translation>
 <translation id="9184146175870444618">使用者快速滑動螢幕時,強制以被動方式來判定各捲動事件監聽器的觸控啟動和最初觸控移動手勢。</translation>
-<translation id="9184473426683023988">匯入並繫結至裝置</translation>
 <translation id="9186729806195986201">一併還原至先前安裝的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 版本。</translation>
-<translation id="9187651461283037651">啟用 Chrome 虛擬實境。</translation>
+<translation id="9187651461283037651">啟用 Chrome VR。</translation>
 <translation id="9188441292293901223">您必須將手機更新至較新的 Android 版本,才能為這台 <ph name="DEVICE_TYPE" /> 解鎖。</translation>
 <translation id="9189690067274055051">解除手機的鎖定狀態,並且讓您的手機與 <ph name="DEVICE_TYPE" /> 更靠近,即可進入解鎖模式。</translation>
 <translation id="9190063653747922532">L2TP/IPsec + 預先共用金鑰</translation>
diff --git a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
index 6fe2fb7d..3142516 100644
--- a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
+++ b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
@@ -339,12 +339,18 @@
     return;
   }
 
+  const extensions::Extension* primary_app = GetPrimaryAppExtension();
+  if (primary_app && !extensions::KioskModeInfo::IsKioskEnabled(primary_app)) {
+    OnLaunchFailure(KioskAppLaunchError::NOT_KIOSK_ENABLED);
+    return;
+  }
+
   if (DidPrimaryOrSecondaryAppFailedToInstall(success, extension_id)) {
     OnLaunchFailure(KioskAppLaunchError::UNABLE_TO_INSTALL);
     return;
   }
 
-  if (GetPrimaryAppExtension()) {
+  if (primary_app) {
     if (!secondary_apps_installed_)
       MaybeInstallSecondaryApps();
     else
@@ -508,13 +514,21 @@
     return;
   }
 
-  if (GetPrimaryAppExtension()) {
-    // Install secondary apps.
-    MaybeInstallSecondaryApps();
-  } else {
+  const extensions::Extension* primary_app = GetPrimaryAppExtension();
+  if (!primary_app) {
     // The extension is skipped for installation due to some error.
     OnLaunchFailure(KioskAppLaunchError::UNABLE_TO_INSTALL);
+    return;
   }
+
+  if (!extensions::KioskModeInfo::IsKioskEnabled(primary_app)) {
+    // The installed primary app is not kiosk enabled.
+    OnLaunchFailure(KioskAppLaunchError::NOT_KIOSK_ENABLED);
+    return;
+  }
+
+  // Install secondary apps.
+  MaybeInstallSecondaryApps();
 }
 
 void StartupAppLauncher::MaybeInstallSecondaryApps() {
diff --git a/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc b/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc
index 703174e8..bd0f9969 100644
--- a/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc
@@ -17,6 +17,7 @@
 #include "base/values.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/chromeos/app_mode/fake_cws.h"
+#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
 #include "chrome/browser/chromeos/login/app_launch_controller.h"
 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h"
@@ -37,6 +38,7 @@
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
 #include "content/public/browser/notification_service.h"
+#include "content/public/test/test_utils.h"
 #include "extensions/browser/app_window/app_window.h"
 #include "extensions/browser/app_window/app_window_registry.h"
 #include "extensions/browser/app_window/native_app_window.h"
@@ -57,6 +59,12 @@
 //       detail/ggbflgnkafappblpkiflbgpmkfdpnhhe
 const char kTestKioskApp[] = "ggbflgnkafappblpkiflbgpmkfdpnhhe";
 
+// This is a simple test that only sends an extension message when app launch is
+// requested. Webstore data json is in
+//   chrome/test/data/chromeos/app_mode/webstore/inlineinstall/
+//       detail/mogpelihofihkjnkkfkcchbkchggmcld
+const char kTestNonKioskEnabledApp[] = "mogpelihofihkjnkkfkcchbkchggmcld";
+
 const char kTestAccountId[] = "enterprise-kiosk-app@localhost";
 
 const char kSessionManagerStateCache[] = "test_session_manager_state.json";
@@ -264,6 +272,8 @@
 
   ~AutoLaunchedKioskTest() override = default;
 
+  virtual std::string GetTestAppId() const { return kTestKioskApp; }
+
   void SetUp() override {
     ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
     AppLaunchController::SkipSplashWaitForTesting();
@@ -273,8 +283,7 @@
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
     fake_cws_->Init(embedded_test_server());
-    fake_cws_->SetUpdateCrx(kTestKioskApp, std::string(kTestKioskApp) + ".crx",
-                            "1.0.0");
+    fake_cws_->SetUpdateCrx(GetTestAppId(), GetTestAppId() + ".crx", "1.0.0");
     ExtensionApiTest::SetUpCommandLine(command_line);
   }
 
@@ -344,7 +353,7 @@
         device_local_accounts->add_account();
     account->set_account_id(kTestAccountId);
     account->set_type(em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_KIOSK_APP);
-    account->mutable_kiosk_app()->set_app_id(kTestKioskApp);
+    account->mutable_kiosk_app()->set_app_id(GetTestAppId());
 
     device_local_accounts->set_auto_login_id(kTestAccountId);
 
@@ -479,4 +488,42 @@
   ASSERT_TRUE(CloseAppWindow(kTestKioskApp));
 }
 
+// Used to test app auto-launch flow when the launched app is not kiosk enabled.
+class AutoLaunchedNonKioskEnabledAppTest : public AutoLaunchedKioskTest {
+ public:
+  AutoLaunchedNonKioskEnabledAppTest() {}
+  ~AutoLaunchedNonKioskEnabledAppTest() override = default;
+
+  std::string GetTestAppId() const override { return kTestNonKioskEnabledApp; }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(AutoLaunchedNonKioskEnabledAppTest);
+};
+
+IN_PROC_BROWSER_TEST_F(AutoLaunchedNonKioskEnabledAppTest, NotLaunched) {
+  // Verify that Chrome hasn't already exited, e.g. in order to apply user
+  // session flags.
+  ASSERT_FALSE(termination_observer_->terminated());
+
+  EXPECT_TRUE(IsKioskAppAutoLaunched(kTestNonKioskEnabledApp));
+
+  ExtensionTestMessageListener listener("launchRequested", false);
+
+  content::WindowedNotificationObserver termination_waiter(
+      chrome::NOTIFICATION_APP_TERMINATING,
+      content::NotificationService::AllSources());
+
+  // Set up default network connections, so tests think the device is online.
+  DBusThreadManager::Get()
+      ->GetShillManagerClient()
+      ->GetTestInterface()
+      ->SetupDefaultEnvironment();
+
+  // App launch should be canceled, and user session stopped.
+  termination_waiter.Wait();
+
+  EXPECT_FALSE(listener.was_satisfied());
+  EXPECT_EQ(KioskAppLaunchError::NOT_KIOSK_ENABLED, KioskAppLaunchError::Get());
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/preloaded_web_view.cc b/chrome/browser/chromeos/login/ui/preloaded_web_view.cc
index 7fd39ebc..a34f2c5 100644
--- a/chrome/browser/chromeos/login/ui/preloaded_web_view.cc
+++ b/chrome/browser/chromeos/login/ui/preloaded_web_view.cc
@@ -43,6 +43,17 @@
 
 std::unique_ptr<views::WebView> PreloadedWebView::TryTake() {
   idle_detector_.reset();
+
+  // Clear cached reference if it is no longer valid (ie, destroyed in task
+  // manager).
+  if (preloaded_instance_ &&
+      !preloaded_instance_->GetWebContents()
+           ->GetRenderViewHost()
+           ->GetWidget()
+           ->GetView()) {
+    preloaded_instance_.reset();
+  }
+
   return std::move(preloaded_instance_);
 }
 
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc
index e5490fd3..1fad3cd 100644
--- a/chrome/browser/extensions/extension_browsertest.cc
+++ b/chrome/browser/extensions/extension_browsertest.cc
@@ -407,7 +407,6 @@
   ExtensionService* service =
       extensions::ExtensionSystem::Get(profile())->extension_service();
   ExtensionRegistry* registry = ExtensionRegistry::Get(profile());
-  service->set_show_extensions_prompts(false);
   size_t num_before = registry->enabled_extensions().size();
 
   {
diff --git a/chrome/browser/extensions/extension_functional_browsertest.cc b/chrome/browser/extensions/extension_functional_browsertest.cc
index 120418c..c06b5c4 100644
--- a/chrome/browser/extensions/extension_functional_browsertest.cc
+++ b/chrome/browser/extensions/extension_functional_browsertest.cc
@@ -24,7 +24,6 @@
  public:
   void InstallExtensionSilently(ExtensionService* service,
                                 const char* filename) {
-    service->set_show_extensions_prompts(false);
     ExtensionRegistry* registry = ExtensionRegistry::Get(profile());
     size_t num_before = registry->enabled_extensions().size();
 
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
index e9c4478..de611b0 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -264,7 +264,6 @@
         base::CommandLine::ForCurrentProcess(), extensions_install_dir, false);
     extension_service_ = extension_system->Get(profile())->extension_service();
     extension_service_->set_extensions_enabled(true);
-    extension_service_->set_show_extensions_prompts(false);
 
     // Create GCMProfileService that talks with fake GCMClient.
     gcm::GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse(
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index ace3a8e..c7cfa90e 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -391,11 +391,6 @@
     return &delayed_installs_;
   }
 
-  bool show_extensions_prompts() const { return show_extensions_prompts_; }
-  void set_show_extensions_prompts(bool show_extensions_prompts) {
-    show_extensions_prompts_ = show_extensions_prompts;
-  }
-
   Profile* profile() { return profile_; }
 
   // Note that this may return NULL if autoupdate is not turned on.
@@ -638,9 +633,6 @@
   // Whether or not extensions are enabled.
   bool extensions_enabled_ = true;
 
-  // Whether to notify users when they attempt to install an extension.
-  bool show_extensions_prompts_ = true;
-
   // Signaled when all extensions are loaded.
   extensions::OneShotEvent* const ready_;
 
diff --git a/chrome/browser/extensions/extension_service_test_base.cc b/chrome/browser/extensions/extension_service_test_base.cc
index 182b4675..5079054 100644
--- a/chrome/browser/extensions/extension_service_test_base.cc
+++ b/chrome/browser/extensions/extension_service_test_base.cc
@@ -323,7 +323,6 @@
   service_->SetFileTaskRunnerForTesting(
       base::ThreadTaskRunnerHandle::Get().get());
   service_->set_extensions_enabled(true);
-  service_->set_show_extensions_prompts(false);
   service_->component_loader()->set_ignore_whitelist_for_testing(true);
 
   // When we start up, we want to make sure there is no external provider,
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 2b7ba6f..240f6275 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -2681,7 +2681,6 @@
 
   InitPluginService();
   InitializeEmptyExtensionService();
-  service()->set_show_extensions_prompts(true);
 
   // Start by canceling any install prompts.
   std::unique_ptr<extensions::ScopedTestDialogAutoConfirm> auto_confirm(
diff --git a/chrome/browser/extensions/global_shortcut_listener_chromeos.cc b/chrome/browser/extensions/global_shortcut_listener_chromeos.cc
index 124df83..900dccd0e 100644
--- a/chrome/browser/extensions/global_shortcut_listener_chromeos.cc
+++ b/chrome/browser/extensions/global_shortcut_listener_chromeos.cc
@@ -48,7 +48,7 @@
     return false;
 
   // TODO(dtseng): Support search key mapping.
-  controller->Register(accelerator, this);
+  controller->Register({accelerator}, this);
   return controller->IsRegistered(accelerator);
 }
 
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc
index 4205e96..02e59d90 100644
--- a/chrome/browser/extensions/unpacked_installer.cc
+++ b/chrome/browser/extensions/unpacked_installer.cc
@@ -191,7 +191,7 @@
 
   const ExtensionSet& disabled_extensions =
       ExtensionRegistry::Get(service_weak_->profile())->disabled_extensions();
-  if (service_weak_->show_extensions_prompts() && prompt_for_plugins_ &&
+  if (prompt_for_plugins_ &&
       PluginInfo::HasPlugins(extension()) &&
       !disabled_extensions.Contains(extension()->id())) {
     SimpleExtensionLoadPrompt* prompt = new SimpleExtensionLoadPrompt(
diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc
index 205f05a..95b1697 100644
--- a/chrome/browser/extensions/updater/extension_updater_unittest.cc
+++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc
@@ -1505,7 +1505,6 @@
     ExtensionService* extension_service =
         ExtensionSystem::Get(&profile)->extension_service();
     extension_service->set_extensions_enabled(true);
-    extension_service->set_show_extensions_prompts(false);
 
     scoped_refptr<CrxInstaller> fake_crx1(
         CrxInstaller::CreateSilent(extension_service));
diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.cc b/chrome/browser/media/router/presentation_service_delegate_impl.cc
index 511052a..78f9a4a 100644
--- a/chrome/browser/media/router/presentation_service_delegate_impl.cc
+++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc
@@ -120,9 +120,13 @@
 // Used by PresentationServiceDelegateImpl to manage
 // listeners and default presentation info in a render frame.
 // Its lifetime:
-//  * PresentationFrameManager AddDelegateObserver
-//  * Reset 0+ times.
-//  * PresentationFrameManager.RemoveDelegateObserver.
+//  * Create an instance with |render_frame_host_id_| if no instance with the
+//    same |render_frame_host_id_| exists in:
+//      PresentationFrameManager::OnPresentationSessionStarted
+//      PresentationFrameManager::OnDefaultPresentationSessionStarted
+//      PresentationFrameManager::SetScreenAvailabilityListener
+//  * Destroy the instance in:
+//      PresentationFrameManager::Reset
 class PresentationFrame {
  public:
   PresentationFrame(const RenderFrameHostId& render_frame_host_id,
@@ -158,10 +162,6 @@
       const MediaRoute& route);
   void OnPresentationServiceDelegateDestroyed() const;
 
-  void set_delegate_observer(DelegateObserver* observer) {
-    delegate_observer_ = observer;
-  }
-
  private:
   MediaSource GetMediaSourceFromListener(
       content::PresentationScreenAvailabilityListener* listener) const;
@@ -184,8 +184,6 @@
   // References to the owning WebContents, and the corresponding MediaRouter.
   content::WebContents* web_contents_;
   MediaRouter* router_;
-
-  DelegateObserver* delegate_observer_;
 };
 
 PresentationFrame::PresentationFrame(
@@ -467,9 +465,7 @@
     const PresentationRequest& request,
     const content::PresentationSessionInfo& session,
     const MediaRoute& route) {
-  const auto it = presentation_frames_.find(request.render_frame_host_id());
-  if (it != presentation_frames_.end())
-    it->second->OnPresentationSessionStarted(session, route);
+  OnPresentationSessionStarted(request.render_frame_host_id(), session, route);
 
   if (default_presentation_request_ &&
       default_presentation_request_->Equals(request)) {
@@ -576,8 +572,10 @@
 void PresentationFrameManager::Reset(
     const RenderFrameHostId& render_frame_host_id) {
   const auto it = presentation_frames_.find(render_frame_host_id);
-  if (it != presentation_frames_.end())
+  if (it != presentation_frames_.end()) {
     it->second->Reset();
+    presentation_frames_.erase(it);
+  }
 
   if (default_presentation_request_ &&
       render_frame_host_id ==
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 c2d06b3..1f3163a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">የተጎበኘ አገናኝ</translation>
 <translation id="3232388865800379423">ብቅ-ባይ አዝራር</translation>
-<translation id="323731244387692321">የChromeVox ቁልፍ ሰሌዳ እገዛ</translation>
 <translation id="3241052487511142956">ቀዳሚ የተጎበኘ አገናኝ</translation>
 <translation id="3286390186030710347">ተንሸራታች</translation>
 <translation id="3299925995433437805">ምንም ቀጣይ የተጎበኘ አገናኝ የለም።</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 3c3f70a..5e4f039 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">الرابط الذي تم الانتقال إليه</translation>
 <translation id="3232388865800379423">زر بقائمة منبثقة</translation>
-<translation id="323731244387692321">‏فتح مساعدة لوحة مفاتيح ChromeVox</translation>
 <translation id="3241052487511142956">الرابط السابق الذي تمّ الانتقال إليه</translation>
 <translation id="3286390186030710347">شريط تمرير</translation>
 <translation id="3299925995433437805">ليس هناك رابط تالٍ تم الانتقال إليه.</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 6ad6976..b154383 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Посетена връзка</translation>
 <translation id="3232388865800379423">Бутон с изскачащ прозорец</translation>
-<translation id="323731244387692321">Отваряне на помощта за клавиатурата за ChromeVox</translation>
 <translation id="3241052487511142956">Предишна посетена връзка</translation>
 <translation id="3286390186030710347">Плъзгач</translation>
 <translation id="3299925995433437805">Няма следваща посетена връзка.</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 ce07380..98ae758 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">ঘুরে দেখা লিঙ্ক</translation>
 <translation id="3232388865800379423">একটি পপ আপ বোতাম</translation>
-<translation id="323731244387692321">ChromeVox সহায়তা খুলুন</translation>
 <translation id="3241052487511142956">পূর্ববর্তী ঘুরে দেখা লিঙ্ক</translation>
 <translation id="3286390186030710347">স্লাইডার</translation>
 <translation id="3299925995433437805">কোনো পরবর্তী ঘুরে দেখা লিঙ্ক নেই</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 5dba255..a406736 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Enllaç visitat</translation>
 <translation id="3232388865800379423">Un botó emergent</translation>
-<translation id="323731244387692321">Obre l'ajuda del teclat ChromeVox</translation>
 <translation id="3241052487511142956">Enllaç visitat anterior</translation>
 <translation id="3286390186030710347">Control lliscant</translation>
 <translation id="3299925995433437805">No hi ha cap enllaç visitat següent.</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 3820f2a..e691891 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">zaškrt pol</translation>
 <translation id="3229375994964697375">Navštívený odkaz</translation>
 <translation id="3232388865800379423">Tlačítko s vyskakovacím oknem</translation>
-<translation id="323731244387692321">Otevřít nápovědu klávesnice ChromeVox</translation>
 <translation id="3241052487511142956">Předchozí navštívený odkaz</translation>
 <translation id="3286390186030710347">Posuvník</translation>
 <translation id="3299925995433437805">Žádný další navštívený odkaz není.</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 b5179fc..db91c36 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Besøgt link</translation>
 <translation id="3232388865800379423">En pop op-knap</translation>
-<translation id="323731244387692321">Åbn Hjælp til ChromeVox-tastatur</translation>
 <translation id="3241052487511142956">Tidligere besøgt link</translation>
 <translation id="3286390186030710347">Skyder</translation>
 <translation id="3299925995433437805">Intet næste besøgte link.</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 650da9a..34ddd84 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Besuchter Link</translation>
 <translation id="3232388865800379423">Eine Pop-up-Schaltfläche</translation>
-<translation id="323731244387692321">ChromeVox-Tastaturhilfe öffnen</translation>
 <translation id="3241052487511142956">Vorheriger besuchter Link</translation>
 <translation id="3286390186030710347">Schieberegler</translation>
 <translation id="3299925995433437805">Kein nächster besuchter Link</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 ddebd160..c3acef2b 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">πλαίσιο επιλογής ρόλου</translation>
 <translation id="3229375994964697375">Σύνδεσμος που έχετε επισκεφτεί</translation>
 <translation id="3232388865800379423">Ένα αναδυόμενο κουμπί</translation>
-<translation id="323731244387692321">Άνοιγμα βοήθειας πληκτρολογίου του ChromeVox</translation>
 <translation id="3241052487511142956">Προηγούμενος σύνδεσμος που έχετε επισκεφτεί</translation>
 <translation id="3286390186030710347">Ρυθμιστικό</translation>
 <translation id="3299925995433437805">Δεν υπάρχει επόμενος σύνδεσμος που έχετε επισκεφτεί.</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 8688f92..a9467dd 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Visited link</translation>
 <translation id="3232388865800379423">A pop-up button</translation>
-<translation id="323731244387692321">Open ChromeVox keyboard help</translation>
 <translation id="3241052487511142956">Previous visited link</translation>
 <translation id="3286390186030710347">Slider</translation>
 <translation id="3299925995433437805">No next visited link.</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 789f1494c..5153748 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Vínculo visitado</translation>
 <translation id="3232388865800379423">Un botón con ventana emergente</translation>
-<translation id="323731244387692321">Abrir ayuda de teclado de ChromeVox</translation>
 <translation id="3241052487511142956">Vínculo visitado anterior</translation>
 <translation id="3286390186030710347">Control deslizante</translation>
 <translation id="3299925995433437805">No hay ningún vínculo visitado posterior.</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 f7e9b230d..1996b94e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Vínculo visitado</translation>
 <translation id="3232388865800379423">Un botón emergente</translation>
-<translation id="323731244387692321">Abre la ayuda del teclado de ChromeVox</translation>
 <translation id="3241052487511142956">Anterior enlace visitado</translation>
 <translation id="3286390186030710347">Control deslizante</translation>
 <translation id="3299925995433437805">No hay ningún enlace siguiente visitado.</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 772fa84..a3054b9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Külastatud link</translation>
 <translation id="3232388865800379423">Hüpiknupp</translation>
-<translation id="323731244387692321">ChromeVoxi klaviatuuri abi avamine</translation>
 <translation id="3241052487511142956">Eelmine külastatud link</translation>
 <translation id="3286390186030710347">Liugur</translation>
 <translation id="3299925995433437805">Järgmist külastatud linki pole.</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 0fe9351..7672ed7 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">پیوند بازدیدشده</translation>
 <translation id="3232388865800379423">دکمه بازشو</translation>
-<translation id="323731244387692321">‏باز کردن راهنمای صفحه‌کلید ChromeVox</translation>
 <translation id="3241052487511142956">پیوند بازدید شده قبلی</translation>
 <translation id="3286390186030710347">اسلایدر</translation>
 <translation id="3299925995433437805">پیوند بازدید شده بعدی وجود ندارد.</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 0c06cf6..ba8caa677 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Käyty linkki</translation>
 <translation id="3232388865800379423">Ponnahduspainike</translation>
-<translation id="323731244387692321">Avaa ChromeVox-näppäimistöohje</translation>
 <translation id="3241052487511142956">Edellinen käyty linkki</translation>
 <translation id="3286390186030710347">Liukusäädin</translation>
 <translation id="3299925995433437805">Ei seuraavia käytyjä linkkejä.</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 4095c57..4a1d7933 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Nabisita nang link</translation>
 <translation id="3232388865800379423">Isang pop up na button</translation>
-<translation id="323731244387692321">Buksan ang tulong sa keyboard ng ChromeVox</translation>
 <translation id="3241052487511142956">Nakaraang binisitang link</translation>
 <translation id="3286390186030710347">Slider</translation>
 <translation id="3299925995433437805">Walang sunod na binisitang link.</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 f10a74b..0a7ebad 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Lien consulté</translation>
 <translation id="3232388865800379423">Un bouton de fenêtre pop-up</translation>
-<translation id="323731244387692321">Ouvrir l'aide du clavier ChromeVox</translation>
 <translation id="3241052487511142956">Lien consulté précédent</translation>
 <translation id="3286390186030710347">Curseur</translation>
 <translation id="3299925995433437805">Aucun lien consulté suivant.</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 f0f3516..75ca7eeb 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">મુલાકાત લીધેલી લિંક</translation>
 <translation id="3232388865800379423">પોપ અપ બટન</translation>
-<translation id="323731244387692321">ChromeVox કીબોર્ડ સહાય ખોલો</translation>
 <translation id="3241052487511142956">પહેલાંની મુલાકાત લીધેલી લિંક</translation>
 <translation id="3286390186030710347">સ્લાઇડર</translation>
 <translation id="3299925995433437805">કોઈ આગલી મુલાકાત લીધેલી લિંક નથી.</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 57112b2a..fd92d29 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">देखा गया लिंक</translation>
 <translation id="3232388865800379423">पॉप-अप बटन</translation>
-<translation id="323731244387692321">ChromeVox कीबोर्ड सहायता खोलें</translation>
 <translation id="3241052487511142956">पहले देखा गया लिंक</translation>
 <translation id="3286390186030710347">स्लाइडर</translation>
 <translation id="3299925995433437805">बाद में देखा गया कोई लिंक नहीं.</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 6bd53d3..2bb0e867 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">ptvrd</translation>
 <translation id="3229375994964697375">Posjećena veza</translation>
 <translation id="3232388865800379423">Gumb skočnog prozora</translation>
-<translation id="323731244387692321">Otvori tipkovničku pomoć za ChromeVox</translation>
 <translation id="3241052487511142956">Prethodna posjećena veza</translation>
 <translation id="3286390186030710347">Klizač</translation>
 <translation id="3299925995433437805">Nema sljedeće posjećene veze.</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 92d3a78..22ca058 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">jelölőnégyzet</translation>
 <translation id="3229375994964697375">Felkeresett link</translation>
 <translation id="3232388865800379423">Előugró gomb</translation>
-<translation id="323731244387692321">A ChromeVox billentyűzettel kapcsolatos súgójának megnyitása</translation>
 <translation id="3241052487511142956">Előző felkeresett link</translation>
 <translation id="3286390186030710347">Csúszka</translation>
 <translation id="3299925995433437805">Nincs következő felkeresett link.</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 beef37d..48eb7be1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Tautan yang dikunjungi</translation>
 <translation id="3232388865800379423">Tombol pop-up</translation>
-<translation id="323731244387692321">Membuka bantuan keyboard ChromeVox</translation>
 <translation id="3241052487511142956">Tautan yang dikunjungi sebelumnya</translation>
 <translation id="3286390186030710347">Penggeser</translation>
 <translation id="3299925995433437805">Tidak ada tautan yang dikunjungi selanjutnya.</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 abbaebee..8172af2c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Link visitato</translation>
 <translation id="3232388865800379423">Un pulsante popup</translation>
-<translation id="323731244387692321">Apri la guida della tastiera di ChromeVox</translation>
 <translation id="3241052487511142956">Link visitato precedente</translation>
 <translation id="3286390186030710347">Dispositivo di scorrimento</translation>
 <translation id="3299925995433437805">Nessun link visitato successivo.</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 e51498e..9912ec9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">קישור שהפעלת</translation>
 <translation id="3232388865800379423">לחצן קופץ</translation>
-<translation id="323731244387692321">‏פתח את העזרה של מקלדת ChromeVox</translation>
 <translation id="3241052487511142956">הקישור הקודם שבו ביקרת</translation>
 <translation id="3286390186030710347">מחוון</translation>
 <translation id="3299925995433437805">אין עוד קישורים שבהם ביקרת.</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 1279a4a..d5a261a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">チェックボックス</translation>
 <translation id="3229375994964697375">アクセス済みのリンク</translation>
 <translation id="3232388865800379423">ポップアップ ボタン</translation>
-<translation id="323731244387692321">ChromeVox キーボード ヘルプを開く</translation>
 <translation id="3241052487511142956">前にアクセスしたリンク</translation>
 <translation id="3286390186030710347">スライダ</translation>
 <translation id="3299925995433437805">次にアクセスしたリンクはありません。</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 fe7e50c3..3916bb0c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">ಭೇಟಿ ನೀಡಿದ ಲಿಂಕ್</translation>
 <translation id="3232388865800379423">ಪಾಪ್-ಅಪ್ ಬಟನ್</translation>
-<translation id="323731244387692321">ChromeVox ಕೀಬೋರ್ಡ್ ಸಹಾಯವನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="3241052487511142956">ಹಿಂದಿನ ಭೇಟಿ ನೀಡಿದ ಲಿಂಕ್</translation>
 <translation id="3286390186030710347">ಸ್ಲೈಡರ್</translation>
 <translation id="3299925995433437805">ಮುಂದೆ ಯಾವುದೇ ಭೇಟಿ ನೀಡಿದ ಲಿಂಕ್ ಇಲ್ಲ.</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 5d0e188..b058004 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">방문한 링크입니다.</translation>
 <translation id="3232388865800379423">팝업 버튼</translation>
-<translation id="323731244387692321">ChromeVox 키보드 도움말 열기</translation>
 <translation id="3241052487511142956">이전 방문한 링크</translation>
 <translation id="3286390186030710347">슬라이더</translation>
 <translation id="3299925995433437805">다음 방문한 링크가 없습니다.</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 62b73e5bc..606e758 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Nuoroda, kuria apsilankyta</translation>
 <translation id="3232388865800379423">Iššokantysis mygtukas</translation>
-<translation id="323731244387692321">Atidaryti „ChromeVox“ klaviatūros pagalbą</translation>
 <translation id="3241052487511142956">Ankstesnė aplankyta nuoroda</translation>
 <translation id="3286390186030710347">Šliaužiklis</translation>
 <translation id="3299925995433437805">Nėra kitos aplankytos nuorodos.</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 150e615..b36dc74 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">izvēles rūtiņa</translation>
 <translation id="3229375994964697375">Apmeklēta saite</translation>
 <translation id="3232388865800379423">Uznirstoša poga</translation>
-<translation id="323731244387692321">Atvērt ChromeVox tastatūras palīdzību</translation>
 <translation id="3241052487511142956">Iepriekšējā apmeklētā saite</translation>
 <translation id="3286390186030710347">Slīdnis</translation>
 <translation id="3299925995433437805">Tālāk nav nevienas apmeklētās saites.</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 bce39dc..99692d7 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">സന്ദർശിച്ച ലിങ്ക്</translation>
 <translation id="3232388865800379423">ഒരു പോപ്പ് അപ്പ് ബട്ടൺ</translation>
-<translation id="323731244387692321">ChromeVox കീ‌ബോർഡ് സഹായം തുറക്കുക</translation>
 <translation id="3241052487511142956">സന്ദർശിച്ച മുമ്പത്തെ ലിങ്ക്</translation>
 <translation id="3286390186030710347">സ്ലൈഡർ</translation>
 <translation id="3299925995433437805">സന്ദർശിച്ച അടുത്ത ലിങ്കൊന്നുമില്ല.</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 03e648d3..1a6f4f6 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
@@ -218,7 +218,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">भेट दिलेला दुवा</translation>
 <translation id="3232388865800379423">एक पॉप अप बटण</translation>
-<translation id="323731244387692321">ChromeVox कीबोर्ड मदत उघडा</translation>
 <translation id="3241052487511142956">मागील भेट दिलेला दुवा</translation>
 <translation id="3286390186030710347">स्‍लायडर</translation>
 <translation id="3299925995433437805">पुढील भेट दिलेला दुवा नाही.</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 2cdade1..017990089 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Pautan yang dilawati</translation>
 <translation id="3232388865800379423">Butang timbul</translation>
-<translation id="323731244387692321">Buka bantuan papan kekunci ChromeVox</translation>
 <translation id="3241052487511142956">Pautan yang dilawati sebelumnya</translation>
 <translation id="3286390186030710347">Peluncur</translation>
 <translation id="3299925995433437805">Tiada pautan yang dilawati seterusnya.</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 6c4c23f..c268f6a4 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Bezochte link</translation>
 <translation id="3232388865800379423">Een pop-upknop</translation>
-<translation id="323731244387692321">Help voor ChromeVox-toetsenbord openen</translation>
 <translation id="3241052487511142956">Vorige bezochte link</translation>
 <translation id="3286390186030710347">Schuifregelaar</translation>
 <translation id="3299925995433437805">Geen volgende bezochte link.</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 bdf2d58..6b80808 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Besøkt link.</translation>
 <translation id="3232388865800379423">En forgrunnsknapp</translation>
-<translation id="323731244387692321">Åpne tastaturhjelp for ChromeVox</translation>
 <translation id="3241052487511142956">Tidligere besøkt link</translation>
 <translation id="3286390186030710347">Glidebryter</translation>
 <translation id="3299925995433437805">Ingen neste besøkte link.</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 cb5dc2b..8bdc2a2 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Kliknięty link</translation>
 <translation id="3232388865800379423">Przycisk wyskakującego okienka</translation>
-<translation id="323731244387692321">Otwórz pomoc do klawiatury ChromeVox</translation>
 <translation id="3241052487511142956">Poprzedni kliknięty link</translation>
 <translation id="3286390186030710347">Suwak</translation>
 <translation id="3299925995433437805">Brak następnego klikniętego linku.</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 e37871c..592c26e 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Link visitado</translation>
 <translation id="3232388865800379423">Um botão pop-up</translation>
-<translation id="323731244387692321">Abrir ajuda de teclado do ChromeVox</translation>
 <translation id="3241052487511142956">Link anterior visitado</translation>
 <translation id="3286390186030710347">Slide</translation>
 <translation id="3299925995433437805">Não há próximo link visitado.</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 99ab746..900c738 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Link visitado</translation>
 <translation id="3232388865800379423">Um botão pop-up</translation>
-<translation id="323731244387692321">Abrir ajuda do teclado do ChromeVox</translation>
 <translation id="3241052487511142956">Link visitado anterior</translation>
 <translation id="3286390186030710347">Controlo de deslize</translation>
 <translation id="3299925995433437805">Não existe nenhum link visitado seguinte.</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 b1f44306..7bed2d8 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">casetă de selectare</translation>
 <translation id="3229375994964697375">Link accesat</translation>
 <translation id="3232388865800379423">Un buton pop-up</translation>
-<translation id="323731244387692321">Deschideți ajutorul pentru tastatură ChromeVox</translation>
 <translation id="3241052487511142956">Link accesat anterior</translation>
 <translation id="3286390186030710347">Glisor</translation>
 <translation id="3299925995433437805">Nu există un link accesat următor.</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 5d231988..24934460 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Посещенная ссылка</translation>
 <translation id="3232388865800379423">Всплывающая кнопка</translation>
-<translation id="323731244387692321">Открыть справку о горячих клавишах ChromeVox</translation>
 <translation id="3241052487511142956">Перейти к предыдущей открытой ссылке</translation>
 <translation id="3286390186030710347">Ползунок</translation>
 <translation id="3299925995433437805">Следующей открытой ссылки нет.</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 a3b98ad6..672fb1ea 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Navštívený odkaz</translation>
 <translation id="3232388865800379423">Kontextové tlačidlo</translation>
-<translation id="323731244387692321">Otvoriť pomocníka pre klávesnicu rozšírenia ChromeVox</translation>
 <translation id="3241052487511142956">Predchádzajúci navštívený odkaz</translation>
 <translation id="3286390186030710347">Posuvník</translation>
 <translation id="3299925995433437805">Žiadny ďalší navštívený odkaz</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 f3d52f67..b3719bc 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">ptp</translation>
 <translation id="3229375994964697375">Obiskana povezava</translation>
 <translation id="3232388865800379423">Pojavni gumb</translation>
-<translation id="323731244387692321">Odpiranje pomoči za tipkovnico ChromeVox</translation>
 <translation id="3241052487511142956">Prejšnja obiskana povezava</translation>
 <translation id="3286390186030710347">Drsnik</translation>
 <translation id="3299925995433437805">Ni naslednje obiskane povezave</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 a695964..c1437451 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">поље за потврду</translation>
 <translation id="3229375994964697375">Посећени линк</translation>
 <translation id="3232388865800379423">Искачуће дугме</translation>
-<translation id="323731244387692321">Отварање помоћи за ChromeVox тастатуру</translation>
 <translation id="3241052487511142956">Претходни посећени линк</translation>
 <translation id="3286390186030710347">Клизач</translation>
 <translation id="3299925995433437805">Нема следећег посећеног линка.</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 2e41ed42..9ea4925 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">kryssruta</translation>
 <translation id="3229375994964697375">Besökt länk</translation>
 <translation id="3232388865800379423">En popup-knapp</translation>
-<translation id="323731244387692321">Öppna tangentbordshjälpen för ChromeVox</translation>
 <translation id="3241052487511142956">Föregående länk som har besökts</translation>
 <translation id="3286390186030710347">Skjutreglage</translation>
 <translation id="3299925995433437805">Det finns inga fler länkar som har besökts.</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 163b1ea..7d92ad0e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
@@ -218,7 +218,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Kiungo kilichotembelewa</translation>
 <translation id="3232388865800379423">Kitufe ibukizi</translation>
-<translation id="323731244387692321">Fungua usaidizi wa kibodi wa ChromeVox</translation>
 <translation id="3241052487511142956">Kiungo kilichotembelewa kilichotangulia</translation>
 <translation id="3286390186030710347">Kitelezi</translation>
 <translation id="3299925995433437805">Hakuna kiungo kilichotembelewa kinachofuata.</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 cce0561..fcb6914a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">பார்வையிட்ட இணைப்பு</translation>
 <translation id="3232388865800379423">பாப் அப் பொத்தான்</translation>
-<translation id="323731244387692321">ChromeVox விசைப்பலகை உதவியைத் திற</translation>
 <translation id="3241052487511142956">முந்தையதாக பார்வையிட்ட இணைப்பு</translation>
 <translation id="3286390186030710347">ஸ்லைடர்</translation>
 <translation id="3299925995433437805">அடுத்ததாக பார்வையிட்ட இணைப்பு இல்லை.</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 8c4eee2..7ae47cb 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">సందర్శించిన లింక్</translation>
 <translation id="3232388865800379423">పాప్ అప్ బటన్</translation>
-<translation id="323731244387692321">ChromeVox కీబోర్డ్ సహాయాన్ని తెరవండి</translation>
 <translation id="3241052487511142956">మునుపు సందర్శించిన లింక్</translation>
 <translation id="3286390186030710347">స్లయిడర్</translation>
 <translation id="3299925995433437805">తదుపరి సందర్శించిన లింక్ లేదు.</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 da17440..90215f43 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
@@ -218,7 +218,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">ลิงก์ที่เคยเข้าชม</translation>
 <translation id="3232388865800379423">ปุ่มป๊อปอัป</translation>
-<translation id="323731244387692321">เปิดความช่วยเหลือเกี่ยวกับแป้นพิมพ์ของ ChromeVox</translation>
 <translation id="3241052487511142956">ลิงก์ที่เคยเข้าชมก่อนหน้า</translation>
 <translation id="3286390186030710347">แถบเลื่อน</translation>
 <translation id="3299925995433437805">ไม่มีลิงก์ที่เคยเข้าชมถัดไป</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 a017314..120ae43 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Ziyaret edilmiş bağlantı</translation>
 <translation id="3232388865800379423">Pop-up düğme</translation>
-<translation id="323731244387692321">ChromeVox klavye yardımını aç</translation>
 <translation id="3241052487511142956">Ziyaret edilmiş olan önceki bağlantı</translation>
 <translation id="3286390186030710347">Kaydırma çubuğu</translation>
 <translation id="3299925995433437805">Ziyaret edilmiş başka sonraki bağlantı yok.</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 dc23547..5cb1f298 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">прапорець</translation>
 <translation id="3229375994964697375">Натиснуте посилання</translation>
 <translation id="3232388865800379423">Кнопка спливаючої підказки</translation>
-<translation id="323731244387692321">Відкрити довідку клавіатури ChromeVox</translation>
 <translation id="3241052487511142956">Попереднє натиснуте посилання</translation>
 <translation id="3286390186030710347">Повзунок</translation>
 <translation id="3299925995433437805">Немає наступного натиснутого посилання.</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 09bc6f2..e1f7168 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">Liên kết đã truy cập</translation>
 <translation id="3232388865800379423">Nút bật lên</translation>
-<translation id="323731244387692321">Mở trợ giúp về bàn phím ChromeVox</translation>
 <translation id="3241052487511142956">Liên kết đã truy cập trước đó</translation>
 <translation id="3286390186030710347">Thanh trượt</translation>
 <translation id="3299925995433437805">Không có liên kết đã truy cập tiếp theo nào.</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 c031f12..f05aa5e6 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">访问过的链接</translation>
 <translation id="3232388865800379423">弹出式按钮</translation>
-<translation id="323731244387692321">打开ChromeVox键盘帮助</translation>
 <translation id="3241052487511142956">上一个访问过的链接</translation>
 <translation id="3286390186030710347">滑块</translation>
 <translation id="3299925995433437805">不存在下一个访问过的链接。</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 79630ca3..f164e10 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
@@ -219,7 +219,6 @@
 <translation id="3226035351387556942">chk</translation>
 <translation id="3229375994964697375">造訪過的連結</translation>
 <translation id="3232388865800379423">彈出式按鈕</translation>
-<translation id="323731244387692321">開啟 ChromeVox 鍵盤說明</translation>
 <translation id="3241052487511142956">上一個造訪過的連結</translation>
 <translation id="3286390186030710347">滑桿</translation>
 <translation id="3299925995433437805">沒有下一個造訪過的連結。</translation>
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd
index c4b54707..82d7443 100644
--- a/chrome/browser/resources/settings/settings_resources.grd
+++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -14,12 +14,12 @@
     <structures>
       <structure name="IDR_SETTINGS_A11Y_PAGE_JS"
                  file="a11y_page/a11y_page.js"
-                 flattenhtml="true"
+                 preprocess="true"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_A11Y_PAGE_HTML"
                  file="a11y_page/a11y_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <if expr="chromeos">
         <structure name="IDR_SETTINGS_MANAGE_A11Y_PAGE_JS"
@@ -35,15 +35,15 @@
       <structure name="IDR_SETTINGS_ABOUT_PAGE_BROWSER_PROXY_JS"
                  file="about_page/about_page_browser_proxy.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_ABOUT_PAGE_JS"
                  file="about_page/about_page.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_ABOUT_PAGE_HTML"
                  file="about_page/about_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <if expr="chromeos">
         <structure name="IDR_SETTINGS_CHANNEL_SWITCHER_DIALOG_HTML"
@@ -108,7 +108,7 @@
       <structure name="IDR_SETTINGS_APPEARANCE_BROWSER_PROXY_JS"
                  file="appearance_page/appearance_browser_proxy.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_APPEARANCE_FONTS_PAGE_HTML"
                  file="appearance_page/appearance_fonts_page.html"
                  type="chrome_html"
@@ -119,20 +119,20 @@
       <structure name="IDR_SETTINGS_APPEARANCE_PAGE_HTML"
                  file="appearance_page/appearance_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_APPEARANCE_PAGE_JS"
                  file="appearance_page/appearance_page.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_BASIC_PAGE_JS"
                  file="basic_page/basic_page.js"
-                 flattenhtml="true"
+                 preprocess="true"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_BASIC_PAGE_HTML"
                  file="basic_page/basic_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_EXTENSION_CONTROL_BROWSER_PROXY_JS"
                  file="extension_control_browser_proxy.js"
@@ -152,7 +152,7 @@
       <structure name="IDR_SETTINGS_LIFETIME_BROWSER_PROXY_JS"
                  file="lifetime_browser_proxy.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_ON_STARTUP_BROWSER_PROXY_HTML"
                  file="on_startup_page/on_startup_browser_proxy.html"
                  type="chrome_html" />
@@ -197,7 +197,7 @@
       <structure name="IDR_SETTINGS_CR_SETTINGS_MAIN_HTML"
                  file="settings_main/settings_main.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_CR_SETTINGS_MAIN_JS"
                  file="settings_main/settings_main.js"
@@ -205,7 +205,7 @@
       <structure name="IDR_SETTINGS_CR_SETTINGS_MENU_HTML"
                  file="settings_menu/settings_menu.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_CR_SETTINGS_MENU_JS"
                  file="settings_menu/settings_menu.js"
@@ -249,16 +249,16 @@
       <structure name="IDR_SETTINGS_SETTINGS_SHARED_CSS_HTML"
                  file="settings_shared_css.html"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_CR_SETTINGS_UI_HTML"
                  file="settings_ui/settings_ui.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_CR_SETTINGS_UI_JS"
                  file="settings_ui/settings_ui.js"
                  type="chrome_html"
-                 flattenhtml="true" />
+                 preprocess="true" />
       <structure name="IDR_SETTINGS_GLOBAL_SCROLL_TARGET_BEHAVIOR_HTML"
                  file="global_scroll_target_behavior.html"
                  type="chrome_html" />
@@ -427,7 +427,7 @@
         <structure name="IDR_SETTINGS_DEFAULT_BROWSER_PAGE_HTML"
                    file="default_browser_page/default_browser_page.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_DEFAULT_BROWSER_PAGE_JS"
                    file="default_browser_page/default_browser_page.js"
@@ -516,7 +516,7 @@
       <structure name="IDR_SETTINGS_DOWNLOADS_PAGE_HTML"
                  file="downloads_page/downloads_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_DOWNLOADS_PAGE_JS"
                  file="downloads_page/downloads_page.js"
@@ -557,7 +557,7 @@
                  type="chrome_html"/>
       <structure name="IDR_SETTINGS_RESET_BROWSER_PROXY_JS"
                  file="reset_page/reset_browser_proxy.js"
-                 flattenhtml="true"
+                 preprocess="true"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_RESET_BROWSER_PROXY_HTML"
                  file="reset_page/reset_browser_proxy.html"
@@ -568,7 +568,7 @@
       <structure name="IDR_SETTINGS_LANGUAGES_JS"
                  file="languages_page/languages.js"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_LANGUAGES_ADD_LANGUAGES_DIALOG_HTML"
                  file="languages_page/add_languages_dialog.html"
@@ -579,12 +579,12 @@
       <structure name="IDR_SETTINGS_LANGUAGES_PAGE_HTML"
                  file="languages_page/languages_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_LANGUAGES_PAGE_JS"
                  file="languages_page/languages_page.js"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <if expr="chromeos">
         <structure name="IDR_SETTINGS_LANGUAGES_MANAGE_INPUT_METHODS_PAGE_HTML"
@@ -655,7 +655,7 @@
       <structure name="IDR_SETTINGS_PEOPLE_PAGE_JS"
                  file="people_page/people_page.js"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <if expr="not chromeos">
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_IMPORT_DATA_DIALOG_HTML"
@@ -673,7 +673,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_MANAGE_PROFILE_HTML"
                    file="people_page/manage_profile.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_MANAGE_PROFILE_JS"
                    file="people_page/manage_profile.js"
@@ -697,7 +697,7 @@
       <structure name="IDR_SETTINGS_PEOPLE_PAGE_SYNC_BROWSER_PROXY_JS"
                  file="people_page/sync_browser_proxy.js"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true"  />
       <structure name="IDR_SETTINGS_PREF_UTIL_HTML"
                  file="prefs/pref_util.html"
@@ -725,12 +725,12 @@
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_PRINTING_PAGE_HTML"
                  file="printing_page/printing_page.html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_PRINTING_PAGE_JS"
                  file="printing_page/printing_page.js"
-                 flattenhtml="true"
+                 preprocess="true"
                  type="chrome_html" />
       <if expr="chromeos">
         <structure name="IDR_SETTINGS_CUPS_PRINTING_PAGE_HTML"
@@ -789,7 +789,7 @@
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_PRIVACY_PAGE_JS"
                  file="privacy_page/privacy_page.js"
-                 flattenhtml="true"
+                 preprocess="true"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_PRIVACY_PAGE_BROWSER_PROXY_HTML"
                  file="privacy_page/privacy_page_browser_proxy.html"
@@ -877,7 +877,7 @@
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINE_DIALOG_HTML"
                  file="search_engines_page/search_engine_dialog.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINE_ENTRY_JS"
                  file="search_engines_page/search_engine_entry.js"
@@ -885,7 +885,7 @@
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINE_ENTRY_HTML"
                  file="search_engines_page/search_engine_entry.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINE_ENTRY_CSS_HTML"
                  file="search_engines_page/search_engine_entry_css.html"
@@ -896,7 +896,7 @@
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_OMNIBOX_EXTENSION_ENTRY_HTML"
                  file="search_engines_page/omnibox_extension_entry.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINES_LIST_JS"
                  file="search_engines_page/search_engines_list.js"
@@ -904,7 +904,7 @@
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINES_LIST_HTML"
                  file="search_engines_page/search_engines_list.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINES_PAGE_JS"
                  file="search_engines_page/search_engines_page.js"
@@ -912,17 +912,17 @@
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_PAGE_SEARCH_ENGINES_PAGE_HTML"
                  file="search_engines_page/search_engines_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_BROWSER_PROXY_JS"
                  file="search_engines_page/search_engines_browser_proxy.js"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_ENGINES_BROWSER_PROXY_HTML"
                  file="search_engines_page/search_engines_browser_proxy.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SEARCH_PAGE_JS"
                  file="search_page/search_page.js"
@@ -930,7 +930,7 @@
       <structure name="IDR_SETTINGS_SEARCH_PAGE_HTML"
                  file="search_page/search_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SYNC_PAGE_JS"
                  file="people_page/sync_page.js"
@@ -938,7 +938,7 @@
       <structure name="IDR_SETTINGS_SYNC_PAGE_HTML"
                  file="people_page/sync_page.html"
                  type="chrome_html"
-                 flattenhtml="true"
+                 preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_SYSTEM_PAGE_BROWSER_PROXY_HTML"
                  file="system_page/system_page_browser_proxy.html"
@@ -984,12 +984,12 @@
         <structure name="IDR_SETTINGS_ANDROID_APPS_BROWSER_PROXY_JS"
                    file="android_apps_page/android_apps_browser_proxy.js"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_ANDROID_APPS_BROWSER_PROXY_HTML"
                    file="android_apps_page/android_apps_browser_proxy.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_BLUETOOTH_DEVICE_DIALOG_HTML"
                    file="bluetooth_page/bluetooth_device_dialog.html"
@@ -1099,7 +1099,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_CAMERA_HTML"
                    file="people_page/camera.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_CAMERA_JS"
                    file="people_page/camera.js"
@@ -1107,7 +1107,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_HTML"
                    file="people_page/change_picture.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_JS"
                    file="people_page/change_picture.js"
@@ -1118,7 +1118,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_CHANGE_PICTURE_BROWSER_PROXY_HTML"
                    file="people_page/change_picture_browser_proxy.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_EASY_UNLOCK_BROWSER_PROXY_JS"
                    file="people_page/easy_unlock_browser_proxy.js"
@@ -1126,7 +1126,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_EASY_UNLOCK_BROWSER_PROXY_HTML"
                    file="people_page/easy_unlock_browser_proxy.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_EASY_UNLOCK_TURN_OFF_DIALOG_JS"
                    file="people_page/easy_unlock_turn_off_dialog.js"
@@ -1134,7 +1134,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_EASY_UNLOCK_TURN_OFF_DIALOG_HTML"
                    file="people_page/easy_unlock_turn_off_dialog.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_PASSWORD_PROMPT_DIALOG_JS"
                    file="people_page/password_prompt_dialog.js"
@@ -1142,12 +1142,12 @@
         <structure name="IDR_SETTINGS_PEOPLE_PASSWORD_PROMPT_DIALOG_HTML"
                    file="people_page/password_prompt_dialog.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_PIN_KEYBOARD_HTML"
                    file="people_page/pin_keyboard.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true"/>
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_SCREEN_JS"
                    file="people_page/lock_screen.js"
@@ -1155,7 +1155,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_SCREEN_HTML"
                    file="people_page/lock_screen.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_SCREEN_CONSTANTS_JS"
                    file="people_page/lock_screen_constants.js"
@@ -1163,7 +1163,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_SCREEN_CONSTANTS_HTML"
                    file="people_page/lock_screen_constants.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_STATE_BEHAVIOR_JS"
                    file="people_page/lock_state_behavior.js"
@@ -1171,7 +1171,7 @@
         <structure name="IDR_SETTINGS_PEOPLE_LOCK_STATE_BEHAVIOR_HTML"
                    file="people_page/lock_state_behavior.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_PEOPLE_SETUP_PIN_DIALOG_JS"
                    file="people_page/setup_pin_dialog.js"
@@ -1179,19 +1179,19 @@
         <structure name="IDR_SETTINGS_PEOPLE_SETUP_PIN_DIALOG_HTML"
                    file="people_page/setup_pin_dialog.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_KEYBOARD_PIN_JS"
                    file="people_page/pin_keyboard.js"
                    type="chrome_html"
-                   flattenhtml="true" />
+                   preprocess="true" />
         <structure name="IDR_SETTINGS_USERS_PAGE_ADD_USER_DIALOG_JS"
                    file="people_page/users_add_user_dialog.js"
                    type="chrome_html" />
         <structure name="IDR_SETTINGS_USERS_PAGE_ADD_USER_DIALOG_HTML"
                    file="people_page/users_add_user_dialog.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_USERS_PAGE_USER_LIST_JS"
                    file="people_page/user_list.js"
@@ -1199,7 +1199,7 @@
         <structure name="IDR_SETTINGS_USERS_PAGE_USER_LIST_HTML"
                    file="people_page/user_list.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
         <structure name="IDR_SETTINGS_USERS_PAGE_JS"
                    file="people_page/users_page.js"
@@ -1207,7 +1207,7 @@
         <structure name="IDR_SETTINGS_USERS_PAGE_HTML"
                    file="people_page/users_page.html"
                    type="chrome_html"
-                   flattenhtml="true"
+                   preprocess="true"
                    allowexternalscript="true" />
       </if>
     </structures>
diff --git a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
index a9bc3f6..4c7e7c2b 100644
--- a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
+++ b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
@@ -18,6 +18,7 @@
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/web_applications/web_app.h"
+#include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "ui/aura/window.h"
@@ -37,9 +38,12 @@
   ~LocalWebContentsObserver() override {}
 
   // content::WebContentsObserver
-  void DidNavigateMainFrame(
-      const content::LoadCommittedDetails& details,
-      const content::FrameNavigateParams& params) override {
+  void DidFinishNavigation(
+      content::NavigationHandle* navigation_handle) override {
+    if (!navigation_handle->IsInMainFrame() ||
+        !navigation_handle->HasCommitted())
+      return;
+
     ChromeLauncherController::AppState state =
         ChromeLauncherController::APP_STATE_INACTIVE;
     Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
diff --git a/chrome/browser/ui/ash/launcher/settings_window_observer.cc b/chrome/browser/ui/ash/launcher/settings_window_observer.cc
index e1242d0..69ea9d9 100644
--- a/chrome/browser/ui/ash/launcher/settings_window_observer.cc
+++ b/chrome/browser/ui/ash/launcher/settings_window_observer.cc
@@ -16,7 +16,7 @@
 #include "services/ui/public/interfaces/window_manager.mojom.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/image/image_skia.h"
diff --git a/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc b/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc
index 0534c0c..eb20ef7 100644
--- a/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc
+++ b/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc
@@ -35,9 +35,8 @@
                                    const std::string& sink_id,
                                    bool is_local) {
   return media_router::MediaRoute(
-      route_id, media_router::MediaSourceForDesktop(), sink_id,
-      std::string() /*description*/, is_local,
-      std::string() /*custom_controller_path*/, true /*for_display*/);
+      route_id, media_router::MediaSourceForDesktop(), sink_id, "description",
+      is_local, std::string() /*custom_controller_path*/, true /*for_display*/);
 }
 
 // Returns the cast tray instance.
@@ -153,22 +152,28 @@
   EXPECT_TRUE(test_api.IsTrayInitialized());
 
   // Setup the sinks.
-  std::vector<media_router::MediaSink> sinks;
-  sinks.push_back(MakeSink("remote_sink", "name"));
-  sinks.push_back(MakeSink("local_sink", "name"));
+  const std::vector<media_router::MediaSink> sinks = {
+      MakeSink("remote_sink", "name"), MakeSink("local_sink", "name")};
   media_sinks_observer()->OnSinksUpdated(sinks, std::vector<url::Origin>());
   content::RunAllPendingInMessageLoop();
 
   // Create route combinations. More details below.
-  media_router::MediaRoute non_local_route =
+  const media_router::MediaRoute non_local_route =
       MakeRoute("remote_route", "remote_sink", false /*is_local*/);
-  media_router::MediaRoute local_route =
+  const media_router::MediaRoute local_route =
       MakeRoute("local_route", "local_sink", true /*is_local*/);
-  std::vector<media_router::MediaRoute> no_routes;
-  std::vector<media_router::MediaRoute> multiple_routes;
+  const std::vector<media_router::MediaRoute> no_routes;
+  const std::vector<media_router::MediaRoute> non_local_routes{non_local_route};
   // We put the non-local route first to make sure that we prefer the local one.
-  multiple_routes.push_back(non_local_route);
-  multiple_routes.push_back(local_route);
+  const std::vector<media_router::MediaRoute> multiple_routes{non_local_route,
+                                                              local_route};
+
+  // We do not show the cast view for non-local routes.
+  test_api.OnCastingSessionStartedOrStopped(true /*is_casting*/);
+  media_routes_observer()->OnRoutesUpdated(
+      non_local_routes, std::vector<media_router::MediaRoute::Id>());
+  content::RunAllPendingInMessageLoop();
+  EXPECT_FALSE(test_api.IsTrayCastViewVisible());
 
   // If there are multiple routes active at the same time, then we need to
   // display the local route over a non-local route. This also verifies that we
diff --git a/chrome/browser/ui/autofill/save_card_bubble_controller_impl.cc b/chrome/browser/ui/autofill/save_card_bubble_controller_impl.cc
index 168c74e3..6c250dc 100644
--- a/chrome/browser/ui/autofill/save_card_bubble_controller_impl.cc
+++ b/chrome/browser/ui/autofill/save_card_bubble_controller_impl.cc
@@ -14,7 +14,7 @@
 #include "components/autofill/core/browser/autofill_metrics.h"
 #include "components/autofill/core/common/autofill_constants.h"
 #include "components/strings/grit/components_strings.h"
-#include "content/public/browser/navigation_details.h"
+#include "content/public/browser/navigation_handle.h"
 #include "ui/base/l10n/l10n_util.h"
 
 DEFINE_WEB_CONTENTS_USER_DATA_KEY(autofill::SaveCardBubbleControllerImpl);
@@ -163,15 +163,17 @@
   return timer_->Elapsed();
 }
 
-void SaveCardBubbleControllerImpl::DidNavigateMainFrame(
-    const content::LoadCommittedDetails& details,
-    const content::FrameNavigateParams& params) {
+void SaveCardBubbleControllerImpl::DidFinishNavigation(
+    content::NavigationHandle* navigation_handle) {
+  if (!navigation_handle->IsInMainFrame() || !navigation_handle->HasCommitted())
+    return;
+
   // Nothing to do if there's no bubble available.
   if (save_card_callback_.is_null())
     return;
 
   // Don't react to in-page (fragment) navigations.
-  if (details.is_in_page)
+  if (navigation_handle->IsSamePage())
     return;
 
   // Don't do anything if a navigation occurs before a user could reasonably
diff --git a/chrome/browser/ui/autofill/save_card_bubble_controller_impl.h b/chrome/browser/ui/autofill/save_card_bubble_controller_impl.h
index 1831665..d5268d0 100644
--- a/chrome/browser/ui/autofill/save_card_bubble_controller_impl.h
+++ b/chrome/browser/ui/autofill/save_card_bubble_controller_impl.h
@@ -66,9 +66,8 @@
   virtual base::TimeDelta Elapsed() const;
 
   // content::WebContentsObserver:
-  void DidNavigateMainFrame(
-      const content::LoadCommittedDetails& details,
-      const content::FrameNavigateParams& params) override;
+  void DidFinishNavigation(
+      content::NavigationHandle* navigation_handle) override;
 
  private:
   friend class content::WebContentsUserData<SaveCardBubbleControllerImpl>;
diff --git a/chrome/browser/ui/autofill/save_card_bubble_controller_impl_unittest.cc b/chrome/browser/ui/autofill/save_card_bubble_controller_impl_unittest.cc
index 95f7a04..96893557 100644
--- a/chrome/browser/ui/autofill/save_card_bubble_controller_impl_unittest.cc
+++ b/chrome/browser/ui/autofill/save_card_bubble_controller_impl_unittest.cc
@@ -18,7 +18,7 @@
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/autofill/core/browser/autofill_metrics.h"
 #include "components/autofill/core/browser/credit_card.h"
-#include "content/public/browser/navigation_details.h"
+#include "content/public/browser/navigation_handle.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -39,7 +39,13 @@
 
   void set_elapsed(base::TimeDelta elapsed) { elapsed_ = elapsed; }
 
-  using SaveCardBubbleControllerImpl::DidNavigateMainFrame;
+  void SimulateNavigation() {
+    content::RenderFrameHost* rfh = web_contents()->GetMainFrame();
+    std::unique_ptr<content::NavigationHandle> navigation_handle =
+        content::NavigationHandle::CreateNavigationHandleForTesting(
+            GURL(), rfh, true);
+    // Destructor calls DidFinishNavigation.
+  }
 
  protected:
   base::TimeDelta Elapsed() const override { return elapsed_; }
@@ -239,8 +245,8 @@
   base::HistogramTester histogram_tester;
   // Fake-navigate after bubble has been visible for a long time.
   controller()->set_elapsed(base::TimeDelta::FromMinutes(1));
-  controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
-                                     content::FrameNavigateParams());
+
+  controller()->SimulateNavigation();
 
   histogram_tester.ExpectUniqueSample(
       "Autofill.SaveCreditCardPrompt.Local.FirstShow",
@@ -255,8 +261,7 @@
   base::HistogramTester histogram_tester;
   // Fake-navigate after bubble has been visible for a long time.
   controller()->set_elapsed(base::TimeDelta::FromMinutes(1));
-  controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
-                                     content::FrameNavigateParams());
+  controller()->SimulateNavigation();
 
   histogram_tester.ExpectUniqueSample(
       "Autofill.SaveCreditCardPrompt.Local.Reshows",
@@ -271,8 +276,7 @@
   controller()->OnBubbleClosed();
   // Fake-navigate after bubble has been visible for a long time.
   controller()->set_elapsed(base::TimeDelta::FromMinutes(1));
-  controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
-                                     content::FrameNavigateParams());
+  controller()->SimulateNavigation();
 
   histogram_tester.ExpectUniqueSample(
       "Autofill.SaveCreditCardPrompt.Local.FirstShow",
@@ -288,8 +292,7 @@
   controller()->OnBubbleClosed();
   // Fake-navigate after bubble has been visible for a long time.
   controller()->set_elapsed(base::TimeDelta::FromMinutes(1));
-  controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
-                                     content::FrameNavigateParams());
+  controller()->SimulateNavigation();
 
   histogram_tester.ExpectUniqueSample(
       "Autofill.SaveCreditCardPrompt.Local.Reshows",
diff --git a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
index 487576f..2916896e 100644
--- a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
+++ b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
@@ -27,7 +27,7 @@
 #include "chrome/browser/ui/views/select_file_dialog_extension_factory.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/mus/property_converter.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/keyboard/content/keyboard.h"
 #include "ui/keyboard/keyboard_controller.h"
 #include "ui/views/mus/mus_client.h"
diff --git a/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/key.pem b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/key.pem
new file mode 100644
index 0000000..0be8a59
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDeO4S4dA0HzFQ1
+Ku+FiVtiFdTCEy5V5O10KC71Ct65ROcVW7BZqMFns0sRBtd/1S7OA+EghRQ81tkv
+xrASI84MVrvmptIFwAi/qmh31p11iC0yaxwoKdrrkROVEoJ/9XUnRwf1QzbNusL3
+k0YIrKW7wBK8Vc2ze6VK1pav5UI1o15rdcwFIl7Y3cNm0H5fE2A+Ak6ZKXyhFeGJ
+uAkc68GPAIGpJfOCcRbMq2uYJube8pksEV2NhrVXwdzS/l0mCgo4yuNpIHycuPsk
+qIW+IzWarboJKofSpisYhv+/OFXTYqekkB+dZpYhAIcpzf0CZpHtJ9Z39sB8nT1t
+dTm5NxCNAgMBAAECggEAb7mUe/c8JdN/8krnqEbp/mHjWL6z6NLy3hblpKQWXSZa
+1s4F1s2UjkIBV0oNRWMz6Lbik6rUBdIt1msZUcVWbbWdOdRcei+VNmbBpp3rA4+2
+yUY4HakNOqjxI1zu5s3MXDbFtXRZNQzTwAv2hZ3mpIFn6e9pPvbGnt1LXJrxsmzD
+j6YKxK3fGouROryre3+j9r1vjQ5dgrl+4lB1EevN9C5XP5/UPcAnRXWtprFVPf32
+OVpAdTrhIf96E0GaTk+7ZQ3GX69LwydyetQHEIZpspC36AMGaRSq9WT3JSKN9R2d
+MHUrABB3I1i2+3abOr1kZLfVoZla7sHwB1EDW/WnMQKBgQD59AQP4SDjbIiK4Q0O
+fJCXtcBqn+bVDBqcq97Ki+O1VZQL37VKoTcR12ZqctTpv0iho+t27K63aG4zI2cf
+WRpOZb90LEUYGsyN1/NDNaZDHW+md8M7Fhp3RIy0odNYZDbG2pEIxkABfQX8Bx5s
+1v2rm4mBJyYWK3o/2wQWMRyWuwKBgQDjm9NeAu62QMUjlpf4kfXP2TVBKTtctBl/
+JEeEuZ06sBz2uDLANUMONQlusoV04Jw6a3VLXDnPpqiiDNy49+c8XLd+bJTwr+Vb
++IagU3yGovQ2ftOPpjzqiukyFGY9fcA7jjZyFGGLUXbfo38+uz1lOu3I42yGE99n
+C5yo+n+VVwKBgQCTpgIUQz9DOGR77S7iRNDA3TsZgPVBGlJKA/iqGvJatn+qd+5G
+dG7sWhoEfWqp3TWRThwUdwFKFCUsjhgnW2H/t3jdrhzufT4h99OZ+wIImUXPxuUL
+bSYbF+Ip/YGzsBbvZkLQNROwDWNQmf/t+R2Flm4mXbLQ28PuHnkOhtpFawKBgEuo
+q70valxo8V8gGwpEsppR0JMFercZIvSRgbiL3sj4a9hTaINd8RlS5fzHGPe+BhCh
+Uc8oLAtrkdi0P9a4iUQWaeR7gZL0VWCaH15CAj3bAyTuSbMRhmRMorHD+Cxulaz2
+XADV54rhHIvAlHas1P7GdO53Msbq6jMduAivpCNnAoGBAO85BojRlYcN/dC3kTYS
+EdbnIYgz8S13CnV60cutpeJyg7Dbh+Q1LGinyARaQEu1T0yKx5IY0NmWLNUxTN6/
+KB78KRK9878+tjqJV8mS9TQXVpzITi/Bx4LKVQMYNv59iNZn18cKMkDDLaaPI3az
+XTSiQghXNR0kNWy1Vg7zzMHe
+-----END PRIVATE KEY-----
diff --git a/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/main.js b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/main.js
new file mode 100644
index 0000000..dc1fea4
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/main.js
@@ -0,0 +1,7 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+chrome.app.runtime.onLaunched.addListener(function(launchData) {
+  chrome.test.sendMessage('launchRequested');
+});
diff --git a/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/manifest.json b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/manifest.json
new file mode 100644
index 0000000..1234c755
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/non_kiosk_enabled_app/src/manifest.json
@@ -0,0 +1,14 @@
+{
+  "manifest_version": 2,
+  "name": "Test Non Kiosk App",
+  "version": "1.0.0",
+  "app": {
+    "background": {
+      "scripts": ["main.js"]
+    }
+  },
+  "permissions": [
+    "power",
+    "webview"
+  ]
+}
diff --git a/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx b/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx
new file mode 100644
index 0000000..1f4045c
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx
Binary files differ
diff --git a/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx.mock-http-headers b/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx.mock-http-headers
new file mode 100644
index 0000000..707bb1f
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/webstore/downloads/mogpelihofihkjnkkfkcchbkchggmcld.crx.mock-http-headers
@@ -0,0 +1,2 @@
+HTTP/1.1 200 OK
+Content-Type: application/x-chrome-extension
diff --git a/chrome/test/data/chromeos/app_mode/webstore/inlineinstall/detail/mogpelihofihkjnkkfkcchbkchggmcld b/chrome/test/data/chromeos/app_mode/webstore/inlineinstall/detail/mogpelihofihkjnkkfkcchbkchggmcld
new file mode 100644
index 0000000..150a121
--- /dev/null
+++ b/chrome/test/data/chromeos/app_mode/webstore/inlineinstall/detail/mogpelihofihkjnkkfkcchbkchggmcld
@@ -0,0 +1,11 @@
+{
+  "id": "mogpelihofihkjnkkfkcchbkchggmcld",
+  "users": "1234",
+  "average_rating": 1.0,
+  "rating_count": 999,
+  "verified_site": "chrome.google.com",
+  "localized_name": "Name of App 1",
+  "localized_description": "Description of App 1",
+  "icon_url": "webstore/inlineinstall/detail/app_1_green16x16.png",
+  "manifest":"{ \"manifest_version\": 2, \"name\": \"Test Non Kiosk App\", \"version\": \"1.0.0\", \"app\": { \"background\": { \"scripts\": [\"main.js\"] } }, \"permissions\": [ \"power\", \"webview\" ] }"
+}
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index d4046c2a..8faf8da 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -479,6 +479,11 @@
           cast_browser_process_->browser_context(),
           cast_browser_process_->pref_service(),
           url_request_context_factory_->GetSystemGetter(),
+          base::BindOnce(&URLRequestContextFactory::DisableQuic,
+                         // Safe since |url_request_context_factory_| is owned
+                         // by CastContentBrowserClient, which lives for the
+                         // entire lifetime of cast_shell.
+                         base::Unretained(url_request_context_factory_)),
           video_plane_controller_.get(), window_manager_.get()));
   cast_browser_process_->cast_service()->Initialize();
 
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index e9d5a8d..d5f0c8a 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -130,6 +130,7 @@
     content::BrowserContext* browser_context,
     PrefService* pref_service,
     net::URLRequestContextGetter* request_context_getter,
+    DisableQuicClosure disable_quic_closure,
     media::VideoPlaneController* video_plane_controller,
     CastWindowManager* window_manager) {
   return base::MakeUnique<CastServiceSimple>(browser_context, pref_service,
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h
index f59d2d9..e28a85a 100644
--- a/chromecast/browser/cast_content_browser_client.h
+++ b/chromecast/browser/cast_content_browser_client.h
@@ -10,6 +10,7 @@
 #include <string>
 #include <vector>
 
+#include "base/callback_forward.h"
 #include "base/macros.h"
 #include "build/build_config.h"
 #include "content/public/browser/certificate_request_result_type.h"
@@ -53,6 +54,8 @@
 class CastBrowserMainParts;
 class URLRequestContextFactory;
 
+using DisableQuicClosure = base::OnceClosure;
+
 class CastContentBrowserClient : public content::ContentBrowserClient {
  public:
   // Creates an implementation of CastContentBrowserClient. Platform should
@@ -74,6 +77,7 @@
       content::BrowserContext* browser_context,
       PrefService* pref_service,
       net::URLRequestContextGetter* request_context_getter,
+      DisableQuicClosure disable_quic_closure,
       media::VideoPlaneController* video_plane_controller,
       CastWindowManager* window_manager);
 
diff --git a/chromecast/browser/cast_content_window_linux.cc b/chromecast/browser/cast_content_window_linux.cc
index d0f8bea..a34f170 100644
--- a/chromecast/browser/cast_content_window_linux.cc
+++ b/chromecast/browser/cast_content_window_linux.cc
@@ -52,15 +52,20 @@
   content::WebContents* web_contents =
       content::WebContents::Create(create_params);
 
+  content::WebContentsObserver::Observe(web_contents);
+  return base::WrapUnique(web_contents);
+}
+
+void CastContentWindowLinux::DidStartNavigation(
+    content::NavigationHandle* navigation_handle) {
 #if defined(USE_AURA)
   // Resize window
-  aura::Window* content_window = web_contents->GetNativeView();
+  gfx::Size display_size =
+      display::Screen::GetScreen()->GetPrimaryDisplay().size();
+  aura::Window* content_window = web_contents()->GetNativeView();
   content_window->SetBounds(
       gfx::Rect(display_size.width(), display_size.height()));
 #endif
-
-  content::WebContentsObserver::Observe(web_contents);
-  return base::WrapUnique(web_contents);
 }
 
 void CastContentWindowLinux::ShowWebContents(
diff --git a/chromecast/browser/cast_content_window_linux.h b/chromecast/browser/cast_content_window_linux.h
index 1b8582ee..fe8cecd 100644
--- a/chromecast/browser/cast_content_window_linux.h
+++ b/chromecast/browser/cast_content_window_linux.h
@@ -34,6 +34,8 @@
       content::BrowserContext* browser_context) override;
 
   // content::WebContentsObserver implementation:
+  void DidStartNavigation(
+      content::NavigationHandle* navigation_handle) override;
   void DidFirstVisuallyNonEmptyPaint() override;
   void MediaStartedPlaying(const MediaPlayerInfo& media_info,
                            const MediaPlayerId& id) override;
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
index ef726e6d..f9119ad6 100644
--- a/chromecast/browser/url_request_context_factory.cc
+++ b/chromecast/browser/url_request_context_factory.cc
@@ -165,8 +165,8 @@
       system_network_delegate_(CastNetworkDelegate::Create()),
       system_dependencies_initialized_(false),
       main_dependencies_initialized_(false),
-      media_dependencies_initialized_(false) {
-}
+      media_dependencies_initialized_(false),
+      enable_quic_(true) {}
 
 URLRequestContextFactory::~URLRequestContextFactory() {
 }
@@ -307,6 +307,7 @@
 void URLRequestContextFactory::PopulateNetworkSessionParams(
     bool ignore_certificate_errors,
     net::HttpNetworkSession::Params* params) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
   params->host_resolver = host_resolver_.get();
   params->cert_verifier = cert_verifier_.get();
   params->channel_id_service = channel_id_service_.get();
@@ -318,6 +319,9 @@
   params->http_server_properties = http_server_properties_.get();
   params->ignore_certificate_errors = ignore_certificate_errors;
   params->proxy_service = proxy_service_.get();
+
+  LOG(INFO) << "Set HttpNetworkSessionParams.enable_quic = " << enable_quic_;
+  params->enable_quic = enable_quic_;
 }
 
 net::URLRequestContext* URLRequestContextFactory::CreateSystemRequestContext() {
@@ -427,5 +431,43 @@
   LOG(INFO) << "Initialized system network delegate.";
 }
 
+void URLRequestContextFactory::DisableQuic() {
+  content::BrowserThread::PostTask(
+      content::BrowserThread::IO, FROM_HERE,
+      base::Bind(&URLRequestContextFactory::DisableQuicOnBrowserIOThread,
+                 base::Unretained(this)));
+}
+
+void URLRequestContextFactory::DisableQuicOnBrowserIOThread() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+  if (!enable_quic_)
+    return;
+
+  LOG(INFO) << "Disabled QUIC.";
+
+  enable_quic_ = false;
+
+  if (main_getter_) {
+    main_getter_->GetURLRequestContext()
+        ->http_transaction_factory()
+        ->GetSession()
+        ->DisableQuic();
+  }
+
+  if (system_getter_) {
+    system_getter_->GetURLRequestContext()
+        ->http_transaction_factory()
+        ->GetSession()
+        ->DisableQuic();
+  }
+
+  if (media_getter_) {
+    media_getter_->GetURLRequestContext()
+        ->http_transaction_factory()
+        ->GetSession()
+        ->DisableQuic();
+  }
+}
+
 }  // namespace shell
 }  // namespace chromecast
diff --git a/chromecast/browser/url_request_context_factory.h b/chromecast/browser/url_request_context_factory.h
index 4cf106b..1b2396e 100644
--- a/chromecast/browser/url_request_context_factory.h
+++ b/chromecast/browser/url_request_context_factory.h
@@ -59,6 +59,8 @@
   // after the CastService is created, but before any URL requests are made.
   void InitializeNetworkDelegates();
 
+  void DisableQuic();
+
  private:
   class URLRequestContextGetter;
   class MainURLRequestContextGetter;
@@ -74,6 +76,7 @@
 
   void PopulateNetworkSessionParams(bool ignore_certificate_errors,
                                     net::HttpNetworkSession::Params* params);
+  void DisableQuicOnBrowserIOThread();
 
   // These are called by the RequestContextGetters to create each
   // RequestContext.
@@ -121,6 +124,11 @@
   bool media_dependencies_initialized_;
   std::unique_ptr<net::HttpTransactionFactory> media_transaction_factory_;
 
+  // Determines if QUIC is enabled for a URLContextGetter when it is created.
+  // QUIC can be disabled at runtime by calling DisableQuic() above.
+  // Only accessed on content::BrowserThread::IO thread.
+  bool enable_quic_;
+
   net::NetLog* net_log_;
 };
 
diff --git a/chromecast/graphics/cast_window_manager_aura.cc b/chromecast/graphics/cast_window_manager_aura.cc
index a0dbd82..a99503d 100644
--- a/chromecast/graphics/cast_window_manager_aura.cc
+++ b/chromecast/graphics/cast_window_manager_aura.cc
@@ -226,7 +226,6 @@
   } else {
     parent->StackChildAtBottom(child);
   }
-  child->SetBounds(window_tree_host_->window()->bounds());
 }
 
 void CastWindowManagerAura::OnVSyncIntervalChanged(base::TimeDelta interval) {
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index 62916b1..09d746b 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -530,8 +530,7 @@
                                                const FormData& form,
                                                const FormFieldData& field,
                                                const gfx::RectF& bounding_box) {
-  if (!IsValidFormData(form) || !IsValidFormFieldData(field) ||
-      !driver_->RendererIsAvailable())
+  if (!IsValidFormData(form) || !IsValidFormFieldData(field))
     return;
 
   gfx::RectF transformed_box =
@@ -571,6 +570,10 @@
   const bool is_http_warning_enabled =
       security_state::IsHttpWarningInFormEnabled();
 
+  // TODO(rogerm): Early exit here on !driver_->RendererIsAvailable()?
+  // We skip populating autofill data, but might generate warnings and or
+  // signin promo to show over the unavailable renderer. That seems a mistake.
+
   if (is_autofill_possible &&
       driver_->RendererIsAvailable() &&
       got_autofillable_form) {
diff --git a/components/domain_reliability/service.cc b/components/domain_reliability/service.cc
index 92eec42..00b1c6b 100644
--- a/components/domain_reliability/service.cc
+++ b/components/domain_reliability/service.cc
@@ -73,11 +73,8 @@
     DCHECK(network_task_runner_.get());
 
     network_task_runner_->PostTaskAndReply(
-        FROM_HERE,
-        base::Bind(&DomainReliabilityMonitor::ClearBrowsingData,
-                   monitor_,
-                   clear_mode,
-                   base::Callback<bool(const GURL&)>(origin_filter)),
+        FROM_HERE, base::Bind(&DomainReliabilityMonitor::ClearBrowsingData,
+                              monitor_, clear_mode, origin_filter),
         callback);
   }
 
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc
index 3db8748..d93e6c7 100644
--- a/components/exo/shell_surface.cc
+++ b/components/exo/shell_surface.cc
@@ -27,10 +27,10 @@
 #include "ui/aura/client/cursor_client.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_targeter.h"
 #include "ui/aura/window_tree_host.h"
 #include "ui/base/accelerators/accelerator.h"
+#include "ui/base/class_property.h"
 #include "ui/gfx/path.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_observer.h"
@@ -331,7 +331,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ShellSurface, public:
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(Surface*, kMainSurfaceKey, nullptr)
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(Surface*, kMainSurfaceKey, nullptr)
 
 ShellSurface::ShellSurface(Surface* surface,
                            ShellSurface* parent,
diff --git a/components/exo/surface.cc b/components/exo/surface.cc
index 5f23ff14..35e78516 100644
--- a/components/exo/surface.cc
+++ b/components/exo/surface.cc
@@ -26,8 +26,8 @@
 #include "third_party/khronos/GLES2/gl2.h"
 #include "ui/aura/env.h"
 #include "ui/aura/window_delegate.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_targeter.h"
+#include "ui/base/class_property.h"
 #include "ui/base/cursor/cursor.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/layer.h"
@@ -41,14 +41,14 @@
 #include "ui/gfx/transform_util.h"
 #include "ui/views/widget/widget.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(exo::Surface*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(exo::Surface*);
 
 namespace exo {
 namespace {
 
 // A property key containing the surface that is associated with
 // window. If unset, no surface is associated with window.
-DEFINE_WINDOW_PROPERTY_KEY(Surface*, kSurfaceKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(Surface*, kSurfaceKey, nullptr);
 
 // Helper function that returns an iterator to the first entry in |list|
 // with |key|.
diff --git a/components/exo/wayland/server.cc b/components/exo/wayland/server.cc
index b13c304..a63bfb75 100644
--- a/components/exo/wayland/server.cc
+++ b/components/exo/wayland/server.cc
@@ -63,7 +63,7 @@
 #include "components/exo/touch_stylus_delegate.h"
 #include "components/exo/wm_helper.h"
 #include "third_party/skia/include/core/SkRegion.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/base/ui_features.h"
 #include "ui/compositor/compositor_vsync_manager.h"
diff --git a/components/leveldb/env_mojo.cc b/components/leveldb/env_mojo.cc
index 3a2f8397..82af93a 100644
--- a/components/leveldb/env_mojo.cc
+++ b/components/leveldb/env_mojo.cc
@@ -217,9 +217,10 @@
 
 }  // namespace
 
-MojoEnv::MojoEnv(scoped_refptr<LevelDBMojoProxy> file_thread,
+MojoEnv::MojoEnv(const std::string& name,
+                 scoped_refptr<LevelDBMojoProxy> file_thread,
                  LevelDBMojoProxy::OpaqueDir* dir)
-    : thread_(file_thread), dir_(dir) {}
+    : ChromiumEnv(name), thread_(file_thread), dir_(dir) {}
 
 MojoEnv::~MojoEnv() {
   thread_->UnregisterDirectory(dir_);
diff --git a/components/leveldb/env_mojo.h b/components/leveldb/env_mojo.h
index f43cad4..d784803 100644
--- a/components/leveldb/env_mojo.h
+++ b/components/leveldb/env_mojo.h
@@ -19,7 +19,8 @@
 // existence.
 class MojoEnv : public leveldb_env::ChromiumEnv {
  public:
-  MojoEnv(scoped_refptr<LevelDBMojoProxy> file_thread,
+  MojoEnv(const std::string& name,
+          scoped_refptr<LevelDBMojoProxy> file_thread,
           LevelDBMojoProxy::OpaqueDir* dir);
   ~MojoEnv() override;
 
diff --git a/components/leveldb/leveldb_service_impl.cc b/components/leveldb/leveldb_service_impl.cc
index 2f754112..e3fd368a 100644
--- a/components/leveldb/leveldb_service_impl.cc
+++ b/components/leveldb/leveldb_service_impl.cc
@@ -22,10 +22,15 @@
 
 LevelDBServiceImpl::LevelDBServiceImpl(
     scoped_refptr<base::SingleThreadTaskRunner> file_task_runner)
-    : thread_(new LevelDBMojoProxy(std::move(file_task_runner))) {}
+    : thread_(new LevelDBMojoProxy(std::move(file_task_runner))),
+      environment_name_("LevelDBEnv") {}
 
 LevelDBServiceImpl::~LevelDBServiceImpl() {}
 
+void LevelDBServiceImpl::SetEnvironmentName(const std::string& name) {
+  environment_name_ = name;
+}
+
 void LevelDBServiceImpl::Open(
     filesystem::mojom::DirectoryPtr directory,
     const std::string& dbname,
@@ -55,7 +60,8 @@
   LevelDBMojoProxy::OpaqueDir* dir =
       thread_->RegisterDirectory(std::move(directory));
 
-  std::unique_ptr<MojoEnv> env_mojo(new MojoEnv(thread_, dir));
+  std::unique_ptr<MojoEnv> env_mojo(
+      new MojoEnv(environment_name_, thread_, dir));
   options.env = env_mojo.get();
 
   leveldb::DB* db = nullptr;
@@ -101,7 +107,8 @@
   // Register our directory with the file thread.
   LevelDBMojoProxy::OpaqueDir* dir =
       thread_->RegisterDirectory(std::move(directory));
-  std::unique_ptr<MojoEnv> env_mojo(new MojoEnv(thread_, dir));
+  std::unique_ptr<MojoEnv> env_mojo(
+      new MojoEnv(environment_name_, thread_, dir));
   options.env = env_mojo.get();
   callback.Run(LeveldbStatusToError(leveldb::DestroyDB(dbname, options)));
 }
diff --git a/components/leveldb/leveldb_service_impl.h b/components/leveldb/leveldb_service_impl.h
index 3cc1210..aca4022 100644
--- a/components/leveldb/leveldb_service_impl.h
+++ b/components/leveldb/leveldb_service_impl.h
@@ -23,6 +23,7 @@
   ~LevelDBServiceImpl() override;
 
   // Overridden from LevelDBService:
+  void SetEnvironmentName(const std::string& name) override;
   void Open(filesystem::mojom::DirectoryPtr directory,
             const std::string& dbname,
             leveldb::mojom::LevelDBDatabaseAssociatedRequest database,
@@ -45,6 +46,8 @@
   // and receive mojo message calls.
   scoped_refptr<LevelDBMojoProxy> thread_;
 
+  std::string environment_name_;
+
   DISALLOW_COPY_AND_ASSIGN(LevelDBServiceImpl);
 };
 
diff --git a/components/leveldb/public/interfaces/leveldb.mojom b/components/leveldb/public/interfaces/leveldb.mojom
index 11e5670..68062c0c 100644
--- a/components/leveldb/public/interfaces/leveldb.mojom
+++ b/components/leveldb/public/interfaces/leveldb.mojom
@@ -62,6 +62,11 @@
 
 // Service which hands out databases.
 interface LevelDBService {
+  // Sets the name of the environment to a custom value. This is used for any
+  // databases opened after calling this method to name UMA histograms and to
+  // name the background thread that might get started.
+  SetEnvironmentName(string name);
+
   // Open the database with the specified "name" in the specified "directory".
   // Fails if the database doesn't already exist.
   Open(filesystem.mojom.Directory directory,
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb
index a4afd6f..cda17e2 100644
--- a/components/policy/resources/policy_templates_am.xtb
+++ b/components/policy/resources/policy_templates_am.xtb
@@ -1408,12 +1408,6 @@
 <translation id="5208240613060747912">የትኛዎቹ ጣቢያዎች ማሳወቂያዎችን እንዲያሳዩ የማይፈቀድላቸው ጣቢያዎች የሚገልጽ የዩ አር ኤል ስርዓተ ጥለቶች ዝርዝር እንዲያስቀምጡ ያስችልዎታል።
 
           ይህ መመሪያ እንዳልተዋቀረ ከተተወ ከተዋቀረ የ«DefaultNotificationsSetting» መመሪያ፣ አለበለዚያ ደግሞ የተጠቃሚው የግል ውቅር ሁለንተናዊ ነባሪ ዋጋ ስራ ላይ ይውላል።</translation>
-<translation id="5209594095390052164">አውታረ መረብን ማፈን ይንቃ ወይም አይንቃ መምረጥን ያስችላል።
-      ይሄ ሁሉንም ተጠቃሚዎች እና በመሣሪያው ላይ ያሉ በይነገጾችን የሚመለከት ነው።
-      አንዴ ከተዋቀረ በኋላ መመሪያው እሱን ለማሰናከል እስኪቀየር ድረስ ማፈኑ ይቀጥላል።
-
-      ወደ ሐሰት ከተዋቀረ ምንም ማፈን አይኖርም።
-      ወደ እውነት ከተዋቀረ ስርዓቱ የቀረበለትን የውርድ እና የሰቀላ ፍጥነቶችን (በኪቢትሴ/ሴ) ለማሟላት ይታፈናል።</translation>
 <translation id="5219844027738217407">ለAndroid መተግበሪያዎች፣ ይህ መመሪያ በማይክሮፎኑ ላይ ብቻ ነው ተጽዕኖ የሚኖረው። ይህ መመሪያ ወደ እውነት ሲዋቀር ማይክሮፎኑ አንድ ሳያስቀር ለሁሉም የAndroid መተግበሪያዎች ይዘጋል።</translation>
 <translation id="5226033722357981948">ተሰኪ አግኚው መሰናከል ያለበት ከሆነ ይግለጹ</translation>
 <translation id="523505283826916779">የተደራሽነት ቅንብሮች</translation>
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb
index 9bc2b90..9ba6b0b1 100644
--- a/components/policy/resources/policy_templates_ar.xtb
+++ b/components/policy/resources/policy_templates_ar.xtb
@@ -1291,12 +1291,6 @@
 <translation id="5192837635164433517">لتمكين استخدام صفحات الأخطاء البديلة المضمنة في <ph name="PRODUCT_NAME" /> (مثل "لم يتم العثور على الصفحة") ومنع المستخدمين من تغيير هذا الإعداد. إذا تم تمكين هذا الإعداد، فسيتم استخدام صفحات الأخطاء البديلة. إذا تم تعطيل هذا الإعداد، فلن يتم استخدام صفحات الأخطاء البديلة مطلقًا. إذا تم تمكين هذا الإعداد أو تعطيله، فلن يتمكن المستخدمون من تغيير هذا الإعداد أو تجاوزه في <ph name="PRODUCT_NAME" />. إذا تم ترك هذه السياسة بدون تعيين، فسيتم تمكين هذا الإعداد وسيتمكن المستخدم من تغييره.</translation>
 <translation id="5196805177499964601">‏حظر وضع مطوّر البرامج. إذا تم تعيين هذه السياسة على True فسيمنع <ph name="PRODUCT_OS_NAME" /> الجهاز من بدء التشغيل في وضع مطور البرامج. سيرفض النظام بدء التشغيل وسيظهر رسالة خطأ عند محاولة تشغيل وضع مطوّر البرامج. إذا لم يتم ضبط هذه السياسة أو تم ضبطها على False، فسيبقى وضع مطوّر البرامج متوفرًا على الجهاز.</translation>
 <translation id="5208240613060747912">‏للسماح لك بتعيين قائمة أنماط عناوين URL التي تحدد المواقع التي لا يُسمح لها بعرض الإشعارات. إذا تم ترك هذه السياسة بدون تعيين، فسيتم استخدام القيمة الافتراضية العامة لجميع المواقع إما من السياسة 'DefaultNotificationsSetting' إذا كان قد تم تعيينها أو من التهيئة الشخصية للمستخدم.</translation>
-<translation id="5209594095390052164">‏تسمح باختيار ما إذا تم تمكين تقييد الشبكة أم لا.
-      ينطبق هذا على جميع المستخدمين، وعلى جميع الواجهات على الجهاز، وعند التعيين،
-      يستمر التقييد حتى يتم تغيير السياسة لتعطيله.
-
-      إذا تم التعيين على "false"، فليس هناك أي تقييد.
-      إذا تم التعيين على "true"، فسيتم تقييد النظام لتحقيق معدلات التحميل والتنزيل المتوفرة (بوحدة كيلوبت/الثانية).</translation>
 <translation id="5219844027738217407">‏بالنسبة لتطبيقات Android، تؤثر هذه السياسة على الميكروفون فقط. عند تعيين هذه السياسة على "true"، يتم كتم صوت الميكروفون لجميع تطبيقات Android، دون أي استثناءات.</translation>
 <translation id="5226033722357981948">تحديد إمكانية تعطيل الباحث عن المكوّن الإضافي</translation>
 <translation id="523505283826916779">إعدادات إمكانية الدخول</translation>
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb
index 4e0e595..78af1ea 100644
--- a/components/policy/resources/policy_templates_bg.xtb
+++ b/components/policy/resources/policy_templates_bg.xtb
@@ -1316,12 +1316,6 @@
 
 В случай че правилото не е зададено или е False, режимът за програмисти ще остане налице за устройството.</translation>
 <translation id="5208240613060747912">Позволява да зададете списък с образци за URL адреси, посочващи сайтове, на които не е разрешено да показват известия. Ако това правило е оставено незададено, за всички сайтове ще се използва глобалната стандартна стойност от правилото „DefaultNotificationsSetting“, ако е зададено, или в противен случай – личната конфигурация на потребителя.</translation>
-<translation id="5209594095390052164">Позволява да изберете дали форсирането на мрежата да е активирано.
-Отнася се за всички потребители и интерфейси на устройството. След като бъде зададено,
-форсирането ще е включено, докато не бъде деактивирано чрез правилото.
-
-При false няма форсиране.
-Ако е зададено true, системата се форсира, за да се постигне максималната скорост на качване и изтегляне (в килобитове в секунда).</translation>
 <translation id="5219844027738217407">Това правило засяга приложенията за Android само по отношение на микрофона. Когато е зададено true, той е заглушен за абсолютно всички приложения за Android.</translation>
 <translation id="5226033722357981948">Посочване дали инструментът за търсене на приставки да се деактивира</translation>
 <translation id="523505283826916779">Настройки за достъпност</translation>
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb
index b8ceea6..cafdffc3 100644
--- a/components/policy/resources/policy_templates_bn.xtb
+++ b/components/policy/resources/policy_templates_bn.xtb
@@ -1372,12 +1372,6 @@
 <translation id="5208240613060747912">বিজ্ঞপ্তিগুলি প্রদর্শনের জন্য অনুমোদিত এমন সাইটগুলি নির্দিষ্ট করে এমন url ধরণগুলির একটি তালিকা আপনাকে সেট করার অনুমতি দেয়৷
 
 যদি এই নীতিটি বামে সেট না করে ছেড়ে যাওয়া হয়, তাহলে গ্লোবাল ডিফল্ট মান সব সাইটগুলির জন্য ব্যবহার করা হবে যদি 'ডিফল্ট বিজ্ঞপ্তি সেটিং' নীতি সেট করা হয় তা থেকে, নয়তো ব্যবহারকারীদের ব্যক্তিগত কনফিগারেশান থেকে৷</translation>
-<translation id="5209594095390052164">নেটওয়ার্ক থ্রোটলিং সক্ষম কিনা তা চয়ন করতে মঞ্জুরি দেয়।
-      এটি সকল ব্যবহারকারী এবং ডিভাইসে সকল ইন্টারফেসের ক্ষেত্রে প্রযোজ্য। এটি একবার সেট করা হলে,
-      নীতিটি পরিবর্তন করে এটি অক্ষম না করা পর্যন্ত থ্রোটলিং চলতে থাকে।
-
-      মিথ্যাতে সেট করা হলে, কোনো থ্রোটলিং হয় না।
-      সত্যতে সেট করা হলে, সরবরাহকৃত আপলোড এবং ডাউনলোড হার (kbits/s এ) পেতে সিস্টেম থ্রোটল করা হয়।</translation>
 <translation id="5219844027738217407">Android অ্যাপ্লিকেশানগুলির জন্য, এই নীতিটি কেবলমাত্র মাইক্রোফোনকে প্রভাবিত করে। এই নীতিটি সত্যতে সেট করা থাকলে, কোনো ব্যতিক্রম ছাড়াই সব Android অ্যাপ্লিকেশানগুলির জন্য মাইক্রোফোন নিঃশব্দ করা থাকে।</translation>
 <translation id="5226033722357981948">প্লাগইন সন্ধানকারী অক্ষম হওয়া উচিত কিনা তা নির্দিষ্ট করুন</translation>
 <translation id="523505283826916779">অ্যাক্সেসযোগ্যতার সেটিংস</translation>
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb
index 389cef4..9dba863 100644
--- a/components/policy/resources/policy_templates_ca.xtb
+++ b/components/policy/resources/policy_templates_ca.xtb
@@ -1292,11 +1292,6 @@
 
       Si aquesta política no es defineix o s'estableix com a falsa, el mode de desenvolupador continuarà disponible al dispositiu.</translation>
 <translation id="5208240613060747912">Us permet definir una llista de patrons d'URL que especifiquen els llocs en què no està permès mostrar notificacions. Si no es defineix aquesta política, s'utilitzarà el valor global predeterminat per a tots els llocs tant de la política "DefaultNotificationsSetting", si es defineix, com d'un altre tipus de configuració personal de l'usuari.</translation>
-<translation id="5209594095390052164">Permet triar si l'acceleració de la xarxa està activada o no.
-      S'aplica a tots els usuaris i a totes les interfícies del dispositiu. Un cop establerta, l'acceleració continua fins que la política es canvia per desactivar-la.
-
-      Si s'estableix en "false", no hi ha acceleració.
-      Si s'estableix en "true", el sistema s'accelera per aconseguir les velocitats de càrrega i baixada proporcionades (en kb/s).</translation>
 <translation id="5219844027738217407">En el cas de les aplicacions per a Android, aquesta política afecta només el micròfon. Quan s'estableix en "true", es desactiva el micròfon en totes les aplicacions per a Android, sense cap excepció.</translation>
 <translation id="5226033722357981948">Indica si s'ha de desactivar el cercador de connectors</translation>
 <translation id="523505283826916779">Configuració d'accessibilitat</translation>
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb
index 865ded0..8737ccc4f 100644
--- a/components/policy/resources/policy_templates_cs.xtb
+++ b/components/policy/resources/policy_templates_cs.xtb
@@ -1340,12 +1340,6 @@
 <translation id="5208240613060747912">Umožňuje nastavit seznam vzorů adres URL webových stránek, které nemají povoleno zobrazovat oznámení.
 
          Pokud zásadu nenastavíte, použije se pro všechny webové stránky globální výchozí hodnota buď ze zásady DefaultNotificationsSetting (pokud je nastavena), nebo z osobního nastavení uživatele.</translation>
-<translation id="5209594095390052164">Umožňuje zvolit, zda je aktivováno omezení rychlosti sítě či nikoliv.
-
-      Toto nastavení platí pro všechny uživatele a všechna rozhraní na zařízení. Jakmile je omezení nastaveno, zůstane aktivní, dokud nebude deaktivováno změnou této zásady.
-
-      Je-li tato zásada nastavena na hodnotu False, omezení je vypnuto.
-      Je-li nastavena na hodnotu True, bude systém omezen tak, aby bylo dosaženo zadaných rychlostí nahrávání a stahování (v kilobitech za sekundu).</translation>
 <translation id="5219844027738217407">U aplikací Android má tato zásada vliv pouze na mikrofon. Když je tato zásada nastavena na hodnotu True, je mikrofon pro všechny aplikace Android bez výjimky ztlumen.</translation>
 <translation id="5226033722357981948">Určuje, zda má být deaktivován nástroj pro vyhledávání pluginů</translation>
 <translation id="523505283826916779">Nastavení usnadnění přístupu</translation>
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb
index d7495b77..ada53e80 100644
--- a/components/policy/resources/policy_templates_da.xtb
+++ b/components/policy/resources/policy_templates_da.xtb
@@ -1326,12 +1326,6 @@
 
 Hvis denne politik slås fra eller indstilles til False (falsk), er udviklertilstand fortsat tilgængelig for enheden.</translation>
 <translation id="5208240613060747912">Giver dig mulighed for at oprette en liste med webadressemønstre, der angiver websites, hvor det ikke er tilladt at vise underretninger. Hvis denne politik ikke angives, anvendes den globale standardværdi på alle websites, enten fra politikken "DefaultNotificationsSetting", hvis den er indstillet, eller brugerens personlige konfiguration.</translation>
-<translation id="5209594095390052164">Gør det muligt at vælge, om netværksbegrænsning er aktiveret eller ej.
-      Dette gælder for alle brugere og for alle grænseflader på enheden. Når denne indstilling er valgt,
-      beholdes begrænsningen, indtil politikken ændres for at deaktivere den.
-
-      Hvis den er indstillet til falsk, er der ingen begrænsning.
-      Hvis den er indstillet til sand, er systemet begrænset for at opnå de angivne upload- og downloadhastigheder (i kbits/s).</translation>
 <translation id="5219844027738217407">I Android-apps påvirker denne politik kun mikrofonen. Når denne politik angives som Sand, slås lyden på mikrofonen fra i alle Android-apps uden undtagelser.</translation>
 <translation id="5226033722357981948">Angiv, om pluginsøgning skal deaktiveres</translation>
 <translation id="523505283826916779">Indstillinger for hjælpefunktioner</translation>
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index ab0eb49f9..93dc9b39 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -1294,12 +1294,6 @@
 
       Wird für diese Richtlinie "False" oder gar nichts festgelegt, bleibt der Entwicklermodus für das Gerät verfügbar.</translation>
 <translation id="5208240613060747912">Ermöglicht Ihnen die Zusammenstellung einer Liste mit URL-Mustern, die Websites angeben, denen es nicht gestattet ist, Benachrichtigungen anzuzeigen. Wenn diese Richtlinie nicht konfiguriert ist, kommt für alle Websites entweder der globale Standardwert der Richtlinie "DefaultNotificationsSetting", sofern konfiguriert, oder der persönlichen Konfiguration des Nutzers zum Einsatz.</translation>
-<translation id="5209594095390052164">Die Aktivierung oder Deaktivierung der Netzwerkbegrenzung wird festgelegt.
-      Diese Richtlinie gilt für alle Nutzer und alle Oberflächen auf diesem Gerät. Nachdem die Richtlinie festgelegt wurde,
-      kann die Begrenzung nur durch Deaktivierung der Richtlinie aufgehoben werden.
-
-      Wird die Richtlinie auf "false" gesetzt, wird keine Begrenzung festgelegt.
-      Wenn Sie auf "true" gesetzt wird, wird das System begrenzt, damit die angegeben Upload- und Downloadwerte in kbit/s eingehalten werden.</translation>
 <translation id="5219844027738217407">Bei Android-Apps betrifft diese Richtlinie nur das Mikrofon. Wenn diese Richtlinie auf "true" gesetzt ist, wird das Mikrofon ohne Ausnahme für alle Android-Apps stummgeschaltet.</translation>
 <translation id="5226033722357981948">Angeben, ob Plug-in-Suchfunktion deaktiviert werden soll</translation>
 <translation id="523505283826916779">Zugänglichkeitseinstellungen</translation>
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb
index b1eae4fa..7a8dcd2 100644
--- a/components/policy/resources/policy_templates_el.xtb
+++ b/components/policy/resources/policy_templates_el.xtb
@@ -1380,11 +1380,6 @@
 <translation id="5208240613060747912">Σας επιτρέπει να ορίσετε μια λίστα με τα μοτίβα διευθύνσεων url που προσδιορίζουν τους ιστότοπους στους οποίους δεν επιτρέπεται να εμφανίζουν ειδοποιήσεις.
 
           Αν αυτή η πολιτική δεν οριστεί θα χρησιμοποιηθεί η καθολική προεπιλεγμένη τιμή για όλους τους ιστότοπους είτε από την πολιτική ''DefaultNotificationsSetting'' εφόσον οριστεί, είτε από την προσωπική διαμόρφωση του χρήστη.</translation>
-<translation id="5209594095390052164">Επιτρέπει τον καθορισμό της ενεργοποίησης ή της απενεργοποίησης του περιορισμού δικτύου.
-      Αυτό ισχύει για όλους τους χρήστες και για όλες τις διεπαφές στη συσκευή. Αφού οριστεί, ο περιορισμός παραμένει μέχρι να αλλάξει η πολιτική, προκειμένου να απενεργοποιηθεί.
-
-      Εάν οριστεί ως ψευδής, δεν υπάρχει περιορισμός.
-      Εάν οριστεί ως αληθής, το σύστημα περιορίζεται, ώστε να επιτευχθούν οι παρεχόμενες ταχύτητες μεταφόρτωσης και λήψης (σε kbit/δ.).</translation>
 <translation id="5219844027738217407">Για τις εφαρμογές Android, αυτή η πολιτική επηρεάζει μόνο το μικρόφωνο. Όταν αυτή η πολιτική ορίζεται αληθής, το μικρόφωνο τίθεται σε σίγαση για όλες τις εφαρμογές Android, χωρίς εξαίρεση.</translation>
 <translation id="5226033722357981948">Καθορίστε αν θα πρέπει να γίνει απενεργοποίηση του εργαλείου αναζήτησης προσθηκών</translation>
 <translation id="523505283826916779">Ρυθμίσεις προσβασιμότητας</translation>
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 964c4a7..992505e 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -1403,12 +1403,6 @@
 <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>
-<translation id="5209594095390052164">Allows choosing whether network throttling is enabled or not.
-      This applies to all users, and to all interfaces on the device. Once set,
-      the throttling persists until the policy is changed to disable it.
-
-      If set to false, there is no throttling.
-      If set to true, the system is throttled to achieve the provided upload and download rates (in kbits/s).</translation>
 <translation id="5219844027738217407">For Android apps, this policy affects the microphone only. When this policy is set to true, the microphone is muted for all Android apps, with no exceptions.</translation>
 <translation id="5226033722357981948"> finder should be disabled</translation>
 <translation id="523505283826916779">Accessibility settings</translation>
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 2717fef..a2181844 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -1304,13 +1304,6 @@
 
       Si la política se establece en False o no se establece, el modo de programador seguirá disponible para el dispositivo.</translation>
 <translation id="5208240613060747912">Te permite configurar una lista de patrones de URL que especifican los sitios que no están autorizados a mostrar notificaciones. Si esta política no se configura, se usará el valor global predeterminado para todos los sitios ya sea de la política "DefaultNotificationsSetting", si está configurada, o de otro tipo de configuración personal del usuario.</translation>
-<translation id="5209594095390052164">Permite elegir si se habilita la velocidad moderada de la red.
-      Esta acción se aplica a todos los usuarios y todas las interfaces en 
-      el dispositivo. Si se establece, la velocidad moderada persiste hasta 
-      que la política se cambia para inhabilitarla.
-
-      Si se establece como falsa, no se aplica la velocidad moderada.
-      Si se establece como verdadera, el sistema se acelera para alcanzar las velocidades de carga y descarga (en kbits/s).</translation>
 <translation id="5219844027738217407">Para las apps de Android, esta política solo afecta al micrófono. Cuando esta política se establece como falsa, se silencia el micrófono para todas las apps de Android, sin excepciones.</translation>
 <translation id="5226033722357981948">Indicar si el buscador de complemento se debe inhabilitar.</translation>
 <translation id="523505283826916779">Configuración de accesibilidad</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index d6954d2..db604c0 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -1399,12 +1399,6 @@
 <translation id="5208240613060747912">Permite establecer una lista de patrones de URL para especificar los sitios que no pueden mostrar notificaciones.
 
           Si no se establece esta política, se usará para todos los sitios el valor general predeterminado que se indique en la política DefaultNotificationsSetting (si se ha establecido) o el valor personalizado que haya definido el usuario (en caso contrario).</translation>
-<translation id="5209594095390052164">Permite elegir si el usuario quiere habilitar o inhabilitar la limitación del ancho de banda.
-      Esto se aplica a todos los usuarios y a todas las interfaces del dispositivo. Cuando se haya establecido
-      la limitación, esta se mantendrá hasta que se cambie la política para inhabilitarla.
-
-      Si se asigna el valor false, no se habilitará la limitación.
-      Si se asigna el valor true, se establece una limitación en el sistema para alcanzar una determinada velocidad de subida y de bajada (en kbit/s).</translation>
 <translation id="5219844027738217407">En el caso de las aplicaciones para Android, esta política afecta solo al micrófono. Si se asigna el valor true a esta política, el micrófono se silenciará en todas las aplicaciones para Android, sin excepciones.</translation>
 <translation id="5226033722357981948">Especificar si se debe inhabilitar el buscador de complementos</translation>
 <translation id="523505283826916779">Configuración de accesibilidad</translation>
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb
index 3451a42..b247550 100644
--- a/components/policy/resources/policy_templates_et.xtb
+++ b/components/policy/resources/policy_templates_et.xtb
@@ -1385,12 +1385,6 @@
 <translation id="5208240613060747912">Võimaldab määrata URL-i mustrite loendi, mis määrab saidid, millel ei ole lubatud teatisi kuvada.
 
           Kui jätate selle reegli määramata, siis kasutatakse kõikide saitide puhul globaalset vaikeväärtust, mis pärineb reeglist „DefaultNotificationsSetting”, kui see on määratud, või kasutaja isiklikku konfigureerimist.</translation>
-<translation id="5209594095390052164">Võimaldab valida, kas võrguühenduse piiramine on lubatud või mitte.
-      See kehtib kõigi kasutajate ja seadme kõigi liideste puhul. Pärast määramist
-      on piirang aktiivne, kuni see reeglis keelatakse.
-
-      Kui reegel on määratud väärtusele Väär, ei ole võrguühendus piiratud.
-      Kui reegel on määratud väärtusele Tõene, on süsteem piiratud, et järgida määratud üles- ja allalaadimiskiirust (kbit/s).</translation>
 <translation id="5219844027738217407">Androidi rakenduste puhul mõjutab see reegel ainult mikrofoni. Kui reegli väärtuseks on määratud Tõene, on mikrofon ilma eranditeta kõigi Androidi rakenduste puhul vaigistatud.</translation>
 <translation id="5226033722357981948">Määramine, kas pistikprogrammide leidja tuleks keelata</translation>
 <translation id="523505283826916779">Juurdepääsuseaded</translation>
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb
index e0a4a1a6e..1444010 100644
--- a/components/policy/resources/policy_templates_fa.xtb
+++ b/components/policy/resources/policy_templates_fa.xtb
@@ -1289,11 +1289,6 @@
 
       اگر این خط‌مشی تنظیم نشود یا روی «False» تنظیم شود، حالت برنامه‌نویس برای این دستگاه در دسترس باقی خواهد ماند.</translation>
 <translation id="5208240613060747912">‏به شما امکان می‌دهد تا لیستی از الگوهای URL تعیین کنید که سایت‌هایی را مشخص می‌کند که اجازه نمایش اعلان را ندارند. اگر این قانون تنظیم نشده باقی بماند، از مقدار عمومی پیش‌فرض برای تمام سایت‌ها، خواه برگرفته از قانون "DefaultNotificationsSetting"، در صورت تنظیم بودن، یا پیکربندی شخصی کاربر، استفاده می‌شود.</translation>
-<translation id="5209594095390052164">اجازه می‌دهد بین دو گزینه فعال کردن یا نکردن بهینه‌سازی شبکه یکی را انتخاب کنید.
-      این خط‌مشی در مورد همه کاربران و واسط‌های روی دستگاه اعمال می‌شود. پس از تنظیم این خط‌مشی، بهینه‌سازی شبکه تغییر نمی‌کند مگر اینکه این خط‌مشی برای غیرفعال کردن بهینه‌سازی تغییر کند.
-
-      اگر این خط‌مشی روی نادرست تنظیم شود، بهینه‌سازی وجود ندارد.
-      اگر این خط‌مشی روی درست تنظیم شود، سیستم‌ برای دستیابی به نرخ‌های بارگیری و بارگذاری ارائه‌شده (در واحد کیلوبیت/ثانیه) بهینه‌سازی می‌شود.</translation>
 <translation id="5219844027738217407">‏برای برنامه‌های Android، این خط‌مشی فقط بر میکروفون تأثیر می‌گذارد. وقتی این خط‌مشی روی درست تنظیم شده باشد، میکروفون برای همه برنامه‌های Android (بدون استثنا) صامت می‌شود.</translation>
 <translation id="5226033722357981948">تعیین اینکه آیا افزایه‌یاب باید غیرفعال باشد یا نه</translation>
 <translation id="523505283826916779">تنظیمات دسترس‌پذیری</translation>
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb
index 5494819..1f91aa36 100644
--- a/components/policy/resources/policy_templates_fi.xtb
+++ b/components/policy/resources/policy_templates_fi.xtb
@@ -1308,12 +1308,6 @@
 
       Jos käytäntöä ei määritetä tai sen arvoksi asetetaan False, laitetta voi käyttää kehittäjätilassa.</translation>
 <translation id="5208240613060747912">Voit määrittää luettelon URL-malleja, joissa määritetään sivustot, jotka eivät saa näyttää ilmoituksia. Jos tätä käytäntöä ei ole määritetty, kaikille sivustoille käytetään joko DefaultNotificationsSetting-käytännön yleistä oletusarvoa, jos se on asetettu, tai käyttäjän henkilökohtaisia määrityksiä.</translation>
-<translation id="5209594095390052164">Sallii valinnan, onko verkon rajoitus käytössä vai ei.
-      Tämä koskee kaikkia käyttäjiä ja kaikkia laitteen käyttöliittymiä. Kun se on
-      määritetty, rajoitus on voimassa, kunnes käytännöksi muutetaan sen käytöstä poistaminen.
-
-      Jos arvoksi on määritetty epätosi, rajoitusta ei käytetä.
-      Jos arvoksi on määritetty tosi, järjestelmää rajoitetaan niin paljon, että saavutetaan annetut lähetys- ja latausnopeudet (kb/s).</translation>
 <translation id="5219844027738217407">Android-sovellusten kohdalla tämä käytäntö vaikuttaa vain mikrofoniin. Kun tämän käytännön arvoksi on määritetty tosi, mikrofoni on mykistetty kaikkien Android-sovellusten kohdalla, ilman poikkeuksia.</translation>
 <translation id="5226033722357981948">Määritä, tuleeko laajennuksien haun olla pois käytöstä</translation>
 <translation id="523505283826916779">Käytettävyysasetukset</translation>
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb
index fc16c23a7..2f84564c6 100644
--- a/components/policy/resources/policy_templates_fil.xtb
+++ b/components/policy/resources/policy_templates_fil.xtb
@@ -1387,12 +1387,6 @@
 <translation id="5208240613060747912">Binibigyang-daan kang magtakda ng isang listahan ng mga pattern ng url na tumutukoy sa mga site na hindi pinapayagang magpakita ng mga notification.
 
           Kung hinayaang hindi nakatakda ang patakarang ito gagamitin ang global na default na halaga para sa lahat ng site mula sa patakarang 'DefaultNotificationsSetting' kung nakatakda ito, o kung hindi man ay sa personal na configuration ng user.</translation>
-<translation id="5209594095390052164">Pinapayagan ang pagpili kung naka-enable o hindi ang pag-throttle ng network.
-      Naaangkop ito sa lahat ng user, at sa lahat ng interface sa device. Kapag naitakda na,
-      magpapatuloy ang pag-throttle hanggang sa mabago ang patakaran para i-disable na ito.
-
-      Kung nakatakda sa false, walang pag-throttle.
-      Kung nakatakda sa true, naka-throttle ang system upang makamit ang mga partikular na rate ng pag-upload at pag-download (sa kbits/s).</translation>
 <translation id="5219844027738217407">Para sa mga Android app, nakakaapekto lang sa mikropono ang patakarang ito. Kapag nakatakda sa true ang patakarang ito, imu-mute ang mikropono para sa lahat ng Android app, nang walang exception.</translation>
 <translation id="5226033722357981948">Tukuyin kung dapat na hindi paganahin ang tagahanap ng plugin</translation>
 <translation id="523505283826916779">Mga setting ng accessibility</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 01865bb7..a4c5881 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -1417,14 +1417,6 @@
 <translation id="5208240613060747912">Permet de définir une liste de formats d'URL spécifiant les sites qui ne sont pas autorisés à afficher des notifications. 
 
 Si cette règle n'est pas configurée, la valeur par défaut globale sera utilisée pour tous les sites à partir de la règle "DefaultNotificationsSetting", si elle est définie, ou à défaut, à partir de la configuration personnelle de l'utilisateur.</translation>
-<translation id="5209594095390052164">Permet d'activer ou de désactiver la limitation du débit réseau.
-      Cette règle s'applique à l'ensemble des utilisateurs et des interfaces de
-      l'appareil. Une fois la règle définie, la limitation reste active jusqu'à ce que la
-      règle soit modifiée.
-
-      Si cette règle est définie sur "False", aucune limitation n'est définie.
-      Si cette règle est définie sur "True", la bande passante est limitée
-      aux taux de téléchargement et de transfert fournis (en Kbits/s).</translation>
 <translation id="5219844027738217407">Cette règle ne s'applique qu'au micro pour les applications Android. Lorsqu'elle est définie sur "True", le son du micro est coupé pour toutes les applications Android sans exception.</translation>
 <translation id="5226033722357981948">Indiquer si l'outil de recherche de plug-ins doit être désactivé</translation>
 <translation id="523505283826916779">Paramètres d'accessibilité</translation>
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb
index 908ee840..d62b2dd3 100644
--- a/components/policy/resources/policy_templates_gu.xtb
+++ b/components/policy/resources/policy_templates_gu.xtb
@@ -1394,14 +1394,6 @@
 <translation id="5208240613060747912">તમને url દાખલાઓની એક સૂચિ સેટ કરવા દે છે જે સૂચનાઓને પ્રદર્શિત કરવાની મંજૂરી ન આપતી સાઇટ્સનો ઉલ્લેખ કરે છે.
 
           જો આ નીતિ સેટ કર્યા વિના છોડી હોય તો 'DefaultNotificationsSetting' નીતિએ જો સેટ કરી હોય તો તે, અથવા વપરાશકર્તાની વ્યક્તિગત ગોઠવણીમાંથી વૈશ્વિક ડિફૉલ્ટ મૂલ્યનો ઉપયોગ તમામ સાઇટ્સ માટે કરવામાં આવશે.</translation>
-<translation id="5209594095390052164">નેટવર્ક થ્રોટલિંગ સક્ષમ કરેલ છે કે કેમ તે પસંદ કરવાની મંજૂરી આપે છે.
-      આ તમામ વપરાશકર્તાઓ અને ઉપકરણ પરના તમામ ઇન્ટરફેસ પર લાગુ થાય છે. એકવાર
-      સેટ થઈ જાય તે પછી, નીતિ તેને અક્ષમ કરો પર બદલી દેવામાં ન આવે ત્યાં સુધી થ્રોટલિંગ
-      યથાવત્ રહે છે.
-
-      જો false પર સેટ કરેલ હોય, તો કોઈ થ્રોટલિંગ નહીં થાય.
-      જો true પર સેટ કરેલ હોય, તો આપેલ અપલોડ અને ડાઉનલોડ દર (kbits/સે માં) મેળવવા
-      માટે સિસ્ટમ થ્રોટલ કરવામાં આવે છે.</translation>
 <translation id="5219844027738217407">Android ઍપ્લિકેશનો માટે, આ નીતિ ફક્ત માઇક્રોફોનને પ્રભાવિત કરે છે. જ્યારે આ નીતિ true પર સેટ કરેલ હોય, ત્યારે વિના કોઈ અપવાદે તમામ Android ઍપ્લિકેશનો માટે માઇક્રોફોન મ્યૂટ કરવામાં આવે છે.</translation>
 <translation id="5226033722357981948">પ્લગઇન ફાઇન્ડર અક્ષમ હોવું જોઈએ કે નહીં તેનો ઉલ્લેખ કરો</translation>
 <translation id="523505283826916779">ઍક્સેસિબિલિટી સેટિંગ્સ</translation>
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb
index 06e41db..0a1404a0 100644
--- a/components/policy/resources/policy_templates_hi.xtb
+++ b/components/policy/resources/policy_templates_hi.xtb
@@ -1376,12 +1376,6 @@
 <translation id="5208240613060747912">आपको उन url प्रतिमानों की सूची सेट करने देती है जो ऐसी साइटों को निर्दिष्ट करते हैं जिनमें प्रदर्शन नोटिफिकेशन की अनुमति है.
 
           यदि यह नीति सेट किए बिना छोड़ दी जाती है तो सभी साइटों के लिए वैश्विक डिफ़ॉल्‍ट मान का उपयोग या तो 'DefaultNotificationsSetting' नीति के सेट होने पर इससे किया जाएगा, या अन्‍यथा उपयोगकर्ता के व्‍यक्तिगत कॉन्‍फ़‍िगरेशन से किया जाएगा.</translation>
-<translation id="5209594095390052164">यह चुनने देती है कि क्या नेटवर्क थ्रॉटलिंग सक्षम है या नहीं.
-      यह सभी उपयोगकर्ताओं और डिवाइस पर सभी इंटरफ़ेस पर लागू होता है. सेट कर दिए जाने के बाद,
-      थ्रॉटलिंग तब तक बनी रहती है जब तक नीति को इसे अक्षम करने के लिए बदला नहीं जाता है.
-
-      यदि गलत पर सेट किया जाता है, तो कोई थ्रॉटलिंग नहीं होगी.
-      यदि सही पर सेट किया जाता है, तो सिस्टम को प्रदान की गई अपलोड और डाउनलोड दरों (kbit/सें. में) प्राप्त करने के लिए थ्रॉटल किया जाता है.</translation>
 <translation id="5219844027738217407">Android ऐप्लिकेशन के लिए, यह नीति केवल माइक्रोफ़ोन को प्रभावित करती है. जब यह नीति सही पर सेट होती है, तो माइक्रोफ़ोन को बिना किसी अपवाद के, सभी Android ऐप्लिकेशन के लिए म्यूट कर दिया जाता है.</translation>
 <translation id="5226033722357981948">निर्दिष्‍ट करें कि प्‍लग इन खोजकर्ता अक्षम है या नहीं</translation>
 <translation id="523505283826916779">पहुंच-योग्यता विकल्प</translation>
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb
index 24438444..f2379c7 100644
--- a/components/policy/resources/policy_templates_hr.xtb
+++ b/components/policy/resources/policy_templates_hr.xtb
@@ -1313,12 +1313,6 @@
 
       Ako se to pravilo ne postavi ili se postavi na lažno, način rada razvojnog programera bit će dostupan za uređaj.</translation>
 <translation id="5208240613060747912">Omogućuje postavljanje popisa uzoraka URL-ova koji određuju web-lokacije koje ne smiju prikazivati obavijesti. Ako ovo pravilo nije postavljeno, upotrebljavat će se globalna zadana vrijednost za sve web-lokacije iz pravila "DefaultNotificationsSetting" ako je postavljeno, odnosno iz osobne konfiguracije korisnika ako nije.</translation>
-<translation id="5209594095390052164">Omogućuje odabir uključivanja ili isključivanja mogućnosti usporavanja mreže.
-      Primjenjuje se na sve korisnike i sva sučelja na uređaju. Kada se postavi,
-      usporavanje traje dok se ne isključi tim pravilom.
-
-      Ako se postavi na False, nema usporavanja.
-      Ako se postavi na True, sustav se usporava da bi se postigle pružene stope prijenosa i preuzimanja (u kbits/s).</translation>
 <translation id="5219844027738217407">Za Android aplikacije to pravilo utječe samo na mikrofon. Kada se to pravilo postavi na True, mikrofon je isključen za sve Android aplikacije, bez iznimke.</translation>
 <translation id="5226033722357981948">Odredi treba li onemogućiti alat za traženje dodataka</translation>
 <translation id="523505283826916779">Postavke pristupačnosti</translation>
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb
index 148463a6..e37679a9 100644
--- a/components/policy/resources/policy_templates_hu.xtb
+++ b/components/policy/resources/policy_templates_hu.xtb
@@ -1306,12 +1306,6 @@
 
       Ha a szabály nincs beállítva, illetve értéke Hamis, a fejlesztői mód elérhető marad az eszköz számára.</translation>
 <translation id="5208240613060747912">Lehetővé teszi, hogy megadja az URL-minták egy olyan listáját, amely meghatározza, mely webhelyek nem jeleníthetnek meg értesítéseket. Ha ez a házirend beállítatlanul marad, akkor a globális alapértelmezett érték kerül felhasználásra valamennyi webhelyre vonatkozóan; vagy -- ha be van állítva -- a "DefaultNotificationsSetting" házirendből, vagy pedig a felhasználó személyes konfigurációjából.</translation>
-<translation id="5209594095390052164">Lehetővé teszi annak kiválasztását, hogy engedélyezve van-e a hálózatszabályozás.
-      Minden felhasználóra és az eszköz minden felületére vonatkozik. A beállítást követően
-      a szabályozás a házirend kikapcsolásáig érvényben marad.
-
-      Ha a házirend értéke hamis, akkor nincs szabályozás.
-      Ha a házirend értéke igaz, akkor szabályozza a rendszert a megadott feltöltési és letöltési sebességének eléréséhez (kbit/s értékben megadva).</translation>
 <translation id="5219844027738217407">Az Android-alkalmazások esetében ez a házirend csak a mikrofonra vonatkozik. Ha a házirend beállítása igaz, a rendszer kivétel nélkül valamennyi Android-alkalmazásra vonatkozóan némítja a mikrofont.</translation>
 <translation id="5226033722357981948">Adja meg, hogy a bővítménykereső le legyen-e tiltva</translation>
 <translation id="523505283826916779">Kisegítő beállítások</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 612c761..f70db5d 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -1313,12 +1313,6 @@
 
       Jika kebijakan ini tidak disetel atau disetel ke False, mode pengembang akan tetap tersedia untuk perangkat.</translation>
 <translation id="5208240613060747912">Memungkinkan Anda menyetel daftar pola url yang menentukan situs yang tidak diizinkan untuk menampilkan pemberitahuan. Jika kebijakan ini tidak disetel, nilai default global akan digunakan untuk semua situs, baik dari kebijakan 'DefaultNotificationsSetting', jika disetel, atau konfigurasi pribadi pengguna.</translation>
-<translation id="5209594095390052164">Mengizinkan memilih apakah pembatasan diaktifkan atau tidak.
-      Kebijakan ini berlaku untuk semua pengguna, dan untuk semua antarmuka di perangkat. Setelah disetel,
-      pembatasan akan terus berlanjut hingga kebijakan ini dinonaktifkan.
-
-      Jika disetel ke false, tidak ada pembatasan.
-      Jika disetel ke true, sistem akan dibatasi untuk menerima laju upload dan download (dalam kbit/dtk).</translation>
 <translation id="5219844027738217407">Untuk aplikasi Android, kebijakan ini hanya memengaruhi mikrofon. Jika kebijakan disetel ke true, mikrofon akan dibisukan untuk semua aplikasi Android, tanpa pengecualian.</translation>
 <translation id="5226033722357981948">Menentukan apakah pencari plugin harus dinonaktifkan</translation>
 <translation id="523505283826916779">Setelan aksesibilitas</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 8d1a584..a8d76c00 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -1258,11 +1258,6 @@
 
       Se questa norma non è impostata o è impostata su False, la modalità sviluppatore continuerà a essere disponibile per il dispositivo.</translation>
 <translation id="5208240613060747912">Consente di impostare un elenco di pattern URL che specificano i siti non autorizzati a visualizzare notifiche. Se questa norma non viene impostata, per tutti i siti verrà utilizzato il valore predefinito globale della norma "DefaultNotificationsSetting", se è impostata, oppure verrà utilizzata la configurazione personale dell'utente.</translation>
-<translation id="5209594095390052164">Consente di scegliere se attivare o meno la limitazione della larghezza di banda.
-      La scelta è valida per tutti gli utenti e per tutte le interfacce sul dispositivo. Una volta impostata, la limitazione rimane valida fino alla modifica della norma per disattivarla.
-
-      Se la norma viene impostata su false, non viene applicata alcuna limitazione.
-      Se viene impostata su true, il sistema viene limitato per raggiungere le velocità di caricamento e download indicate (in kbit/s).</translation>
 <translation id="5219844027738217407">Nell'ambito delle app Android, la norma influisce solo sul microfono. Se la norma viene impostata su true, il microfono viene disattivato per tutte le app Android, senza alcuna eccezione.</translation>
 <translation id="5226033722357981948">Specifica se la ricerca plug-in deve essere disattivata</translation>
 <translation id="523505283826916779">Impostazioni di accessibilità</translation>
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index 93e0c292..f151a59 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -1296,13 +1296,6 @@
 
       אם המדיניות הזו מוגדרת כ-False, מצב המפתח יישאר זמין עבור המכשיר.</translation>
 <translation id="5208240613060747912">‏מאפשר לך להגדיר רשימה של דפוסי כתובות אתר המפרטת אתרים עם אישור להציג התראות. ם מדיניות זו לא הוגדרה, המערכת תשתמש בערך ברירת המחדל הכללי עבור כל האתרים לפי המדיניות 'DefaultNotificationsSetting' במקרה שהוגדרה, או לפי התצורה האישית שקבע המשתמש במקרה שלא הוגדרה.</translation>
-<translation id="5209594095390052164">‏מאפשרת לבחור האם ויסות הרשת פועל.
-      הקביעה חלה על כל המשתמשים ועל כל הממשקים במכשיר. לאחר ההגדרה, הוויסות נמשך עד   
-      שהמדיניות משתנה ומשביתה את הוויסות.
-      
-      אם היא מוגדרת כ-false, לא מתבצע ויסות.
-      אם היא מוגדרת כ-true, המערכת מווסתת כדי להגיע אל שיעורי ההעלאה וההורדה שסופקו  
-     (בקילובייט לשנייה).</translation>
 <translation id="5219844027738217407">‏באפליקציות Android, המדיניות הזו משפיעה רק על המיקרופון. כשהמדיניות הזו מוגדרת כ-true, המיקרופון מושתק בכל אפליקציות Android, ללא חריגים.</translation>
 <translation id="5226033722357981948">ציין אם מאתר יישומי הפלאגין צריך להיות מושבת</translation>
 <translation id="523505283826916779">הגדרות נגישות</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index b78f4ad..ff034c2 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -1306,12 +1306,6 @@
 
       このポリシーが未設定か、False に設定されている場合、デバイスではデベロッパー モードを使用できます。</translation>
 <translation id="5208240613060747912">通知表示を許可しないサイトを指定する URL パターンのリストを設定できます。このポリシーが未設定の場合、グローバルのデフォルト値がすべてのサイトで使用されます。グローバルのデフォルト値は「DefaultNotificationsSetting」ポリシーの値か、この値が未設定の場合はユーザーの個人設定の値です。</translation>
-<translation id="5209594095390052164">ネットワーク制限を有効にするかどうかを選択できます。
-      この選択はすべてのユーザーと端末の管理画面に適用されます。
-      設定後、ポリシーを無効に変更しない限り、制限は適用されたままとなります。
-
-      false に設定した場合、制限は適用されません。
-      true に設定した場合、指定した送受信速度(キロビット / 秒)を超えないようシステムで制限されます。</translation>
 <translation id="5219844027738217407">Android アプリに対しては、このポリシーはマイクにのみ適用されます。このポリシーを true に設定した場合、すべての Android アプリでは例外なくマイクがミュートされます。</translation>
 <translation id="5226033722357981948">プラグイン ファインダーを無効にすべきかどうかを指定する</translation>
 <translation id="523505283826916779">ユーザー補助の設定</translation>
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb
index 8fa819d0..e0dc079b 100644
--- a/components/policy/resources/policy_templates_kn.xtb
+++ b/components/policy/resources/policy_templates_kn.xtb
@@ -1301,11 +1301,6 @@
 
       ಒಂದು ವೇಳೆ ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಬಿಟ್ಟರೆ ಅಥವಾ ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದ್ದರೆ, ಡೆವಲಪರ್ ಮೋಡ್ ಸಾಧನಕ್ಕೆ ಲಭ್ಯ ಸ್ಥಿತಿಯಲ್ಲಿಯೇ ಉಳಿಯುತ್ತದೆ.</translation>
 <translation id="5208240613060747912">ಅಧಿಸೂಚನೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಅನುಮತಿಸದೆ ಇರುವಂತಹ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಂತಹ url ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೆ ಬಿಟ್ಟಲ್ಲಿ ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು 'DefaultNotificationsSetting' ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದ್ದಲ್ಲಿ ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಅಥವಾ ಬಳಕೆದಾರರ ವೈಯಕ್ತಿಕ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.</translation>
-<translation id="5209594095390052164">ನೆಟ್‌ವರ್ಕ್ ನಿಯಂತ್ರಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ.
-      ಇದು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಮತ್ತು ಸಾಧನದಲ್ಲಿನ ಎಲ್ಲಾ ಇಂಟರ್ಫೇಸ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಒಮ್ಮೆ ಹೊಂದಿಸಿದರೆ, ನಿಯಂತ್ರಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀತಿಯನ್ನು ಬದಲಾಯಿಸುವ ತನಕ ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುತ್ತದೆ.
-
-      ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದರೆ, ಯಾವುದೇ ನಿಯಂತ್ರಿಸುವಿಕೆ ಇರುವುದಿಲ್ಲ.
-      ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, ಒದಗಿಸಲಾದ ಅಪ್‌ಲೋಡ್‌ ಮತ್ತು ಡೌನ್‌ಲೋಡ್ ದರಗಳನ್ನು (kbits/s ನಲ್ಲಿ) ಆರ್ಕೈವ್ ಮಾಡಲು ಸಿಸ್ಟಂ ಅನ್ನು ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="5219844027738217407">Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ, ಈ ನೀತಿಯು ಮೈಕ್ರೋಫೋನ್‌ಗೆ ಮಾತ್ರ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಈ ನೀತಿಯನ್ನು ನಿಜ ಎಂಬುದಕ್ಕೆ ಹೊಂದಿಸಿದರೆ, ಯಾವುದೇ ವಿನಾಯಿತಿಗಳಿಲ್ಲದೇ, ಎಲ್ಲಾ Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation>
 <translation id="5226033722357981948">ಪ್ಲಗ್‌ಇನ್ ಗ್ರಾಹಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬೇಕೇ ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ</translation>
 <translation id="523505283826916779">ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index dcb23d4..878e75a 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -1393,12 +1393,6 @@
 <translation id="5208240613060747912">알림 표시가 허용되지 않는 사이트를 지정하는 URL 패턴 목록을 설정할 수 있습니다.
 
           이 정책을 설정하지 않은 경우 'DefaultNotificationsSetting' 정책이 설정되면 해당 정책의, 그렇지 않으면 사용자 개인 설정의 전체 기본값이 모든 사이트에서 사용됩니다.</translation>
-<translation id="5209594095390052164">네트워크 조절의 사용 또는 사용 중지 선택을 허용합니다.
-      이는 모든 사용자 및 기기의 모든 인터페이스에 적용됩니다. 설정되면
-      정책이 조절을 사용 중지하도록 변경될 때까지 조절이 계속됩니다.
-
-      false로 설정되면 조절되지 않습니다.
-      true로 설정되면 시스템이 조절되어 제공된 업로드 및 다운로드 속도(kbits/s 단위)에 도달합니다.</translation>
 <translation id="5219844027738217407">Android 앱의 경우 이 정책은 마이크에만 영향을 줍니다. 이 정책이 true로 설정되면 마이크는 모든 앱에서 음소거되며 예외는 없습니다.</translation>
 <translation id="5226033722357981948">플러그인 Finder를 사용 중지해야 하는지 여부 지정</translation>
 <translation id="523505283826916779">접근성 설정</translation>
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb
index 2531cca..a8d92ff 100644
--- a/components/policy/resources/policy_templates_lt.xtb
+++ b/components/policy/resources/policy_templates_lt.xtb
@@ -1402,12 +1402,6 @@
 <translation id="5208240613060747912">Leidžiama nustatyti URL šablonų, nurodančių svetaines, kuriose neleidžiama pateikti pranešimų, sąrašą.
 
           Nenustačius šios politikos, visose svetainėse naudojama visuotinė numatytoji vertė iš politikos „Numatytasis pranešimų nustatymas“ (jei nustatyta) arba naudotojo asmeninės konfigūracijos.</translation>
-<translation id="5209594095390052164">Leidžiama pasirinkti, ar įgalintas tinklo reguliavimas.
-      Tai taikoma visiems naudotojams ir visoms sąsajoms įrenginyje. Nustačius
-      reguliavimas taikomas, kol politika pakeičiama, kad jis būtų išjungtas.
-
-      Nustačius į „False“, nereguliuojama.
-      Nustačius į „True“, sistema reguliuojama, kad pasiektų pateiktą įkėlimo ir atsisiuntimo spartą (kilobitais per sek.).</translation>
 <translation id="5219844027738217407">„Android“ programose ši politika turi įtakos tik mikrofonui. Kai ši politika nustatyta į „Tiesa“, mikrofonas be išimčių nutildomas visose „Android“ programose.</translation>
 <translation id="5226033722357981948">Nurodyti, ar turi būti neleidžiamas papildinių ieškiklis</translation>
 <translation id="523505283826916779">Pasiekiamumo nustatymai</translation>
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb
index 5791351f..c3da99d 100644
--- a/components/policy/resources/policy_templates_lv.xtb
+++ b/components/policy/resources/policy_templates_lv.xtb
@@ -1392,12 +1392,6 @@
 <translation id="5208240613060747912">Ļauj iestatīt URL rakstu sarakstu, kurā ir norādītas vietnes, kurām nav atļauts attēlot paziņojumus.
 
           Ja šī politika nav iestatīta, visām vietnēm tiks izmantota globālā noklusējuma vērtība no politikas DefaultNotificationsSetting (ja tā ir iestatīta) vai pretējā gadījumā no lietotāja personīgās konfigurācijas.</translation>
-<translation id="5209594095390052164">Ļauj izvēlēties, vai iespējot tīkla ierobežošanu.
-      Tas attiecas uz visiem lietotājiem un uz visām saskarnēm ierīcē. Esot iestatītai šai politikai,
-      ierobežošana ir spēkā, līdz tiek mainīta politika, lai to atspējotu.
-
-      Ja ir iestatīta vērtība “Nepatiesa”, sistēma netiek ierobežota.
-      Ja ir iestatīta vērtība “Patiesa”, sistēma tiek ierobežota, lai sasniegtu nodrošināto augšupielāžu un lejupielāžu ātrumu (Kb/s).</translation>
 <translation id="5219844027738217407">Android lietotnēs šī politika ietekmē tikai mikrofonu. Kad šī politika ir iestatīta kā patiesa, mikrofons tiek izslēgts visās Android lietotnēs bez izņēmuma.</translation>
 <translation id="5226033722357981948">Norāda, vai ir jāatspējo spraudņu meklētājs</translation>
 <translation id="523505283826916779">Pieejamības iestatījumi</translation>
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb
index db264044..fe1b798 100644
--- a/components/policy/resources/policy_templates_ml.xtb
+++ b/components/policy/resources/policy_templates_ml.xtb
@@ -1410,12 +1410,6 @@
 <translation id="5208240613060747912">അറിയിപ്പുകൾ ദൃശ്യമാക്കാൻ അനുവദിക്കാത്ത സൈറ്റുകളെ വ്യക്തമാക്കുന്ന url പാറ്റേണുകളുടെ ഒരു ലിസ്റ്റ് സജ്ജമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
 
           ഈ നയം ആഗോള സ്ഥിരസ്ഥിതി മൂല്യത്തെ സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിൽ, അത് സജ്ജീകരിച്ച 'DefaultNotificationsSetting' നയത്തിലെയോ ഉപയോക്താവിന്റെ സ്വകാര്യ കോൺഫിഗറേഷനിൽ നിന്നുള്ളതോ ആയ എല്ലാ സൈറ്റുകളിലും ഉപയോഗിക്കുന്നതാണ്.</translation>
-<translation id="5209594095390052164">നെറ്റ്‌വർക്ക് ത്രോട്ടിലിംഗ് പ്രവർത്തനക്ഷമമാക്കണോ വേണ്ടയോ എന്നത് തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു.
-      ഇത് എല്ലാ ഉപയോക്താക്കൾക്കും ഉപകരണത്തിലെ എല്ലാ ഇന്റർഫേസുകൾക്കും ബാധകമാണ്.
-      സജ്ജമാക്കിയ ശേഷം, നയം ഇത് പ്രവർത്തനരഹിതമാക്കുന്നതിലേക്ക് മാറുന്നത് വരെ ത്രോട്ടിലിംഗ് നിലനിൽക്കുന്നു.
-
-      'തെറ്റ്' എന്ന് സജ്ജമാക്കുകയാണെങ്കിൽ ത്രോട്ടിലിംഗ് നടക്കില്ല.
-      'ശരി' എന്ന് സജ്ജമാക്കുകയാണെങ്കിൽ, നൽകിയിരിക്കുന്ന അപ്‌ലോഡ്, ഡൗൺലോഡ് നിരക്കുകൾ (kbits/s-കളിൽ) നേടാൻ സിസ്‌റ്റം ത്രോട്ടിൽ ചെയ്യും.</translation>
 <translation id="5219844027738217407">Android ആപ്‌സുകളിൽ മൈക്രോഫോണിന് മാത്രമേ ഈ നയം ബാധകമാകൂ. ഈ നയം 'ശരി' എന്ന് സജ്ജമാക്കുമ്പോൾ, ഒഴിവാക്കലുകളൊന്നുമില്ലാതെ എല്ലാ Android ആപ്‌സുകൾക്കുമായി മൈക്രോഫോൺ മ്യൂട്ടുചെയ്യും.</translation>
 <translation id="5226033722357981948">പ്ലഗിന്‍ ഫൈന്‍ഡര്‍ അപ്രാപ്തമാക്കണമോ വേണ്ടയോ എന്ന് നിര്‍ദേശിക്കുക</translation>
 <translation id="523505283826916779">പ്രവേശനക്ഷമത ക്രമീകരണങ്ങൾ</translation>
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb
index cce82a6..6e2aca4a 100644
--- a/components/policy/resources/policy_templates_mr.xtb
+++ b/components/policy/resources/policy_templates_mr.xtb
@@ -8,7 +8,7 @@
 <translation id="101438888985615157">स्क्रीन 180 अंश फिरवा</translation>
 <translation id="1017967144265860778">लॉग इन स्क्रीनवरील उर्जा व्यवस्थापन</translation>
 <translation id="1019101089073227242">वापरकर्ता डेटा निर्देशिका सेट करा</translation>
-<translation id="1022361784792428773">विस्तार ID ज्यांना स्थापित करण्यापासून वापरकर्त्यास प्रतिबंधित करावे (किंवा सर्वांसाठी * )</translation>
+<translation id="1022361784792428773">विस्तार आयडी ज्यांना स्थापित करण्यापासून वापरकर्त्यास प्रतिबंधित करावे (किंवा सर्वांसाठी * )</translation>
 <translation id="102492767056134033">लॉग इन स्क्रीनवर ऑन-स्क्रीन कीबोर्डची डीफॉल्ट स्थिती सेट करा</translation>
 <translation id="1027000705181149370">SAML IdP ने लॉग इन दरम्यान सेट केलेल्या प्रमाणीकरण कुकीज वापरकर्त्याच्या प्रोफाईलवर हस्तांतरित केल्या जाव्यात किंवा नाहीत ते निर्धारित करते.
 
@@ -82,7 +82,7 @@
 
       धोरण सेट केले नसल्यास किंवा असत्य वर सेट केले असल्यास, TLS मध्ये योग्य असणारे RC4 सायफर सक्षम केले जाणार नाही. अन्यथा कालबाह्य सर्व्हरसह सुसंगतता टिकवून ठेवण्यासाठी ते सत्य वर सेट केले जाऊ शकते. हा एक तात्पुरता बदली उपाय आहे आणि सर्व्हर पुन्हा कॉन्फिगर केले जावे.</translation>
 <translation id="1297182715641689552">.pac प्रॉक्सी स्क्रिप्टचा वापर करा</translation>
-<translation id="1304973015437969093">शांतपणे स्थापित केले जाणारे विस्तार/अॅप ID आणि अद्यतन URL</translation>
+<translation id="1304973015437969093">शांतपणे स्थापित केले जाणारे विस्तार/अॅप आयडी आणि अद्यतन URL</translation>
 <translation id="1310333396104446007">हे सेटिंग असत्य असण्यासाठी कॉन्फिगर केले असल्यास, कमकुवत म्हणून विचारात घेतले जाणारे पिन सेट करण्यापासून वापरकर्त्यांना प्रतिबंधित केले जाईल. अशा प्रकारच्या पिनमध्ये संपूर्ण पिनमध्ये समान अंक असलेला पिन, 1 ने वाढत जाणारे अंक असलेला पिन, 1 ने कमी होत जाणारे अंक असलेला पिन आणि खूप सामान्य असलेले पिन समाविष्‍ट होतात.
 
           हे सेटिंग सत्य असण्यासाठी कॉन्फिगर केले असल्यास किंवा कॉन्फिगर केले नसल्यास, वापरकर्ते हे पिन प्रविष्‍ट करू शकतात आणि त्यांना केवळ चेतावणी प्रदर्शन प्राप्त होऊ शकते.</translation>
@@ -735,7 +735,7 @@
 
           हे धोरण कोणत्याही विद्यमान विस्तार-संबंधित धोरणांद्वारे नियंत्रित केलेल्या सेटिंग्जसह एकाधिक सेटिंग्ज नियंत्रित करते. हे धोरण दोन्ही सेट केले असल्‍यास कोणतीही परंपरागत धोरणे अधिशून्य करेल.
 
-          हे धोरण एक विस्तार ID किंवा एक अद्यतन URL चा तिच्या कॉन्फिगरेशनवर नकाशा करते. विस्तार ID सह, केवळ निर्दिष्‍ट केलेल्या विस्तारावर कॉन्फिगरेशन लागू केले जाईल. डीफॉल्ट कॉन्फिगरेशन विशिष्‍ट ID "*" साठी सेट केला जाऊ शकते, जे या धोरणामध्‍ये सानुकूल कॉन्फिगरेशन संच नसलेल्या सर्व विस्तारांवर लागू होईल. अद्यतन URL सह, <ph name="LINK_TO_EXTENSION_DOC1" /> येथे वर्णन केल्‍याप्रमाणे या विस्ताराच्या मॅनिफेस्टमध्‍ये नमूद केलेल्या अचूक अद्यतन URL सह कॉन्फिगरेशन सर्व विस्तारांवर लागू केले जाईल.
+          हे धोरण एक विस्तार आयडी किंवा एक अद्यतन URL चा तिच्या कॉन्फिगरेशनवर नकाशा करते. विस्तार आयडी सह, केवळ निर्दिष्‍ट केलेल्या विस्तारावर कॉन्फिगरेशन लागू केले जाईल. डीफॉल्ट कॉन्फिगरेशन विशिष्‍ट आयडी "*" साठी सेट केला जाऊ शकते, जे या धोरणामध्‍ये सानुकूल कॉन्फिगरेशन संच नसलेल्या सर्व विस्तारांवर लागू होईल. अद्यतन URL सह, <ph name="LINK_TO_EXTENSION_DOC1" /> येथे वर्णन केल्‍याप्रमाणे या विस्ताराच्या मॅनिफेस्टमध्‍ये नमूद केलेल्या अचूक अद्यतन URL सह कॉन्फिगरेशन सर्व विस्तारांवर लागू केले जाईल.
 
           प्रत्येक विस्तारासाठी (किंवा समान अद्यतन URL सह विस्तार) कॉन्‍फिगरेशन हे दुसरा शब्दकोष असते ज्यामध्‍ये खाली दस्तऐवजीकरण केलेले फील्ड असू शकतात.
 
@@ -961,7 +961,7 @@
 
 
           हे धोरण सेट न करता सोडल्यास सर्व साइटसाठी सर्वंकष डीफॉल्ट मूल्य हे सेट केले असल्यास 'डीफॉल्ट पॉपअप सेटिंग' धोरण, ‍किंवा अन्यथा वापरकर्त्याचे वैयक्तिक कॉन्फिगरेशन वापरले जाईल.</translation>
-<translation id="3851039766298741586">अनुप्रयोग ID आणि आवृत्ती यासारख्‍या सक्रिय कियॉस्क सत्राविषयी माहितीचा अहवाल द्या.
+<translation id="3851039766298741586">अनुप्रयोग आयडी आणि आवृत्ती यासारख्‍या सक्रिय कियॉस्क सत्राविषयी माहितीचा अहवाल द्या.
 
       धोरण असत्य वर सेट केल्‍यास, कियॉस्क सत्र माहितीचा अहवाल दिला जाणार नाही. सत्य वर सेट केल्‍यास किंवा सेट न केलेले ठेवल्यास, कियॉस्क सत्र माहितीचा अहवाल दिला जाईल.</translation>
 <translation id="3859780406608282662"><ph name="PRODUCT_OS_NAME" /> मधील तफावत सीड आणण्यासाठी एक मापदंड जोडा.
@@ -991,7 +991,7 @@
 
       किरकोळ मोडमधील डिव्हाइसेससाठी, डेमो वापरकर्त्यासाठी स्वयंचलितपणे स्थापन केलेले सूची विस्तार. हे विस्तार डिव्हाइसमध्ये जतन केले जातात आणि स्थापनेनंतर, ऑफलाइन असताना स्थापित केले जाऊ शकतात.
 
-      प्रत्येक सूची प्रविष्टीमध्ये एक शब्दकोश असतो ज्यात 'विस्तार-id' फील्डमध्ये विस्तार ID आणि 'अद्यतन-url' फील्डमधील त्याची अद्यतन URL समाविष्ट करणे आवश्यक आहे.</translation>
+      प्रत्येक सूची प्रविष्टीमध्ये एक शब्दकोश असतो ज्यात 'विस्तार- आयडी ' फील्डमध्ये विस्तार आयडी आणि 'अद्यतन-url' फील्डमधील त्याची अद्यतन URL समाविष्ट करणे आवश्यक आहे.</translation>
 <translation id="388237772682176890">SPDY/3.1 समर्थन काढल्याने हे धोरण M53 मध्ये बहिष्कृत केले आणि M54 मधून काढले आहे.
 
       <ph name="PRODUCT_NAME" /> मध्ये SPDY प्रोटोकॉलचा वापर अक्षम करते.
@@ -1371,12 +1371,6 @@
 
 
           हे धोरण सेट न करता सोडल्यास सर्व साइटसाठी सर्वंकष डीफॉल्ट मूल्य हे सेट केले असल्यास 'डीफॉल्ट सूचना सेटिंग' धोरण, ‍किंवा अन्यथा वापरकर्त्याचे वैयक्तिक कॉन्फिगरेशन वापरले जाईल.</translation>
-<translation id="5209594095390052164">नेटवर्क थ्रॉटलिंग सक्षम करायचे आहे की नाही हे निवडण्याची अनुमती देते.
-      हे सर्व वापरकर्त्यांना लागू होते. सेट केल्यावर,
-      ते अक्षम करण्यासाठी धोरण बदलेपर्यंत थ्रॉटलिंग कायम राहते.
-
-      असत्यवर सेट केल्यास, त्यात थ्रॉटलिंग असणार नाही.
-      सत्यवर सेट केल्यास, प्रदान केलेले अपलोड आणि डाउनलोड दर (kbits/से मध्ये) प्रदान करण्यासाठी सिस्टीम थ्रॉटल होते.</translation>
 <translation id="5219844027738217407">Android अॅप्ससाठी, हे धोरण केवळ मायक्रोफोनला प्रभावित करते. हे धोरण सत्य वर सेट केले असते तेव्हा, कोणत्याही अपवादांशिवाय सर्व  Android अॅप्ससाठी मायक्रोफोन नि:शब्द केला जातो.</translation>
 <translation id="5226033722357981948">प्लगइन शोधक अक्षम करायचा किंवा नाही हे निर्दिष्ट करा</translation>
 <translation id="523505283826916779">प्रवेशयोग्यता सेटिंग्ज</translation>
@@ -2289,7 +2283,7 @@
      CopyCaCerts वर सेट केल्यास, सर्व ONC-स्थापित CA प्रमाणपत्रे <ph name="WEB_TRUSTED_BIT" /> सह ARC-अॅप्ससाठी उपलब्ध आहेत.</translation>
 <translation id="7882585827992171421">हे धोरण केवळ किरकोळ मोडमध्‍ये सक्रिय आहे.
 
-      साइन-इन स्क्रीनवर स्क्रीन सेव्हर म्हणून वापरल्या जाणार्‍या विस्ताराचा id निर्धारित करते. विस्तार DeviceAppPack धोरणाद्वारे या डोमेनसाठी कॉन्फिगर केलेल्या AppPack चा भाग असणे आवश्यक आहे.</translation>
+      साइन-इन स्क्रीनवर स्क्रीन सेव्हर म्हणून वापरल्या जाणार्‍या विस्ताराचा आयडी निर्धारित करते. विस्तार DeviceAppPack धोरणाद्वारे या डोमेनसाठी कॉन्फिगर केलेल्या AppPack चा भाग असणे आवश्यक आहे.</translation>
 <translation id="7882857838942884046">Google संकालन अक्षम केल्यामुळे Android बॅकअप आणि पुनर्संचयन योग्यरित्या कार्य करू शकत नाही.</translation>
 <translation id="7882890448959833986">असमर्थित OS चेेतावणी दर्शवू नका</translation>
 <translation id="7912255076272890813">अनुमत अ‍ॅप/विस्तार प्रकार कॉन्फिगर करा</translation>
@@ -2415,7 +2409,7 @@
 
       हे धोरण सेट असल्यास, लॉग इन स्क्रीन चित्र आधारित लॉग इन निवडकर्त्यावर सुसंगत डिव्हाइस-स्थानिक खात्यासाठी निर्दिष्‍ट स्ट्रिंगचा वापर करेल.
 
-      धोरण सेट न करता सोडल्यास, <ph name="PRODUCT_OS_NAME" /> लॉग इन स्क्रीनवर प्रदर्शन नावाच्या रूपात डिव्हाइस-स्थानिक खात्याचा ईमेल खाते ID वापरेल.
+      धोरण सेट न करता सोडल्यास, <ph name="PRODUCT_OS_NAME" /> लॉग इन स्क्रीनवर प्रदर्शन नावाच्या रूपात डिव्हाइस-स्थानिक खात्याचा ईमेल खाते आयडी वापरेल.
 
       हे धोरण नियमित वापरकर्ता खात्यांसाठी दुर्लक्षित केले आहे.</translation>
 <translation id="8279832363395120715">प्रॉक्सी रिझोल्यूशन दरम्यान <ph name="PRODUCT_NAME" /> नी वापरलेले https:// URL चे गोपनीय आणि सुरक्षा संवेदनशील भाग PAC स्क्रिप्टवर (प्रॉक्सी स्वयं कॉन्फिगरेशन) पास करण्यापूर्वी स्ट्रिप करते.
@@ -2610,8 +2604,8 @@
       पूर्वी सक्तीने-स्थापित केलेला अॅप या सूचीमधून काढल्यास तो स्वयंचलितपणे
       <ph name="PRODUCT_NAME" /> द्वारे विस्थापित केला जातो.
 
-      धोरणाचा प्रत्येक सूची आयटम हा एक स्ट्रिंग असतो ज्यामध्ये एक विस्तार ID
-      आणि अर्धविरामाने (<ph name="SEMICOLON" />) विभक्त केलेली एक "अद्यतन" URL असते. विकसक मोडमध्ये असताना विस्तार ID हा
+      धोरणाचा प्रत्येक सूची आयटम हा एक स्ट्रिंग असतो ज्यामध्ये एक विस्तार आयडी
+      आणि अर्धविरामाने (<ph name="SEMICOLON" />) विभक्त केलेली एक "अद्यतन" URL असते. विकसक मोडमध्ये असताना विस्तार आयडी हा
       उदा. <ph name="CHROME_EXTENSIONS_LINK" /> वर सापडलेली
       32-अक्षरांची स्ट्रिंग आहे. <ph name="LINK_TO_EXTENSION_DOC1" /> मध्ये वर्णन केल्यानुसार
       "अद्यतन" URL ने XML दस्तऐवज अद्यतनित करा
@@ -2660,7 +2654,7 @@
 <translation id="8971221018777092728">स्वयं-लॉग इन टायमर सार्वजनिक सत्र</translation>
 <translation id="8976248126101463034">दूरस्थ प्रवेश होस्टसाठी gnubby प्रमाणीकरणास परवानगी द्या</translation>
 <translation id="8992176907758534924">कोणत्याही साइटला प्रतिमा दर्शवण्याची परवानगी देऊ नका</translation>
-<translation id="9035964157729712237">काळ्या सूचीमधून मुक्त करण्याचे विस्तार ID</translation>
+<translation id="9035964157729712237">काळ्या सूचीमधून मुक्त करण्याचे विस्तार आयडी</translation>
 <translation id="9042911395677044526">एका <ph name="PRODUCT_OS_NAME" /> डिव्हाइसला प्रति-वापरकर्ता पुशिंग नेटवर्क कॉन्फिगरेशन लागू केले जाण्याची अनुमती देते. नेटवर्क कॉन्फिगरेशन ही <ph name="ONC_SPEC_URL" /> येथे वर्णन केलेल्या खुले नेटवर्क कॉन्फिगरेशननुसार परिभाषित केलेल्या रुपात असलेली JSON-स्वरूपन केलेली स्ट्रिंग आहे.</translation>
 <translation id="908115901708809140">प्रोफाइलची रोमिंग प्रत संचयित करण्‍यासाठी <ph name="PRODUCT_NAME" /> वापरेल ती निर्देशिका कॉन्फिगर करते.
 
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb
index 6fac05fc..339bb44 100644
--- a/components/policy/resources/policy_templates_ms.xtb
+++ b/components/policy/resources/policy_templates_ms.xtb
@@ -1400,12 +1400,6 @@
 <translation id="5208240613060747912">Membolehkan anda menetapkan senarai pola url yang menentukan tapak yang tidak dibenarkan untuk memaparkan pemberitahuan.
 
           Jika dasar ini dibiarkan tanpa ditetapkan, nilai lalai global akan digunakan untuk semua tapak sama ada dari dasar 'DefaultNotificationsSetting' jika ia ditetapkan atau konfigurasi peribadi pengguna jika sebaliknya.</translation>
-<translation id="5209594095390052164">Membenarkan pemilihan sama ada pendikitan rangkaian didayakan atau tidak.
-      Ini terpakai kepada semua pengguna dan kepada semua antara muka pada peranti. Setelah ditetapkan,
-      pendikitan terus aktif sehingga dasar diubah untuk melumpuhkan pendikitan.
-
-      Jika ditetapkan kepada palsu, tiada pendikitan.
-      Jika ditetapkan kepada benar, sistem didikitkan untuk mencapai kadar muat naik dan muat turun yang ditentukan (dalam kbit/s).</translation>
 <translation id="5219844027738217407">Untuk apl Android, dasar ini memberi kesan kepada mikrofon sahaja. Apabila dasar ini ditetapkan kepada benar, mikrofon akan diredam untuk semua apl Android, tanpa pengecualian.</translation>
 <translation id="5226033722357981948">Tentukan sama ada pencari pemalam perlu dilumpuhkan</translation>
 <translation id="523505283826916779">Tetapan kebolehcapaian</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 45e3b51..6aed0731 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1392,12 +1392,6 @@
 <translation id="5208240613060747912">Hiermee kun je een lijst met URL-patronen opgeven van sites waarop geen meldingen mogen worden weergegeven.
 
           Als dit beleid niet wordt ingesteld, wordt de algemene standaardwaarde gebruikt voor alle sites op basis van het beleid 'DefaultNotificationsSetting' (als dit is ingesteld) of anders op basis van de configuratie van de gebruiker.</translation>
-<translation id="5209594095390052164">Hier kun je kiezen of netwerkbeperking moet worden ingeschakeld.
-      Dit is van toepassing op alle gebruikers en op alle interfaces op het apparaat. Zodra de beperking is ingesteld,
-      wordt deze gehandhaafd totdat het beleid wordt gewijzigd en de instelling wordt uitgeschakeld.
-
-      Als het beleid is ingesteld op false (onwaar), geldt er geen beperking.
-      Als het beleid is ingesteld op true (waar), wordt het systeem beperkt om de opgegeven upload- en downloadsnelheid (in kbits/s) te bereiken.</translation>
 <translation id="5219844027738217407">Voor Android-apps is dit beleid alleen van invloed op de microfoon. Wanneer dit beleid is ingesteld op true (waar), wordt voor alle Android-apps, zonder uitzondering, de microfoon gedempt.</translation>
 <translation id="5226033722357981948">Aangeven of de plug-inzoeker moet worden uitgeschakeld</translation>
 <translation id="523505283826916779">Toegankelijkheidsinstellingen</translation>
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb
index 597a8f0..e44dfa1 100644
--- a/components/policy/resources/policy_templates_no.xtb
+++ b/components/policy/resources/policy_templates_no.xtb
@@ -1357,12 +1357,6 @@
 <translation id="5208240613060747912">Gjør at du kan angi en liste over nettadressemønstre som spesifiserer hvilke nettsteder som ikke får vise varsler.
 
           Hvis denne retningslinjen ikke angis, brukes den globale standardverdien for alle nettsteder, enten fra retningslinjen DefaultNotificationsSetting hvis den er angitt, eller fra brukerens egen konfigurasjon hvis den nevnte retningslinjen ikke er angitt.</translation>
-<translation id="5209594095390052164">Brukes til å velge om reduksjon av nettverkshastighet skal slås på eller ikke.
-      Dette gjelder alle brukere og alle grensesnitt på enheten. Når regelen er angitt,
-      varer reduksjonen helt til den slås av.
-
-      Hvis den er angitt som «false» (usann), reduseres ikke hastigheten.
-      Hvis den er angitt som «true» (sann), reduseres systemet til de angitte opplastings- og nedlastingshastighetene (i kbit/s).</translation>
 <translation id="5219844027738217407">For Android-apper har denne regelen bare innvirkning på mikrofonen. Når denne regelen er angitt som «true» (sann), slås mikrofonen av for alle Android-apper – uten unntak.</translation>
 <translation id="5226033722357981948">Angir hvorvidt programtilleggssøket skal deaktiveres</translation>
 <translation id="523505283826916779">Tilgjengelighetsinnstillinger</translation>
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb
index ca0d761..6ff376c 100644
--- a/components/policy/resources/policy_templates_pl.xtb
+++ b/components/policy/resources/policy_templates_pl.xtb
@@ -688,7 +688,7 @@
 
       Jeśli wyłączysz to ustawienie lub go nie skonfigurujesz, wszystkie strony uwierzytelniania portalu przechwytującego będą wyświetlać się w nowej karcie przeglądarki, używając ustawień serwera proxy dla bieżącego użytkownika.</translation>
 <translation id="3021409116652377124">Wyłącz znajdowanie wtyczek</translation>
-<translation id="3030000825273123558">Włącz raportowanie statystyk</translation>
+<translation id="3030000825273123558">Włącz raportowanie danych</translation>
 <translation id="3034580675120919256">Umożliwia określenie, czy w witrynach może być wykonywany kod JavaScript. Wykonanie kodu JavaScript może być dozwolone lub zabronione we wszystkich witrynach. W przypadku nieskonfigurowania tej zasady będzie używane ustawienie „AllowJavaScript”, a użytkownik będzie mógł je zmienić.</translation>
 <translation id="3038323923255997294">Kontynuuj działanie aplikacji w tle po zamknięciu <ph name="PRODUCT_NAME" /></translation>
 <translation id="3046192273793919231">Wysyłaj pakiety sieciowe na serwer zarządzania w celu monitorowania stanu online</translation>
@@ -1312,12 +1312,6 @@
 
       Kiedy ta zasada jest wyłączona, tryb programisty jest normalnie dostępny na urządzeniu.</translation>
 <translation id="5208240613060747912">Umożliwia skonfigurowanie listy wzorcowych URL-i określających witryny, w których nie mogą być wyświetlane powiadomienia. Jeśli ta zasada nie zostanie skonfigurowana, dla wszystkich witryn będzie używana globalna wartość domyślna pochodząca z zasady „DefaultNotificationsSetting” (jeśli została skonfigurowana) lub z osobistej konfiguracji użytkownika.</translation>
-<translation id="5209594095390052164">Umożliwia włączenie lub wyłączenie ograniczania przepustowości sieci.
-      Ta zasada wpływa na wszystkich użytkowników i wszystkie interfejsy urządzenia.
-      Po włączeniu ograniczanie przepustowości jest stosowane dopóki zasada nie zostanie zmieniona.
-
-      Wyłączenie zasady powoduje brak ograniczania przepustowości.
-      Włączenie zasady powoduje, że przepustowość wysyłania i pobierania jest ograniczana do podanych wartości (w kb/s).</translation>
 <translation id="5219844027738217407">W przypadku aplikacji na Androida ta zasada wpływa tylko na mikrofon. Gdy jest ona włączona, mikrofon jest wyłączony dla wszystkich aplikacji na Androida bez żadnych wyjątków.</translation>
 <translation id="5226033722357981948">Określ, czy funkcja znajdowania wtyczek ma być wyłączona</translation>
 <translation id="523505283826916779">Ustawienia ułatwień dostępu</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 8ab74988..efbd9953 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -1295,12 +1295,6 @@
 
       Se esta não política não é definida ou é definida como "False", o modo de desenvolvedor permanece disponível para o dispositivo.</translation>
 <translation id="5208240613060747912">Permite que você defina uma lista de padrões de URL que especificam sites sem permissão para exibir notificações. Se esta política for deixada sem definição, o valor padrão global será utilizado para todos os sites a partir da política "DefaultNotificationsSetting", caso esta tenha sido definida, ou a partir das configurações pessoais do usuário, caso não tenha sido definida.</translation>
-<translation id="5209594095390052164">Permite escolher se o acelerador de rede deve ser ativado ou não.
-      Essa opção se aplica a todos os usuários e todas as interfaces no dispositivo. Depois de definido,
-      o acelerador permanece ativado até que a política seja alterada para desativá-lo.
-
-      Se a política for definida como false, não haverá nenhum acelerador.
-      Se definida como true, o sistema é suspenso para arquivar as taxas de upload e download (em kbits/s) fornecidas.</translation>
 <translation id="5219844027738217407">Em apps Android, esta política afeta somente o microfone. Quando esta política é definida como true, o microfone é silenciado para todos os apps Android, sem exceções.</translation>
 <translation id="5226033722357981948">Especificar se o localizador de plug-ins deve ser desativado</translation>
 <translation id="523505283826916779">Configurações de acessibilidade</translation>
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb
index 48e75ed..e3d5dd1 100644
--- a/components/policy/resources/policy_templates_pt-PT.xtb
+++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -1314,13 +1314,6 @@
 
       Se esta política não for definida ou for definida para Falso, o modo de programador continuará disponível para o dispositivo.</translation>
 <translation id="5208240613060747912">Permite definir uma lista de padrões de URL que especificam os Web sites não autorizados a apresentar notificações. Se esta política não for definida, será utilizado o valor global predefinido para todos os Web sites, seja a partir da política "DefaultNotificationsSetting", caso esteja definida, ou a partir da configuração pessoal do utilizador.</translation>
-<translation id="5209594095390052164">Permite escolher se o controlo de rede está ativado ou não.
-      Isto aplica-se a todos os utilizadores e a todas as interfaces no dispositivo.
-      Depois de definido, o controlo mantém-se até a política ser alterada de modo a 
-      desativá-lo.
-
-      Se definido como falso, não há controlo.
-      Se definido como verdadeiro, o sistema é controlado para obter as taxas de carregamento e de transferência indicadas (em kbits/s).</translation>
 <translation id="5219844027738217407">Para aplicações Android, esta política afeta apenas o microfone. Se esta política estiver definida como verdadeira, o som do microfone é desativado para todas as aplicações Android, sem exceções.</translation>
 <translation id="5226033722357981948">Especificar se o localizador de plug-ins deverá ser desativado</translation>
 <translation id="523505283826916779">Definições de acessibilidade</translation>
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index 0cfa9d82..af15c0d 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -1327,12 +1327,6 @@
 
       Dacă politica nu este configurată sau dacă este dezactivată, modul pentru dezvoltatori va fi în continuare disponibil pe dispozitiv.</translation>
 <translation id="5208240613060747912">Vă permite să setați o listă de modele pentru adresele URL ce specifică site-urile care nu au permisiunea să afișeze notificări. Dacă această politică nu este setată, valoarea prestabilită la nivel global va fi folosită pentru toate site-urile, fie din politica „DefaultNotificationsSetting”, în cazul în care aceasta este setată, fie din configurația personală a utilizatorului, în caz contrar.</translation>
-<translation id="5209594095390052164">Permite activarea sau dezactivarea limitării rețelei.
-      Se aplică tuturor utilizatorilor și tuturor interfețelor de pe acest dispozitiv. După ce este configurată,
-      limitarea se aplică până când politica este modificată pentru a o dezactiva.
-
-      Dacă este dezactivată, nu există limitare.
-      Dacă este activată, sistemul este limitat la cotele de încărcare și de descărcare specificate (în KB/s)</translation>
 <translation id="5219844027738217407">În cazul aplicațiilor Android, această politică afectează numai microfonul. Când politica este activată, microfonul este dezactivat pentru toate aplicațiile Android, fără excepții.</translation>
 <translation id="5226033722357981948">Specifică dacă instrumentul de găsire de pluginuri ar trebui dezactivat</translation>
 <translation id="523505283826916779">Setări de accesibilitate</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index aa5d371..45cae4b 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -1301,14 +1301,6 @@
 
       Если эта политика выключена или не настроена, режим разработчика на данном устройстве останется доступным.</translation>
 <translation id="5208240613060747912">Задает список шаблонов URL для сайтов, которым запрещено отображать оповещения. Если это правило не настроено, для всех сайтов используется глобальное значение по умолчанию на основе правила DefaultNotificationsSetting (если оно настроено, в противном случае – на основе пользовательской конфигурации).</translation>
-<translation id="5209594095390052164">Разрешает включать и отключать регулировку пропускной способности сети.
-      Это правило применяется ко всем пользователям и интерфейсам на устройстве.
-      Если правило настроено, регулировка будет включена, пока вы не
-      измените эти параметры.
-
-      Если вы укажете значение False, регулировка выполняться не будет.
-      Если вы укажете значение True, система будет регулировать
-      пропускную способность сети, чтобы обеспечить оптимальную скорость скачивания и загрузки (в кбит/с).</translation>
 <translation id="5219844027738217407">Для приложений Android это правило влияет только на доступ к микрофону. Если для правила задано значение True, для всех без исключения приложений Android микрофон будет недоступен.</translation>
 <translation id="5226033722357981948">Указать, нужно ли отключать поиск плагинов</translation>
 <translation id="523505283826916779">Настройки специальных возможностей</translation>
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb
index 51d291d..8a5e9ea 100644
--- a/components/policy/resources/policy_templates_sk.xtb
+++ b/components/policy/resources/policy_templates_sk.xtb
@@ -1379,11 +1379,6 @@
 <translation id="5208240613060747912">Umožňuje nastaviť zoznam vzorov webových adries určujúcich webové stránky, ktoré nemôžu zobrazovať upozornenia.
 
           Ak toto pravidlo ponecháte nenastavené, použije sa v prípade všetkých webových stránok globálna predvolená hodnota buď z pravidla „DefaultNotificationsSetting“ (ak je nastavené), alebo z osobnej konfigurácie používateľa.</translation>
-<translation id="5209594095390052164">Umožňuje zvoliť, či je aktivované obmedzenie rýchlosti siete.
-      Toto nastavenie platí pre všetkých používateľov a všetky rozhrania na zariadení. Po nastavení zostane obmedzenie aktívne, kým nebude deaktivované zmenou tohto pravidla.
-
-      Ak je pravidlo nastavené na hodnotu False, obmedzenie je vypnuté.
-      Ak je nastavené na hodnotu True, bude systém obmedzený tak, aby sa dosiahli zadané rýchlosti nahrávania a sťahovania (v kilobitoch za sekundu).</translation>
 <translation id="5219844027738217407">V prípade aplikácii pre Android toto pravidlo ovplyvňuje iba mikrofón. Keď je toto pravidlo nastavené na hodnotu True, mikrofón je stlmený pre všetky aplikácie pre Android (bez výnimiek).</translation>
 <translation id="5226033722357981948">Určiť, či má byť nástroj na vyhľadávanie doplnkov zakázaný</translation>
 <translation id="523505283826916779">Nastavenia zjednodušenia prístupu</translation>
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb
index e071ee1..1aa8eeeda 100644
--- a/components/policy/resources/policy_templates_sl.xtb
+++ b/components/policy/resources/policy_templates_sl.xtb
@@ -1401,12 +1401,6 @@
 <translation id="5208240613060747912">Omogoča nastavitev seznama vzorcev URL-jev, s katerim so določena spletna mesta, ki jim ni dovoljeno prikazovati obvestil.
 
           Če ta pravilnik ni nastavljen, bo za vsa spletna mesta uporabljena splošna privzeta vrednost iz pravilnika »DefaultNotificationsSetting«, kadar je ta nastavljen, ali iz uporabnikove osebne konfiguracije, kadar pravilnik »DefaultImagesSetting« ni nastavljen.</translation>
-<translation id="5209594095390052164">Omogoča izbiro, ali je omejevanje omrežja omogočeno ali ne.
-      Ta pravilnik se uporabi za vse uporabnike in vse vmesnike v napravi. Ko je nastavljen,
-      je omejevanje v rabi, dokler se ne onemogoči s spremembo pravilnika.
-
-      Če je pravilnik onemogočen, se omrežje ne omejuje.
-      Če je pravilnik omogočen, se sistem omejuje, da doseže navedeni hitrosti nalaganja in prenašanja (v KB/s).</translation>
 <translation id="5219844027738217407">Pri aplikacijah za Android ta pravilnik vpliva samo na mikrofon. Če je ta pravilnik omogočen, ima mikrofon brez izjem izklopljen zvok pri vseh aplikacijah za Android.</translation>
 <translation id="5226033722357981948">Določi, ali naj bo iskalnik vtičnikov onemogočen</translation>
 <translation id="523505283826916779">Nastavitve funkcij za ljudi s posebnimi potrebami</translation>
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb
index 8e0f584..aeb4cbc 100644
--- a/components/policy/resources/policy_templates_sr.xtb
+++ b/components/policy/resources/policy_templates_sr.xtb
@@ -1384,12 +1384,6 @@
 <translation id="5208240613060747912">Омогућава вам да подесите листу образаца URL адреса који наводе сајтове којима није дозвољено да приказују обавештења.
 
          Ако ове смернице нису подешене, глобална подразумевана вредност биће коришћена за све сајтове из смерница „DefaultNotificationsSetting“, уколико су оне подешене, а ако нису, из личне конфигурације корисника.</translation>
-<translation id="5209594095390052164">Омогућава да се изабере да ли је ограничавање мреже омогућено.
-      Ово важи за све кориснике и све интерфејсе на уређајима. Када
-      се подеси, ограничавање траје све док се смернице не промене да би га онемогућиле.
-
-      Ако се подеси на „нетачно“, нема ограничавања.
-      Ако се подеси на „тачно“, систем се ограничава да би се постигле дате стопе отпремања и преузимања (у килобитима по секунди).</translation>
 <translation id="5219844027738217407">У случају Android апликација, ове смернице утичу само на микрофон. Када се ове смернице подесе на „тачно“, искључен је звук микрофона за све Android апликације, без изузетака.</translation>
 <translation id="5226033722357981948">Наведи да ли проналазач додатних компоненти треба да буде онемогућен</translation>
 <translation id="523505283826916779">Подешавања приступачности</translation>
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb
index c8d6219a..9314378 100644
--- a/components/policy/resources/policy_templates_sv.xtb
+++ b/components/policy/resources/policy_templates_sv.xtb
@@ -1408,13 +1408,6 @@
 <translation id="5208240613060747912">Policyn gör att du kan ange en lista med webbadressmönster som inte får visa meddelanden.
 
           Om policyn inte anges används det globala standardvärdet för alla webbplatser. Standardvärdet hämtas från policyn DefaultNotificationsSetting om den har angetts eller användarens personliga konfiguration om den inte har det.</translation>
-<translation id="5209594095390052164">Ger möjlighet att välja om överföringshastigheten i nätverket ska begränsas eller inte.
-      Detta gäller alla användare och alla gränssnitt på enheten. När principen
-      har ställts in används begränsningen tills den inaktiveras via principen.
-      
-
-      Med värdet falskt görs ingen begränsning av överföringshastigheten.
-      Med värdet sant begränsas upp- och nedladdningshastigheten till de angivna värdena (i kbit/s).</translation>
 <translation id="5219844027738217407">För Android-appar påverkar den här principen endast mikrofonen. När principen är inställd på sant är mikrofonen avstängd i alla Android-appar utan undantag.</translation>
 <translation id="5226033722357981948">Ange om plugin-sökaren ska inaktiveras</translation>
 <translation id="523505283826916779">Inställningar för tillgänglighet</translation>
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb
index 4f68542d..5391fc9 100644
--- a/components/policy/resources/policy_templates_sw.xtb
+++ b/components/policy/resources/policy_templates_sw.xtb
@@ -1377,13 +1377,6 @@
 <translation id="5208240613060747912">Inakuruhusu kuweka orodha ya ruwaza za url ambazo zinabainisha tovuti ambazo haziruhusiwi kuonyesha arifa.
 
           Ikiwa sera hii itasalia kama haijawekwa thamani yote chaguo-msingi itatumika kwa tovuti zote kutoka katika sera ya 'DefaultNotificationsSetting' ikiwa imewekwa, au vinginevyo usanidi binafsi wa mtumiaji.</translation>
-<translation id="5209594095390052164">Huruhusu kuchagua iwapo kipengele cha kudhibiti mtandao kimewashwa au bado.
-      Hii inatumika kwa watumiaji wote, na violesura vyote kwenye kifaa. Baada ya,
-      kuwekwa udhibiti utaendelea mpaka sera ibadilike ili kuizima.
-
-      Ikiwekwa kuwa sivyo, hakuna udhibiti.
-      Ikiwekwa kuwa ndivyo, mfumo hudhibitiwa ili kufanikisha viwango vya upakiaji 
-      na kupakua vilivyowekwa (katika kbits/s).</translation>
 <translation id="5219844027738217407">Kwa programu za Android, sera hii inaathiri maikrofoni pekee. Sera ikiwekwa kuwa ndivyo, maikrofoni huzimwa sauti kwa programu zote za Android, bila vighairi.</translation>
 <translation id="5226033722357981948">Bainisha iwapo kitafutaji programu jalizi kinafaa kulemazwa</translation>
 <translation id="523505283826916779">Mipangilio ya ufikiaji</translation>
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb
index 78fcd28..4e1d445 100644
--- a/components/policy/resources/policy_templates_ta.xtb
+++ b/components/policy/resources/policy_templates_ta.xtb
@@ -1300,12 +1300,6 @@
 
       இந்தக் கொள்கை அமைக்கப்படவில்லை என், தவறு என அமைக்கப்பட்டாலோ, இந்தச் சாதனத்திற்கான டெவலப்பர் பயன்முறை தொடர்ந்து இருக்கும்.</translation>
 <translation id="5208240613060747912">அறிவிப்புகளைக் காண்பிக்க அனுமதிக்காத தளங்களைக் குறிக்கும் url வகைகளின் பட்டியலை அமைக்க, உங்களை அனுமதிக்கிறது.ஒட்டுமொத்தமாக அமைக்காமல் இந்தப் பாலிசி விடப்பட்டிருந்தால் இயல்புநிலை மதிப்பானது, அமைக்கப்பட்டிருந்தால் 'DefaultNotificationsSetting' கொள்கை அல்லது பயனரின் தனிப்பட்ட உள்ளமைவிலிருந்து அனைத்து தளங்களுக்கும் பயன்படுத்தப்படும்.</translation>
-<translation id="5209594095390052164">நெட்வொர்க் நெருக்குதலை இயக்க வேண்டுமா அல்லது வேண்டாமா என்பதைத் தேர்வுசெய்ய அனுமதிக்கும்.
-      இது எல்லாப் பயனர்களுக்கும், சாதனத்தில் இருக்கும் எல்லா இடைமுகங்களுக்கும் பொருந்தும்.
-      அமைத்ததும், கொள்கையை முடக்கு என்பதை அமைக்கும் வரை, நெருக்குதல் தொடரும்.
-
-      ‘தவறு’ என அமைத்தால், நெருக்குதல் இருக்காது.
-      ‘சரி’ என அமைத்தால், வழங்கப்பட்ட பதிவேற்றம் மற்றும் பதிவிறக்க விகிதங்களை (kbits/s இல்) அடைய, சாதனமானது நெருக்கப்படும்.</translation>
 <translation id="5219844027738217407">Android பயன்பாடுகளில், இந்தக் கொள்கையானது மைக்ரோஃபோனை மட்டுமே பாதிக்கும். இந்தக் கொள்கை "சரி" என அமைக்கப்பட்டிருக்கும் போது, விதிவிலக்குகள் இல்லாமல் எல்லா Android பயன்பாடுகளுக்கும் மைக்ரோஃபோன் முடக்கப்படும்.</translation>
 <translation id="5226033722357981948">செருகுநிரல் கண்டுபிடிப்பை முடக்கப்பட வேண்டுமா என்று குறிப்பிடுக</translation>
 <translation id="523505283826916779">அணுகல்தன்மை அமைப்புகள்</translation>
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index 7dfd0c0..79518d6a 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -1332,12 +1332,6 @@
 
       ఈ విధానాన్ని సెట్ చేయకపోతే లేదా తప్పుకి సెట్ చేసి ఉంటే, పరికరంలో డెవలపర్ మోడ్ అలాగే అందుబాటులో ఉంటుంది.</translation>
 <translation id="5208240613060747912">ప్రకటనలను ప్రదర్శించడానికి అనుమతించబడని సైట్‌లను పేర్కొనే url నమూనాల జాబితాను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ విధానం సెట్ చేయకుండా వదిలి పెట్టినది అయితే అన్ని సైట్‌లకు సార్వజనీన డిఫాల్ట్ విలువ ఇది సెట్ చేయబడి ఉంటే 'DefaultNotificationsSetting' విధానం నుండి లేదా చేయబడకపోతే వినియోగదారు వ్యక్తిగత కాన్ఫిగరేషన్ నుండి ఉపయోగించబడుతుంది.</translation>
-<translation id="5209594095390052164">నెట్‌వర్క్ కుదింపు ప్రారంభించబడిందో లేదో ఎంచుకోవడానికి అనుమతిస్తుంది.
-      ఇది అందరు వినియోగదారులకు మరియు పరికరంలోని అన్ని ఇంటర్‌ఫేస్‌లకు వర్తిస్తుంది. సెట్ చేసిన తర్వాత,
-      దాన్ని నిలిపివేయడానికి విధానాన్ని మార్చేవరకు కుదింపు కొనసాగుతుంది.
-
-      తప్పుకి సెట్ చేస్తే, కుదింపు ఉండదు.
-      ఒప్పుకి సెట్ చేస్తే, అందించిన అప్‌లోడ్ మరియు డౌన్‌లోడ్ రేట్‌లను (kbits/sలో) పొందడానికి సిస్టమ్ కుదించబడుతుంది.</translation>
 <translation id="5219844027738217407">Android అనువర్తనాల కోసం, ఈ విధానం మైక్రోఫోన్‌పై మాత్రమే ప్రభావం చూపుతుంది. ఈ విధానాన్ని ఒప్పుకి సెట్ చేసినప్పుడు, మినహాయింపులు లేకుండా అన్ని Android అనువర్తనాల కోసం మైక్రోఫోన్ మ్యూట్ చేయబడుతుంది.</translation>
 <translation id="5226033722357981948">ప్లగ్‌ఇన్ కనుగొనుదారు ఆపివేయబడిందో లేదో పేర్కొను</translation>
 <translation id="523505283826916779">ప్రాప్యత సెట్టింగ్‌లు</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index fbe6276..100d0ebc 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -1282,11 +1282,6 @@
 
       หากไม่ตั้งค่านโยบายหรือตั้งเป็น False จะสามารถใช้โหมดนักพัฒนาซอฟต์แวร์ในอุปกรณ์ได้</translation>
 <translation id="5208240613060747912">ช่วยให้คุณกำหนดรายการของรูปแบบ URL ที่ระบุไซต์ที่ไม่ได้รับอนุญาตให้แสดงการแจ้งเตือน หากนโยบายนี้ไม่มีการกำหนดไว้ จะใช้ค่าเริ่มต้นทั่วไปสำหรับไซต์ทั้งหมด ทั้งจากนโยบาย "DefaultNotificationsSetting" หากมีการตั้งค่าไว้หรือจากการกำหนดค่าส่วนบุคคลของผู้ใช้เอง</translation>
-<translation id="5209594095390052164">อนุญาตให้เลือกว่าจะเปิดใช้การควบคุมปริมาณเครือข่ายหรือไม่
-      การเลือกจะมีผลต่อผู้ใช้ทุกคนและกับทุกอินเทอร์เฟซในอุปกรณ์ 
-      เมื่อตั้งค่าแล้ว การควบคุมปริมาณเครือข่ายจะยังคงเปิดใช้อยู่จนกว่าจะเปลี่ยนนโยบายเพื่อปิดใช้ 
-      หากตั้งค่าเป็น False จะไม่มีการควบคุมปริมาณเครือข่าย
-      หากตั้งค่าเป็น True ระบบจะถูกควบคุมปริมาณเครือข่ายเพื่อให้ได้อัตราการอัปโหลดและดาวน์โหลดที่ระบุไว้ (หน่วยเป็น kbits/s)</translation>
 <translation id="5219844027738217407">สำหรับแอป Android นโยบายนี้จะส่งผลต่อไมโครโฟนเท่านั้น เมื่อตั้งค่านโยบายเป็น True ไมโครโฟนจะปิดเสียงสำหรับแอป Android ทุกแอปโดยไม่มีข้อยกเว้น</translation>
 <translation id="5226033722357981948">ระบุว่าเครื่องมือค้นหาปลั๊กอินควรจะปิดใช้งานหรือไม่</translation>
 <translation id="523505283826916779">การตั้งค่าสำหรับการเข้าถึง</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index b312733..0781f4f 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -1385,11 +1385,6 @@
 <translation id="5208240613060747912">Bildirim görüntülemelerine izin verilmeyen sitelerin belirtildiği bir URL kalıpları listesi ayarlamanıza olanak tanır.
 
           Bu politika ayarlanmadan bırakılırsa, 'DefaultNotificationsSetting' politikası ayarlandıysa buradaki değer, aksi takdirde kullanıcının kişisel yapılandırması tüm siteler için genel varsayılan değer olarak kullanılır.</translation>
-<translation id="5209594095390052164">Ağ daraltma işlemini etkinleştirmeyi veya etkinleştirmemeyi seçmeye izin verir.
-      Bu, tüm kullanıcılar ve cihazdaki tüm arayüzler için geçerlidir. Bu şekilde ayarlandığında, politika bu özelliği devre dışı bırakacak şekilde değiştirilmedikçe daraltma devam eder.
-
-      Yanlış (false) değerine ayarlanırsa daraltma olmaz.
-      Doğru (true) değerine ayarlanırsa sunulan yükleme ve indirme hızlarına (kbit/sn.) ulaşmak için sistem daraltılır.</translation>
 <translation id="5219844027738217407">Bu politika Android uygulamalarında sadece mikrofonu etkiler. Bu politika doğru olarak ayarlandığında, istisnasız tüm Android uygulamaları için mikrofon kapatılır.</translation>
 <translation id="5226033722357981948">Eklenti bulucunun devre dışı bırakılıp bırakılmayacağını belirt</translation>
 <translation id="523505283826916779">Erişilebilirlik ayarları</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 153d28c..35d126ac 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -1312,12 +1312,6 @@
 
       Якщо для цього правила встановлено значення "Не застосовується", режим розробника буде й надалі доступний на пристрої.</translation>
 <translation id="5208240613060747912">Дозволяє налаштовувати список шаблонів URL-адрес, що визначають сайти, яким заборонено показувати сповіщення. Якщо це правило не встановлено, для всіх сайтів використовується загальне значення за умовчанням – з правила "DefaultNotificationsSetting" (якщо його встановлено) або з особистих налаштувань користувача.</translation>
-<translation id="5209594095390052164">Дає змогу вмикати та вимикати обмеження пропускної спроможності мережі.
-      Цей параметр впливає на користувачів та інтерфейс пристроїв. Якщо налаштувати його,
-      обмеження застосовуватиметься, доки не буде змінено значення параметра.
-
-      Якщо встановлено значення "false", обмеження не діятиме.
-      Якщо встановлено значення "true", систему буде обмежено до вказаної швидкості додавання та завантаження (у Кбіт/с).</translation>
 <translation id="5219844027738217407">У додатках Android це правило стосується лише мікрофона. Коли для правила встановлено значення "true", мікрофон вимкнено в усіх додатках Android.</translation>
 <translation id="5226033722357981948">Указати, чи потрібно вимкнути систему пошуку плагінів</translation>
 <translation id="523505283826916779">Налаштування доступності</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 9b32eb08..6aa726b 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1385,12 +1385,6 @@
 <translation id="5208240613060747912">Cho phép bạn thiết lập danh sách các mẫu url chỉ định những trang web không được phép hiển thị thông báo.
 
           Nếu không thiết lập chính sách này, giá trị mặc định chung từ chính sách 'DefaultCookiesSetting' nếu chính sách này được thiết lập hoặc từ cấu hình cá nhân của người dùng sẽ được sử dụng cho tất cả các trang web.</translation>
-<translation id="5209594095390052164">Cho phép chọn xem có bật điều chỉnh mạng hay không.
-      Tùy chọn này áp dụng cho tất cả người dùng và đối với tất cả giao diện trên thiết bị. Sau khi được đặt,
-      tính năng điều chỉnh sẽ tiếp tục cho đến khi chính sách này được thay đổi thành tắt tính năng điều chỉnh.
-
-      Nếu được đặt thành false thì sẽ không có tính năng điều chỉnh.
-      Nếu được đặt thành true, hệ thống sẽ được điều chỉnh để đạt được tốc độ tải lên và tải xuống được cung cấp (theo kbit/giây).</translation>
 <translation id="5219844027738217407">Đối với các ứng dụng Android, chính sách này chỉ ảnh hưởng đến micrô. Khi chính sách này được đặt thành true, micrô sẽ bị tắt tiếng cho tất cả ứng dụng Android mà không có ngoại lệ nào.</translation>
 <translation id="5226033722357981948">Chỉ định có nên vô hiệu hóa trình tìm kiếm plugin hay không</translation>
 <translation id="523505283826916779">Cài đặt trợ năng</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 297dc0d..486d6d2 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -1254,11 +1254,6 @@
 
       如果该政策未设置或设为False,相应设备将可以使用开发者模式。</translation>
 <translation id="5208240613060747912">可让您设置网址格式的列表,这些网址格式用于指定不允许显示通知的网站。在未设置此政策的情况下,如果设置了“DefaultNotificationsSetting”政策,那么将对该政策中的所有网站使用全局默认值,否则将对用户个人配置中的所有网站使用全局默认值。</translation>
-<translation id="5209594095390052164">允许选择是否启用网络调节功能。
-      这适用于所有用户以及设备上的所有界面。调节功能在设置好后会一直有效,除非通过更改相应政策停用该功能。
-
-      如果设为 false,则不会启用调节功能。
-      如果设为 true,则会对系统应用调节功能,以实现所提供的上传和下载速率(以 Kb/s 为单位)。</translation>
 <translation id="5219844027738217407">对于 Android 应用,此政策仅会影响麦克风。当此政策设为 true 时,系统会针对所有 Android 应用(无一例外)将麦克风设为静音。</translation>
 <translation id="5226033722357981948">指定是否应停用插件查找器</translation>
 <translation id="523505283826916779">无障碍设置</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index a76350c..f4c862e 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1307,12 +1307,6 @@
 
       如未設定這項政策,或將政策設定為 False,則裝置仍可使用開發人員模式。</translation>
 <translation id="5208240613060747912">允許您設定網址模式清單,指定不可以展示通知的網站。如果未設定這項政策,系統會從「DefaultNotificationsSetting」政策 (如果有設定的話) 或使用者的個人設定,將通用預設值套用至所有網站。</translation>
-<translation id="5209594095390052164">允許選擇是否啟用網路節流功能。
-      所有使用者和裝置上的所有介面都會套用這項政策。設定後,
-      節流功能會持續運作,直到政策變更為停用節流功能為止。
-
-      如果設為 false,系統將不會啟用節流功能。
-      如果設為 true,系統則會根據提供的上傳和下載速率 (KB/秒) 啟用節流功能。</translation>
 <translation id="5219844027738217407">這項政策對 Android 應用程式的影響僅限於麥克風。將這項政策設為 true 時,所有 Android 應用程式皆無法使用麥克風 (設為靜音),沒有任何例外。</translation>
 <translation id="5226033722357981948">指定是否該停用外掛程式尋找工具</translation>
 <translation id="523505283826916779">協助工具設定</translation>
diff --git a/components/safe_browsing/base_ui_manager.cc b/components/safe_browsing/base_ui_manager.cc
index bc50cb22..9ea77fe 100644
--- a/components/safe_browsing/base_ui_manager.cc
+++ b/components/safe_browsing/base_ui_manager.cc
@@ -329,7 +329,7 @@
   // remove the main-frame URL from the pending whitelist, so the
   // main-frame URL will have already been removed when the subsequent
   // blocking pages are dismissed.
-  if (site_list->ContainsPending(whitelist_url, nullptr))
+  if (site_list && site_list->ContainsPending(whitelist_url, nullptr))
     site_list->RemovePending(whitelist_url);
 
   // Notify security UI that security state has changed.
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index a5fb355..8d4a013 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -283,7 +283,7 @@
 <translation id="3693415264595406141">የይለፍ ቃል፦</translation>
 <translation id="3696411085566228381">ምንም</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">በመጫን ላይ...</translation>
+<translation id="370665806235115550">በመጫን ላይ…</translation>
 <translation id="3712624925041724820">ሁሉም ፍቃዶች ተሞክረዋል</translation>
 <translation id="3714780639079136834">የሞባይል ውሂብ ወይም Wi-Fi ማብራት</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />ወኪሉን፣ ኬላውን እና የዲኤንኤስ ውቅረትን መፈተሽ<ph name="END_LINK" /></translation>
@@ -561,7 +561,7 @@
 <translation id="6897140037006041989">የተጠቀሚ ተወካይ</translation>
 <translation id="6915804003454593391">ተጠቃሚ፦</translation>
 <translation id="6957887021205513506">የአገልጋዩ እውቅና ማረጋገጫ የተጭበረበረ ይመስላል።</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="6965978654500191972">መሣሪያ</translation>
 <translation id="6970216967273061347">ወረዳ</translation>
 <translation id="6973656660372572881">ሁለቱም ቋሚ ተኪ አገልጋዮች እና የ.pac ስክሪፕት ዩአርኤል ተገልጸዋል።</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index e2f1cfb..da91d13 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">كلمة المرور:</translation>
 <translation id="3696411085566228381">بدون</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">تحميل...</translation>
+<translation id="370665806235115550">جارٍ التحميل...</translation>
 <translation id="3712624925041724820">التراخيص مستنفذة</translation>
 <translation id="3714780639079136834">‏تشغيل بيانات شبكة الجوّال أو Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />التحقق من تهيئة الخادم الوكيل والجدار الناري ونظام أسماء النطاقات<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index a4f9ac1..f190c41a1 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">PSČ</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 návrh}few{# návrhy}many{# návrhu}other{# návrhů}}</translation>
 <translation id="2065985942032347596">Vyžaduje se ověření</translation>
-<translation id="2079545284768500474">Zpět</translation>
+<translation id="2079545284768500474" />
 <translation id="20817612488360358">Jako aktivní jsou nakonfigurována systémová nastavení proxy serveru, je však určena i explicitní konfigurace proxy serveru.</translation>
 <translation id="2086652334978798447">Chcete-li od Googlu získat personalizované návrhy obsahu, přihlaste se do Chromu.</translation>
 <translation id="2089090684895656482">Méně</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 6966f954..e6b85a4 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">Postleitzahl</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 Vorschlag}other{# Vorschläge}}</translation>
 <translation id="2065985942032347596">Authentifizierung erforderlich</translation>
-<translation id="2079545284768500474">Rückgängig</translation>
+<translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="20817612488360358">Die System-Proxy-Einstellungen sind zur Verwendung angegeben, gleichzeitig wurde aber auch eine explizite Proxy-Konfiguration festgelegt.</translation>
 <translation id="2086652334978798447">Melden Sie sich in Chrome an, um personalisierte, von Google vorgeschlagene Inhalte zu erhalten.</translation>
 <translation id="2089090684895656482">Weniger</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index 4f0c85f..eb1e92a7 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -560,7 +560,7 @@
 <translation id="6897140037006041989">Παράγοντας χρήστη</translation>
 <translation id="6915804003454593391">Χρήστης</translation>
 <translation id="6957887021205513506">Το πιστοποιητικό του διακομιστή φαίνεται να είναι πλαστό.</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="6965978654500191972">Συσκευή</translation>
 <translation id="6970216967273061347">Περιοχή</translation>
 <translation id="6973656660372572881">Καθορίζονται τόσο οι σταθεροί διακομιστές μεσολάβησης όσο και μια διεύθυνση URL σεναρίου .pac.</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 6320dea..5aebafe2 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -561,7 +561,7 @@
 <translation id="6897140037006041989">User agent</translation>
 <translation id="6915804003454593391">Usuario:</translation>
 <translation id="6957887021205513506">El certificado del servidor parece falso.</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6965978654500191972">Dispositivo</translation>
 <translation id="6970216967273061347">Distrito</translation>
 <translation id="6973656660372572881">Se especifican servidores proxy fijos y URL de secuencias de comandos .pac.</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index de729f4..3e2915b 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -482,7 +482,7 @@
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6016158022840135739">{COUNT,plural, =1{Lk 1}other{Lk #}}</translation>
 <translation id="6017514345406065928">Roheline</translation>
-<translation id="6040143037577758943">Sule</translation>
+<translation id="6040143037577758943">Sulge</translation>
 <translation id="604124094241169006">Automaatne</translation>
 <translation id="6042308850641462728">Rohkem</translation>
 <translation id="6060685159320643512">Ettevaatust, need katsed võivad hammustada.</translation>
@@ -560,7 +560,7 @@
 <translation id="6897140037006041989">Kasutajaagent</translation>
 <translation id="6915804003454593391">Kasutaja:</translation>
 <translation id="6957887021205513506">Serveri sertifikaat näib olevat võltsing.</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="6965978654500191972">Seade</translation>
 <translation id="6970216967273061347">Ringkond</translation>
 <translation id="6973656660372572881">Määratud on nii fikseeritud puhverserverid kui ka pac-skriptiga URL.</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 78f9e90..6b03683 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -560,7 +560,7 @@
 <translation id="6897140037006041989">نماینده کاربر</translation>
 <translation id="6915804003454593391">کاربر:</translation>
 <translation id="6957887021205513506">به نظر می‌رسد که گواهی سرور جعلی باشد.</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="6965978654500191972">دستگاه</translation>
 <translation id="6970216967273061347">حوزه</translation>
 <translation id="6973656660372572881">‏هم سرورهای پروکسی ثابت و هم آدرس اسکریپت pac. مشخص شده‌اند.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index ecd73c4..873165b 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Password:</translation>
 <translation id="3696411085566228381">wala</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Kumakarga...</translation>
+<translation id="370665806235115550">Naglo-load...</translation>
 <translation id="3712624925041724820">Naubos na ang mga lisensya</translation>
 <translation id="3714780639079136834">I-on ang mobile data o Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Suriin ang configuration ng proxy, firewall at DNS<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index f97018d..a3fdd19 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Mot de passe :</translation>
 <translation id="3696411085566228381">aucune</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Chargement...</translation>
+<translation id="370665806235115550">Chargement en cours...</translation>
 <translation id="3712624925041724820">Licences épuisées.</translation>
 <translation id="3714780639079136834">Activer les données mobiles ou le réseau Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Vérifier les configurations du proxy, du pare-feu et du DNS<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 7c39349..a8a155c 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">પિન કોડ</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 સૂચન}one{# સૂચન}other{# સૂચન}}</translation>
 <translation id="2065985942032347596">પ્રમાણીકરણ આવશ્યક</translation>
-<translation id="2079545284768500474">પૂર્વવત્ કરો</translation>
+<translation id="2079545284768500474">પૂર્વવત કરો</translation>
 <translation id="20817612488360358">સિસ્ટમ પ્રોક્સી સેટિંગ્સ ઉપયોગમાં લેવા માટે સેટ છે પણ એક સ્પષ્ટ પ્રોક્સી ગોઠવણી પણ ઉલ્લેખિત કરેલી છે.</translation>
 <translation id="2086652334978798447">Google દ્વારા સૂચવેલ વ્યક્તિગત કરેલ સામગ્રી મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
 <translation id="2089090684895656482">ઓછું</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index ea3cfec..4b4fc12 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">ज़िप कोड</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 सुझाव}one{# सुझाव}other{# सुझाव}}</translation>
 <translation id="2065985942032347596">प्रमाणीकरण आवश्यक</translation>
-<translation id="2079545284768500474">पूर्ववत् करें</translation>
+<translation id="2079545284768500474">वापस लाएं</translation>
 <translation id="20817612488360358">सिस्‍टम प्रॉक्‍सी सेटिंग उपयोग किए जाने के लिए सेट हैं लेकिन कोई स्पष्‍ट प्रॉक्‍सी कॉन्फ़िगरेशन भी निर्दिष्ट है.</translation>
 <translation id="2086652334978798447">Google द्वारा सुझाई गई वैयक्तिकृत सामग्री प्राप्त करने के लिए, Chrome में प्रवेश करें.</translation>
 <translation id="2089090684895656482">कम</translation>
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">पासवर्ड:</translation>
 <translation id="3696411085566228381">कोई नहीं</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">लोड हो रहा है...</translation>
+<translation id="370665806235115550">लोड हो रही हैं...</translation>
 <translation id="3712624925041724820">लाइसेंस समाप्त हो गए</translation>
 <translation id="3714780639079136834">मोबाइल डेटा या वाई-फ़ाई चालू करें</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />प्रॉक्सी, फायरवॉल और DNS कॉन्फ़िगरेशन की जांच करें<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index b92ec8e..95c70a6 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -282,7 +282,7 @@
 <translation id="3693415264595406141">Jelszó:</translation>
 <translation id="3696411085566228381">nincs</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Betöltés…</translation>
+<translation id="370665806235115550">Betöltés...</translation>
 <translation id="3712624925041724820">Az engedélyek elfogytak</translation>
 <translation id="3714780639079136834">A mobiladatok vagy a Wi-Fi bekapcsolása</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />A proxy, a tűzfal és a DNS-konfiguráció ellenőrzése<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index eb42f460..7f321659 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">Kode pos</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 saran}other{# saran}}</translation>
 <translation id="2065985942032347596">Diperlukan Otentikasi</translation>
-<translation id="2079545284768500474">Batalkan</translation>
+<translation id="2079545284768500474">Urungkan</translation>
 <translation id="20817612488360358">Setelan proxy sistem disetel untuk digunakan namun konfigurasi proxy eksplisit juga ditentukan.</translation>
 <translation id="2086652334978798447">Untuk mendapatkan konten hasil personalisasi yang disarankan oleh Google, masuk ke Chrome.</translation>
 <translation id="2089090684895656482">Lebih Sedikit</translation>
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Sandi:</translation>
 <translation id="3696411085566228381">tidak ada</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Membuka...</translation>
+<translation id="370665806235115550">Memuat...</translation>
 <translation id="3712624925041724820">Lisensi habis</translation>
 <translation id="3714780639079136834">Aktifkan data seluler atau Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Periksa proxy, firewall, dan konfigurasi DNS<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 4512c99..9ba1939 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">מספר / מיקוד</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{הצעה אחת}two{שתי הצעות}many{# הצעות}other{# הצעות}}</translation>
 <translation id="2065985942032347596">נדרש אימות</translation>
-<translation id="2079545284768500474">בטל</translation>
+<translation id="2079545284768500474">בטל פעולה</translation>
 <translation id="20817612488360358">‏נקבע שימוש בהגדרות שרת Proxy של מערכת אך בנוסף מצוינת גם תצורה מפורשת של שרת Proxy.</translation>
 <translation id="2086652334978798447">‏כדי לקבל מ-Google הצעות לתוכן מותאם אישית, היכנס אל Chrome.</translation>
 <translation id="2089090684895656482">פחות</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 9904760..bf92f99 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">郵便番号</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 件の候補}other{# 件の候補}}</translation>
 <translation id="2065985942032347596">認証が必要</translation>
-<translation id="2079545284768500474">取り消す</translation>
+<translation id="2079545284768500474">元に戻す</translation>
 <translation id="20817612488360358">システム プロキシ設定を使用するように設定されていますが、明示的なプロキシの設定も指定されています。</translation>
 <translation id="2086652334978798447">ユーザーに合わせた Google からのおすすめコンテンツを表示するには、Chrome にログインします。</translation>
 <translation id="2089090684895656482">一部表示</translation>
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">パスワード:</translation>
 <translation id="3696411085566228381">なし</translation>
 <translation id="3704609568417268905"><ph name="TIME" />、<ph name="TITLE" />(<ph name="DOMAIN" />)を<ph name="BOOKMARKED" /></translation>
-<translation id="370665806235115550">読み込み中...</translation>
+<translation id="370665806235115550">読み込んでいます...</translation>
 <translation id="3712624925041724820">ライセンスを使い切りました</translation>
 <translation id="3714780639079136834">モバイルデータまたは Wi-Fi を有効にする</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />プロキシ、ファイアウォール、DNS の設定を確認する<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 2c087c2..c6b7c36c 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -281,7 +281,7 @@
 <translation id="3693415264595406141">ಪಾಸ್‌ವರ್ಡ್:</translation>
 <translation id="3696411085566228381">ಯಾವುದೂ ಇಲ್ಲ</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="370665806235115550">ಲೋಡ್ ಆಗುತ್ತಿದೆ...</translation>
 <translation id="3712624925041724820">ಪರವಾನಗಿಗಳು ಬರಿದಾಗಿವೆ</translation>
 <translation id="3714780639079136834">ಮೊಬೈಲ್ ಡೇಟಾ ಅಥವಾ ವೈ-ಫೈ ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />ಪ್ರಾಕ್ಸಿ, ಫೈರ್‌ವಾಲ್ ಮತ್ತು DNS ಕಾನ್ಫಿಗರೇಶನ್‌‌ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
@@ -479,7 +479,7 @@
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6016158022840135739">{COUNT,plural, =1{ಪುಟ 1}one{ಪುಟ #}other{ಪುಟ #}}</translation>
 <translation id="6017514345406065928">ಹಸಿರು</translation>
-<translation id="6040143037577758943">ಮುಚ್ಚು</translation>
+<translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="604124094241169006">ಸ್ವಯಂಚಾಲಿತ</translation>
 <translation id="6042308850641462728">ಇನ್ನಷ್ಟು</translation>
 <translation id="6060685159320643512">ಜಾಗ್ರತೆ, ಈ ಪ್ರಯೋಗಗಳು ವಿಫಲವಾಗಬಹುದು</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 616c8c5..cb7fefb 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">우편번호</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{제안 1개}other{제안 #개}}</translation>
 <translation id="2065985942032347596">인증 필요</translation>
-<translation id="2079545284768500474">실행 취소</translation>
+<translation id="2079545284768500474">실행취소</translation>
 <translation id="20817612488360358">시스템 프록시 설정이 사용하도록 설정되었지만 명시적 프록시 설정도 지정되어 있습니다.</translation>
 <translation id="2086652334978798447">Google에서 추천한 맞춤설정 콘텐츠를 받으려면 Chrome에 로그인합니다.</translation>
 <translation id="2089090684895656482">숨기기</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index 7f985a2..e80e129 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">തപാൽ കോഡ്</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{ഒരു നിർദ്ദേശം}other{# നിർദ്ദേശങ്ങൾ}}</translation>
 <translation id="2065985942032347596">ആധികാരികത ആവശ്യമാണ്</translation>
-<translation id="2079545284768500474">പൂര്‍‌വ്വാവസ്ഥയിലാക്കുക</translation>
+<translation id="2079545284768500474">പഴയപടിയാക്കുക</translation>
 <translation id="20817612488360358">സിസ്റ്റം പ്രോക്‌സി ക്രമീകരണം ഉപയോഗിക്കുന്നതിനായി സജ്ജമാക്കി, പക്ഷെ ഒരു സ്‌പഷ്‌ടമായ പ്രോക്‌സി കോൺഫിഗറേഷനും അതോടൊപ്പം നിർദ്ദേശിച്ചിരിക്കുന്നു.</translation>
 <translation id="2086652334978798447">Google നിർദ്ദേശിച്ച, വ്യക്തിപരമാക്കിയ ഉള്ളടക്കം സ്വന്തമാക്കാൻ, Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
 <translation id="2089090684895656482">കുറച്ച്</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 5558381..16fcaffa 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -157,7 +157,7 @@
 <translation id="255002559098805027"><ph name="HOST_NAME" /> नी एक अवैध प्रतिसाद पाठविला.</translation>
 <translation id="2552545117464357659">थोडे नवीन</translation>
 <translation id="2556876185419854533">&amp; संपादित करा पूर्ववत करा</translation>
-<translation id="2587841377698384444">शब्दकोश API ID:</translation>
+<translation id="2587841377698384444">शब्दकोश API आयडी:</translation>
 <translation id="2597378329261239068">हा दस्तऐवज संकेतशब्द संरक्षित आहे. कृपया संकेतशब्द प्रविष्ट करा.</translation>
 <translation id="2609632851001447353">तफावत</translation>
 <translation id="2625385379895617796">आपले घड्याळ पुढे आहे</translation>
@@ -209,7 +209,7 @@
 <translation id="3041612393474885105">प्रमाणपत्र माहिती...</translation>
 <translation id="3063697135517575841">Chrome यावेळी आपल्या कार्डची पुष्टी करण्यात अक्षम होते. कृपया नंतर पुन्हा प्रयत्न करा.</translation>
 <translation id="3093245981617870298">आपण ऑफलाइन आहात.</translation>
-<translation id="3105172416063519923">मालमत्ता ID:</translation>
+<translation id="3105172416063519923">मालमत्ता आयडी:</translation>
 <translation id="3109728660330352905">हे पृष्ठ पाहण्यासाठी आपण प्राधिकृत नाही.</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />कनेक्टिव्हिटी निदान चालवून पहा<ph name="END_LINK" />.</translation>
 <translation id="3145945101586104090">प्रतिसाद डीकोड करण्यात अयशस्वी</translation>
@@ -242,7 +242,7 @@
 <translation id="337363190475750230">तरतूद रद्द केली</translation>
 <translation id="3377188786107721145">धोरण विश्लेषण त्रुटी</translation>
 <translation id="3380365263193509176">अज्ञात त्रुटी</translation>
-<translation id="3380864720620200369">क्लायंट ID:</translation>
+<translation id="3380864720620200369">क्लायंट आयडी:</translation>
 <translation id="340013220407300675">आक्रमणकर्ते कदाचित <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> वरून आपली माहिती चोरण्याचा प्रयत्न करत असू शकतात (उदाहरणार्थ, संकेतशब्द, संदेश किंवा क्रेडिट कार्ड).</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> सध्या आवाक्याबाहेर आहे.</translation>
 <translation id="3427342743765426898">&amp;संपादित करा पुन्हा करा</translation>
@@ -253,7 +253,7 @@
 <translation id="3462200631372590220">प्रगत लपवा</translation>
 <translation id="3479539252931486093">हे अनपेक्षित होते? <ph name="BEGIN_LINK" />आम्हाला कळवा<ph name="END_LINK" /></translation>
 <translation id="3479552764303398839">सध्या नाही</translation>
-<translation id="348000606199325318">क्रॅश ID <ph name="CRASH_LOCAL_ID" /> (सर्व्हर ID: <ph name="CRASH_ID" />)</translation>
+<translation id="348000606199325318">क्रॅश आयडी <ph name="CRASH_LOCAL_ID" /> (सर्व्हर आयडी: <ph name="CRASH_ID" />)</translation>
 <translation id="3498215018399854026">याक्षणी आम्ही आपल्या पालकांपर्यंत पोहोचू शकलो नाही. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="3527085408025491307">फोल्डर</translation>
 <translation id="3528171143076753409">सर्व्हरचे प्रमाणपत्र विश्वासनीय नाही.</translation>
@@ -617,7 +617,7 @@
 <translation id="7469372306589899959">कार्डची पुष्टी करीत आहे</translation>
 <translation id="7481312909269577407">पुढील</translation>
 <translation id="7485870689360869515">डेटा आढळला नाही.</translation>
-<translation id="7508255263130623398">परत केलेला धोरण डिव्हाइस ID रिक्त आहे किंवा वर्तमान डिव्हाइस ID शी जुळत नाही</translation>
+<translation id="7508255263130623398">परत केलेला धोरण डिव्हाइस आयडी रिक्त आहे किंवा वर्तमान डिव्हाइस आयडी शी जुळत नाही</translation>
 <translation id="7514365320538308">डाउनलोड करा</translation>
 <translation id="7518003948725431193">या वेबपत्त्यासाठी वेबपृष्ठ आढळले नाही: <ph name="URL" /></translation>
 <translation id="7535087603100972091">मूल्य</translation>
@@ -673,7 +673,7 @@
 <translation id="7951415247503192394">(32-बिट)</translation>
 <translation id="7956713633345437162">Mobile बुकमार्क</translation>
 <translation id="7961015016161918242">कधीही नाही</translation>
-<translation id="7962083544045318153">क्रॅश ID <ph name="CRASH_LOCAL_ID" /></translation>
+<translation id="7962083544045318153">क्रॅश आयडी <ph name="CRASH_LOCAL_ID" /></translation>
 <translation id="7983301409776629893"> नेहमी <ph name="ORIGINAL_LANGUAGE" /> मधून <ph name="TARGET_LANGUAGE" /> मध्ये भाषांतर करा</translation>
 <translation id="7995512525968007366">निर्दिष्ट केलेले नाही</translation>
 <translation id="8012647001091218357">आम्ही याक्षणी आपल्या पालकांपर्यंत पोहोचू शकलो नाही. कृपया पुन्हा प्रयत्न करा.</translation>
@@ -690,7 +690,7 @@
 <translation id="8149426793427495338">आपला संगणक निष्क्रीय झाला.</translation>
 <translation id="8150722005171944719"><ph name="URL" /> येथील फाइल वाचनीय नाही. ती काढून टाकलेली, हलविलेली असू शकते किंवा फाइल परवानग्या प्रवेश प्रतिबंधित करत असू शकतात.</translation>
 <translation id="8194797478851900357">&amp;हलवा पूर्ववत करा</translation>
-<translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" ID असलेल्या विस्तारासाठी अवैध अद्यतन URL.</translation>
+<translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" आयडी असलेल्या विस्तारासाठी अवैध अद्यतन URL.</translation>
 <translation id="8202097416529803614">ऑर्डर सारांश</translation>
 <translation id="8218327578424803826">नियुक्त केलेले स्थान:</translation>
 <translation id="8225771182978767009">ज्या व्यक्तीने हा संगणक सेट केला त्या व्यक्तीने ही साइट अवरोधित करण्याचे निवडले आहे.</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 84c59a0..5ac3e69 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -280,7 +280,7 @@
 <translation id="3693415264595406141">Wachtwoord:</translation>
 <translation id="3696411085566228381">geen</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Laden...</translation>
+<translation id="370665806235115550">Bezig met laden...</translation>
 <translation id="3712624925041724820">Licenties zijn verbruikt</translation>
 <translation id="3714780639079136834">Schakel mobiele data of wifi in</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Controleer de proxy, firewall en DNS-configuratie<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index a087615..3ee82de 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Passord:</translation>
 <translation id="3696411085566228381">ingen</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Laster inn...</translation>
+<translation id="370665806235115550">Laster inn ...</translation>
 <translation id="3712624925041724820">Lisensene er oppbrukt</translation>
 <translation id="3714780639079136834">Slå på mobildata eller Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Sjekk proxy-tjener-, brannmur- og DNS-konfigurasjonen<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 56e0723..22fd3cd 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -559,7 +559,7 @@
 <translation id="6897140037006041989">User Agent</translation>
 <translation id="6915804003454593391">Пользователь:</translation>
 <translation id="6957887021205513506">Возможно, сертификат сервера фальсифицирован.</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6965978654500191972">Устройство</translation>
 <translation id="6970216967273061347">Район</translation>
 <translation id="6973656660372572881">Указаны как фиксированные прокси-серверы, так и URL PAC-скриптов.</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 337c8c4e..fffa567 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -478,7 +478,7 @@
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6016158022840135739">{COUNT,plural, =1{Strana 1}few{Strana #}many{Strana #}other{Strana #}}</translation>
 <translation id="6017514345406065928">Zelená</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="604124094241169006">Automatické</translation>
 <translation id="6042308850641462728">Viac</translation>
 <translation id="6060685159320643512">Opatrne, tieto experimenty môžu spôsobiť problémy</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index b0678cd..01a5a3fd 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Geslo:</translation>
 <translation id="3696411085566228381">brez</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Nalagam ...</translation>
+<translation id="370665806235115550">Nalaganje ...</translation>
 <translation id="3712624925041724820">Ni dovolj licenc</translation>
 <translation id="3714780639079136834">vklopiti prenos podatkov v mobilnih omrežjih ali Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />preveriti strežnik proxy, požarni zid in konfiguracijo DNS-ja<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index a510f06..4fd03b6 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">Lösenord:</translation>
 <translation id="3696411085566228381">ingen</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">Laddar...</translation>
+<translation id="370665806235115550">Läser in...</translation>
 <translation id="3712624925041724820">Licenserna har tagit slut</translation>
 <translation id="3714780639079136834">aktivera mobildata eller Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />kontrollera proxyn, brandväggen och DNS-konfigureringen<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 54a45ce..fd7a9b0 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -281,7 +281,7 @@
 <translation id="3693415264595406141">கடவுச்சொல்:</translation>
 <translation id="3696411085566228381">எதுவுமில்லை</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">நினைவேறுகிறது...</translation>
+<translation id="370665806235115550">ஏற்றுகிறது…</translation>
 <translation id="3712624925041724820">உரிமம் முடிந்தது</translation>
 <translation id="3714780639079136834">மொபைல் தரவு அல்லது வைஃபையை இயக்குதல்</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />ப்ராக்ஸி, ஃபயர்வால் மற்றும் DNS உள்ளமைவைச் சரிபார்த்தல்<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 594bbc9..8ef202f 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">జిప్ కోడ్</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 సూచన}other{# సూచనలు}}</translation>
 <translation id="2065985942032347596">ప్రామాణీకరణ అవసరం</translation>
-<translation id="2079545284768500474">అన్డు</translation>
+<translation id="2079545284768500474">చర్య రద్దు</translation>
 <translation id="20817612488360358">సిస్టమ్ ప్రాక్సీ సెట్టింగ్‌లు ఉపయోగించడానికి సెట్ చేయబడ్డాయి కానీ స్పష్టమైన ప్రాక్సీ కాన్ఫిగరేషన్ కూడా పేర్కొనబడింది.</translation>
 <translation id="2086652334978798447">Google సూచించే వ్యక్తిగతీకృత కంటెంట్‌ను పొందడానికి, Chromeకి సైన్ ఇన్ చేయండి.</translation>
 <translation id="2089090684895656482">తక్కువ</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 990edc5..0f340ca5 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -284,7 +284,7 @@
 <translation id="3693415264595406141">รหัสผ่าน:</translation>
 <translation id="3696411085566228381">ไม่มี</translation>
 <translation id="3704609568417268905"><ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation>
-<translation id="370665806235115550">กำลังโหลด...</translation>
+<translation id="370665806235115550">กำลังโหลด ...</translation>
 <translation id="3712624925041724820">ใบอนุญาตหมด</translation>
 <translation id="3714780639079136834">เปิดข้อมูลเครือข่ายมือถือหรือ Wi-Fi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />ตรวจสอบพร็อกซี ไฟร์วอลล์ และการกำหนดค่า DNS<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 7ee065d..8c20852 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">Posta kodu</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 öneri}other{# öneri}}</translation>
 <translation id="2065985942032347596">Kimlik Doğrulaması Gerekiyor</translation>
-<translation id="2079545284768500474">Geri Al</translation>
+<translation id="2079545284768500474">Geri al</translation>
 <translation id="20817612488360358">Sistem proxy ayarları kullanılmak üzere ayarlandı, ancak açık bir proxy yapılandırması da belirtildi.</translation>
 <translation id="2086652334978798447">Google tarafından önerilen kişiselleştirilmiş içeriği almak için Chrome'da oturum açın.</translation>
 <translation id="2089090684895656482">Daha az</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 8df3eaf..f508361 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -101,7 +101,7 @@
 <translation id="2053553514270667976">Поштовий індекс</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 пропозиція}one{# пропозиція}few{# пропозиції}many{# пропозицій}other{# пропозиції}}</translation>
 <translation id="2065985942032347596">Потрібна автентифікація</translation>
-<translation id="2079545284768500474">Скасувати</translation>
+<translation id="2079545284768500474">Відмінити</translation>
 <translation id="20817612488360358">Системні параметри проксі-сервера налаштовано для використання, але чітко вказано налаштування проксі-сервера.</translation>
 <translation id="2086652334978798447">Щоб отримувати персоналізовані пропозиції від Google, увійдіть в обліковий запис Chrome.</translation>
 <translation id="2089090684895656482">Менше</translation>
@@ -560,7 +560,7 @@
 <translation id="6897140037006041989">Агент користувача</translation>
 <translation id="6915804003454593391">Користувач:</translation>
 <translation id="6957887021205513506">Схоже, що сертифікат сервера підроблено.</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="6965978654500191972">Пристрій</translation>
 <translation id="6970216967273061347">Район або округ</translation>
 <translation id="6973656660372572881">Указано фіксовані проксі-сервери та URL-адреса сценарію .pac.</translation>
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc
index b236b99c..ee6ab17a 100644
--- a/content/app/content_main_runner.cc
+++ b/content/app/content_main_runner.cc
@@ -46,7 +46,6 @@
 #include "components/tracing/common/tracing_switches.h"
 #include "content/app/mojo/mojo_init.h"
 #include "content/browser/browser_main.h"
-#include "content/browser/gpu/gpu_process_host.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
 #include "content/browser/utility_process_host_impl.h"
 #include "content/common/set_process_title.h"
@@ -113,6 +112,10 @@
 #include "crypto/nss_util.h"
 #endif
 
+#if !defined(CHROME_MULTIPLE_DLL_BROWSER) && !defined(CHROME_MULTIPLE_DLL_CHILD)
+#include "content/browser/gpu/gpu_process_host.h"
+#endif
+
 #if BUILDFLAG(ENABLE_PEPPER_CDMS)
 #include "content/common/media/cdm_host_files.h"
 #endif
diff --git a/content/browser/dom_storage/local_storage_context_mojo.cc b/content/browser/dom_storage/local_storage_context_mojo.cc
index f44b37a..240958579 100644
--- a/content/browser/dom_storage/local_storage_context_mojo.cc
+++ b/content/browser/dom_storage/local_storage_context_mojo.cc
@@ -358,6 +358,7 @@
   // Now that we have a directory, connect to the LevelDB service and get our
   // database.
   file_service_connection_->GetInterface(&leveldb_service_);
+  leveldb_service_->SetEnvironmentName("LevelDBEnv.LocalStorage");
 
   // We might still need to use the directory, so create a clone.
   filesystem::mojom::DirectoryPtr directory_clone;
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc
index fd9a51a..412213d 100644
--- a/content/browser/web_contents/web_contents_android.cc
+++ b/content/browser/web_contents/web_contents_android.cc
@@ -563,9 +563,10 @@
     const JavaParamRef<jobject>& obj,
     const JavaParamRef<jstring>& jframe_name,
     const JavaParamRef<jstring>& jmessage,
+    const JavaParamRef<jstring>& jsource_origin,
     const JavaParamRef<jstring>& jtarget_origin,
     const JavaParamRef<jintArray>& jsent_ports) {
-  base::string16 source_origin;
+  base::string16 source_origin(ConvertJavaStringToUTF16(env, jsource_origin));
   base::string16 target_origin(ConvertJavaStringToUTF16(env, jtarget_origin));
   base::string16 message(ConvertJavaStringToUTF16(env, jmessage));
   std::vector<int> ports;
diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h
index 08adb58..ab17833 100644
--- a/content/browser/web_contents/web_contents_android.h
+++ b/content/browser/web_contents/web_contents_android.h
@@ -136,6 +136,7 @@
       const base::android::JavaParamRef<jobject>& obj,
       const base::android::JavaParamRef<jstring>& jframe_name,
       const base::android::JavaParamRef<jstring>& jmessage,
+      const base::android::JavaParamRef<jstring>& jsource_origin,
       const base::android::JavaParamRef<jstring>& jtarget_origin,
       const base::android::JavaParamRef<jintArray>& jsent_ports);
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
index e87694f..5150f32 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
@@ -336,10 +336,10 @@
     }
 
     @Override
-    public void postMessageToFrame(
-            String frameName, String message, String targetOrigin, int[] sentPortIds) {
-        nativePostMessageToFrame(
-                mNativeWebContentsAndroid, frameName, message, targetOrigin, sentPortIds);
+    public void postMessageToFrame(String frameName, String message,
+            String sourceOrigin, String targetOrigin, int[] sentPortIds) {
+        nativePostMessageToFrame(mNativeWebContentsAndroid, frameName, message,
+                sourceOrigin, targetOrigin, sentPortIds);
     }
 
     @Override
@@ -539,7 +539,7 @@
     private native void nativeAddMessageToDevToolsConsole(
             long nativeWebContentsAndroid, int level, String message);
     private native void nativePostMessageToFrame(long nativeWebContentsAndroid, String frameName,
-            String message, String targetOrigin, int[] sentPortIds);
+            String message, String sourceOrigin, String targetOrigin, int[] sentPortIds);
     private native void nativeCreateMessageChannel(
             long nativeWebContentsAndroid, AppWebMessagePort[] ports);
     private native boolean nativeHasAccessedInitialDocument(
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
index c8a70ab0..22bb994 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
@@ -268,8 +268,8 @@
     /**
      * Dispatches a Message event to the specified frame.
      */
-    void postMessageToFrame(
-            String frameName, String message, String targetOrigin, int[] sentPortIds);
+    void postMessageToFrame(String frameName, String message,
+            String sourceOrigin, String targetOrigin, int[] sentPortIds);
 
     /**
      * Creates a message channel for sending postMessage requests and returns the ports for
diff --git a/content/public/android/java/strings/translations/android_content_strings_am.xtb b/content/public/android/java/strings/translations/android_content_strings_am.xtb
index ed40235..3cb19bbd 100644
--- a/content/public/android/java/strings/translations/android_content_strings_am.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_am.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">መግለጫ ሰሪ ተጠናቅቋል። ውጤቶች በ<ph name="FILENAME" /> ውስጥ ናቸው።</translation>
 <translation id="6527303717912515753">አጋራ</translation>
 <translation id="6849295950938417341">መገለጫ ሰሪውን ማስጀመር አልተሳካም</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_el.xtb b/content/public/android/java/strings/translations/android_content_strings_el.xtb
index 47d262f3..159ae94 100644
--- a/content/public/android/java/strings/translations/android_content_strings_el.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_el.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">Η λειτουργία του προγράμματος προφίλ ολοκληρώθηκε. Τα αποτελέσματα βρίσκονται στο αρχείο <ph name="FILENAME" />.</translation>
 <translation id="6527303717912515753">Κοινή χρήση</translation>
 <translation id="6849295950938417341">Αποτυχία έναρξης προγράμματος προφίλ</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_es-419.xtb b/content/public/android/java/strings/translations/android_content_strings_es-419.xtb
index a258061..fa76244 100644
--- a/content/public/android/java/strings/translations/android_content_strings_es-419.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_es-419.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">El generador de perfiles terminó. Los resultados están en <ph name="FILENAME" />.</translation>
 <translation id="6527303717912515753">Compartir</translation>
 <translation id="6849295950938417341">Error al iniciar el generador de perfiles</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_fa.xtb b/content/public/android/java/strings/translations/android_content_strings_fa.xtb
index 4d6b46a..3ecd6cea 100644
--- a/content/public/android/java/strings/translations/android_content_strings_fa.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_fa.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">نمایه‌ساز پایان یافت. نتایج در <ph name="FILENAME" /> ذخیره شده‌اند.</translation>
 <translation id="6527303717912515753">اشتراک‌گذاری</translation>
 <translation id="6849295950938417341">نمایه‌ساز اجرا نشد</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ru.xtb b/content/public/android/java/strings/translations/android_content_strings_ru.xtb
index dc5867f..b33402e 100644
--- a/content/public/android/java/strings/translations/android_content_strings_ru.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_ru.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">Работа профайлера завершена. Результаты сохранены в файле <ph name="FILENAME" />.</translation>
 <translation id="6527303717912515753">Поделиться</translation>
 <translation id="6849295950938417341">Не удалось запустить профайлер</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_uk.xtb b/content/public/android/java/strings/translations/android_content_strings_uk.xtb
index bc0de55..09fe2f3 100644
--- a/content/public/android/java/strings/translations/android_content_strings_uk.xtb
+++ b/content/public/android/java/strings/translations/android_content_strings_uk.xtb
@@ -11,5 +11,5 @@
 <translation id="4859501799452851758">Профілювальник закінчив роботу. Результати у файлі <ph name="FILENAME" />.</translation>
 <translation id="6527303717912515753">Надіслати</translation>
 <translation id="6849295950938417341">Помилка запуску профілювальника</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/context_lost_integration_test.py b/content/test/gpu/gpu_tests/context_lost_integration_test.py
index c5c4950..4be70e3 100644
--- a/content/test/gpu/gpu_tests/context_lost_integration_test.py
+++ b/content/test/gpu/gpu_tests/context_lost_integration_test.py
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import os
+import sys
 import time
 
 from gpu_tests import gpu_integration_test
@@ -251,3 +252,7 @@
     tab.EvaluateJavaScript('loseContextUsingExtension()')
     tab.Activate()
     self._WaitForTabAndCheckCompletion()
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/depth_capture_integration_test.py b/content/test/gpu/gpu_tests/depth_capture_integration_test.py
index 86805b0d..fa0ed7b7 100644
--- a/content/test/gpu/gpu_tests/depth_capture_integration_test.py
+++ b/content/test/gpu/gpu_tests/depth_capture_integration_test.py
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import os
+import sys
 
 from gpu_tests import gpu_integration_test
 from gpu_tests import depth_capture_expectations
@@ -93,3 +94,7 @@
     cls.SetBrowserOptions(cls._finder_options)
     cls.StartBrowser()
     cls.SetStaticServerDirs([data_path])
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py
index f9a8082..9bdc7afc 100644
--- a/content/test/gpu/gpu_tests/gpu_integration_test.py
+++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
@@ -194,3 +194,8 @@
 
   def setUp(self):
     self._EnsureTabIsAvailable()
+
+def LoadAllTestsInModule(module):
+  # Just delegates to serially_executed_browser_test_case to reduce the
+  # number of imports in other files.
+  return serially_executed_browser_test_case.LoadAllTestsInModule(module)
diff --git a/content/test/gpu/gpu_tests/gpu_process_integration_test.py b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
index 5fc0877c..89691ed 100644
--- a/content/test/gpu/gpu_tests/gpu_process_integration_test.py
+++ b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
@@ -525,3 +525,7 @@
       '--gpu-testing-gl-version=2.1 Mesa 10.1'])
     self._Navigate(test_path)
     self._VerifyGpuProcessPresent()
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py b/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
index fe0d428..f088b18a 100644
--- a/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
+++ b/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import sys
+
 from gpu_tests import gpu_integration_test
 import gpu_tests.hardware_accelerated_feature_expectations as hw_expectations
 
@@ -70,3 +72,7 @@
       print 'Test failed. Printing page contents:'
       print tab.EvaluateJavaScript('document.body.innerHTML')
       self.fail('%s not hardware accelerated' % feature)
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/maps_integration_test.py b/content/test/gpu/gpu_tests/maps_integration_test.py
index f3fb80b4..1180162a7 100644
--- a/content/test/gpu/gpu_tests/maps_integration_test.py
+++ b/content/test/gpu/gpu_tests/maps_integration_test.py
@@ -4,7 +4,9 @@
 
 import json
 import os
+import sys
 
+from gpu_tests import gpu_integration_test
 from gpu_tests import cloud_storage_integration_test_base
 from gpu_tests import maps_expectations
 from gpu_tests import path_util
@@ -138,3 +140,7 @@
     # line.
     expected = self._ReadPixelExpectations(pixel_expectations_file)
     self._ValidateScreenshotSamples(tab, url, screenshot, expected, dpr)
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/path_util.py b/content/test/gpu/gpu_tests/path_util.py
index b9681e0..70d1fcd 100644
--- a/content/test/gpu/gpu_tests/path_util.py
+++ b/content/test/gpu/gpu_tests/path_util.py
@@ -38,3 +38,8 @@
       chromium_src_dir, 'third_party', 'catapult', 'common', 'py_utils')
   if py_utils_path not in sys.path:
     sys.path.append(py_utils_path)
+
+  pylint_path = os.path.join(
+      chromium_src_dir, 'third_party', 'pylint')
+  if pylint_path not in sys.path:
+    sys.path.append(pylint_path)
diff --git a/content/test/gpu/gpu_tests/pixel_integration_test.py b/content/test/gpu/gpu_tests/pixel_integration_test.py
index f85b382..e6bcac29 100644
--- a/content/test/gpu/gpu_tests/pixel_integration_test.py
+++ b/content/test/gpu/gpu_tests/pixel_integration_test.py
@@ -7,6 +7,7 @@
 import re
 import sys
 
+from gpu_tests import gpu_integration_test
 from gpu_tests import cloud_storage_integration_test_base
 from gpu_tests import pixel_expectations
 from gpu_tests import pixel_test_pages
@@ -226,3 +227,7 @@
 
     self._WriteImage(image_path, screenshot)
     return screenshot
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py b/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
index a73b4a8..e6c1dc8 100644
--- a/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
+++ b/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
@@ -5,6 +5,7 @@
 import logging
 import os
 import random
+import sys
 
 from gpu_tests import gpu_integration_test
 from gpu_tests import path_util
@@ -132,3 +133,7 @@
     repetitions = 20
     for _ in range(0, repetitions):
       self._CheckScreenshot()
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/trace_integration_test.py b/content/test/gpu/gpu_tests/trace_integration_test.py
index 98ae403..071d427 100644
--- a/content/test/gpu/gpu_tests/trace_integration_test.py
+++ b/content/test/gpu/gpu_tests/trace_integration_test.py
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import os
+import sys
 
 from gpu_tests import gpu_integration_test
 from gpu_tests import path_util
@@ -126,3 +127,7 @@
     cls.SetBrowserOptions(cls._finder_options)
     cls.StartBrowser()
     cls.SetStaticServerDirs([data_path])
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
index ddf994e..2dcaa93 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
@@ -4,6 +4,7 @@
 
 import logging
 import os
+import sys
 
 from gpu_tests import gpu_integration_test
 from gpu_tests import path_util
@@ -396,3 +397,7 @@
           test_paths.append(test)
 
     return test_paths
+
+def load_tests(loader, tests, pattern):
+  del loader, tests, pattern  # Unused.
+  return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/extensions/strings/extensions_strings_mr.xtb b/extensions/strings/extensions_strings_mr.xtb
index 3fd4c86..3ffb9c8c 100644
--- a/extensions/strings/extensions_strings_mr.xtb
+++ b/extensions/strings/extensions_strings_mr.xtb
@@ -40,7 +40,7 @@
 <translation id="6840444547062817500">या विस्ताराने स्वतःस वारंवार रीलोड केले आहे.</translation>
 <translation id="7003844668372540529"><ph name="VENDOR_NAME" /> कडील <ph name="PRODUCT_ID" /> अज्ञात उत्पादन</translation>
 <translation id="7217838517480956708">या मशीनच्या प्रशासकास <ph name="EXTENSION_NAME" /> स्थापन करणे आवश्यक आहे. हे काढले किंवा सुधारित केले जाऊ शकत नाही.</translation>
-<translation id="7809034755304591547"><ph name="EXTENSION_NAME" /> (विस्तार ID "<ph name="EXTENSION_ID" />") प्रशासकाद्वारे अवरोधित करण्यात आला आहे.</translation>
+<translation id="7809034755304591547"><ph name="EXTENSION_NAME" /> (विस्तार आयडी "<ph name="EXTENSION_ID" />") प्रशासकाद्वारे अवरोधित करण्यात आला आहे.</translation>
 <translation id="7972881773422714442">पर्याय: <ph name="EXTENSIONOPTIONS_TAG_NAME" /></translation>
 <translation id="8047248493720652249">दुसर्‍या विस्ताराने (<ph name="EXTENSION_NAME" />) एक वेगळे फाईलनाव "<ph name="ACTUAL_FILENAME" />" निर्धारित केल्यामुळे डाउनलोड "<ph name="ATTEMPTED_FILENAME" />" ला नाव देण्यात हा विस्तार अयशस्वी झाला.</translation>
 <translation id="8284835137979141223"><ph name="VENDOR_NAME" /> कडील <ph name="PRODUCT_NAME" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index 60ba3eb..9856b084 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">አቃፊ ሰርዝ</translation>
 <translation id="1813414402673211292">የአሰሳ ውሂብ አስወግድ</translation>
 <translation id="1820259098641718022">ወደ የንባብ ዝርዝር ታክሏል</translation>
+<translation id="1826516787628120939">በመፈተሸ ላይ</translation>
 <translation id="1842969606798536927">ይክፈሉ</translation>
 <translation id="1876721852596493031">የጥቅመት ብዛትን ላክ</translation>
 <translation id="1886928167269928266">የጊዜ መጀመሪያ</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">ድረ-ገጾችን አስቀድመው ይጫኑ</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> ላይ ዕልባት ተደርጓል</translation>
 <translation id="3692781555820666866">በሚነቃበት ጊዜ፣ ኦምኒቦክሱ ከእርስዎ አቅራቢያ ባሉ መሣሪያዎች ለተሰራጩ የድር ገጾች የጥቆማ ሐሳቦችን ያካትታል።</translation>
+<translation id="3706658020782046159">የመላኪያ ዘዴዎችን እና መስፍርቶችን ለማረጋገጥ የመላኪያ አድራሻ ይምረጡ።</translation>
 <translation id="3738139272394829648">ለመፈለግ ይንኩ</translation>
 <translation id="3771033907050503522">ማንነት የማያሳውቁ ትሮች</translation>
 <translation id="3783017676699494206">ምስሉን አስቀምጥ</translation>
@@ -188,6 +190,7 @@
 የእርስዎ ውሂብ በእርስዎ የስምረት የይለፍ ቃል ተመስጥሯል። ስምረትን ለመጀመር ያስገቡት።</translation>
 <translation id="4728558894243024398">የመሣሪያ ስርዓት</translation>
 <translation id="473775607612524610">አዘምን</translation>
+<translation id="4750394297954878236">የአስተያየት ጥቆማዎች</translation>
 <translation id="4773461607542755386">ይህ ገጽ በ<ph name="APP_NAME" /> መተግበሪያ ውስጥ ይከፈት?</translation>
 <translation id="481968316161811770">ኩኪዎች፣ የጣቢያ ውሂብ</translation>
 <translation id="4875622588773761625">ለዚህ ድር ጣቢያ የይለፍ ቃልዎን <ph name="PASSWORD_MANAGER_BRAND" /> ማዘመን ይፈልጋሉ?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index 42580b82..cf74df16 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">حذف مجلد</translation>
 <translation id="1813414402673211292">محو بيانات التصفح</translation>
 <translation id="1820259098641718022">تمت الإضافة إلى قائمة القراءة</translation>
+<translation id="1826516787628120939">حساب شيكات</translation>
 <translation id="1842969606798536927">الدفع</translation>
 <translation id="1876721852596493031">إرسال بيانات الاستخدام</translation>
 <translation id="1886928167269928266">بدايةَ الوقت</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">تحميل صفحات الويب مسبقًا</translation>
 <translation id="3691593122358196899">أُضيفَت إشارة مرجعية إلى <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">عند التمكين، سوف يتضمن المربّع متعدد الاستخدامات اقتراحات لبث صفحات الويب من الأجهزة القريبة منك.</translation>
+<translation id="3706658020782046159">اختر عنوان شحن للتحقّق من متطلبات وطرق الشحن.</translation>
 <translation id="3738139272394829648">المس للبحث</translation>
 <translation id="3771033907050503522">علامات تبويب التصفح المتخفي</translation>
 <translation id="3783017676699494206">حفظ الصورة</translation>
@@ -188,6 +190,7 @@
 تم تشفير بياناتك باستخدام عبارة مرور المزامنة. أدخلها لبدء المزامنة.</translation>
 <translation id="4728558894243024398">النظام الأساسي</translation>
 <translation id="473775607612524610">تحديث</translation>
+<translation id="4750394297954878236">الاقتراحات</translation>
 <translation id="4773461607542755386">هل تريد فتح هذه الصفحة في تطبيق <ph name="APP_NAME" />؟</translation>
 <translation id="481968316161811770">ملفات تعريف الارتباط، وبيانات موقع الويب</translation>
 <translation id="4875622588773761625">هل تريد تحديث كلمة مرورك لهذا الموقع من خلال <ph name="PASSWORD_MANAGER_BRAND" />؟</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index 10191fb..c190129 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Изтриване на папката</translation>
 <translation id="1813414402673211292">Изчистване на данните за сърфирането</translation>
 <translation id="1820259098641718022">Добавихте към списъка за четене</translation>
+<translation id="1826516787628120939">Извършва се проверка</translation>
 <translation id="1842969606798536927">Плащане</translation>
 <translation id="1876721852596493031">Send Usage Data</translation>
 <translation id="1886928167269928266">Самото начало</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Предв. зареждане на уеб стр.</translation>
 <translation id="3691593122358196899">Отметката бе запазена в/ъв „<ph name="FOLDER_TITLE" />“</translation>
 <translation id="3692781555820666866">Когато флагът е активиран, полето за всичко ще включва предложения за уеб страници, излъчвани от устройства близо до вас.</translation>
+<translation id="3706658020782046159">Изберете адрес за доставка, за да проверите начините и изискванията за доставяне.</translation>
 <translation id="3738139272394829648">Търсене чрез докосване</translation>
 <translation id="3771033907050503522">Раздели „инкогнито“</translation>
 <translation id="3783017676699494206">Запазване на изобрaжението</translation>
@@ -188,6 +190,7 @@
 Данните ви са шифровани с пропуска ви за синхронизиране. Въведете го, за да стартирате синхронизирането.</translation>
 <translation id="4728558894243024398">Платформа</translation>
 <translation id="473775607612524610">Актуализиране</translation>
+<translation id="4750394297954878236">Предложения</translation>
 <translation id="4773461607542755386">Да се отвори ли стр. в приложението <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">„Бисквитки“ и данни за сайтове</translation>
 <translation id="4875622588773761625">Искате ли <ph name="PASSWORD_MANAGER_BRAND" /> да актуализира паролата ви за този сайт?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index 15fd3fb..b752e06 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">ফোল্ডার মুছুন</translation>
 <translation id="1813414402673211292">ব্রাউজ করা ডেটা সাফ করুন</translation>
 <translation id="1820259098641718022">পড়ার তালিকায় যোগ করা হয়েছে</translation>
+<translation id="1826516787628120939">চেক করা হচ্ছে</translation>
 <translation id="1842969606798536927">অর্থ প্রদান করুন</translation>
 <translation id="1876721852596493031">ব্যবহারের ডেটা পাঠান</translation>
 <translation id="1886928167269928266">শুরুর সময়</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">পূর্বলোড ওয়েবপৃষ্ঠা</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> এ বুকমার্ক করা হয়েছে</translation>
 <translation id="3692781555820666866">সক্ষম করা হলে, বহুউপযোগী ক্ষেত্র আপনার আশেপাশের ডিভাইসের জন্য ওয়েব পৃষ্ঠা সমপ্রচারগুলির পরামর্শ অন্তর্ভুক্ত করা হবে।</translation>
+<translation id="3706658020782046159">শিপিংয়ের পদ্ধতি ও প্রয়োজনীয়তাগুলি দেখার জন্য পাঠানোর একটি ঠিকানা নির্বাচন করুন।</translation>
 <translation id="3738139272394829648">স্পর্শের মাধ্যমে অনুসন্ধান</translation>
 <translation id="3771033907050503522">ছদ্মবেশী ট্যাবগুলি</translation>
 <translation id="3783017676699494206">চিত্র সংরক্ষণ করুন</translation>
@@ -188,6 +190,7 @@
 আপনার সিঙ্ক পাসফ্রেজের মাধ্যমে আপনার ডেটা এনক্রিপটেড হয়েছে। সিঙ্ক শুরু করতে এটি লিখুন।</translation>
 <translation id="4728558894243024398">প্ল্যাটফর্ম</translation>
 <translation id="473775607612524610">আপডেট</translation>
+<translation id="4750394297954878236">প্রস্তাবনা</translation>
 <translation id="4773461607542755386">এই পৃষ্ঠাটি <ph name="APP_NAME" /> অ্যাপ্লিকেশানে খুলবেন?</translation>
 <translation id="481968316161811770">কুকিজ, সাইট ডেটা</translation>
 <translation id="4875622588773761625">আপনি কি চান যে এই সাইটের জন্য <ph name="PASSWORD_MANAGER_BRAND" /> আপনার পাসওয়ার্ড আপডেট করুক?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index d020fae..328704c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Suprimeix la carpeta</translation>
 <translation id="1813414402673211292">Esborra dades navegació</translation>
 <translation id="1820259098641718022">S'ha afegit a la llista de lectura</translation>
+<translation id="1826516787628120939">S'està comprovant</translation>
 <translation id="1842969606798536927">Pagament</translation>
 <translation id="1876721852596493031">Envia les dades d'ús</translation>
 <translation id="1886928167269928266">Des de l'inici</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Càrrega prèvia de pàgines web</translation>
 <translation id="3691593122358196899">Adreça d'interès afegida a <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Quan s'activi, l'omnibox inclourà suggeriments de pàgines web emeses pels dispositius que tinguis a prop.</translation>
+<translation id="3706658020782046159">Selecciona una adreça d'enviament per veure els mètodes d'enviament i els requisits.</translation>
 <translation id="3738139272394829648">Toca per cercar</translation>
 <translation id="3771033907050503522">Pestanyes d'incògnit</translation>
 <translation id="3783017676699494206">Desa la imatge</translation>
@@ -188,6 +190,7 @@
 Les vostres dades estan encriptades amb la vostra frase de contrasenya de sincronització. Introduïu-la per començar la sincronització.</translation>
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="473775607612524610">Actualitza</translation>
+<translation id="4750394297954878236">Suggeriments</translation>
 <translation id="4773461607542755386">Voleu obrir aquesta pàgina a l'aplicació <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Galetes, dades llocs</translation>
 <translation id="4875622588773761625">Voleu que <ph name="PASSWORD_MANAGER_BRAND" /> actualitzi la vostra contrasenya per a aquest lloc?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index 192ddab1..cab46fb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Smazat složku</translation>
 <translation id="1813414402673211292">Smazat údaje o prohlížení</translation>
 <translation id="1820259098641718022">Přidáno do seznamu četby</translation>
+<translation id="1826516787628120939">Probíhá kontrola</translation>
 <translation id="1842969606798536927">Zaplatit</translation>
 <translation id="1876721852596493031">Odesílat data o využití</translation>
 <translation id="1886928167269928266">Od počátku věků</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">Procházet</translation>
 <translation id="2054511809411770085">QR kód nebo čárový kód</translation>
 <translation id="2068952045031577364">Z uplynulého týdne</translation>
-<translation id="2079545284768500474">Zpět</translation>
+<translation id="2079545284768500474" />
 <translation id="209018056901015185">Verze webu pro PC</translation>
 <translation id="2100215774115172756">Seznam obsahu k přečtení je k dispozici offline.</translation>
 <translation id="2103075008456228677">Otevřít history.google.com</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Přednačítat stránky</translation>
 <translation id="3691593122358196899">Záložka přidána do složky <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Pokud je tento příznak aktivován, bude omnibox zahrnovat návrhy webových stránek, které jsou vysílány zařízeními v okolí.</translation>
+<translation id="3706658020782046159">Chcete-li zobrazit způsoby dopravy a požadavky, vyberte dodací adresu.</translation>
 <translation id="3738139272394829648">Vyhledání klepnutím</translation>
 <translation id="3771033907050503522">Anonymní karty</translation>
 <translation id="3783017676699494206">Uložit obrázek</translation>
@@ -188,6 +190,7 @@
 Vaše data jsou šifrována pomocí heslové fráze pro synchronizaci. Chcete-li zahájit synchronizaci, zadejte ji.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Aktualizovat</translation>
+<translation id="4750394297954878236">Návrhy</translation>
 <translation id="4773461607542755386">Otevřít tuto stránku v aplikaci <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Soubory cookie a data webů</translation>
 <translation id="4875622588773761625">Chcete, aby aplikace <ph name="PASSWORD_MANAGER_BRAND" /> aktualizovala vaše heslo pro tento web?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index 6826ea99..5c73a9a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Slet mappe</translation>
 <translation id="1813414402673211292">Ryd browserdata</translation>
 <translation id="1820259098641718022">Føjet til læseliste</translation>
+<translation id="1826516787628120939">Kontrollerer</translation>
 <translation id="1842969606798536927">Betal</translation>
 <translation id="1876721852596493031">Send anvendelsesdata</translation>
 <translation id="1886928167269928266">Altid</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Forudindlæs websider</translation>
 <translation id="3691593122358196899">Bogmærket er gemt i <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Når Fysisk web er aktiveret, medtager omnifeltet websideforslag, som enheder i nærheden af dig udsender.</translation>
+<translation id="3706658020782046159">Vælg en leveringsadresse for at se forsendelsesmetoder og -krav.</translation>
 <translation id="3738139272394829648">Tryk for at søge</translation>
 <translation id="3771033907050503522">Inkognitofaner</translation>
 <translation id="3783017676699494206">Gem billede</translation>
@@ -188,6 +190,7 @@
 Dine data er krypteret med din adgangssætning til synkronisering. Indtast den for at starte synkroniseringen.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Opdater</translation>
+<translation id="4750394297954878236">Forslag</translation>
 <translation id="4773461607542755386">Skal denne side åbnes i appen <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies, websitedata</translation>
 <translation id="4875622588773761625">Skal <ph name="PASSWORD_MANAGER_BRAND" /> opdatere din adgangskode til dette website?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index 7b66d67..99576fe8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Ordner löschen</translation>
 <translation id="1813414402673211292">Browserdaten löschen</translation>
 <translation id="1820259098641718022">Zur Leseliste hinzugefügt</translation>
+<translation id="1826516787628120939">Überprüfung läuft</translation>
 <translation id="1842969606798536927">Bezahlen</translation>
 <translation id="1876721852596493031">Nutzungsdaten senden</translation>
 <translation id="1886928167269928266">Für gesamten Zeitraum</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">Durchsuchen</translation>
 <translation id="2054511809411770085">QR-Code oder Barcode</translation>
 <translation id="2068952045031577364">Für die letzte Woche</translation>
-<translation id="2079545284768500474">Rückgängig</translation>
+<translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="209018056901015185">Desktop-Version</translation>
 <translation id="2100215774115172756">Ihre Leseliste ist offline verfügbar.</translation>
 <translation id="2103075008456228677">history.google.com öffnen</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Webseiten vorabladen</translation>
 <translation id="3691593122358196899">Als Lesezeichen in "<ph name="FOLDER_TITLE" />" gespeichert</translation>
 <translation id="3692781555820666866">Wenn Physical Web aktiviert ist, enthält die Omnibox Vorschläge für Webseiten, die von Geräten in Ihrer Nähe übertragen werden.</translation>
+<translation id="3706658020782046159">Wählen Sie eine Versandadresse aus, um die Versandmethoden und -anforderungen zu sehen.</translation>
 <translation id="3738139272394829648">Zum Suchen tippen</translation>
 <translation id="3771033907050503522">Inkognito-Tabs</translation>
 <translation id="3783017676699494206">Bild speichern</translation>
@@ -188,6 +190,7 @@
 Ihre Daten sind mit Ihrer Synchronisierungspassphrase verschlüsselt. Geben Sie diese ein, um die Synchronisierung zu starten.</translation>
 <translation id="4728558894243024398">Plattform</translation>
 <translation id="473775607612524610">Aktualisieren</translation>
+<translation id="4750394297954878236">Vorschläge</translation>
 <translation id="4773461607542755386">Diese Seite in <ph name="APP_NAME" /> öffnen?</translation>
 <translation id="481968316161811770">Cookies, Websitedaten</translation>
 <translation id="4875622588773761625">Soll <ph name="PASSWORD_MANAGER_BRAND" /> Ihr Passwort für diese Website aktualisieren?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index fd1935b..cd11ab2b1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Διαγραφή φακέλου</translation>
 <translation id="1813414402673211292">Διαγραφή δεδομένων περιήγησης</translation>
 <translation id="1820259098641718022">Προστέθηκε στη λίστα ανάγνωσης</translation>
+<translation id="1826516787628120939">Έλεγχος</translation>
 <translation id="1842969606798536927">Πληρωμή</translation>
 <translation id="1876721852596493031">Αποστ. δεδομ. χρήσης</translation>
 <translation id="1886928167269928266">Από την αρχή</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Προφόρτ. ιστοσελίδων</translation>
 <translation id="3691593122358196899">Ο σελιδοδείκτης είναι στο "<ph name="FOLDER_TITLE" />"</translation>
 <translation id="3692781555820666866">Όταν είναι ενεργοποιημένο, το κύριο πλαίσιο θα περιλαμβάνει προτάσεις για ιστοσελίδες που μεταδίδονται από συσκευές που βρίσκονται κοντά σας.</translation>
+<translation id="3706658020782046159">Επιλέξτε μια διεύθυνση αποστολής, για να ελέγξετε τους τρόπους και τις απαιτήσεις αποστολής.</translation>
 <translation id="3738139272394829648">Αγγίξτε για αναζήτηση</translation>
 <translation id="3771033907050503522">Καρτ.αν.περιήγ.</translation>
 <translation id="3783017676699494206">Αποθήκευση εικόνας</translation>
@@ -188,6 +190,7 @@
 Τα δεδομένα σας είναι κρυπτογραφημένα με τη δική σας φράση πρόσβασης συγχρονισμού. Πληκτρολογήστε την για να ξεκινήσει ο συγχρονισμός.</translation>
 <translation id="4728558894243024398">Πλατφόρμα</translation>
 <translation id="473775607612524610">Ενημέρωση</translation>
+<translation id="4750394297954878236">Προτάσεις</translation>
 <translation id="4773461607542755386">Άνοιγμα αυτής της σελίδας στην εφαρμ. <ph name="APP_NAME" />;</translation>
 <translation id="481968316161811770">Cookie, δεδομένα ιστότοπου</translation>
 <translation id="4875622588773761625">Θέλετε το <ph name="PASSWORD_MANAGER_BRAND" /> να ενημερώσει τον κωδικό πρόσβασής σας για αυτόν τον ιστότοπο;</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 a269aede..5c28251 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Delete Folder</translation>
 <translation id="1813414402673211292">Clear Browsing Data</translation>
 <translation id="1820259098641718022">Added to Reading List</translation>
+<translation id="1826516787628120939">Checking</translation>
 <translation id="1842969606798536927">Pay</translation>
 <translation id="1876721852596493031">Send usage data</translation>
 <translation id="1886928167269928266">Beginning of Time</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pre-load Web Pages</translation>
 <translation id="3691593122358196899">Bookmarked to <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">When enabled, the omnibox will include suggestions for web pages broadcast by devices near you.</translation>
+<translation id="3706658020782046159">Select a delivery address to check delivery methods and requirements.</translation>
 <translation id="3738139272394829648">Touch to Search</translation>
 <translation id="3771033907050503522">Incognito Tabs</translation>
 <translation id="3783017676699494206">Save Image</translation>
@@ -188,6 +190,7 @@
 Your data is encrypted with your sync passphrase. Enter it to start sync.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Update</translation>
+<translation id="4750394297954878236">Suggestions</translation>
 <translation id="4773461607542755386">Open this page in the <ph name="APP_NAME" /> app?</translation>
 <translation id="481968316161811770">Cookies, Site Data</translation>
 <translation id="4875622588773761625">Do you want <ph name="PASSWORD_MANAGER_BRAND" /> to update your password for this site?</translation>
@@ -285,7 +288,7 @@
 <translation id="6445981559479772097">Message sent.</translation>
 <translation id="6456339708790392414">Your Payment</translation>
 <translation id="6456425917241817154">Password Generated by Chrome</translation>
-<translation id="6464071786529933911">Open in new incognito tab</translation>
+<translation id="6464071786529933911">Open in New Incognito Tab</translation>
 <translation id="6482629121755362506"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> items deleted</translation>
 <translation id="6541915733953096570">Past Hour</translation>
 <translation id="6570040839871198836">Autofill Forms</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
index c81629ba..348b10d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Eliminar carpeta</translation>
 <translation id="1813414402673211292">Eliminar datos de navegación</translation>
 <translation id="1820259098641718022">Se agregó a la lista de lectura</translation>
+<translation id="1826516787628120939">Comprobando</translation>
 <translation id="1842969606798536927">Pagar</translation>
 <translation id="1876721852596493031">Enviar datos de uso</translation>
 <translation id="1886928167269928266">Principio</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Precargar pág. web</translation>
 <translation id="3691593122358196899">Se agregó a favoritos en <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Cuando está habilitado, el cuadro multifunción incluirá sugerencias para páginas web que transmiten dispositivos cercanos.</translation>
+<translation id="3706658020782046159">Selecciona una dirección de envío para comprobar los métodos y requisitos de envío.</translation>
 <translation id="3738139272394829648">Tocar para buscar</translation>
 <translation id="3771033907050503522">Pestañas de incógnito</translation>
 <translation id="3783017676699494206">Guardar imagen</translation>
@@ -188,6 +190,7 @@
 Tus datos están encriptados con tu frase de contraseña para sincronización. Debes ingresarla para iniciar la sincronización.</translation>
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="473775607612524610">Actualizar</translation>
+<translation id="4750394297954878236">Sugerencias</translation>
 <translation id="4773461607542755386">¿Abrir esta página en la aplicación <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies, datos del sitio</translation>
 <translation id="4875622588773761625">¿Quieres que <ph name="PASSWORD_MANAGER_BRAND" /> actualice tu contraseña para este sitio?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index d0732a2..c82e577 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Eliminar carpeta</translation>
 <translation id="1813414402673211292">Borrar datos de navegación</translation>
 <translation id="1820259098641718022">Añadida a Lista de lectura</translation>
+<translation id="1826516787628120939">Comprobando</translation>
 <translation id="1842969606798536927">Pagar</translation>
 <translation id="1876721852596493031">Enviar datos de uso</translation>
 <translation id="1886928167269928266">El origen de los tiempos</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Precargar páginas web</translation>
 <translation id="3691593122358196899">Marcador añadido a <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Si se habilita, el omnibox incluirá sugerencias de las páginas web que envíen dispositivos cercanos.</translation>
+<translation id="3706658020782046159">Selecciona una dirección de envío para consultar los métodos de envío y los requisitos.</translation>
 <translation id="3738139272394829648">Tocar para Buscar</translation>
 <translation id="3771033907050503522">Pestañas incógnito</translation>
 <translation id="3783017676699494206">Guardar imagen</translation>
@@ -188,6 +190,7 @@
 Tus datos se han cifrado con tu frase de contraseña de sincronización. Introdúcela para iniciar la sincronización.</translation>
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="473775607612524610">Actualizar</translation>
+<translation id="4750394297954878236">Sugerencias</translation>
 <translation id="4773461607542755386">¿Abrir esta página en la aplicación <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies y datos de sitios web</translation>
 <translation id="4875622588773761625">¿Quieres que <ph name="PASSWORD_MANAGER_BRAND" /> actualice tu contraseña para este sitio web?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb
index 803f205d..f533fdc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_et.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Kustuta kaust</translation>
 <translation id="1813414402673211292">Kustuta sirvimise andmed</translation>
 <translation id="1820259098641718022">Lisati lugemisloendisse</translation>
+<translation id="1826516787628120939">Kontrollimine</translation>
 <translation id="1842969606798536927">Maksmine</translation>
 <translation id="1876721852596493031">Kasutusandm. saatm.</translation>
 <translation id="1886928167269928266">Alates algusest</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Lehtede eellaadimine</translation>
 <translation id="3691593122358196899">Lisatud järjehoidjana kausta <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Kui funktsioon on lubatud, soovitab omnikastike veebilehti, mida levitavad lähedal asuvad seadmed.</translation>
+<translation id="3706658020782046159">Tarneviiside ja nõuete vaatamiseks valige tarneaadress.</translation>
 <translation id="3738139272394829648">Puudutage otsimiseks</translation>
 <translation id="3771033907050503522">Inkogn. vahelehed</translation>
 <translation id="3783017676699494206">Salvesta kujutis</translation>
@@ -188,6 +190,7 @@
 Teie andmed on krüpteeritud teie sünkroonimisparooliga. Sisestage see sünkroonimise alustamiseks.</translation>
 <translation id="4728558894243024398">Platvorm</translation>
 <translation id="473775607612524610">Värskenda</translation>
+<translation id="4750394297954878236">Soovitused</translation>
 <translation id="4773461607542755386">Kas avada see leht rakenduses <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Küpsis., saidi andm.</translation>
 <translation id="4875622588773761625">Kas soovite, et <ph name="PASSWORD_MANAGER_BRAND" /> värskendaks teie parooli sellel saidil?</translation>
@@ -250,7 +253,7 @@
 <translation id="6012140227487808125">Krüpteerimine …</translation>
 <translation id="6021332621416007159">Ava rakend. ...</translation>
 <translation id="6039694632319341016">Kas soovite lasta teenusel <ph name="PASSWORD_MANAGER_BRAND" /> värskendada selle saidi jaoks kasutaja <ph name="USERNAME" /> parooli?</translation>
-<translation id="6040143037577758943">Sule</translation>
+<translation id="6040143037577758943">Sulge</translation>
 <translation id="6042308850641462728">Rohkem</translation>
 <translation id="605721222689873409">aa</translation>
 <translation id="6066301408025741299">Tühistamiseks puudutage.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index 5a05e4a..c11207b9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -52,6 +52,7 @@
 <translation id="1809939268435598390">حذف پوشه</translation>
 <translation id="1813414402673211292">پاک کردن داده‌های مرور</translation>
 <translation id="1820259098641718022">به فهرست خواندن اضافه شد</translation>
+<translation id="1826516787628120939">در حال بررسی</translation>
 <translation id="1842969606798536927">پرداخت</translation>
 <translation id="1876721852596493031">ارسال داده استفاده</translation>
 <translation id="1886928167269928266">از ابتدا</translation>
@@ -152,6 +153,7 @@
 <translation id="3638472932233958418">صفحات وب از پیش بارگیری شده</translation>
 <translation id="3691593122358196899">نشانک به <ph name="FOLDER_TITLE" /> اضافه شد</translation>
 <translation id="3692781555820666866">‏omnibox، درصورت فعال بودن، پیشنهاداتی برای پخش صفحه‌های وب توسط دستگاه‌های نزدیک شما ارائه می‌دهد.</translation>
+<translation id="3706658020782046159">برای بررسی شرایط لازم و روش‌های تحویل کالا، آدرس تحویل کالا را انتخاب کنید.</translation>
 <translation id="3738139272394829648">لمس کردن برای جستجو</translation>
 <translation id="3771033907050503522">برگه‌های ناشناس</translation>
 <translation id="3783017676699494206">ذخیره تصویر</translation>
@@ -189,6 +191,7 @@
 داده‌های شما با عبارت عبور همگام‌سازی رمزگذاری می‌شود. برای شروع همگام‌سازی آن را وارد کنید.</translation>
 <translation id="4728558894243024398">پلت فورم</translation>
 <translation id="473775607612524610">به‌روزرسانی</translation>
+<translation id="4750394297954878236">پیشنهادات</translation>
 <translation id="4773461607542755386">این صفحه در برنامه <ph name="APP_NAME" /> باز شود؟</translation>
 <translation id="481968316161811770">کوکی‌ها، داده‌های سایت</translation>
 <translation id="4875622588773761625">می‌خواهید <ph name="PASSWORD_MANAGER_BRAND" /> گذرواژه‌تان را برای این سایت به‌روزرسانی کند؟</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index 0833596b..e29096061 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Poista kansio</translation>
 <translation id="1813414402673211292">Poista selaustiedot</translation>
 <translation id="1820259098641718022">Lisättiin lukulistalle</translation>
+<translation id="1826516787628120939">Tarkistetaan</translation>
 <translation id="1842969606798536927">Maksa</translation>
 <translation id="1876721852596493031">Lähetä käyttötietoja</translation>
 <translation id="1886928167269928266">Alusta asti</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Esilataa verkkosivut</translation>
 <translation id="3691593122358196899">Lisätty kirjanmerkiksi kansioon <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Kun tämä on käytössä, omniboxissa näytetään ehdotuksia lähellä olevien laitteiden lähettämistä verkkosivuista.</translation>
+<translation id="3706658020782046159">Näet toimitusvaihtoehdot ja ‑vaatimukset valitsemalla toimitusosoitteen.</translation>
 <translation id="3738139272394829648">Koskettamalla hakeminen</translation>
 <translation id="3771033907050503522">Incognito</translation>
 <translation id="3783017676699494206">Tallenna kuva</translation>
@@ -188,6 +190,7 @@
 Tietosi salataan synkronoinnin tunnuslauseesi avulla. Aloita synkronointi antamalla tunnuslause.</translation>
 <translation id="4728558894243024398">Käyttöympäristö</translation>
 <translation id="473775607612524610">Päivitä</translation>
+<translation id="4750394297954878236">Ehdotukset</translation>
 <translation id="4773461607542755386">Avataanko tämä sivu sovelluksessa <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Evästeet, sivuston tiedot</translation>
 <translation id="4875622588773761625">Haluatko, että <ph name="PASSWORD_MANAGER_BRAND" /> päivittää tämän sivuston salasanasi?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index dce5d62..f7e006a7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">I-delete ang Folder</translation>
 <translation id="1813414402673211292">I-clear Data sa Pag-browse</translation>
 <translation id="1820259098641718022">Idinagdag sa Listahan ng Mga Babasahin</translation>
+<translation id="1826516787628120939">Sinusuri</translation>
 <translation id="1842969606798536927">Magbayad</translation>
 <translation id="1876721852596493031">Magpadala ng Data</translation>
 <translation id="1886928167269928266">Mula sa Umpisa</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Mag-preload ng Mga Webpage</translation>
 <translation id="3691593122358196899">Na-bookmark sa <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Kapag naka-enable, magkakaroon ang omnibox ng mga suhestyon para sa mga web page na bino-broadcast ng mga device na malapit sa iyo.</translation>
+<translation id="3706658020782046159">Pumili ng address sa pagpapadala upang makita ang mga paraan ng at kinakailangan sa pagpapadala.</translation>
 <translation id="3738139272394829648">Pindutin upang Hanapin</translation>
 <translation id="3771033907050503522">Mga Tab na Incognito</translation>
 <translation id="3783017676699494206">I-save ang Larawan</translation>
@@ -188,6 +190,7 @@
 Na-encrypt ang iyong data gamit ang iyong passphrase sa pag-sync. Ilagay ito upang simulan ang pag-sync.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Mag-update</translation>
+<translation id="4750394297954878236">Mga Suhestyon</translation>
 <translation id="4773461607542755386">Buksan ang pahinang ito sa <ph name="APP_NAME" /> app?</translation>
 <translation id="481968316161811770">Cookies, Data ng Site</translation>
 <translation id="4875622588773761625">Gusto mo bang i-update ng <ph name="PASSWORD_MANAGER_BRAND" /> ang iyong password para sa site na ito?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index ac6eb23..c9a1b5b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Supprimer le dossier</translation>
 <translation id="1813414402673211292">Effacer les données de navigation</translation>
 <translation id="1820259098641718022">Page ajoutée à la liste de lecture</translation>
+<translation id="1826516787628120939">Vérification en cours…</translation>
 <translation id="1842969606798536927">Paiement</translation>
 <translation id="1876721852596493031">Envoyer les données d'utilisation</translation>
 <translation id="1886928167269928266">Depuis le début</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Précharger pages Web</translation>
 <translation id="3691593122358196899">Ajouté aux favoris dans "<ph name="FOLDER_TITLE" />"</translation>
 <translation id="3692781555820666866">Une fois le Web physique activé, l'omnibox fournit des suggestions de pages Web diffusées par les appareils à proximité.</translation>
+<translation id="3706658020782046159">Sélectionnez une adresse de livraison pour consulter les modes d'expédition disponibles et les conditions applicables.</translation>
 <translation id="3738139272394829648">Appuyer pour rechercher</translation>
 <translation id="3771033907050503522">Ongl. navig. priv.</translation>
 <translation id="3783017676699494206">Enregistrer l'image</translation>
@@ -188,6 +190,7 @@
 Vos données sont chiffrées avec votre phrase secrète de synchronisation. Saisissez-la pour lancer la synchronisation.</translation>
 <translation id="4728558894243024398">Plate-forme</translation>
 <translation id="473775607612524610">Mettre à jour</translation>
+<translation id="4750394297954878236">Suggestions</translation>
 <translation id="4773461607542755386">Ouvrir cette page dans l'application <ph name="APP_NAME" /> ?</translation>
 <translation id="481968316161811770">Cookies/données site</translation>
 <translation id="4875622588773761625">Voulez-vous que <ph name="PASSWORD_MANAGER_BRAND" /> modifie votre mot de passe pour ce site ?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 04d01f1..07e84d9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">ફોલ્ડર કાઢી નાખો</translation>
 <translation id="1813414402673211292">બ્રાઉઝિંગ ડેટા સાફ કરો</translation>
 <translation id="1820259098641718022">વાંચન સૂચિમાં ઉમેર્યું</translation>
+<translation id="1826516787628120939">તપાસી રહ્યાં છે</translation>
 <translation id="1842969606798536927">ચુકવણી કરો</translation>
 <translation id="1876721852596493031">ઉપયોગ ડેટા મોકલો</translation>
 <translation id="1886928167269928266">શરૂઆતથી</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">બ્રાઉઝ કરો</translation>
 <translation id="2054511809411770085">QR કોડ અથવા બારકોડ</translation>
 <translation id="2068952045031577364">ગત અઠવાડિયા</translation>
-<translation id="2079545284768500474">પૂર્વવત્ કરો</translation>
+<translation id="2079545284768500474">પૂર્વવત કરો</translation>
 <translation id="209018056901015185">ડેસ્કટોપ સાઇટની વિનંતી કરો</translation>
 <translation id="2100215774115172756">તમારી વાંચન સૂચિ ઑફલાઇન ઉપલબ્ધ છે.</translation>
 <translation id="2103075008456228677">history.google.com ખોલો</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">વેબપૃષ્ઠો પહેલાથી લોડ કરો</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> પર બુકમાર્ક કર્યું</translation>
 <translation id="3692781555820666866">સક્ષમ કરવા પર, ઑમ્નિબૉક્સ, તમારી નજીકના ઉપકરણો દ્વારા બ્રોડકાસ્ટ કરવામાં આવેલા વેબ પૃષ્ઠો માટે સૂચનોને શામેલ કરશે.</translation>
+<translation id="3706658020782046159">શિપિંગ પદ્ધતિઓ અને આવશ્યકતાઓ તપાસવા વિતરણ માટેનું સરનામું પસંદ કરો.</translation>
 <translation id="3738139272394829648">શોધવા માટે ટચ કરો</translation>
 <translation id="3771033907050503522">છૂપા ટેબ્સ</translation>
 <translation id="3783017676699494206">છબી સાચવો</translation>
@@ -188,6 +190,7 @@
 તમારો ડેટા તમારા સમન્વયન પાસફ્રેઝ સાથે એન્ક્રિપ્ટ કરવામાં આવ્યો છે. સમન્વયન શરૂ કરવા માટે તે દાખલ કરો.</translation>
 <translation id="4728558894243024398">પ્લેટફોર્મ</translation>
 <translation id="473775607612524610">અપડેટ કરો</translation>
+<translation id="4750394297954878236">સૂચનો</translation>
 <translation id="4773461607542755386">આ પૃષ્ઠને <ph name="APP_NAME" /> એપ્લિકેશનમાં ખોલીએ?</translation>
 <translation id="481968316161811770">કુકીઝ, સાઇટ ડેટા</translation>
 <translation id="4875622588773761625">શું તમે ઇચ્છો છો કે આ સાઇટ માટે <ph name="PASSWORD_MANAGER_BRAND" /> તમારો પાસવર્ડ અપડેટ કરે?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index a62516431..c21de993 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">फ़ोल्‍डर हटाएं</translation>
 <translation id="1813414402673211292">ब्राउज़िंग डेटा साफ़ करें</translation>
 <translation id="1820259098641718022">पठन सूची में जोड़ा गया</translation>
+<translation id="1826516787628120939">जांच की जा रही है</translation>
 <translation id="1842969606798536927">भुगतान करें</translation>
 <translation id="1876721852596493031">उपयोग डेटा भेजें</translation>
 <translation id="1886928167269928266">शुरुआत से</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">ब्राउज़ करें</translation>
 <translation id="2054511809411770085">QR कोड या बारकोड</translation>
 <translation id="2068952045031577364">पिछला सप्ताह</translation>
-<translation id="2079545284768500474">पूर्ववत् करें</translation>
+<translation id="2079545284768500474">वापस लाएं</translation>
 <translation id="209018056901015185">डेस्कटॉप साइट का अनुरोध करें</translation>
 <translation id="2100215774115172756">आपकी पठन सूची ऑफ़लाइन उपलब्ध है.</translation>
 <translation id="2103075008456228677">history.google.com खोलें</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">पहले से लोड वेबपेज</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> में बुकमार्क किया गया</translation>
 <translation id="3692781555820666866">सक्षम होने पर खोज वाली पट्टी में आपके नज़दीकी डिवाइस द्वारा प्रसारित किए गए वेबपृष्ठों को लिए सुझाव शामिल होंगे.</translation>
+<translation id="3706658020782046159">शिपिंग की विधियां और आवश्यकताएं देखने के लिए शिपिंग पता चुनें.</translation>
 <translation id="3738139272394829648">खोजने के लिए स्पर्श करें</translation>
 <translation id="3771033907050503522">गुप्त टैब</translation>
 <translation id="3783017676699494206">चित्र सहेजें</translation>
@@ -188,6 +190,7 @@
 आपका डेटा आपके समन्वयन पासफ़्रेज़ के साथ एन्क्रिप्ट किया गया है. समन्वयन शुरू करने के लिए इसे डालें.</translation>
 <translation id="4728558894243024398">प्लेटफ़ॉर्म</translation>
 <translation id="473775607612524610">अपडेट करें</translation>
+<translation id="4750394297954878236">सुझाव</translation>
 <translation id="4773461607542755386">इस पेज को <ph name="APP_NAME" /> में खोलें?</translation>
 <translation id="481968316161811770">कुकी, साइट डेटा</translation>
 <translation id="4875622588773761625">क्या आप चाहते हैं कि <ph name="PASSWORD_MANAGER_BRAND" /> इस साइट के लिए आपके पासवर्ड को अपडेट करे?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
index dbc7198..fbf16c0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Izbriši mapu</translation>
 <translation id="1813414402673211292">Brisanje podataka o pregledavanju</translation>
 <translation id="1820259098641718022">Dodano na popis za čitanje</translation>
+<translation id="1826516787628120939">Provjera</translation>
 <translation id="1842969606798536927">Plaćanje</translation>
 <translation id="1876721852596493031">Slanje pod. o upot.</translation>
 <translation id="1886928167269928266">Od početka</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Već učitane stranice</translation>
 <translation id="3691593122358196899">Oznaka dodana u mapu <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Kada je ta značajka omogućena, višenamjenski okvir uključit će prijedloge za web-stranice koje emitiraju uređaji u vašoj blizini.</translation>
+<translation id="3706658020782046159">Odaberite adresu za dostavu da biste provjerili načine i zahtjeve za dostavu.</translation>
 <translation id="3738139272394829648">Dodirnite za pretraživanje</translation>
 <translation id="3771033907050503522">Anonimne kartice</translation>
 <translation id="3783017676699494206">Spremi sliku</translation>
@@ -188,6 +190,7 @@
 Vaši su podaci šifrirani vašom šifrom za sinkronizaciju. Unesite je da biste pokrenuli sinkronizaciju.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Ažuriraj</translation>
+<translation id="4750394297954878236">Prijedlozi</translation>
 <translation id="4773461607542755386">Želite li otvoriti tu stranicu u apl. <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Kolačići, podaci web-lokacije</translation>
 <translation id="4875622588773761625">Želite li da <ph name="PASSWORD_MANAGER_BRAND" /> ažurira vašu zaporku za tu web-lokaciju?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index df0fe2b..7cf8e0f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Mappa törlése</translation>
 <translation id="1813414402673211292">Böngészési adatok törlése</translation>
 <translation id="1820259098641718022">Hozzáadva az olvasási listához</translation>
+<translation id="1826516787628120939">Ellenőrzés</translation>
 <translation id="1842969606798536927">Fizetés</translation>
 <translation id="1876721852596493031">Használati adatok küldése</translation>
 <translation id="1886928167269928266">Mindenkori</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Weboldalak előtöltése</translation>
 <translation id="3691593122358196899">Könyvjelzők közé téve itt: <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Ha engedélyezve van, a cím- és keresősáv javaslatokat jelenít meg a közeli eszközök által sugárzott weboldalakról.</translation>
+<translation id="3706658020782046159">Válassza ki a szállítási címet a szállítási módok és követelmények megtekintéséhez.</translation>
 <translation id="3738139272394829648">Érintéssel keresés</translation>
 <translation id="3771033907050503522">Inkognitólapok</translation>
 <translation id="3783017676699494206">Kép mentése</translation>
@@ -188,6 +190,7 @@
 Adatai az összetett szinkronizálási jelszavával vannak titkosítva. Írja be a jelszót a szinkronizálás megkezdéséhez.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Frissítés</translation>
+<translation id="4750394297954878236">Javaslatok</translation>
 <translation id="4773461607542755386">Megnyitja az oldalt a(z) <ph name="APP_NAME" /> alkalmazással?</translation>
 <translation id="481968316161811770">Cookie-k, webhelyadatok</translation>
 <translation id="4875622588773761625">Szeretné, hogy a(z) <ph name="PASSWORD_MANAGER_BRAND" /> frissítse jelszavát ezen a webhelyen?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 5e773a2..29a853a5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Hapus Folder</translation>
 <translation id="1813414402673211292">Hapus Data Perambanan</translation>
 <translation id="1820259098641718022">Ditambahkan ke Daftar Baca</translation>
+<translation id="1826516787628120939">Memeriksa</translation>
 <translation id="1842969606798536927">Bayar</translation>
 <translation id="1876721852596493031">Krm Data Penggunaan</translation>
 <translation id="1886928167269928266">Awal Waktu</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">Jelajahi</translation>
 <translation id="2054511809411770085">Kode QR atau kode batang</translation>
 <translation id="2068952045031577364">Minggu Lalu</translation>
-<translation id="2079545284768500474">Batalkan</translation>
+<translation id="2079545284768500474">Urungkan</translation>
 <translation id="209018056901015185">Ubah situs desktop</translation>
 <translation id="2100215774115172756">Daftar bacaan Anda tersedia secara offline.</translation>
 <translation id="2103075008456228677">Buka history.google.com</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pramuat Laman Web</translation>
 <translation id="3691593122358196899">Dibookmark ke <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Jika diaktifkan, omnibox akan menyertakan saran untuk laman web yang disiarkan oleh perangkat di sekitar Anda.</translation>
+<translation id="3706658020782046159">Pilih alamat pengiriman untuk memeriksa metode dan persyaratan pengiriman.</translation>
 <translation id="3738139272394829648">Sentuh untuk Menelusuri</translation>
 <translation id="3771033907050503522">Tab Penyamaran</translation>
 <translation id="3783017676699494206">Simpan Gambar</translation>
@@ -188,6 +190,7 @@
 Data Anda dienkripsi dengan frasa sandi sinkronisasi. Masukkan frasa sandi untuk memulai sinkronisasi.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Mutakhirkan</translation>
+<translation id="4750394297954878236">Saran</translation>
 <translation id="4773461607542755386">Buka laman ini di aplikasi <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie, Data Situs</translation>
 <translation id="4875622588773761625">Apakah Anda ingin <ph name="PASSWORD_MANAGER_BRAND" /> memperbarui sandi untuk situs ini?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index 9460f88f..20b20dfb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Elimina cartella</translation>
 <translation id="1813414402673211292">Cancella dati di navigazione</translation>
 <translation id="1820259098641718022">Aggiunta all'elenco di lettura</translation>
+<translation id="1826516787628120939">Verifica in corso...</translation>
 <translation id="1842969606798536927">Paga</translation>
 <translation id="1876721852596493031">Invia dati di utilizzo</translation>
 <translation id="1886928167269928266">Tutto</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Precarica pagine web</translation>
 <translation id="3691593122358196899">Preferito aggiunto in: <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Quando è attivo, la omnibox include suggerimenti relativi alle pagine web trasmesse dai dispositivi nelle vicinanze.</translation>
+<translation id="3706658020782046159">Seleziona un indirizzo di spedizione per verificare i metodi di spedizione e i requisiti.</translation>
 <translation id="3738139272394829648">Tocca per cercare</translation>
 <translation id="3771033907050503522">Schede di navigazione in incognito</translation>
 <translation id="3783017676699494206">Salva immagine</translation>
@@ -188,6 +190,7 @@
 I tuoi dati vengono criptati con la tua passphrase di sincronizzazione. Inseriscila per avviare la sincronizzazione.</translation>
 <translation id="4728558894243024398">Piattaforma</translation>
 <translation id="473775607612524610">Aggiorna</translation>
+<translation id="4750394297954878236">Suggerimenti</translation>
 <translation id="4773461607542755386">Aprire questa pagina nell'app <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie, dati dei siti</translation>
 <translation id="4875622588773761625">Vuoi che <ph name="PASSWORD_MANAGER_BRAND" /> aggiorni la password di questo sito?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index 385163a..4e32936 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">מחק תיקיה</translation>
 <translation id="1813414402673211292">נקה נתוני גלישה</translation>
 <translation id="1820259098641718022">נוסף לרשימת הקריאה</translation>
+<translation id="1826516787628120939">מתבצעת בדיקה</translation>
 <translation id="1842969606798536927">שלם</translation>
 <translation id="1876721852596493031">שלח נתוני שימוש</translation>
 <translation id="1886928167269928266">משחר ההיסטוריה</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">דפדף</translation>
 <translation id="2054511809411770085">‏קוד QR או ברקוד</translation>
 <translation id="2068952045031577364">מהשבוע האחרון</translation>
-<translation id="2079545284768500474">בטל</translation>
+<translation id="2079545284768500474">בטל פעולה</translation>
 <translation id="209018056901015185">טען גירסת מחשב שולחני</translation>
 <translation id="2100215774115172756">רשימת הקריאה שלך זמינה במצב לא מקוון.</translation>
 <translation id="2103075008456228677">‏פתח את history.google.com</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">טעינה מראש של דפי אינטרנט</translation>
 <translation id="3691593122358196899">התווסף לסימניות ב-<ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">כשאפשרות זו מופעלת, סרגל הכתובות יכלול הצעות לדפי אינטרנט המשודרים ממכשירים בסביבתך הקרובה.</translation>
+<translation id="3706658020782046159">בחר כתובת למשלוח כדי לבדוק את אמצעי המשלוח ואת הדרישות למשלוח.</translation>
 <translation id="3738139272394829648">גע כדי לחפש</translation>
 <translation id="3771033907050503522">כרטיסיות גלישה בסתר</translation>
 <translation id="3783017676699494206">שמור תמונה</translation>
@@ -188,6 +190,7 @@
 הנתונים שלך מוצפנים באמצעות ביטוי הסיסמה לסינכרון. הזן אותו כדי להתחיל בסינכרון.</translation>
 <translation id="4728558894243024398">פלטפורמה</translation>
 <translation id="473775607612524610">עדכן</translation>
+<translation id="4750394297954878236">הצעות</translation>
 <translation id="4773461607542755386">האם לפתוח את הדף הזה ב-<ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">‏קובצי cookie, נתוני אתרים</translation>
 <translation id="4875622588773761625">האם תרצה ש-<ph name="PASSWORD_MANAGER_BRAND" /> יעדכן את הסיסמה שלך בשביל האתר הזה?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index 2fdc8e24..9f3c316 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">フォルダーを削除</translation>
 <translation id="1813414402673211292">閲覧履歴の消去</translation>
 <translation id="1820259098641718022">リーディング リストに追加しました</translation>
+<translation id="1826516787628120939">確認中</translation>
 <translation id="1842969606798536927">お支払い</translation>
 <translation id="1876721852596493031">使用状況データ送信</translation>
 <translation id="1886928167269928266">始めから</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">閲覧</translation>
 <translation id="2054511809411770085">QR コードまたはバーコード</translation>
 <translation id="2068952045031577364">過去 1 週間</translation>
-<translation id="2079545284768500474">取り消す</translation>
+<translation id="2079545284768500474">元に戻す</translation>
 <translation id="209018056901015185">PC版サイトをリクエスト</translation>
 <translation id="2100215774115172756">リーディング リストはオフラインで使用できます。</translation>
 <translation id="2103075008456228677">history.google.com を開く</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">ウェブページのプリロード</translation>
 <translation id="3691593122358196899">「<ph name="FOLDER_TITLE" />」にブックマークしました</translation>
 <translation id="3692781555820666866">有効にすると、近くのデバイスからブロードキャストされているウェブページの候補がアドレスバー(オムニボックス)に表示されます。</translation>
+<translation id="3706658020782046159">配送方法や要件を確認するには、配送先住所を選択します。</translation>
 <translation id="3738139272394829648">タップして検索</translation>
 <translation id="3771033907050503522">シークレットタブ</translation>
 <translation id="3783017676699494206">画像を保存</translation>
@@ -188,6 +190,7 @@
 データは同期パスフレーズで暗号化されます。同期を開始するには、同期パスフレーズを入力してください。</translation>
 <translation id="4728558894243024398">プラットフォーム</translation>
 <translation id="473775607612524610">アップデート</translation>
+<translation id="4750394297954878236">候補</translation>
 <translation id="4773461607542755386">このページを<ph name="APP_NAME" />アプリで開きますか?</translation>
 <translation id="481968316161811770">Cookie、サイトデータ</translation>
 <translation id="4875622588773761625"><ph name="PASSWORD_MANAGER_BRAND" /> でこのサイトのパスワードを更新しますか?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index c8e67656..80d97b78 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">ಫೋಲ್ಡರ್‌ ಅಳಿಸಿ</translation>
 <translation id="1813414402673211292">ಬ್ರೌಸ್ ಆಗುತ್ತಿರುವ ಡಾಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation>
 <translation id="1820259098641718022">ಓದುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಲಾಗಿದೆ</translation>
+<translation id="1826516787628120939">ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="1842969606798536927">ಪಾವತಿಸಿ</translation>
 <translation id="1876721852596493031">ಬಳಕೆ ಡೇಟಾ ಕಳುಹಿಸಿ</translation>
 <translation id="1886928167269928266">ಆರಂಭದ ಸಮಯ</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">ವೆಬ್ ಪುಟಗಳನ್ನು ಪೂರ್ವಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> ಗೆ ಬುಕ್‌ಮಾರ್ಕ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3692781555820666866">ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ನಿಮಗೆ ಹತ್ತಿರದಲ್ಲಿರುವ ಸಾಧನಗಳ ಮೂಲಕ ವೆಬ್ ಪುಟಗಳ ಪ್ರಸಾರಕ್ಕೆ ಆಮ್ನಿಬಾಕ್ಸ್‌‌ ಸಲಹೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.</translation>
+<translation id="3706658020782046159">ಶಿಪ್ಪಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಮತ್ತು ಅಗತ್ಯತೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸವನ್ನು ಆಯ್ಕೆಮಾಡಿ.</translation>
 <translation id="3738139272394829648">ಹುಡುಕಲು ಸ್ಪರ್ಶಿಸು</translation>
 <translation id="3771033907050503522">ಅದೃಶ್ಯ ಟ್ಯಾಬ್‌ಗಳು</translation>
 <translation id="3783017676699494206">ಚಿತ್ರವನ್ನು ಉಳಿಸಿ</translation>
@@ -188,6 +190,7 @@
 ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಸಿಂಕ್ ಪಾಸ್‌ಫ್ರೇಸ್‌ನೊಂದಿಗೆ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="4728558894243024398">ಪ್ಲಾಟ್‌ಫಾರ್ಮ್</translation>
 <translation id="473775607612524610">ಅಪ್‌ಡೇಟ್‌‌</translation>
+<translation id="4750394297954878236">ಸಲಹೆಗಳು</translation>
 <translation id="4773461607542755386">ಈ ಪುಟವನ್ನು <ph name="APP_NAME" /> ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ತೆರೆಯುವುದೇ?</translation>
 <translation id="481968316161811770">ಕುಕೀಗಳು, ಸೈಟ್‌ ಡೇಟಾ</translation>
 <translation id="4875622588773761625">ಈ ಸೈಟ್‌ಗೆ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ <ph name="PASSWORD_MANAGER_BRAND" /> ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಬಯಸುವಿರಾ?</translation>
@@ -250,7 +253,7 @@
 <translation id="6012140227487808125">ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="6021332621416007159">ಇದರಲ್ಲಿ ತೆರೆಯಿರಿ...</translation>
 <translation id="6039694632319341016">ನೀವು ಈ ಸೈಟ್‌ಗೆ <ph name="USERNAME" /> ಅವರ ಪಾಸ್‌ವ್‌ರ್ಡ್‌ ಅನ್ನು <ph name="PASSWORD_MANAGER_BRAND" /> ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆಂದು ಬಯಸುವಿರಾ?</translation>
-<translation id="6040143037577758943">ಮುಚ್ಚು</translation>
+<translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="6042308850641462728">ಇನ್ನಷ್ಟು</translation>
 <translation id="605721222689873409">YY</translation>
 <translation id="6066301408025741299">ರದ್ದುಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index 88ac2d71..1c4c179 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">폴더 삭제</translation>
 <translation id="1813414402673211292">인터넷 사용 기록 삭제</translation>
 <translation id="1820259098641718022">읽기 목록에 추가됨</translation>
+<translation id="1826516787628120939">확인 중</translation>
 <translation id="1842969606798536927">결제하기</translation>
 <translation id="1876721852596493031">사용 데이터 보내기</translation>
 <translation id="1886928167269928266">전체</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">찾아보기</translation>
 <translation id="2054511809411770085">QR 코드 또는 바코드</translation>
 <translation id="2068952045031577364">지난주</translation>
-<translation id="2079545284768500474">실행 취소</translation>
+<translation id="2079545284768500474">실행취소</translation>
 <translation id="209018056901015185">데스크톱 버전으로 보기</translation>
 <translation id="2100215774115172756">오프라인에서 읽기 목록을 사용할 수 있습니다.</translation>
 <translation id="2103075008456228677">history.google.com 열기</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">웹페이지 미리 로드하기</translation>
 <translation id="3691593122358196899">북마크를 <ph name="FOLDER_TITLE" />에 추가함</translation>
 <translation id="3692781555820666866">이 기능을 사용하도록 설정한 경우 내 주변에 있는 기기에서 브로드캐스트하는 웹페이지가 검색주소창에 추천 항목으로 표시됩니다.</translation>
+<translation id="3706658020782046159">배송 방법과 요건을 확인할 수 있도록 배송지 주소를 선택하세요.</translation>
 <translation id="3738139272394829648">터치하여 검색</translation>
 <translation id="3771033907050503522">시크릿 탭</translation>
 <translation id="3783017676699494206">이미지 저장</translation>
@@ -188,6 +190,7 @@
 동기화 암호로 데이터가 암호화되어 있습니다. 동기화를 시작하려면 입력하세요.</translation>
 <translation id="4728558894243024398">플랫폼</translation>
 <translation id="473775607612524610">업데이트</translation>
+<translation id="4750394297954878236">추천</translation>
 <translation id="4773461607542755386"><ph name="APP_NAME" /> 앱에서 이 페이지를 여시겠습니까?</translation>
 <translation id="481968316161811770">쿠키, 사이트 데이터</translation>
 <translation id="4875622588773761625"><ph name="PASSWORD_MANAGER_BRAND" />에서 이 사이트의 비밀번호를 업데이트하도록 하시겠습니까?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
index 984be7e..c6142ae 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Ištrinti aplanką</translation>
 <translation id="1813414402673211292">Išvalyti naršymo duomenis</translation>
 <translation id="1820259098641718022">Pridėta prie skaitymo sąrašo</translation>
+<translation id="1826516787628120939">Tikrinama</translation>
 <translation id="1842969606798536927">Mokėti</translation>
 <translation id="1876721852596493031">Siųsti naud. duom.</translation>
 <translation id="1886928167269928266">Laiko pradžia</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Iš anksto įk. tinkl.</translation>
 <translation id="3691593122358196899">Sukurta „<ph name="FOLDER_TITLE" />“ žymė</translation>
 <translation id="3692781555820666866">Kai įgalinta, „omnibox“ juosta apims netoli jūsų esančių įrenginių tinklalapių transliacijos pasiūlymus.</translation>
+<translation id="3706658020782046159">Norėdami peržiūrėti pristatymo metodus ir reikalavimus, pasirinkite pristatymo adresą.</translation>
 <translation id="3738139272394829648">Paieška palietus</translation>
 <translation id="3771033907050503522">Inkognito skirt.</translation>
 <translation id="3783017676699494206">Išsaugoti vaizdą</translation>
@@ -188,6 +190,7 @@
 Duomenys užšifruoti naudojant slaptafrazę. Įveskite ją, kad pradėtumėte sinchronizuoti.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Atnaujinti</translation>
+<translation id="4750394297954878236">Pasiūlymai</translation>
 <translation id="4773461607542755386">Atidaryti šį puslapį naudojant „<ph name="APP_NAME" />“?</translation>
 <translation id="481968316161811770">Slapuk., svet. duom.</translation>
 <translation id="4875622588773761625">Ar norite, kad „<ph name="PASSWORD_MANAGER_BRAND" />“ atnaujintų šios svetainės slaptažodį?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
index 49dfeb93..90480fbb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Dzēst mapi</translation>
 <translation id="1813414402673211292">Dzēst pārlūkošanas datus</translation>
 <translation id="1820259098641718022">Pievienota lasīšanas sarakstam</translation>
+<translation id="1826516787628120939">Pārbaude</translation>
 <translation id="1842969606798536927">Maksāt</translation>
 <translation id="1876721852596493031">Sūtīt liet. datus</translation>
 <translation id="1886928167269928266">No paša sākuma</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pirmsiel. tīm. lapas</translation>
 <translation id="3691593122358196899">Grāmatzīme saglabāta mapē <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Ja šī opcija ir iespējota, universālajā lodziņā tiek rādīti tīmekļa lapu ieteikumi, ko apraida tuvumā esošas ierīces.</translation>
+<translation id="3706658020782046159">Atlasiet piegādes adresi, lai skatītu piegādes veidus un prasības.</translation>
 <translation id="3738139272394829648">Meklēšana pieskaroties</translation>
 <translation id="3771033907050503522">Inkognito režīma cilnes</translation>
 <translation id="3783017676699494206">Saglabāt attēlu</translation>
@@ -188,6 +190,7 @@
 Jūsu dati ir šifrēti, izmantojot jūsu sinhronizācijas ieejas frāzi. Lai sāktu sinhronizēšanu, ievadiet ieejas frāzi.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Atjaunināt</translation>
+<translation id="4750394297954878236">Ieteikumi</translation>
 <translation id="4773461607542755386">Vai atvērt šo lapu lietotnē <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Sīkfaili, vietņu dati</translation>
 <translation id="4875622588773761625">Vai vēlaties, lai <ph name="PASSWORD_MANAGER_BRAND" /> atjauninātu jūsu paroli šai vietnei?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index f4bbe48..4b95c4e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">ഫോൾഡർ ഇല്ലാതാക്കുക</translation>
 <translation id="1813414402673211292">ബ്രൌസിംഗ് ഡാറ്റാ മായ്ക്കുക...</translation>
 <translation id="1820259098641718022">വായനാ ലിസ്റ്റിൽ ചേർത്തു</translation>
+<translation id="1826516787628120939">പരിശോധിക്കുന്നു</translation>
 <translation id="1842969606798536927">പണമടയ്‌ക്കുക</translation>
 <translation id="1876721852596493031">ഉപയോഗ ഡാറ്റ അയയ്ക്കൂ</translation>
 <translation id="1886928167269928266">തുടക്കം മുതൽ</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">ബ്രൗസുചെയ്യുക</translation>
 <translation id="2054511809411770085">QR കോഡ് അല്ലെങ്കിൽ ബാർകോഡ്</translation>
 <translation id="2068952045031577364">കഴിഞ്ഞ ആഴ്‌ചയിലെ</translation>
-<translation id="2079545284768500474">പൂര്‍‌വ്വാവസ്ഥയിലാക്കുക</translation>
+<translation id="2079545284768500474">പഴയപടിയാക്കുക</translation>
 <translation id="209018056901015185">ഡെസ്‌ക്‌ടോപ്പ് സൈറ്റ് അഭ്യർത്ഥിക്കുക</translation>
 <translation id="2100215774115172756">നിങ്ങളുടെ വായന ലിസ്‌റ്റ് ഓഫ്‌ലൈനിൽ ലഭ്യമാണ്.</translation>
 <translation id="2103075008456228677">history.google.com തുറക്കുക</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">മുമ്പ് ലോഡുചെയ്‌ത വെബ്‌പേജുകൾ</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> ഫോൾഡറിലേക്ക് ബുക്ക്മാർക്ക് ചെയ്‌തു</translation>
 <translation id="3692781555820666866">പ്രവർത്തനക്ഷമമായിരിക്കുമ്പോൾ ഒ‌മ്‌നി‌ബോക്‌സ്, നിങ്ങൾക്ക് സമീപമുള്ള ഉപകരണങ്ങൾ ഉപയോഗിച്ച് വെബ് പേജുകളുടെ നിർദ്ദേശങ്ങൾ ഉൾപ്പെടുത്തും.</translation>
+<translation id="3706658020782046159">ഷിപ്പിംഗ് രീതികളും അതിനാവശ്യമായ കാര്യങ്ങളും പരിശോധിക്കാൻ ഒരു ഷിപ്പിംഗ് വിലാസം തിരഞ്ഞെടുക്കുക.</translation>
 <translation id="3738139272394829648">തിരയാൻ സ്‌പർശിക്കുക</translation>
 <translation id="3771033907050503522">ആൾമാറാട്ട ടാബുകൾ</translation>
 <translation id="3783017676699494206">ഇമേജ് സംരക്ഷിക്കുക</translation>
@@ -188,6 +190,7 @@
 സമന്വയ പാസ്‌ഫ്രെയ്‌സ് ഉപയോഗിച്ച് നിങ്ങളുടെ ഡാറ്റ എൻ‌ക്രിപ്‌റ്റുചെയ്‌തു. സമന്വയം ആരംഭിക്കാൻ ഇത് നൽകുക.</translation>
 <translation id="4728558894243024398">പ്ലാറ്റ്ഫോം</translation>
 <translation id="473775607612524610">അപ്ഡേറ്റുചെയ്യുക</translation>
+<translation id="4750394297954878236">നിർദ്ദേശങ്ങൾ</translation>
 <translation id="4773461607542755386"><ph name="APP_NAME" /> അപ്ലിക്കേഷനിൽ ഈ പേജ് തുറക്കണോ?</translation>
 <translation id="481968316161811770">കുക്കികളും സൈറ്റ് ഡാറ്റയും</translation>
 <translation id="4875622588773761625">ഈ സൈറ്റിനായി നിങ്ങളുടെ പാസ്‌വേഡ് <ph name="PASSWORD_MANAGER_BRAND" /> അപ്‌ഡേറ്റുചെയ്യണോ?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 4c013d6..f2d67954 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">फोल्डर हटवा</translation>
 <translation id="1813414402673211292">ब्राउझिंग डेटा साफ करा</translation>
 <translation id="1820259098641718022">वाचन सूचीमध्ये जोडले</translation>
+<translation id="1826516787628120939">तपासत आहे</translation>
 <translation id="1842969606798536927">देय द्या</translation>
 <translation id="1876721852596493031">वापरलेला डेटा पाठवा</translation>
 <translation id="1886928167269928266">सुरूवातीपासून</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">वेबपृष्ठे प्रीलोड करा</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> मध्ये बुकमार्क केले</translation>
 <translation id="3692781555820666866">सक्षम केलेले असताना, आपल्या जवळपास असलेले डिव्हाइसेस प्रसारित करतात त्या वेबपृष्ठांसाठी सूचना विविधोपयोगी क्षेत्रात समाविष्‍ट केल्या जातील.</translation>
+<translation id="3706658020782046159">पाठविण्याच्या पद्धती आणि आवश्यकता तपासण्यासाठी एक पाठविण्याचा पत्ता निवडा.</translation>
 <translation id="3738139272394829648">शोधण्यासाठी स्विच करा</translation>
 <translation id="3771033907050503522">गुप्त टॅब</translation>
 <translation id="3783017676699494206">प्रतिमा जतन करा</translation>
@@ -189,6 +191,7 @@
 आपला डेटा आपल्या संकालित वाक्यांशासह कूटबद्ध केला आहे. संकालन सुरू करण्यासाठी तो प्रविष्ट करा.</translation>
 <translation id="4728558894243024398">प्लॅटफॉर्म</translation>
 <translation id="473775607612524610">अद्यतनित करा</translation>
+<translation id="4750394297954878236">सूचना</translation>
 <translation id="4773461607542755386"><ph name="APP_NAME" /> अॅपमध्ये हे पृष्ठ उघडायचे?</translation>
 <translation id="481968316161811770">कुकीज, साइट डेटा</translation>
 <translation id="4875622588773761625"><ph name="PASSWORD_MANAGER_BRAND" /> नी या साइटसाठी आपला संकेतशब्द अद्यतनित करावा असे आपण इच्छिता?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index 5ae24a45..68f004d5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Padam Folder</translation>
 <translation id="1813414402673211292">Kosongkan Data Semakan Imbas</translation>
 <translation id="1820259098641718022">Ditambahkan pada Senarai Bacaan</translation>
+<translation id="1826516787628120939">Menyemak</translation>
 <translation id="1842969606798536927">Bayar</translation>
 <translation id="1876721852596493031">Hantar Data Penggunaan</translation>
 <translation id="1886928167269928266">Permulaan Masa</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pramuat Halaman Web</translation>
 <translation id="3691593122358196899">Ditandai halaman ke <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Apabila didayakan, kotak omni akan menyertakan cadangan untuk halaman web yang disiarkan oleh peranti berdekatan anda.</translation>
+<translation id="3706658020782046159">Pilih alamat penghantaran untuk menyemak kaedah penghantaran dan keperluan.</translation>
 <translation id="3738139272394829648">Sentuh untuk Cari</translation>
 <translation id="3771033907050503522">Tab Inkognito</translation>
 <translation id="3783017676699494206">Simpan Imej</translation>
@@ -188,6 +190,7 @@
 Data anda disulitkan dengan ungkapan laluan segerak anda. Masukkannya untuk memulakan penyegerakan.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Kemas kini</translation>
+<translation id="4750394297954878236">Cadangan</translation>
 <translation id="4773461607542755386">Buka halaman ini dalam apl <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Kuki, Data Tapak</translation>
 <translation id="4875622588773761625">Adakah anda ingin <ph name="PASSWORD_MANAGER_BRAND" /> mengemaskinikan kata laluan anda untuk tapak ini?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 4b1b940..e13b05b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Map verwijderen</translation>
 <translation id="1813414402673211292">Browsegegevens wissen</translation>
 <translation id="1820259098641718022">Toegevoegd aan leeslijst</translation>
+<translation id="1826516787628120939">Controleren</translation>
 <translation id="1842969606798536927">Betalen</translation>
 <translation id="1876721852596493031">Gebruiksgegevens verzenden</translation>
 <translation id="1886928167269928266">Het eerste gebruik</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Webpagina's vooraf laden</translation>
 <translation id="3691593122358196899">Bladwijzer gemaakt in <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Indien ingeschakeld, bevat de omnibox suggesties voor webpagina's die worden uitgezonden door apparaten bij jou in de buurt.</translation>
+<translation id="3706658020782046159">Selecteer een verzendadres om verzendmethoden en vereisten te bekijken.</translation>
 <translation id="3738139272394829648">Tikken om te zoeken</translation>
 <translation id="3771033907050503522">Incognitotabbladen</translation>
 <translation id="3783017676699494206">Afbeelding opslaan</translation>
@@ -188,6 +190,7 @@
 Je gegevens zijn versleuteld met je wachtwoordzin voor synchronisatie. Geef deze op om de synchronisatie te starten.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Updaten</translation>
+<translation id="4750394297954878236">Suggesties</translation>
 <translation id="4773461607542755386">Deze pagina openen in de app <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies en sitegegevens</translation>
 <translation id="4875622588773761625">Wil je dat <ph name="PASSWORD_MANAGER_BRAND" /> je wachtwoord voor deze site updatet?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 46717e7..3720ad2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Slett mappen</translation>
 <translation id="1813414402673211292">Tøm nettlesingsdata</translation>
 <translation id="1820259098641718022">Lagt til i leselisten</translation>
+<translation id="1826516787628120939">Kontrollerer</translation>
 <translation id="1842969606798536927">Betal</translation>
 <translation id="1876721852596493031">Send bruksdata</translation>
 <translation id="1886928167269928266">Tidenes morgen</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Last inn nettsider på forhånd</translation>
 <translation id="3691593122358196899">Satt som bokmerke i <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Når dette er slått på, inneholder søkefeltet forslag til nettsider som kringkastes av enheter i nærheten.</translation>
+<translation id="3706658020782046159">Velg en leveringsadresse for å se leveringsmåter og krav.</translation>
 <translation id="3738139272394829648">Trykk for å søke</translation>
 <translation id="3771033907050503522">Inkognitofaner</translation>
 <translation id="3783017676699494206">Lagre bildet</translation>
@@ -188,6 +190,7 @@
 Dataene dine er kryptert med passordfrasen din for synkronisering. Skriv den inn for å starte synkroniseringen.</translation>
 <translation id="4728558894243024398">Plattform</translation>
 <translation id="473775607612524610">Oppdater</translation>
+<translation id="4750394297954878236">Forslag</translation>
 <translation id="4773461607542755386">Vil du åpne denne siden i <ph name="APP_NAME" />-appen?</translation>
 <translation id="481968316161811770">Informasjonskapsler og nettstedsdata</translation>
 <translation id="4875622588773761625">Vil du at <ph name="PASSWORD_MANAGER_BRAND" /> skal oppdatere passordet for dette nettstedet?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index f81de71..9e4352f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Usuń folder</translation>
 <translation id="1813414402673211292">Wyczyść historię przeglądania</translation>
 <translation id="1820259098641718022">Dodano do listy Do przeczytania</translation>
+<translation id="1826516787628120939">Sprawdzam</translation>
 <translation id="1842969606798536927">Zapłać</translation>
 <translation id="1876721852596493031">Wysyłaj dane na temat użytkowania</translation>
 <translation id="1886928167269928266">Od początku</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Wstępne wczytywanie stron</translation>
 <translation id="3691593122358196899">Utworzono zakładkę w folderze <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Po włączeniu tej funkcji omnibox będzie pokazywał sugestie stron internetowych transmitowanych przez urządzenia w pobliżu.</translation>
+<translation id="3706658020782046159">Wybierz adres dostawy, by sprawdzić sposoby wysyłki i związane z nimi wymagania.</translation>
 <translation id="3738139272394829648">Dotknij, by wyszukać</translation>
 <translation id="3771033907050503522">Karty incognito</translation>
 <translation id="3783017676699494206">Zapisz obraz</translation>
@@ -188,6 +190,7 @@
 Dane zostały zaszyfrowane z użyciem Twojego hasła synchronizacji. Wpisz je, by rozpocząć synchronizację.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Aktualizuj</translation>
+<translation id="4750394297954878236">Sugestie</translation>
 <translation id="4773461607542755386">Otworzyć tę stronę w aplikacji <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie i dane stron</translation>
 <translation id="4875622588773761625">Czy <ph name="PASSWORD_MANAGER_BRAND" /> ma zaktualizować hasło do tej strony?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
index 2df563d1..1a45042c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -52,6 +52,7 @@
 <translation id="1809939268435598390">Excluir pasta</translation>
 <translation id="1813414402673211292">Limpar dados de navegação</translation>
 <translation id="1820259098641718022">Adicionada à lista de leitura</translation>
+<translation id="1826516787628120939">Em verificação</translation>
 <translation id="1842969606798536927">Pagar</translation>
 <translation id="1876721852596493031">Enviar dados de uso</translation>
 <translation id="1886928167269928266">Desde o começo</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pré-carregar páginas da web</translation>
 <translation id="3691593122358196899">Adicionado como favorito em <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Quando ativada, a omnibox inclui sugestões de páginas da Web transmitidas por dispositivos perto de você.</translation>
+<translation id="3706658020782046159">Selecione um endereço de envio para verificar os métodos e requisitos de entrega.</translation>
 <translation id="3738139272394829648">Tocar para pesquisar</translation>
 <translation id="3771033907050503522">Guias anônimas</translation>
 <translation id="3783017676699494206">Salvar imagem</translation>
@@ -188,6 +190,7 @@
 Seus dados são criptografados com sua senha longa de sincronização. Informe-a para começar a sincronização.</translation>
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="473775607612524610">Atualizar</translation>
+<translation id="4750394297954878236">Sugestões</translation>
 <translation id="4773461607542755386">Abrir esta página no <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Dados do site e arquivos "cookies"</translation>
 <translation id="4875622588773761625">Deseja que <ph name="PASSWORD_MANAGER_BRAND" /> atualize sua senha para este site?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
index b278e4bf..8c1931c4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Eliminar pasta</translation>
 <translation id="1813414402673211292">Limpar dados de navegação</translation>
 <translation id="1820259098641718022">Adicionada à lista de leitura</translation>
+<translation id="1826516787628120939">A verificar</translation>
 <translation id="1842969606798536927">Pagar</translation>
 <translation id="1876721852596493031">Enviar Dados de Uso</translation>
 <translation id="1886928167269928266">Desde sempre</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pré-carregar Páginas Web</translation>
 <translation id="3691593122358196899">Adicionado aos marcadores em <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Quando está ativada, a caixa geral inclui sugestões de páginas Web transmitidas por dispositivos perto de si.</translation>
+<translation id="3706658020782046159">Selecione uma morada para envio para verificar os métodos e os requisitos de envio.</translation>
 <translation id="3738139272394829648">Tocar para pesquisar</translation>
 <translation id="3771033907050503522">Sep. nav. anónima</translation>
 <translation id="3783017676699494206">Guardar Imagem</translation>
@@ -188,6 +190,7 @@
 Os dados estão encriptados com a sua frase de acesso de sincronização. Introduza-a para iniciar a sincronização.</translation>
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="473775607612524610">Actualizar</translation>
+<translation id="4750394297954878236">Sugestões</translation>
 <translation id="4773461607542755386">Abrir esta página na aplicação <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies, dados de sites</translation>
 <translation id="4875622588773761625">Pretende que o <ph name="PASSWORD_MANAGER_BRAND" /> atualize a sua palavra-passe para este site?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index 95dfb904..a61e4f7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Șterge dosarul</translation>
 <translation id="1813414402673211292">Ștergeți datele de navigare</translation>
 <translation id="1820259098641718022">S-a adăugat în lista de lectură</translation>
+<translation id="1826516787628120939">Se verifică</translation>
 <translation id="1842969606798536927">Plătiți</translation>
 <translation id="1876721852596493031">Trim. date utilizare</translation>
 <translation id="1886928167269928266">De la început</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Preîncarcă pagini</translation>
 <translation id="3691593122358196899">Marcaj adăugat în <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Când este activat, caseta polivalentă va include sugestii pentru pagini web difuzate de dispozitivele din apropiere.</translation>
+<translation id="3706658020782046159">Pentru a vedea care sunt metodele și cerințele privind expedierea, selectează o adresă de expediere.</translation>
 <translation id="3738139272394829648">Atinge pentru a căuta</translation>
 <translation id="3771033907050503522">File incognito</translation>
 <translation id="3783017676699494206">Salvează imaginea</translation>
@@ -188,6 +190,7 @@
 Datele sunt criptate cu expresia de acces pentru sincronizare. Introdu-o pentru a începe sincronizarea.</translation>
 <translation id="4728558894243024398">Platformă</translation>
 <translation id="473775607612524610">Actualizează</translation>
+<translation id="4750394297954878236">Sugestii</translation>
 <translation id="4773461607542755386">Deschide această pagină în aplicația <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie-urile, datele privind site-urile</translation>
 <translation id="4875622588773761625">Dorești ca <ph name="PASSWORD_MANAGER_BRAND" /> să îți actualizeze parola pentru acest site?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index 4737ef0..558eaf7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Удалить папку</translation>
 <translation id="1813414402673211292">Очистка истории</translation>
 <translation id="1820259098641718022">Добавлено в список чтения</translation>
+<translation id="1826516787628120939">Проверка</translation>
 <translation id="1842969606798536927">Оплатить</translation>
 <translation id="1876721852596493031">Отправка статистики</translation>
 <translation id="1886928167269928266">За все время</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Предварительная загрузка</translation>
 <translation id="3691593122358196899">Закладка добавлена в папку "<ph name="FOLDER_TITLE" />"</translation>
 <translation id="3692781555820666866">Если функция включена, в омнибоксе будут предлагаться страницы с устройств поблизости</translation>
+<translation id="3706658020782046159">Чтобы узнать способы доставки и требования, выберите адрес доставки.</translation>
 <translation id="3738139272394829648">Быстрый поиск</translation>
 <translation id="3771033907050503522">Вкладки инкогнито</translation>
 <translation id="3783017676699494206">Сохранить изображение</translation>
@@ -188,6 +190,7 @@
 Данные зашифрованы с помощью кодовой фразы. Введите ее, чтобы начать синхронизацию.</translation>
 <translation id="4728558894243024398">Платформа</translation>
 <translation id="473775607612524610">Обновление</translation>
+<translation id="4750394297954878236">Предложения</translation>
 <translation id="4773461607542755386">Открыть эту страницу в <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie, данные сайтов</translation>
 <translation id="4875622588773761625">Обновить пароль для этого сайта в сервисе "<ph name="PASSWORD_MANAGER_BRAND" />"?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index 456f8e17..e300c1b7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Odstrániť priečinok</translation>
 <translation id="1813414402673211292">Vyčistiť údaje o prehľadávaní</translation>
 <translation id="1820259098641718022">Pridané do zoznamu na čítanie</translation>
+<translation id="1826516787628120939">Kontroluje sa</translation>
 <translation id="1842969606798536927">Zaplatiť</translation>
 <translation id="1876721852596493031">Odosielanie údajov o používaní</translation>
 <translation id="1886928167269928266">Celé obdobie</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Predbežne načítavať webové stránky</translation>
 <translation id="3691593122358196899">Uložené ako záložka v priečinku <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Keď je tento príznak aktivovaný, všeobecné pole bude zahŕňať návrhy webových stránok, ktoré vysielajú zariadenia v okolí.</translation>
+<translation id="3706658020782046159">Vyberte dodaciu adresu a prezrite si spôsoby dodania a požiadavky.</translation>
 <translation id="3738139272394829648">Vyhľadávanie klepnutím</translation>
 <translation id="3771033907050503522">Karty inkognito</translation>
 <translation id="3783017676699494206">Uložiť obrázok</translation>
@@ -188,6 +190,7 @@
 Údaje sú šifrované pomocou vlastnej prístupovej frázy synchronizácie. Keď ju zadáte, synchronizácia sa spustí.</translation>
 <translation id="4728558894243024398">Platforma</translation>
 <translation id="473775607612524610">Aktualizovať</translation>
+<translation id="4750394297954878236">Návrhy</translation>
 <translation id="4773461607542755386">Otvoriť túto stránku v aplikácii <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Súbory cookie, údaje webu</translation>
 <translation id="4875622588773761625">Chcete, aby <ph name="PASSWORD_MANAGER_BRAND" /> ukladal heslá pre tieto stránky?</translation>
@@ -250,7 +253,7 @@
 <translation id="6012140227487808125">Prebieha šifrovanie…</translation>
 <translation id="6021332621416007159">Otvoriť v...</translation>
 <translation id="6039694632319341016">Chcete, aby aplikácia <ph name="PASSWORD_MANAGER_BRAND" /> aktualizovala heslo používateľa <ph name="USERNAME" /> pre tento web?</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="6042308850641462728">Viac</translation>
 <translation id="605721222689873409">RR</translation>
 <translation id="6066301408025741299">Sťahovanie zrušíte klepnutím.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index 4889475..01ae93f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Izbriši mapo</translation>
 <translation id="1813414402673211292">Brisanje podatov brskanja</translation>
 <translation id="1820259098641718022">Dodano na bralni seznam</translation>
+<translation id="1826516787628120939">Preverjanje</translation>
 <translation id="1842969606798536927">Plačilo</translation>
 <translation id="1876721852596493031">Pošlji pod. o upor.</translation>
 <translation id="1886928167269928266">Beginning of Time</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Vnaprej naloži spletne strani</translation>
 <translation id="3691593122358196899">Zaznamek ustvarjen v mapi <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Če je fizični splet omogočen, iskalna vrstica vsebuje predloge za spletne strani, ki jih oddajajo naprave v vaši bližini.</translation>
+<translation id="3706658020782046159">Izberite naslov za pošiljanje, če želite preveriti načine pošiljanja in zahteve za pošiljanje.</translation>
 <translation id="3738139272394829648">Dotaknite se za iskanje</translation>
 <translation id="3771033907050503522">Incognito Tabs</translation>
 <translation id="3783017676699494206">Shrani sliko</translation>
@@ -188,6 +190,7 @@
 Podatki so šifrirani z vašim geslom za sinhronizacijo. Vnesite ga, če želite začeti sinhronizacijo.</translation>
 <translation id="4728558894243024398">Okolje</translation>
 <translation id="473775607612524610">Posodobi</translation>
+<translation id="4750394297954878236">Predlogi</translation>
 <translation id="4773461607542755386">Želite to stran odpreti v aplikaciji <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies, Site Data</translation>
 <translation id="4875622588773761625">Ali želite, da <ph name="PASSWORD_MANAGER_BRAND" /> posodobi geslo za to spletno mesto?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
index 24d818b49..6755cf5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Избриши директоријум</translation>
 <translation id="1813414402673211292">Брисање података прегледања</translation>
 <translation id="1820259098641718022">Додато је на листу за читање</translation>
+<translation id="1826516787628120939">Провера</translation>
 <translation id="1842969606798536927">Плаћање</translation>
 <translation id="1876721852596493031">Шаљи подат. о кориш.</translation>
 <translation id="1886928167269928266">Одувек</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Унап. учитај веб-странице</translation>
 <translation id="3691593122358196899">Обележивач је додат у <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Када га омогућите, омнибокс обухвата предлоге за веб-странице које емитују уређаји у близини.</translation>
+<translation id="3706658020782046159">Изаберите адресу за испоруку да бисте проверили начине испоруке и услове.</translation>
 <translation id="3738139272394829648">Додирни за претрагу</translation>
 <translation id="3771033907050503522">Картице Без архивирања</translation>
 <translation id="3783017676699494206">Сачувај слику</translation>
@@ -188,6 +190,7 @@
 Подаци се шифрују помоћу приступне фразе за синхронизацију. Унесите је да бисте започели синхронизацију.</translation>
 <translation id="4728558894243024398">Платформа</translation>
 <translation id="473775607612524610">Ажурирај</translation>
+<translation id="4750394297954878236">Предлози</translation>
 <translation id="4773461607542755386">Отворити ову страницу у апликацији <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Колачићи, подаци о сајтовима</translation>
 <translation id="4875622588773761625">Желите ли да <ph name="PASSWORD_MANAGER_BRAND" /> ажурира лозинку за овај сајт?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index 9d30c7a..3ff6a70 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Ta bort mapp</translation>
 <translation id="1813414402673211292">Rensa webbinformation</translation>
 <translation id="1820259098641718022">Har lagts till i läslistan</translation>
+<translation id="1826516787628120939">Kontrollerar</translation>
 <translation id="1842969606798536927">Betala</translation>
 <translation id="1876721852596493031">Skicka statistik</translation>
 <translation id="1886928167269928266">Tidens början</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Läs in webbsidor i förväg</translation>
 <translation id="3691593122358196899">Bokmärkt i <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">När det här alternativet är aktiverat visas förslag på utsändningar av webbsidor från enheter i närheten.</translation>
+<translation id="3706658020782046159">Välj en leveransadress om du vill visa leveranssätt och krav.</translation>
 <translation id="3738139272394829648">Tryck för att söka</translation>
 <translation id="3771033907050503522">Inkognitoflikar</translation>
 <translation id="3783017676699494206">Spara bild</translation>
@@ -188,6 +190,7 @@
 Din data har krypterats med lösenfrasen för synkronisering. Ange den om du vill starta synkroniseringen.</translation>
 <translation id="4728558894243024398">Plattform</translation>
 <translation id="473775607612524610">Uppdatera</translation>
+<translation id="4750394297954878236">Förslag</translation>
 <translation id="4773461607542755386">Vill du öppna sidan i appen <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookies, webbplatsdata</translation>
 <translation id="4875622588773761625">Vill du att lösenordet för den här webbplatsen ska uppdateras med <ph name="PASSWORD_MANAGER_BRAND" />?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
index 99b6fb9..c703c70 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Futa Folda</translation>
 <translation id="1813414402673211292">Futa Data ya Kuvinjari</translation>
 <translation id="1820259098641718022">Imeongezwa kwenye Orodha ya Kusoma</translation>
+<translation id="1826516787628120939">Inakagua</translation>
 <translation id="1842969606798536927">Lipa</translation>
 <translation id="1876721852596493031">Tuma Data ya Utumiaji</translation>
 <translation id="1886928167269928266">Kutoka Mwanzo</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Pakia Kurasa za wavuti Mapema</translation>
 <translation id="3691593122358196899">Imetiwa alamisho kwenye <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Sanduku kuu linapowashwa litajumuisha mapendekezo ya utangazaji wa kurasa za wavuti kwa vifaa vilivyo karibu nawe.</translation>
+<translation id="3706658020782046159">Chagua anwani ya mahali bidhaa zitakapopelekwa ili uangalie masharti na mbinu za kusafirisha.</translation>
 <translation id="3738139272394829648">Gusa ili Utafute</translation>
 <translation id="3771033907050503522">Vichupo Fiche</translation>
 <translation id="3783017676699494206">Hifadhi Picha</translation>
@@ -188,6 +190,7 @@
 Data yako imesimbwa kwa njia fiche kwa kauli yako ya siri ya usawazishaji. Iweke ili uanze kusawazisha.</translation>
 <translation id="4728558894243024398">Mfumo wa uendeshaji</translation>
 <translation id="473775607612524610">Sasisha</translation>
+<translation id="4750394297954878236">Mapendekezo</translation>
 <translation id="4773461607542755386">Ungependa kufungua ukurasa huu katika programu ya <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Data ya Vidakuzi na Tovuti</translation>
 <translation id="4875622588773761625">Je, unataka <ph name="PASSWORD_MANAGER_BRAND" /> isasishe nenosiri lako kwa wavuti huu?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index 7bc65a38..9b80c5a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">கோப்புறையை நீக்கு</translation>
 <translation id="1813414402673211292">உலாவல் தரவை சுத்தமாக்கு</translation>
 <translation id="1820259098641718022">வாசிப்புப் பட்டியலில் சேர்க்கப்பட்டது</translation>
+<translation id="1826516787628120939">சரிபார்க்கிறது</translation>
 <translation id="1842969606798536927">பணம் செலுத்துக</translation>
 <translation id="1876721852596493031">பயன்பாடு தரவு அனுப்பு</translation>
 <translation id="1886928167269928266">தொடக்கத்திலிருந்து</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">வலைப்பக்கங்களை முன்னதாக ஏற்று</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" /> இல் புத்தகக்குறியைச் சேர்த்தது</translation>
 <translation id="3692781555820666866">இதை இயக்கியிருக்கும்போது, உங்களுக்கு அருகிலுள்ள சாதனங்கள் வலைபரப்பும் இணையப் பக்கங்களுக்கான பரிந்துரைகளையும் சர்வபுலம் காண்பிக்கும்.</translation>
+<translation id="3706658020782046159">ஷிப்பிங் முறைகளையும் தேவைகளையும் பார்க்க, ஷிப்பிங் முகவரியைத் தேர்ந்தெடுக்கவும்</translation>
 <translation id="3738139272394829648">தேடத் தொடவும்</translation>
 <translation id="3771033907050503522">மறைநிலைத் தாவல்கள்</translation>
 <translation id="3783017676699494206">படத்தைச் சேமி</translation>
@@ -188,6 +190,7 @@
 உங்கள் தரவு உங்கள் ஒத்திசைவு கடவுச்சொற்றொடரைக் கொண்டு முறைமையாக்கப்பட்டுள்ளது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation>
 <translation id="4728558894243024398">ப்ளாட்ஃபார்ம்</translation>
 <translation id="473775607612524610">புதுப்பி</translation>
+<translation id="4750394297954878236">பரிந்துரைகள்</translation>
 <translation id="4773461607542755386">இந்தப் பக்கத்தை <ph name="APP_NAME" /> பயன்பாட்டில் திறக்கவா?</translation>
 <translation id="481968316161811770">குக்கீகள், தளத் தரவு</translation>
 <translation id="4875622588773761625">இந்தத் தளத்திற்கான உங்கள் கடவுச்சொல்லை <ph name="PASSWORD_MANAGER_BRAND" /> புதுப்பிக்க வேண்டுமா?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index bb741cd..ee1bb19 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">ఫోల్డర్‌ను తొలగించు</translation>
 <translation id="1813414402673211292">బ్రౌజింగ్‌డేటాను క్లియర్ చెయ్యి</translation>
 <translation id="1820259098641718022">పఠన జాబితాకు జోడించబడింది</translation>
+<translation id="1826516787628120939">తనిఖీ చేస్తోంది</translation>
 <translation id="1842969606798536927">చెల్లింపు</translation>
 <translation id="1876721852596493031">వినియోగ డేటాను పంపు</translation>
 <translation id="1886928167269928266">ప్రారంభ సమయం</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">బ్రౌజ్ చేయి</translation>
 <translation id="2054511809411770085">QR కోడ్ లేదా బార్ కోడ్</translation>
 <translation id="2068952045031577364">గత వారం</translation>
-<translation id="2079545284768500474">అన్డు</translation>
+<translation id="2079545284768500474">చర్య రద్దు</translation>
 <translation id="209018056901015185">డెస్క్‌టాప్ సైట్‌ను అభ్యర్థించు</translation>
 <translation id="2100215774115172756">మీ పఠన జాబితా ఆఫ్‌లైన్‌లో అందుబాటులో ఉంటుంది.</translation>
 <translation id="2103075008456228677">history.google.com తెరువు</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">వెబ్‌పేజీలను ముందే లోడ్ చేయి</translation>
 <translation id="3691593122358196899"><ph name="FOLDER_TITLE" />కి బుక్‌మార్క్ చేయబడింది</translation>
 <translation id="3692781555820666866">ప్రారంభించినప్పుడు, ఓమ్నిపెట్టె మీకు సమీపంలోని పరికరాల ద్వారా వెబ్ పేజీల ప్రసారం కోసం సూచనలను చేర్చుతుంది.</translation>
+<translation id="3706658020782046159">షిప్పింగ్ పద్ధతులు మరియు ఆవశ్యకాలను చూడటానికి షిప్పింగ్ చిరునామాను ఎంచుకోండి.</translation>
 <translation id="3738139272394829648">శోధించడానికి తాకండి</translation>
 <translation id="3771033907050503522">అజ్ఞాత ట్యాబ్‌లు</translation>
 <translation id="3783017676699494206">చిత్రాన్ని సేవ్ చేయి</translation>
@@ -188,6 +190,7 @@
 మీ సమకాలీకరణ రహస్య పదబంధంతో మీ డేటా గుప్తీకరించబడింది. సమకాలీకరణను ప్రారంభించడానికి దీన్ని నమోదు చేయండి.</translation>
 <translation id="4728558894243024398">ప్లాట్‌ఫారమ్</translation>
 <translation id="473775607612524610">నవీకరణ</translation>
+<translation id="4750394297954878236">సూచనలు</translation>
 <translation id="4773461607542755386">ఈ పేజీని <ph name="APP_NAME" /> అనువర్తనంలో తెరవాలా?</translation>
 <translation id="481968316161811770">కుక్కీలు, సైట్ డేటా</translation>
 <translation id="4875622588773761625">మీరు ఈ సైట్ కోసం <ph name="PASSWORD_MANAGER_BRAND" /> మీ పాస్‌వర్డ్‌ను నవీకరించాలని కోరుకుంటున్నారా?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index 32eadfd9..400f2cc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -49,6 +49,7 @@
 <translation id="1809939268435598390">ลบโฟลเดอร์</translation>
 <translation id="1813414402673211292">นำออกข้อมูลที่เรียกดู</translation>
 <translation id="1820259098641718022">เพิ่มไปยังเรื่องรออ่านแล้ว</translation>
+<translation id="1826516787628120939">กำลังตรวจสอบ</translation>
 <translation id="1842969606798536927">จ่าย</translation>
 <translation id="1876721852596493031">ส่งข้อมูลการใช้งาน</translation>
 <translation id="1886928167269928266">ตั้งแต่ต้น</translation>
@@ -149,6 +150,7 @@
 <translation id="3638472932233958418">โหลดหน้าเว็บล่วงหน้า</translation>
 <translation id="3691593122358196899">เพิ่มบุ๊กมาร์กไปยัง <ph name="FOLDER_TITLE" /> แล้ว</translation>
 <translation id="3692781555820666866">เมื่อเปิดใช้ แถบอเนกประสงค์จะรวมคำแนะนำการเผยแพร่หน้าเว็บจากอุปกรณ์ใกล้เคียง</translation>
+<translation id="3706658020782046159">เลือกที่อยู่สำหรับจัดส่งเพื่อตรวจสอบวิธีจัดส่งและข้อกำหนด</translation>
 <translation id="3738139272394829648">แตะเพื่อค้นหา</translation>
 <translation id="3771033907050503522">แท็บที่ไม่ระบุตัวตน</translation>
 <translation id="3783017676699494206">บันทึกภาพ</translation>
@@ -186,6 +188,7 @@
 ข้อมูลของคุณจะได้รับการเข้ารหัสด้วยรหัสผ่านการซิงค์ โปรดป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation>
 <translation id="4728558894243024398">แพลตฟอร์ม</translation>
 <translation id="473775607612524610">การอัปเดต</translation>
+<translation id="4750394297954878236">คำแนะนำ</translation>
 <translation id="4773461607542755386">เปิดหน้านี้ในแอป <ph name="APP_NAME" /> ไหม</translation>
 <translation id="481968316161811770">คุกกี้ ข้อมูลเว็บไซต์</translation>
 <translation id="4875622588773761625">คุณต้องการให้ <ph name="PASSWORD_MANAGER_BRAND" /> อัปเดตรหัสผ่านของคุณสำหรับเว็บไซต์นี้ไหม</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index 26c0b47..49cbc6b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Klasörü Sil</translation>
 <translation id="1813414402673211292">Tarama Verilerini Temizle</translation>
 <translation id="1820259098641718022">Okuma Listesine eklendi</translation>
+<translation id="1826516787628120939">Kontrol ediliyor</translation>
 <translation id="1842969606798536927">Ödeme</translation>
 <translation id="1876721852596493031">Kull. Veril. Gönder</translation>
 <translation id="1886928167269928266">En Baştan</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">Göz at</translation>
 <translation id="2054511809411770085">QR Kodu veya barkod</translation>
 <translation id="2068952045031577364">Geçen Hafta</translation>
-<translation id="2079545284768500474">Geri Al</translation>
+<translation id="2079545284768500474">Geri al</translation>
 <translation id="209018056901015185">Masaüstü Sitesi İste</translation>
 <translation id="2100215774115172756">Okuma listeniz çevrimdışı olarak kullanılabilir.</translation>
 <translation id="2103075008456228677">history.google.com'u aç</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Web Sayfalarını Önceden Yükle</translation>
 <translation id="3691593122358196899">Yer işareti <ph name="FOLDER_TITLE" /> klasörüne eklendi</translation>
 <translation id="3692781555820666866">Özellik etkinleştirildiğinde, yakınınızdaki cihazların yayınladığı web sayfalarına ilişkin öneriler çok amaçlı adres çubuğunda görünür.</translation>
+<translation id="3706658020782046159">Gönderim yöntemlerini ve gereksinimleri kontrol etmek için bir gönderim adresi seçin.</translation>
 <translation id="3738139272394829648">Dokun ve Ara</translation>
 <translation id="3771033907050503522">Gizli Sekmeler</translation>
 <translation id="3783017676699494206">Resmi Kaydet</translation>
@@ -188,6 +190,7 @@
 Verileriniz senkronizasyon parolanızla şifrelendi. Senkronizasyonu başlatmak için senkronizasyon parolanızı girin.</translation>
 <translation id="4728558894243024398">Platform</translation>
 <translation id="473775607612524610">Güncelle</translation>
+<translation id="4750394297954878236">Öneriler</translation>
 <translation id="4773461607542755386">Bu sayfa <ph name="APP_NAME" /> uygulamasında açılsın mı?</translation>
 <translation id="481968316161811770">Çerezler, Site Verileri</translation>
 <translation id="4875622588773761625">Bu siteye ait şifrenizin <ph name="PASSWORD_MANAGER_BRAND" /> tarafından güncellenmesini ister misiniz?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index 7bc3efd0..2360ac2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Видалити папку</translation>
 <translation id="1813414402673211292">Очистити дані переглядача</translation>
 <translation id="1820259098641718022">Додано в список читання</translation>
+<translation id="1826516787628120939">Перевірка</translation>
 <translation id="1842969606798536927">Оплатити</translation>
 <translation id="1876721852596493031">Надсилати статистику</translation>
 <translation id="1886928167269928266">Весь період</translation>
@@ -62,7 +63,7 @@
 <translation id="1989112275319619282">Переглянути</translation>
 <translation id="2054511809411770085">QR-код або штрих-код</translation>
 <translation id="2068952045031577364">Останній тиждень</translation>
-<translation id="2079545284768500474">Скасувати</translation>
+<translation id="2079545284768500474">Відмінити</translation>
 <translation id="209018056901015185">Повна версія сайту</translation>
 <translation id="2100215774115172756">Ваш список читання доступний у режимі офлайн.</translation>
 <translation id="2103075008456228677">Відкрити history.google.com</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Попер.завантаж.стор.</translation>
 <translation id="3691593122358196899">Закладку збережено в папці "<ph name="FOLDER_TITLE" />"</translation>
 <translation id="3692781555820666866">Якщо ввімкнено, універсальне вікно пошуку включатиме пропозиції трансляції веб-сторінок пристроями поблизу.</translation>
+<translation id="3706658020782046159">Виберіть адресу доставки, щоб переглянути способи доставки та вимоги.</translation>
 <translation id="3738139272394829648">Пошук дотиком</translation>
 <translation id="3771033907050503522">Анонімні вкладки</translation>
 <translation id="3783017676699494206">Зберегти зображення</translation>
@@ -188,6 +190,7 @@
 Ваші дані зашифровано за допомогою парольної фрази. Введіть її, щоб почати синхронізацію.</translation>
 <translation id="4728558894243024398">Платформа</translation>
 <translation id="473775607612524610">Оновити</translation>
+<translation id="4750394297954878236">Пропозиції</translation>
 <translation id="4773461607542755386">Відкрити цю сторінку в програмі <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Файли cookie й дані із сайтів</translation>
 <translation id="4875622588773761625">Оновити пароль для цього сайту в <ph name="PASSWORD_MANAGER_BRAND" />?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index 6cf9960..e5d25fa6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">Xóa thư mục</translation>
 <translation id="1813414402673211292">Xóa Dữ liệu Duyệt</translation>
 <translation id="1820259098641718022">Đã thêm vào Danh sách đọc</translation>
+<translation id="1826516787628120939">Đang kiểm tra</translation>
 <translation id="1842969606798536927">Thanh toán</translation>
 <translation id="1876721852596493031">Gửi dữ liệu sử dụng</translation>
 <translation id="1886928167269928266">Mọi thứ</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">Tải trước trang web</translation>
 <translation id="3691593122358196899">Đã đánh dấu trang vào <ph name="FOLDER_TITLE" /></translation>
 <translation id="3692781555820666866">Khi được bật, thanh địa chỉ sẽ bao gồm đề xuất cho những trang web mà các thiết bị ở gần bạn truyền phát.</translation>
+<translation id="3706658020782046159">Chọn địa chỉ giao hàng để kiểm tra các yêu cầu và phương thức giao hàng.</translation>
 <translation id="3738139272394829648">Chạm để tìm kiếm</translation>
 <translation id="3771033907050503522">Tab ẩn danh</translation>
 <translation id="3783017676699494206">Lưu hình ảnh</translation>
@@ -188,6 +190,7 @@
 Dữ liệu của bạn đã được mã hóa bằng cụm mật khẩu đồng bộ hóa của bạn. Nhập cụm mật khẩu đó để bắt đầu đồng bộ hóa.</translation>
 <translation id="4728558894243024398">Nền tảng</translation>
 <translation id="473775607612524610">Cập nhật</translation>
+<translation id="4750394297954878236">Đề xuất</translation>
 <translation id="4773461607542755386">Mở trang này trong <ph name="APP_NAME" />?</translation>
 <translation id="481968316161811770">Cookie, Dữ liệu trang web</translation>
 <translation id="4875622588773761625">Bạn có muốn <ph name="PASSWORD_MANAGER_BRAND" /> cập nhật mật khẩu của mình cho trang web này không?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
index f907f9fe..ce828b5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">删除文件夹</translation>
 <translation id="1813414402673211292">清除浏览数据</translation>
 <translation id="1820259098641718022">已添加到阅读清单</translation>
+<translation id="1826516787628120939">正在检查</translation>
 <translation id="1842969606798536927">付款</translation>
 <translation id="1876721852596493031">发送使用情况数据</translation>
 <translation id="1886928167269928266">全部</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">预先加载网页</translation>
 <translation id="3691593122358196899">已将书签添加到“<ph name="FOLDER_TITLE" />”</translation>
 <translation id="3692781555820666866">启用此功能后,多功能框会推荐您附近的设备播报的网页。</translation>
+<translation id="3706658020782046159">选择送货地址后才能查看送货方式和要求。</translation>
 <translation id="3738139272394829648">触摸搜索</translation>
 <translation id="3771033907050503522">隐身标签页</translation>
 <translation id="3783017676699494206">保存图片</translation>
@@ -188,6 +190,7 @@
 您的数据已使用您的同步密码加密。输入该密码即可开始同步。</translation>
 <translation id="4728558894243024398">平台</translation>
 <translation id="473775607612524610">更新</translation>
+<translation id="4750394297954878236">建议</translation>
 <translation id="4773461607542755386">要在 <ph name="APP_NAME" />应用中打开此网页吗?</translation>
 <translation id="481968316161811770">Cookie 和网站数据</translation>
 <translation id="4875622588773761625">要让<ph name="PASSWORD_MANAGER_BRAND" />更新您登录此网站时使用的密码吗?</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 1d3eab8..3512969b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -51,6 +51,7 @@
 <translation id="1809939268435598390">刪除資料夾</translation>
 <translation id="1813414402673211292">清除瀏覽資料</translation>
 <translation id="1820259098641718022">已加入閱讀清單</translation>
+<translation id="1826516787628120939">檢查中</translation>
 <translation id="1842969606798536927">支付</translation>
 <translation id="1876721852596493031">傳送使用情況資料</translation>
 <translation id="1886928167269928266">不限時間</translation>
@@ -151,6 +152,7 @@
 <translation id="3638472932233958418">預先載入網頁</translation>
 <translation id="3691593122358196899">已將書籤加入「<ph name="FOLDER_TITLE" />」</translation>
 <translation id="3692781555820666866">啟用後,網址列的建議項目會包含附近裝置播送的網頁。</translation>
+<translation id="3706658020782046159">選取運送地址即可查看運送方式和需求條件。</translation>
 <translation id="3738139272394829648">輕觸搜尋</translation>
 <translation id="3771033907050503522">無痕式分頁</translation>
 <translation id="3783017676699494206">儲存圖片</translation>
@@ -188,6 +190,7 @@
 您已使用同步通關密語對資料進行加密,請輸入通關密語開始進行同步。</translation>
 <translation id="4728558894243024398">平台</translation>
 <translation id="473775607612524610">更新</translation>
+<translation id="4750394297954878236">建議</translation>
 <translation id="4773461607542755386">在「<ph name="APP_NAME" />」應用程式中開啟這個網頁?</translation>
 <translation id="481968316161811770">Cookie、網站資料</translation>
 <translation id="4875622588773761625">您要讓 <ph name="PASSWORD_MANAGER_BRAND" /> 更新您在這個網站設定的密碼嗎?</translation>
diff --git a/ios/chrome/browser/browser_state/BUILD.gn b/ios/chrome/browser/browser_state/BUILD.gn
index adfa6b7..94c58d8 100644
--- a/ios/chrome/browser/browser_state/BUILD.gn
+++ b/ios/chrome/browser/browser_state/BUILD.gn
@@ -80,6 +80,7 @@
     "//ios/chrome/browser/bookmarks",
     "//ios/chrome/browser/browser_state_metrics",
     "//ios/chrome/browser/content_settings",
+    "//ios/chrome/browser/desktop_promotion",
     "//ios/chrome/browser/dom_distiller",
     "//ios/chrome/browser/favicon",
     "//ios/chrome/browser/google",
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 68a3cc3d..a87f1b1 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
@@ -11,6 +11,7 @@
 #include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "ios/chrome/browser/bookmarks/startup_task_runner_service_factory.h"
 #include "ios/chrome/browser/content_settings/cookie_settings_factory.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h"
 #include "ios/chrome/browser/dom_distiller/dom_distiller_service_factory.h"
 #include "ios/chrome/browser/favicon/favicon_service_factory.h"
 #include "ios/chrome/browser/favicon/ios_chrome_favicon_loader_factory.h"
@@ -85,6 +86,7 @@
   ios::WebDataServiceFactory::GetInstance();
   ios::WebHistoryServiceFactory::GetInstance();
   AuthenticationServiceFactory::GetInstance();
+  DesktopPromotionSyncServiceFactory::GetInstance();
   IOSChromeGCMProfileServiceFactory::GetInstance();
   IOSChromeLargeIconCacheFactory::GetInstance();
   IOSChromeLargeIconServiceFactory::GetInstance();
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
index 2f2a96de..16aa521f 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
@@ -28,6 +28,7 @@
 #include "ios/chrome/browser/browser_state_metrics/browser_state_metrics.h"
 #include "ios/chrome/browser/chrome_constants.h"
 #include "ios/chrome/browser/chrome_paths.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h"
 #include "ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h"
 #include "ios/chrome/browser/passwords/ios_chrome_password_manager_setting_migrator_service_factory.h"
 #include "ios/chrome/browser/pref_names.h"
@@ -213,6 +214,7 @@
   ios::AccountFetcherServiceFactory::GetForBrowserState(browser_state)
       ->SetupInvalidationsOnProfileLoad(invalidation_service);
   ios::AccountReconcilorFactory::GetForBrowserState(browser_state);
+  DesktopPromotionSyncServiceFactory::GetForBrowserState(browser_state);
 
   // This service is responsible for migration of the legacy password manager
   // preference which controls behaviour of Chrome to the new preference which
diff --git a/ios/chrome/browser/desktop_promotion/BUILD.gn b/ios/chrome/browser/desktop_promotion/BUILD.gn
new file mode 100644
index 0000000..c486d31
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/BUILD.gn
@@ -0,0 +1,26 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("desktop_promotion") {
+  sources = [
+    "desktop_promotion_sync_observer.cc",
+    "desktop_promotion_sync_observer.h",
+    "desktop_promotion_sync_service.cc",
+    "desktop_promotion_sync_service.h",
+    "desktop_promotion_sync_service_factory.cc",
+    "desktop_promotion_sync_service_factory.h",
+  ]
+  deps = [
+    "//base",
+    "//components/browser_sync",
+    "//components/keyed_service/ios",
+    "//components/metrics",
+    "//components/pref_registry",
+    "//components/prefs",
+    "//ios/chrome/browser",
+    "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/sync",
+    "//ios/chrome/common",
+  ]
+}
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.cc b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.cc
new file mode 100644
index 0000000..62208d0
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.cc
@@ -0,0 +1,92 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h"
+
+#include <algorithm>
+#include <memory>
+
+#include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
+#include "base/time/time.h"
+#include "components/browser_sync/profile_sync_service.h"
+#include "components/prefs/pref_service.h"
+#include "ios/chrome/browser/pref_names.h"
+
+namespace {
+
+// These values are written to logs.  New values can be added, but existing
+// values must never be reordered or deleted and reused.
+const char* kDesktopIOSPromotionEntrypointHistogramPrefix[] = {
+    "SavePasswordsNewBubble", "BookmarksNewBubble", "BookmarksExistingBubble",
+    "HistoryPage",
+};
+
+}  // namespace
+
+DesktopPromotionSyncObserver::DesktopPromotionSyncObserver(
+    PrefService* pref_service,
+    browser_sync::ProfileSyncService* sync_service)
+    : pref_service_(pref_service), sync_service_(sync_service) {
+  DCHECK(pref_service_);
+  DCHECK(sync_service_);
+  sync_service_->AddObserver(this);
+}
+
+DesktopPromotionSyncObserver::~DesktopPromotionSyncObserver() {
+  sync_service_->RemoveObserver(this);
+}
+
+void DesktopPromotionSyncObserver::OnStateChanged() {
+  if (desktop_metrics_logger_initiated_ ||
+      !sync_service_->GetActiveDataTypes().Has(syncer::PRIORITY_PREFERENCES)) {
+    return;
+  }
+
+  desktop_metrics_logger_initiated_ = true;
+  bool done_logging =
+      pref_service_->GetBoolean(prefs::kDesktopIOSPromotionDone);
+  double last_impression =
+      pref_service_->GetDouble(prefs::kDesktopIOSPromotionLastImpression);
+  base::TimeDelta delta =
+      base::Time::Now() - base::Time::FromDoubleT(last_impression);
+  if (done_logging || delta.InDays() >= 7) {
+    sync_service_->RemoveObserver(this);
+    return;
+  }
+
+  // This user have seen the promotion in the last 7 days so it may be a
+  // reason of the installation.
+  int sms_entrypoint =
+      pref_service_->GetInteger(prefs::kDesktopIOSPromotionSMSEntryPoint);
+  int shown_entrypoints =
+      pref_service_->GetInteger(prefs::kDesktopIOSPromotionShownEntryPoints);
+
+  // Entry points are represented on the preference by integers [1..4].
+  // TODO(crbug.com/681885): Add reference to the Entry point Constants defined
+  // in the desktop code side.
+  int entrypoint_prefixes_count =
+      arraysize(kDesktopIOSPromotionEntrypointHistogramPrefix);
+  for (int i = 1; i < entrypoint_prefixes_count + 1; i++) {
+    if (sms_entrypoint == i) {
+      UMA_HISTOGRAM_ENUMERATION("DesktopIOSPromotion.SMSSent.IOSSigninReason",
+                                i, entrypoint_prefixes_count + 1);
+      // If the time delta is negative due to client bad clock we log 0 instead.
+      base::Histogram::FactoryGet(
+          base::StringPrintf(
+              "DesktopIOSPromotion.%s.SMSToSigninTime",
+              kDesktopIOSPromotionEntrypointHistogramPrefix[i - 1]),
+          1, 168, 24, base::Histogram::kUmaTargetedHistogramFlag)
+          ->Add(std::max(0, delta.InHours()));
+    } else {
+      // If the user saw this promotion type, log that it could be a reason
+      // for the signin.
+      if ((1 << i) & shown_entrypoints)
+        UMA_HISTOGRAM_ENUMERATION("DesktopIOSPromotion.NoSMS.IOSSigninReason",
+                                  i, entrypoint_prefixes_count + 1);
+    }
+  }
+  pref_service_->SetBoolean(prefs::kDesktopIOSPromotionDone, true);
+  sync_service_->RemoveObserver(this);
+}
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h
new file mode 100644
index 0000000..9e56a6c
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h
@@ -0,0 +1,40 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_OBSERVER_H_
+#define IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_OBSERVER_H_
+
+#include "base/macros.h"
+#include "components/sync/driver/sync_service_observer.h"
+
+namespace browser_sync {
+class ProfileSyncService;
+}
+
+class PrefService;
+
+// This class will implement ProfileSyncServiceObserver and will attach it self
+// to the sync service to observe the sync state change.
+// Once the sync state is changed and priority prefs are synced, the observer
+// will check the desktop promotion prefs, and if eligilble it will log desktop
+// promotion metrics to uma and mark the promotion cycle as completed in a perf.
+class DesktopPromotionSyncObserver : public syncer::SyncServiceObserver {
+ public:
+  DesktopPromotionSyncObserver(PrefService* pref_service,
+                               browser_sync::ProfileSyncService* sync_service);
+
+  ~DesktopPromotionSyncObserver() override;
+
+  // ProfileSyncServiceObserver implementation.
+  void OnStateChanged() override;
+
+ private:
+  PrefService* pref_service_;
+  browser_sync::ProfileSyncService* sync_service_;
+  bool desktop_metrics_logger_initiated_;
+
+  DISALLOW_COPY_AND_ASSIGN(DesktopPromotionSyncObserver);
+};
+
+#endif  // IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_OBSERVER_H_
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.cc b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.cc
new file mode 100644
index 0000000..c4fb1ddc
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.cc
@@ -0,0 +1,34 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h"
+
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_service.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h"
+#include "ios/chrome/browser/pref_names.h"
+
+DesktopPromotionSyncService::DesktopPromotionSyncService(
+    PrefService* pref_service,
+    browser_sync::ProfileSyncService* sync_service)
+    : observer_(pref_service, sync_service) {}
+
+DesktopPromotionSyncService::~DesktopPromotionSyncService() = default;
+
+// static
+void DesktopPromotionSyncService::RegisterDesktopPromotionUserPrefs(
+    user_prefs::PrefRegistrySyncable* registry) {
+  registry->RegisterIntegerPref(
+      prefs::kDesktopIOSPromotionSMSEntryPoint, 0,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
+  registry->RegisterIntegerPref(
+      prefs::kDesktopIOSPromotionShownEntryPoints, 0,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
+  registry->RegisterDoublePref(
+      prefs::kDesktopIOSPromotionLastImpression, 0,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
+  registry->RegisterBooleanPref(
+      prefs::kDesktopIOSPromotionDone, false,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
+}
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h
new file mode 100644
index 0000000..55f93eb
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h
@@ -0,0 +1,36 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DESKTOP_PROMOTION_DESKTOP_PROMOTION_SYNC_SERVICE_H
+#define CHROME_BROWSER_DESKTOP_PROMOTION_DESKTOP_PROMOTION_SYNC_SERVICE_H
+
+#include "base/macros.h"
+#include "components/browser_sync/profile_sync_service.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_observer.h"
+
+namespace user_prefs {
+class PrefRegistrySyncable;
+}
+
+// This class is responsible for creating a DesktopPromotionSyncObserver
+// after the main browser state is initialized.
+// An object from this class should only be created by
+// DesktopPromotionSyncServiceFactory.
+class DesktopPromotionSyncService : public KeyedService {
+ public:
+  // Only the DesktopPromotionSyncServiceFactory and tests should call this.
+  DesktopPromotionSyncService(PrefService* pref_service,
+                              browser_sync::ProfileSyncService* sync_service);
+
+  ~DesktopPromotionSyncService() override;
+
+  // Register profile specific desktop promotion related preferences.
+  static void RegisterDesktopPromotionUserPrefs(
+      user_prefs::PrefRegistrySyncable* registry);
+
+ private:
+  DesktopPromotionSyncObserver observer_;
+};
+
+#endif  // CHROME_BROWSER_DESKTOP_PROMOTION_DESKTOP_PROMOTION_SYNC_SERVICE_H
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.cc b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.cc
new file mode 100644
index 0000000..f3acea0
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.cc
@@ -0,0 +1,50 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h"
+
+#include "base/memory/ptr_util.h"
+
+#include "components/keyed_service/ios/browser_state_dependency_manager.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h"
+#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h"
+
+// static
+DesktopPromotionSyncService*
+DesktopPromotionSyncServiceFactory::GetForBrowserState(
+    ios::ChromeBrowserState* browser_state) {
+  return static_cast<DesktopPromotionSyncService*>(
+      GetInstance()->GetServiceForBrowserState(browser_state, true));
+}
+
+// static
+DesktopPromotionSyncServiceFactory*
+DesktopPromotionSyncServiceFactory::GetInstance() {
+  return base::Singleton<DesktopPromotionSyncServiceFactory>::get();
+}
+
+DesktopPromotionSyncServiceFactory::DesktopPromotionSyncServiceFactory()
+    : BrowserStateKeyedServiceFactory(
+          "DesktopPromotionSyncService",
+          BrowserStateDependencyManager::GetInstance()) {
+  DependsOn(IOSChromeProfileSyncServiceFactory::GetInstance());
+}
+
+DesktopPromotionSyncServiceFactory::~DesktopPromotionSyncServiceFactory() =
+    default;
+
+std::unique_ptr<KeyedService>
+DesktopPromotionSyncServiceFactory::BuildServiceInstanceFor(
+    web::BrowserState* context) const {
+  ios::ChromeBrowserState* browser_state =
+      ios::ChromeBrowserState::FromBrowserState(context);
+  return base::MakeUnique<DesktopPromotionSyncService>(
+      browser_state->GetPrefs(),
+      IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state));
+}
+
+bool DesktopPromotionSyncServiceFactory::ServiceIsNULLWhileTesting() const {
+  return true;
+}
diff --git a/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h
new file mode 100644
index 0000000..a096bc94
--- /dev/null
+++ b/ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h
@@ -0,0 +1,42 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_SERVICE_FACTORY_H_
+#define IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_SERVICE_FACTORY_H_
+
+#include "base/macros.h"
+#include "base/memory/singleton.h"
+#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+
+namespace ios {
+class ChromeBrowserState;
+}
+
+class DesktopPromotionSyncService;
+
+// Singleton that owns all DesktopPromotionSyncService and associates them with
+// ios::ChromeBrowserState.
+class DesktopPromotionSyncServiceFactory
+    : public BrowserStateKeyedServiceFactory {
+ public:
+  static DesktopPromotionSyncService* GetForBrowserState(
+      ios::ChromeBrowserState* browser_state);
+  static DesktopPromotionSyncServiceFactory* GetInstance();
+
+ private:
+  friend struct base::DefaultSingletonTraits<
+      DesktopPromotionSyncServiceFactory>;
+
+  DesktopPromotionSyncServiceFactory();
+  ~DesktopPromotionSyncServiceFactory() override;
+
+  // BrowserStateKeyedServiceFactory implementation.
+  std::unique_ptr<KeyedService> BuildServiceInstanceFor(
+      web::BrowserState* context) const override;
+  bool ServiceIsNULLWhileTesting() const override;
+
+  DISALLOW_COPY_AND_ASSIGN(DesktopPromotionSyncServiceFactory);
+};
+
+#endif  // IOS_CHROME_BROWSER_SIGNIN_DESKTOP_PROMOTION_SYNC_SERVICE_FACTORY_H_
diff --git a/ios/chrome/browser/pref_names.cc b/ios/chrome/browser/pref_names.cc
index 0f758918..056788e9 100644
--- a/ios/chrome/browser/pref_names.cc
+++ b/ios/chrome/browser/pref_names.cc
@@ -139,4 +139,25 @@
 const char kRateThisAppDialogLastShownTime[] =
     "ios.ratethisapp.dialog_last_shown_time";
 
+// Index of the entry point that initiated sending the SMS to the user for the
+// "desktop to iOS" promotion (see DesktopIOSPromotion.IOSSigninReason histogram
+// for details).
+const char kDesktopIOSPromotionSMSEntryPoint[] =
+    "ios.desktop_ios_promo_sms_entrypoint";
+
+// Indexes of the entry points presented to the user for "desktop to iOS"
+// promotion
+const char kDesktopIOSPromotionShownEntryPoints[] =
+    "ios.desktop_ios_promo_shown_entrypoints";
+
+// Timestamp of the last "desktop to iOS" promotion SMS dispatch or of the last
+// impression (if no SMS was sent).
+const char kDesktopIOSPromotionLastImpression[] =
+    "ios.desktop_ios_promo_last_impression";
+
+// True if the "desktop to iOS" promotion was successful, i.e. user installed
+// the application and signed in after seeing the promotion and receiving the
+// SMS.
+const char kDesktopIOSPromotionDone[] = "ios.desktop_ios_promo_done";
+
 }  // namespace prefs
diff --git a/ios/chrome/browser/pref_names.h b/ios/chrome/browser/pref_names.h
index 1d0d9ad..6c60722 100644
--- a/ios/chrome/browser/pref_names.h
+++ b/ios/chrome/browser/pref_names.h
@@ -47,6 +47,11 @@
 
 extern const char kRateThisAppDialogLastShownTime[];
 
+extern const char kDesktopIOSPromotionSMSEntryPoint[];
+extern const char kDesktopIOSPromotionShownEntryPoints[];
+extern const char kDesktopIOSPromotionLastImpression[];
+extern const char kDesktopIOSPromotionDone[];
+
 }  // namespace prefs
 
 #endif  // IOS_CHROME_BROWSER_PREF_NAMES_H_
diff --git a/ios/chrome/browser/prefs/BUILD.gn b/ios/chrome/browser/prefs/BUILD.gn
index 3935d56..bd95e99 100644
--- a/ios/chrome/browser/prefs/BUILD.gn
+++ b/ios/chrome/browser/prefs/BUILD.gn
@@ -57,6 +57,7 @@
     "//components/web_resource",
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/desktop_promotion",
     "//ios/chrome/browser/first_run",
     "//ios/chrome/browser/geolocation",
     "//ios/chrome/browser/memory",
diff --git a/ios/chrome/browser/prefs/browser_prefs.mm b/ios/chrome/browser/prefs/browser_prefs.mm
index c39b424..6857586 100644
--- a/ios/chrome/browser/prefs/browser_prefs.mm
+++ b/ios/chrome/browser/prefs/browser_prefs.mm
@@ -39,6 +39,7 @@
 #include "components/variations/service/variations_service.h"
 #include "components/web_resource/web_resource_pref_names.h"
 #include "ios/chrome/browser/browser_state/browser_state_info_cache.h"
+#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service.h"
 #include "ios/chrome/browser/first_run/first_run.h"
 #import "ios/chrome/browser/geolocation/omnibox_geolocation_local_state.h"
 #import "ios/chrome/browser/memory/memory_debugger_manager.h"
@@ -114,6 +115,7 @@
   translate::TranslatePrefs::RegisterProfilePrefs(registry);
   variations::VariationsService::RegisterProfilePrefs(registry);
   ZeroSuggestProvider::RegisterProfilePrefs(registry);
+  DesktopPromotionSyncService::RegisterDesktopPromotionUserPrefs(registry);
   RegisterVoiceSearchBrowserStatePrefs(registry);
 
   [BookmarkInteractionController registerBrowserStatePrefs:registry];
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h
index ca03cc62..cfed23d9 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h
@@ -46,6 +46,13 @@
 // Sets the cell's appearance using information in |tab|.
 // The delegate needs to be set before calling this method.
 - (void)setAppearanceForTab:(Tab*)tab cellSize:(CGSize)cellSize;
+
+// PLACEHOLDER: Sets the cell's appearance using information in |title| and
+// |favicon|.
+- (void)setAppearanceForTabTitle:(NSString*)title
+                         favicon:(UIImage*)favicon
+                        cellSize:(CGSize)cellSize;
+
 // Sets the cell's appearance depending on |type|.
 - (void)setSessionType:(TabSwitcherSessionType)type;
 
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm
index bad9ca2..fc6f669 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm
@@ -242,6 +242,20 @@
                           }];
 }
 
+- (void)setAppearanceForTabTitle:(NSString*)title
+                         favicon:(UIImage*)favicon
+                        cellSize:(CGSize)cellSize {
+  [_titleLabel setText:title];
+  [self contentView].accessibilityLabel = title;
+  if (favicon) {
+    [_favicon setImage:favicon];
+  } else {
+    [_favicon setImage:NativeImage(IDR_IOS_OMNIBOX_HTTP)];
+  }
+
+  // PLACEHOLDER: Set snapshot here.
+}
+
 - (void)setSessionType:(TabSwitcherSessionType)type {
   UIColor* topBarBackgroundColor;
   UIColor* closeButtonTintColor;
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
index a4bb8b05..afc43bea 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">APPLICATION_NAME ይህን አገናኝ መያዝ አይችልም።</translation>
 <translation id="4743991241988563337">በኋላ ላይ ያንብቡ</translation>
 <translation id="6930009216791986919">ወደ ዕልባቶች አክል</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="8258999165172757081">ታክሏል</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
index 56cc97a..d9217b6 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">Η εφαρμογή APPLICATION_NAME δεν μπορεί να διαχειριστεί αυτόν τον σύνδεσμο.</translation>
 <translation id="4743991241988563337">Ανάγνωση αργότερα</translation>
 <translation id="6930009216791986919">Προσθήκη στους σελιδοδείκτες</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="8258999165172757081">Προστέθηκε</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
index 1fdd425..28fa23b 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">APPLICATION_NAME no puede manejar este vínculo.</translation>
 <translation id="4743991241988563337">Leer más tarde</translation>
 <translation id="6930009216791986919">Agregar a Marcadores</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Agregado</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
index a2f0547..e2194ca 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">Rakendus APPLICATION_NAME ei saa seda linki töödelda.</translation>
 <translation id="4743991241988563337">Hiljem lugemiseks</translation>
 <translation id="6930009216791986919">Lisa järjehoidjatesse</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="8258999165172757081">Lisatud</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
index c8bda7d..3dd9404 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">‏APPLICATION_NAME نمی‌تواند با این پیوند کار کند.</translation>
 <translation id="4743991241988563337">خواندن در فرصتی دیگر</translation>
 <translation id="6930009216791986919">افزودن به نشانک‌ها</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="8258999165172757081">اضافه شد</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
index 95582d7f..1abb8e5f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">Приложение "APPLICATION_NAME" не может открыть эту ссылку.</translation>
 <translation id="4743991241988563337">Читать позже</translation>
 <translation id="6930009216791986919">Добавить в закладки</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Добавлено</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
index 6183096..81ecc2c9 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
@@ -4,6 +4,6 @@
 <translation id="1613742542373525524">Додатку APPLICATION_NAME не вдається обробити це посилання.</translation>
 <translation id="4743991241988563337">Читати пізніше</translation>
 <translation id="6930009216791986919">Додати в закладки</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="8258999165172757081">Додано</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn b/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn
index 74bd8bee..38efb26 100644
--- a/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn
+++ b/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn
@@ -39,6 +39,7 @@
 
   deps = [
     "//base",
+    "//ios/chrome/browser/ui/tab_switcher",
     "//ios/clean/chrome/browser/ui/actions",
     "//ios/clean/chrome/browser/ui/animators",
     "//ios/clean/chrome/browser/ui/commands",
diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm
index f91f66e..6948934 100644
--- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm
+++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm
@@ -51,7 +51,7 @@
   [super setBrowserState:browserState];
   // PLACEHOLDER: Generate a tab group with four empty tabs.
   self.tabGroup =
-      [TabGroup tabGroupWithEmptyTabCount:4 forBrowserState:self.browserState];
+      [TabGroup tabGroupWithEmptyTabCount:7 forBrowserState:self.browserState];
 }
 
 #pragma mark - BrowserCoordinator
@@ -81,7 +81,7 @@
   WebMediator* tab = [self.tabGroup tabAtIndex:index];
   GURL url = tab.webState->GetVisibleURL();
   NSString* urlText = @"<New Tab>";
-  if (!url.is_valid()) {
+  if (url.is_valid()) {
     urlText = base::SysUTF8ToNSString(url.spec());
   }
   return urlText;
diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
index 8ebf91b..0d20e73 100644
--- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
+++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -9,19 +9,19 @@
 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h"
 
 #include "base/mac/foundation_util.h"
+#import "ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h"
+#import "ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_collection_view_layout.h"
 #import "ios/clean/chrome/browser/ui/actions/settings_actions.h"
 #import "ios/clean/chrome/browser/ui/actions/tab_grid_actions.h"
 #import "ios/clean/chrome/browser/ui/commands/settings_commands.h"
 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h"
 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h"
-#import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_tab_cell.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
 namespace {
-NSString* const kTabGridCellIdentifier = @"tabGridCell";
 const CGFloat kSpace = 20;
 const CGFloat kTabSize = 150;
 }
@@ -29,7 +29,8 @@
 @interface TabGridViewController ()<SettingsActions,
                                     TabGridActions,
                                     UICollectionViewDataSource,
-                                    UICollectionViewDelegate>
+                                    UICollectionViewDelegate,
+                                    SessionCellDelegate>
 @property(nonatomic, weak) UICollectionView* grid;
 @end
 
@@ -68,8 +69,8 @@
     [settings.centerYAnchor constraintEqualToAnchor:stripe.centerYAnchor]
   ]];
 
-  UICollectionViewFlowLayout* layout =
-      [[UICollectionViewFlowLayout alloc] init];
+  TabSwitcherPanelCollectionViewLayout* layout =
+      [[TabSwitcherPanelCollectionViewLayout alloc] init];
   layout.minimumLineSpacing = kSpace;
   layout.minimumInteritemSpacing = kSpace;
   layout.sectionInset = UIEdgeInsetsMake(kSpace, kSpace, kSpace, kSpace);
@@ -84,8 +85,8 @@
   self.grid = grid;
   self.grid.dataSource = self;
   self.grid.delegate = self;
-  [self.grid registerClass:[TabGridTabCell class]
-      forCellWithReuseIdentifier:kTabGridCellIdentifier];
+  [self.grid registerClass:[TabSwitcherLocalSessionCell class]
+      forCellWithReuseIdentifier:[TabSwitcherLocalSessionCell identifier]];
 
   [NSLayoutConstraint activateConstraints:@[
     [self.grid.topAnchor constraintEqualToAnchor:stripe.bottomAnchor],
@@ -113,23 +114,19 @@
 
 - (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
                  cellForItemAtIndexPath:(nonnull NSIndexPath*)indexPath {
-  TabGridTabCell* cell =
-      base::mac::ObjCCastStrict<TabGridTabCell>([collectionView
-          dequeueReusableCellWithReuseIdentifier:kTabGridCellIdentifier
+  TabSwitcherLocalSessionCell* cell =
+      base::mac::ObjCCastStrict<TabSwitcherLocalSessionCell>([collectionView
+          dequeueReusableCellWithReuseIdentifier:
+                              [TabSwitcherLocalSessionCell identifier]
                                     forIndexPath:indexPath]);
-  cell.contentView.backgroundColor = [UIColor purpleColor];
-  cell.selected = YES;
-  cell.label.text = [self.dataSource titleAtIndex:indexPath.item];
+  cell.delegate = self;
+  [cell setSessionType:TabSwitcherSessionType::REGULAR_SESSION];
+  [cell setAppearanceForTabTitle:[self.dataSource titleAtIndex:indexPath.item]
+                         favicon:nil
+                        cellSize:CGSizeZero];
   return cell;
 }
 
-#pragma mark - UICollectionViewDelegate methods
-
-- (void)collectionView:(UICollectionView*)collectionView
-    didSelectItemAtIndexPath:(NSIndexPath*)indexPath {
-  [self.tabCommandHandler showTabAtIndexPath:indexPath];
-}
-
 #pragma mark - ZoomTransitionDelegate methods
 
 - (CGRect)rectForZoomWithKey:(NSObject*)key inView:(UIView*)view {
@@ -152,4 +149,19 @@
   [self.tabGridCommandHandler showTabGrid];
 }
 
+#pragma mark - SessionCellDelegate
+
+- (TabSwitcherCache*)tabSwitcherCache {
+  // PLACEHOLDER: return image cache.
+  return nil;
+}
+
+- (void)cellPressed:(UICollectionViewCell*)cell {
+  [self.tabCommandHandler showTabAtIndexPath:[self.grid indexPathForCell:cell]];
+}
+
+- (void)deleteButtonPressedForCell:(UICollectionViewCell*)cell {
+  // PLACEHOLDER: handle close tab button.
+}
+
 @end
diff --git a/ios/web_view/shell/BUILD.gn b/ios/web_view/shell/BUILD.gn
index 9683ad8..ab14a24 100644
--- a/ios/web_view/shell/BUILD.gn
+++ b/ios/web_view/shell/BUILD.gn
@@ -6,6 +6,7 @@
 import("//build/config/ios/rules.gni")
 
 ios_app_bundle("ios_web_view_shell") {
+  configs += [ "//build/config/compiler:enable_arc" ]
   deps = [
     "//base",
     "//ios/web_view",
diff --git a/ios/web_view/shell/shell_app_delegate.h b/ios/web_view/shell/shell_app_delegate.h
index 0836e0c..cde88e6 100644
--- a/ios/web_view/shell/shell_app_delegate.h
+++ b/ios/web_view/shell/shell_app_delegate.h
@@ -10,7 +10,7 @@
 @interface ShellAppDelegate : UIResponder<UIApplicationDelegate>
 
 // The main window for the application.
-@property(nonatomic, retain) UIWindow* window;
+@property(nonatomic, strong) UIWindow* window;
 
 @end
 
diff --git a/ios/web_view/shell/shell_app_delegate.mm b/ios/web_view/shell/shell_app_delegate.mm
index 61da172c..fa6bfc6 100644
--- a/ios/web_view/shell/shell_app_delegate.mm
+++ b/ios/web_view/shell/shell_app_delegate.mm
@@ -4,32 +4,34 @@
 
 #import "ios/web_view/shell/shell_app_delegate.h"
 
-#import "base/mac/scoped_nsobject.h"
 #import "ios/web_view/public/criwv.h"
 #import "ios/web_view/shell/shell_delegate.h"
 #import "ios/web_view/shell/shell_view_controller.h"
 
-@interface ShellAppDelegate () {
-  base::scoped_nsobject<ShellDelegate> _delegate;
-}
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface ShellAppDelegate ()
+@property (nonatomic, strong) ShellDelegate* delegate;
 @end
 
 @implementation ShellAppDelegate
 
+@synthesize delegate = _delegate;
 @synthesize window = _window;
 
 - (BOOL)application:(UIApplication*)application
     didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
-  _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   self.window.backgroundColor = [UIColor whiteColor];
 
-  _delegate.reset([[ShellDelegate alloc] init]);
+  self.delegate = [[ShellDelegate alloc] init];
   [CRIWV configureWithDelegate:_delegate];
 
   [self.window makeKeyAndVisible];
 
-  base::scoped_nsobject<ShellViewController> controller(
-      [[ShellViewController alloc] init]);
+  ShellViewController* controller = [[ShellViewController alloc] init];
   self.window.rootViewController = controller;
 
   return YES;
@@ -51,9 +53,4 @@
   [CRIWV shutDown];
 }
 
-- (void)dealloc {
-  [_window release];
-  [super dealloc];
-}
-
 @end
diff --git a/ios/web_view/shell/shell_delegate.mm b/ios/web_view/shell/shell_delegate.mm
index fea811a5f..94be9a9 100644
--- a/ios/web_view/shell/shell_delegate.mm
+++ b/ios/web_view/shell/shell_delegate.mm
@@ -4,6 +4,10 @@
 
 #import "ios/web_view/shell/shell_delegate.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 @implementation ShellDelegate
 
 - (NSString*)partialUserAgent {
diff --git a/ios/web_view/shell/shell_exe_main.mm b/ios/web_view/shell/shell_exe_main.mm
index 0db7149..991f337 100644
--- a/ios/web_view/shell/shell_exe_main.mm
+++ b/ios/web_view/shell/shell_exe_main.mm
@@ -6,6 +6,10 @@
 
 #import "ios/web_view/shell/shell_app_delegate.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 int main(int argc, char* argv[]) {
   @autoreleasepool {
     return UIApplicationMain(argc, argv, nil,
diff --git a/ios/web_view/shell/shell_view_controller.mm b/ios/web_view/shell/shell_view_controller.mm
index c164096a..ed95efa 100644
--- a/ios/web_view/shell/shell_view_controller.mm
+++ b/ios/web_view/shell/shell_view_controller.mm
@@ -4,23 +4,30 @@
 
 #import "ios/web_view/shell/shell_view_controller.h"
 
-#import "base/mac/scoped_nsobject.h"
-#include "base/strings/sys_string_conversions.h"
 #import "ios/web_view/public/criwv.h"
 #import "ios/web_view/public/criwv_web_view.h"
 #import "ios/web_view/shell/translate_controller.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 namespace {
 const CGFloat kButtonSize = 44;
 }
 
-@interface ShellViewController () {
-  base::scoped_nsobject<UIView> _containerView;
-  base::scoped_nsobject<UITextField> _field;
-  base::scoped_nsobject<UIToolbar> _toolbar;
-  base::scoped_nsprotocol<id<CRIWVWebView>> _webView;
-  base::scoped_nsobject<TranslateController> _translateController;
-}
+@interface ShellViewController ()
+// Container for |webView|.
+@property (nonatomic, strong) UIView* containerView;
+// Text field used for navigating to URLs.
+@property (nonatomic, strong) UITextField* field;
+// Toolbar containing navigation buttons and |field|.
+@property (nonatomic, strong) UIToolbar* toolbar;
+// CRIWV view which renders the web page.
+@property (nonatomic, strong) id<CRIWVWebView> webView;
+// Handles the translation of the content displayed in |webView|.
+@property (nonatomic, strong) TranslateController* translateController;
+
 - (void)back;
 - (void)forward;
 - (void)stopLoading;
@@ -28,13 +35,19 @@
 
 @implementation ShellViewController
 
+@synthesize containerView = _containerView;
+@synthesize field = _field;
+@synthesize toolbar = _toolbar;
+@synthesize webView = _webView;
+@synthesize translateController = _translateController;
+
 - (void)viewDidLoad {
   [super viewDidLoad];
 
   CGRect bounds = self.view.bounds;
 
   // Set up the toolbar.
-  _toolbar.reset([[UIToolbar alloc] init]);
+  self.toolbar = [[UIToolbar alloc] init];
   [_toolbar setBarTintColor:[UIColor colorWithRed:0.337
                                             green:0.467
                                              blue:0.988
@@ -45,7 +58,7 @@
   [self.view addSubview:_toolbar];
 
   // Set up the container view.
-  _containerView.reset([[UIView alloc] init]);
+  self.containerView = [[UIView alloc] init];
   [_containerView setFrame:CGRectMake(0, 64, CGRectGetWidth(bounds),
                                       CGRectGetHeight(bounds) - 64)];
   [_containerView setBackgroundColor:[UIColor lightGrayColor]];
@@ -55,11 +68,11 @@
 
   // Text field.
   const int kButtonCount = 3;
-  _field.reset([[UITextField alloc]
+  self.field = [[UITextField alloc]
       initWithFrame:CGRectMake(kButtonCount * kButtonSize, 6,
                                CGRectGetWidth([_toolbar frame]) -
                                    kButtonCount * kButtonSize - 10,
-                               31)]);
+                               31)];
   [_field setDelegate:self];
   [_field setBackground:[[UIImage imageNamed:@"textfield_background"]
                             resizableImageWithCapInsets:UIEdgeInsetsMake(
@@ -109,7 +122,7 @@
   [_toolbar addSubview:stop];
   [_toolbar addSubview:_field];
 
-  _webView.reset([[CRIWV webView] retain]);
+  self.webView = [CRIWV webView];
   [_webView setDelegate:self];
   UIView* view = [_webView view];
   [_containerView addSubview:view];
@@ -121,7 +134,7 @@
 }
 
 - (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
-  if (bar == _toolbar.get()) {
+  if (bar == _toolbar) {
     return UIBarPositionTopAttached;
   }
   return UIBarPositionAny;
@@ -186,7 +199,7 @@
 
 - (id<CRIWVTranslateDelegate>)translateDelegate {
   if (!_translateController)
-    _translateController.reset([[TranslateController alloc] init]);
+    self.translateController = [[TranslateController alloc] init];
   return _translateController;
 }
 
diff --git a/ios/web_view/shell/translate_controller.mm b/ios/web_view/shell/translate_controller.mm
index 23ec4c9..98bc51b 100644
--- a/ios/web_view/shell/translate_controller.mm
+++ b/ios/web_view/shell/translate_controller.mm
@@ -7,21 +7,27 @@
 #import <UIKit/UIKit.h>
 
 #include "base/logging.h"
-#import "base/mac/scoped_nsobject.h"
 #import "ios/web_view/public/criwv_translate_manager.h"
 
-@interface TranslateController () {
-  base::scoped_nsobject<UIAlertController> _beforeTranslateActionSheet;
-  base::scoped_nsprotocol<id<CRIWVTranslateManager>> _translateManager;
-}
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface TranslateController ()
+// Action Sheet to prompt user whether or not the page should be translated.
+@property (nonatomic, strong) UIAlertController* beforeTranslateActionSheet;
+// Manager which performs the translation of the content.
+@property (nonatomic, strong) id<CRIWVTranslateManager> translateManager;
 @end
 
 @implementation TranslateController
 
+@synthesize beforeTranslateActionSheet = _beforeTranslateActionSheet;
+@synthesize translateManager = _translateManager;
+
 - (void)dealloc {
   [_beforeTranslateActionSheet dismissViewControllerAnimated:YES
                                                   completion:nil];
-  [super dealloc];
 }
 
 #pragma mark CRIWVTranslateDelegate methods
@@ -31,19 +37,19 @@
   if (step == CRIWVTransateStepBeforeTranslate) {
     DCHECK(!_translateManager);
     DCHECK(!_beforeTranslateActionSheet);
-    _translateManager.reset([manager retain]);
-    _beforeTranslateActionSheet.reset([[UIAlertController
+    self.translateManager = manager;
+    self.beforeTranslateActionSheet = [UIAlertController
         alertControllerWithTitle:nil
                          message:@"Translate?"
-                  preferredStyle:UIAlertControllerStyleActionSheet] retain]);
+                  preferredStyle:UIAlertControllerStyleActionSheet];
     UIAlertAction* cancelAction =
         [UIAlertAction actionWithTitle:@"Nope."
                                  style:UIAlertActionStyleCancel
                                handler:^(UIAlertAction* action) {
                                  DCHECK(_beforeTranslateActionSheet);
-                                 _beforeTranslateActionSheet.reset();
+                                 self.beforeTranslateActionSheet = nil;
                                  DCHECK(_translateManager);
-                                 _translateManager.reset();
+                                 self.translateManager = nil;
                                }];
     [_beforeTranslateActionSheet addAction:cancelAction];
 
@@ -52,10 +58,10 @@
                                  style:UIAlertActionStyleDefault
                                handler:^(UIAlertAction* action) {
                                  DCHECK(_beforeTranslateActionSheet);
-                                 _beforeTranslateActionSheet.reset();
+                                 self.beforeTranslateActionSheet = nil;
                                  DCHECK(_translateManager);
                                  [_translateManager translate];
-                                 _translateManager.reset();
+                                 self.translateManager = nil;
                                }];
     [_beforeTranslateActionSheet addAction:translateAction];
 
diff --git a/remoting/resources/remoting_strings_am.xtb b/remoting/resources/remoting_strings_am.xtb
index bf8f90d..aa700d8 100644
--- a/remoting/resources/remoting_strings_am.xtb
+++ b/remoting/resources/remoting_strings_am.xtb
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">የቁልፍ ሰሌዳን አሳይ/ደብቅ።</translation>
 <translation id="6944854424004126054">መስኮት ወደነበረበት ይመልሱ</translation>
 <translation id="6963936880795878952">የሆነ ሰው ልክ ባልሆነ ፒን ከርቀት ኮምፒውተሩ ጋር ለመገናኘት ስለሞከረ ከእሱ ጋር ያሉ ግንኙነቶች ለጊዜው ታግደዋል። እባክዎ ቆይተው እንደገና ይሞክሩ።</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="6985691951107243942">እርግጠኛ ነዎት ከ<ph name="HOSTNAME" /> ጋር ያሉትን የርቀት ግንኙነቶች ማሰናከል ይፈልጋሉ? ሐሳብዎን ከቀየሩ ግንኙነቶችን ዳግም ለማንቃት ያንን ኮምፒውተር መጎብኘት ይኖርብዎታል።</translation>
 <translation id="6998989275928107238">ለ</translation>
 <translation id="7019153418965365059">ያልታወቀ የአስተናጋጅ ስህተት፦ <ph name="HOST_OFFLINE_REASON" />።</translation>
diff --git a/remoting/resources/remoting_strings_el.xtb b/remoting/resources/remoting_strings_el.xtb
index 31f49d2..049d8bf5 100644
--- a/remoting/resources/remoting_strings_el.xtb
+++ b/remoting/resources/remoting_strings_el.xtb
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">Εμφάνιση/απόκρυψη πληκτρολογίου.</translation>
 <translation id="6944854424004126054">Επαναφορά παραθύρου</translation>
 <translation id="6963936880795878952">Οι συνδέσεις στον απομακρυσμένο υπολογιστή έχουν αποκλειστεί προσωρινά, επειδή κάποιος επιχείρησε να συνδεθεί σε αυτόν με μη έγκυρο PIN. Δοκιμάστε ξανά αργότερα.</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="6985691951107243942">Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τις απομακρυσμένες συνδέσεις στον κεντρικό υπολογιστή <ph name="HOSTNAME" />; Εάν αλλάξετε γνώμη, θα πρέπει να επισκεφτείτε ξανά αυτόν τον υπολογιστή για να ενεργοποιήσετε εκ νέου τις συνδέσεις.</translation>
 <translation id="6998989275928107238">Προς</translation>
 <translation id="7019153418965365059">Άγνωστο σφάλμα κεντρικού υπολογιστή: <ph name="HOST_OFFLINE_REASON" /> .</translation>
diff --git a/remoting/resources/remoting_strings_es-419.xtb b/remoting/resources/remoting_strings_es-419.xtb
index 6dd7d73..3841b4be 100644
--- a/remoting/resources/remoting_strings_es-419.xtb
+++ b/remoting/resources/remoting_strings_es-419.xtb
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">Mostrar u ocultar teclado</translation>
 <translation id="6944854424004126054">Restaurar ventana</translation>
 <translation id="6963936880795878952">Las conexiones con la computadora remota se bloquearon temporalmente porque alguien intentó conectarse a ella con un PIN no válido. Vuelve a intentarlo más tarde.</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">¿Realmente deseas inhabilitar las conexiones remotas con <ph name="HOSTNAME" />? Si te arrepientes, tendrás que ir a esa computadora para volver a habilitar las conexiones.</translation>
 <translation id="6998989275928107238">A</translation>
 <translation id="7019153418965365059">Error de host no reconocido: <ph name="HOST_OFFLINE_REASON" /></translation>
diff --git a/remoting/resources/remoting_strings_et.xtb b/remoting/resources/remoting_strings_et.xtb
index ede27fb..ba9e196 100644
--- a/remoting/resources/remoting_strings_et.xtb
+++ b/remoting/resources/remoting_strings_et.xtb
@@ -195,7 +195,7 @@
 <translation id="5885438903806970186">Veebis.</translation>
 <translation id="6001953797859482435">Chrome Remote Desktopi hosti eelistused</translation>
 <translation id="6011539954251327702">Rakendus Chromoting võimaldab teil arvutit turvaliselt veebi kaudu jagada. Mõlemad kasutajad peavad käitama rakendust Chromoting, mille leiate aadressilt <ph name="URL" />.</translation>
-<translation id="6040143037577758943">Sule</translation>
+<translation id="6040143037577758943">Sulge</translation>
 <translation id="6062854958530969723">Hosti lähtestamine ebaõnnestus.</translation>
 <translation id="6091564239975589852">Klahvide saatmine</translation>
 <translation id="6099500228377758828">Chrome Remote Desktopi teenus</translation>
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">Kuva/peida klaviatuur.</translation>
 <translation id="6944854424004126054">Akna taastamine</translation>
 <translation id="6963936880795878952">Ühendused kaugarvutiga on ajutiselt blokeeritud, sest keegi püüdis luua ühendust vale PIN-koodiga. Proovige hiljem uuesti.</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="6985691951107243942">Kas olete kindel, et soovite keelata kaugühenduse hostiga <ph name="HOSTNAME" />? Kui mõtlete ümber, peate selles arvutis ühendused uuesti lubama.</translation>
 <translation id="6998989275928107238">Kellele</translation>
 <translation id="7019153418965365059">Tundmatu hostiviga: <ph name="HOST_OFFLINE_REASON" />.</translation>
diff --git a/remoting/resources/remoting_strings_fa.xtb b/remoting/resources/remoting_strings_fa.xtb
index 0547fcd..68254ac 100644
--- a/remoting/resources/remoting_strings_fa.xtb
+++ b/remoting/resources/remoting_strings_fa.xtb
@@ -231,7 +231,7 @@
 <translation id="6939719207673461467">نمایش/پنهان کردن صفحه‌کلید</translation>
 <translation id="6944854424004126054">بازگرداندن پنجره</translation>
 <translation id="6963936880795878952">اتصالات به رایانه راه دور به‌صورت موقت مسدود می‌شود، چون شخصی سعی داشت با پین نامعتبر به آن متصل شود. لطفاً بعداً دوباره امتحان کنید.</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="6985691951107243942">آیا مطمئنید که می‌خواهید اتصالات راه دور به <ph name="HOSTNAME" /> را غیرفعال کنید؟ اگر نظرتان عوض شود، باید از همان رایانه اتصالات را مجدداً فعال کنید.</translation>
 <translation id="6998989275928107238">به</translation>
 <translation id="7019153418965365059">خطای نامشخص میزبان: <ph name="HOST_OFFLINE_REASON" />.</translation>
diff --git a/remoting/resources/remoting_strings_kn.xtb b/remoting/resources/remoting_strings_kn.xtb
index 71690e8..512e7f14 100644
--- a/remoting/resources/remoting_strings_kn.xtb
+++ b/remoting/resources/remoting_strings_kn.xtb
@@ -195,7 +195,7 @@
 <translation id="5885438903806970186">ಆನ್‌ಲೈನ್.</translation>
 <translation id="6001953797859482435">Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಹೋಸ್ಟ್ ಪ್ರಾಶಸ್ತ್ಯಗಳು</translation>
 <translation id="6011539954251327702">ವೆಬ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಲು ಕ್ರೊಮೊಟಿಂಗ್ ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. <ph name="URL" /> ರಲ್ಲಿ ಕಂಡು ಹಿಡಿಯಬಹುದಾದ, ಎರಡೂ ಬಳಕೆದಾರರು ಕ್ರೊಮೊಟಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಾಲನೆಗೊಳಿಸುತ್ತಿರಬಹುದು.</translation>
-<translation id="6040143037577758943">ಮುಚ್ಚು</translation>
+<translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="6062854958530969723">ಹೋಸ್ಟ್ ಪ್ರಾರಂಭಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="6091564239975589852">ಕೀಲಿಗಳನ್ನು ಕಳುಹಿಸಿ</translation>
 <translation id="6099500228377758828">Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಸೇವೆ</translation>
diff --git a/remoting/resources/remoting_strings_mr.xtb b/remoting/resources/remoting_strings_mr.xtb
index 818bd615..d949e00 100644
--- a/remoting/resources/remoting_strings_mr.xtb
+++ b/remoting/resources/remoting_strings_mr.xtb
@@ -169,7 +169,7 @@
 <translation id="5070121137485264635">दूरस्थ होस्टसाठी आपण एका तृतीय-पक्ष वेबसाइटवर प्रमाणीकृत करणे आवश्यक आहे. सुरू ठेवण्यासाठी, या पत्त्यामध्ये प्रवेश करण्यासाठी आपण Chrome दूरस्थ डेस्कटॉपला अतिरिक्त परवानग्या मंजूर करणे आवश्यक आहे:</translation>
 <translation id="507204348399810022">आपल्‍याला खात्री आहे की आपण <ph name="HOSTNAME" /> शी असलेले दूरस्थ कनेक्शन अक्षम करू इच्छिता?</translation>
 <translation id="5156271271724754543">कृपया दोन्ही बॉक्सेसमध्‍ये सारखाच PIN प्रविष्‍ट करा.</translation>
-<translation id="5170982930780719864">अवैध होस्ट id.</translation>
+<translation id="5170982930780719864">अवैध होस्ट आयडी .</translation>
 <translation id="518094545883702183">ही माहिती केवळ आपण अहवाल देत असलेल्या समस्येचे निदान करण्यासाठी वापरली जाते, ही आपल्या अहवालाचे अन्वेषण करणार्‍या केवळ एखाद्या व्यक्तीसाठी उपलब्ध असते आणि ही 30 दिवसांपेक्षा जास्त ठेवली जात नाही.</translation>
 <translation id="5222676887888702881">साइन आउट करा</translation>
 <translation id="5254120496627797685">हे पृष्ठ सोडल्याने आपले Chrome दूरस्थ डेस्कटॉप सत्र समाप्त होईल.</translation>
diff --git a/remoting/resources/remoting_strings_ru.xtb b/remoting/resources/remoting_strings_ru.xtb
index 8614f4d..b2f82d4f 100644
--- a/remoting/resources/remoting_strings_ru.xtb
+++ b/remoting/resources/remoting_strings_ru.xtb
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">Показать/скрыть клавиатуру</translation>
 <translation id="6944854424004126054">Восстановить окно</translation>
 <translation id="6963936880795878952">Подключения к удаленному компьютеру временно заблокированы, поскольку кто-то пытался установить соединение, используя неверный PIN-код. Повторите попытку позже.</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Заблокировать подключения к <ph name="HOSTNAME" />? Восстановить их можно будет только на соответствующем компьютере.</translation>
 <translation id="6998989275928107238">Кому</translation>
 <translation id="7019153418965365059">Неизвестная ошибка хоста: <ph name="HOST_OFFLINE_REASON" />.</translation>
diff --git a/remoting/resources/remoting_strings_sk.xtb b/remoting/resources/remoting_strings_sk.xtb
index 668d3f05..2368759 100644
--- a/remoting/resources/remoting_strings_sk.xtb
+++ b/remoting/resources/remoting_strings_sk.xtb
@@ -195,7 +195,7 @@
 <translation id="5885438903806970186">Online.</translation>
 <translation id="6001953797859482435">Predvoľby hostiteľa Vzdialenej plochy Chrome</translation>
 <translation id="6011539954251327702">Funkcia Chromoting vám umožňuje bezpečne zdieľať váš počítač cez internet. Obaja používatelia musia mať spustenú aplikáciu Chromoting, ktorú nájdete na adrese <ph name="URL" />.</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="6062854958530969723">Nepodarilo sa inicializovať hostiteľa</translation>
 <translation id="6091564239975589852">Odoslať kombináciu klávesov</translation>
 <translation id="6099500228377758828">Služba Vzdialená plocha Chrome</translation>
diff --git a/remoting/resources/remoting_strings_uk.xtb b/remoting/resources/remoting_strings_uk.xtb
index 3cb0c05..bdd4c87 100644
--- a/remoting/resources/remoting_strings_uk.xtb
+++ b/remoting/resources/remoting_strings_uk.xtb
@@ -232,7 +232,7 @@
 <translation id="6939719207673461467">Показати/сховати клавіатуру.</translation>
 <translation id="6944854424004126054">Відновити вікно</translation>
 <translation id="6963936880795878952">З’єднання з віддаленим комп’ютером тимчасово заблоковано, оскільки хтось намагався під’єднатися до нього, використовуючи недійсний PIN-код. Повторіть спробу пізніше.</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="6985691951107243942">Дійсно вимкнути віддалені з’єднання з хостом <ph name="HOSTNAME" />? Якщо ви передумаєте, потрібно буде знову ввімкнути з’єднання на відповідному комп’ютері.</translation>
 <translation id="6998989275928107238">Кому</translation>
 <translation id="7019153418965365059">Невідома помилка хосту: <ph name="HOST_OFFLINE_REASON" />.</translation>
diff --git a/services/ui/surfaces/display_output_surface.cc b/services/ui/surfaces/display_output_surface.cc
index b6d6b95..f2aad393f 100644
--- a/services/ui/surfaces/display_output_surface.cc
+++ b/services/ui/surfaces/display_output_surface.cc
@@ -101,11 +101,15 @@
 
 void DisplayOutputSurface::ApplyExternalStencil() {}
 
+void DisplayOutputSurface::DidReceiveSwapBuffersAck(gfx::SwapResult result) {
+  client_->DidReceiveSwapBuffersAck();
+}
+
 void DisplayOutputSurface::OnGpuSwapBuffersCompleted(
     const std::vector<ui::LatencyInfo>& latency_info,
     gfx::SwapResult result,
     const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
-  client_->DidReceiveSwapBuffersAck();
+  DidReceiveSwapBuffersAck(result);
 }
 
 void DisplayOutputSurface::OnVSyncParametersUpdated(base::TimeTicks timebase,
diff --git a/services/ui/surfaces/display_output_surface.h b/services/ui/surfaces/display_output_surface.h
index 2b4fca1..db654cf 100644
--- a/services/ui/surfaces/display_output_surface.h
+++ b/services/ui/surfaces/display_output_surface.h
@@ -44,6 +44,12 @@
   bool HasExternalStencilTest() const override;
   void ApplyExternalStencil() override;
 
+ protected:
+  cc::OutputSurfaceClient* client() const { return client_; }
+
+  // Called when a swap completion is signaled from ImageTransportSurface.
+  virtual void DidReceiveSwapBuffersAck(gfx::SwapResult result);
+
  private:
   // Called when a swap completion is signaled from ImageTransportSurface.
   void OnGpuSwapBuffersCompleted(
diff --git a/services/ui/surfaces/display_output_surface_ozone.cc b/services/ui/surfaces/display_output_surface_ozone.cc
index f3766b60..86812cb 100644
--- a/services/ui/surfaces/display_output_surface_ozone.cc
+++ b/services/ui/surfaces/display_output_surface_ozone.cc
@@ -28,16 +28,9 @@
     gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
     uint32_t target,
     uint32_t internalformat)
-    : cc::OutputSurface(context_provider),
+    : DisplayOutputSurface(context_provider, synthetic_begin_frame_source),
       gl_helper_(context_provider->ContextGL(),
-                 context_provider->ContextSupport()),
-      synthetic_begin_frame_source_(synthetic_begin_frame_source),
-      weak_ptr_factory_(this) {
-  buffer_queue_.reset(
-      new BufferQueue(context_provider->ContextGL(), target, internalformat,
-                      display::DisplaySnapshot::PrimaryFormat(), &gl_helper_,
-                      gpu_memory_buffer_manager, widget));
-
+                 context_provider->ContextSupport()) {
   capabilities_.uses_default_gl_framebuffer = false;
   capabilities_.flipped_output_surface = true;
   capabilities_.supports_stencil = true;
@@ -50,32 +43,17 @@
   // implementation.
   capabilities_.max_frames_pending = 2;
 
+  buffer_queue_.reset(
+      new BufferQueue(context_provider->ContextGL(), target, internalformat,
+                      display::DisplaySnapshot::PrimaryFormat(), &gl_helper_,
+                      gpu_memory_buffer_manager, widget));
   buffer_queue_->Initialize();
-
-  context_provider->SetSwapBuffersCompletionCallback(
-      base::Bind(&DisplayOutputSurfaceOzone::OnGpuSwapBuffersCompleted,
-                 weak_ptr_factory_.GetWeakPtr()));
-  context_provider->SetUpdateVSyncParametersCallback(
-      base::Bind(&DisplayOutputSurfaceOzone::OnVSyncParametersUpdated,
-                 weak_ptr_factory_.GetWeakPtr()));
 }
 
 DisplayOutputSurfaceOzone::~DisplayOutputSurfaceOzone() {
   // TODO(rjkroege): Support cleanup.
 }
 
-void DisplayOutputSurfaceOzone::BindToClient(cc::OutputSurfaceClient* client) {
-  DCHECK(client);
-  DCHECK(!client_);
-  client_ = client;
-}
-
-void DisplayOutputSurfaceOzone::EnsureBackbuffer() {}
-
-void DisplayOutputSurfaceOzone::DiscardBackbuffer() {
-  context_provider()->ContextGL()->DiscardBackbufferCHROMIUM();
-}
-
 void DisplayOutputSurfaceOzone::BindFramebuffer() {
   DCHECK(buffer_queue_);
   buffer_queue_->BindFramebuffer();
@@ -93,39 +71,27 @@
                                         bool has_alpha,
                                         bool use_stencil) {
   reshape_size_ = size;
-  context_provider()->ContextGL()->ResizeCHROMIUM(
-      size.width(), size.height(), device_scale_factor, has_alpha);
+  DisplayOutputSurface::Reshape(size, device_scale_factor, color_space,
+                                has_alpha, use_stencil);
   buffer_queue_->Reshape(size, device_scale_factor, color_space, use_stencil);
 }
 
 void DisplayOutputSurfaceOzone::SwapBuffers(cc::OutputSurfaceFrame frame) {
   DCHECK(buffer_queue_);
 
-  // TODO(rjkroege): What if swap happens again before OnGpuSwapBuffersCompleted
+  // TODO(rjkroege): What if swap happens again before DidReceiveSwapBuffersAck
   // then it would see the wrong size?
   DCHECK(reshape_size_ == frame.size);
   swap_size_ = reshape_size_;
 
   buffer_queue_->SwapBuffers(frame.sub_buffer_rect);
-
-  // Code combining GpuBrowserCompositorOutputSurface + DisplayOutputSurface
-  if (frame.sub_buffer_rect == gfx::Rect(frame.size)) {
-    context_provider_->ContextSupport()->Swap();
-  } else {
-    context_provider_->ContextSupport()->PartialSwapBuffers(
-        frame.sub_buffer_rect);
-  }
+  DisplayOutputSurface::SwapBuffers(std::move(frame));
 }
 
 uint32_t DisplayOutputSurfaceOzone::GetFramebufferCopyTextureFormat() {
   return buffer_queue_->internal_format();
 }
 
-cc::OverlayCandidateValidator*
-DisplayOutputSurfaceOzone::GetOverlayCandidateValidator() const {
-  return nullptr;
-}
-
 bool DisplayOutputSurfaceOzone::IsDisplayedAsOverlayPlane() const {
   // TODO(rjkroege): implement remaining overlay functionality.
   return true;
@@ -135,20 +101,8 @@
   return buffer_queue_->current_texture_id();
 }
 
-bool DisplayOutputSurfaceOzone::SurfaceIsSuspendForRecycle() const {
-  return false;
-}
-
-bool DisplayOutputSurfaceOzone::HasExternalStencilTest() const {
-  return false;
-}
-
-void DisplayOutputSurfaceOzone::ApplyExternalStencil() {}
-
-void DisplayOutputSurfaceOzone::OnGpuSwapBuffersCompleted(
-    const std::vector<ui::LatencyInfo>& latency_info,
-    gfx::SwapResult result,
-    const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
+void DisplayOutputSurfaceOzone::DidReceiveSwapBuffersAck(
+    gfx::SwapResult result) {
   bool force_swap = false;
   if (result == gfx::SwapResult::SWAP_NAK_RECREATE_BUFFERS) {
     // Even through the swap failed, this is a fixable error so we can pretend
@@ -159,19 +113,10 @@
   }
 
   buffer_queue_->PageFlipComplete();
-  client_->DidReceiveSwapBuffersAck();
+  client()->DidReceiveSwapBuffersAck();
 
   if (force_swap)
-    client_->SetNeedsRedrawRect(gfx::Rect(swap_size_));
-}
-
-void DisplayOutputSurfaceOzone::OnVSyncParametersUpdated(
-    base::TimeTicks timebase,
-    base::TimeDelta interval) {
-  // TODO(brianderson): We should not be receiving 0 intervals.
-  synthetic_begin_frame_source_->OnUpdateVSyncParameters(
-      timebase,
-      interval.is_zero() ? cc::BeginFrameArgs::DefaultInterval() : interval);
+    client()->SetNeedsRedrawRect(gfx::Rect(swap_size_));
 }
 
 }  // namespace ui
diff --git a/services/ui/surfaces/display_output_surface_ozone.h b/services/ui/surfaces/display_output_surface_ozone.h
index 0cdea75..105241a 100644
--- a/services/ui/surfaces/display_output_surface_ozone.h
+++ b/services/ui/surfaces/display_output_surface_ozone.h
@@ -12,6 +12,7 @@
 #include "cc/output/in_process_context_provider.h"
 #include "cc/output/output_surface.h"
 #include "components/display_compositor/gl_helper.h"
+#include "services/ui/surfaces/display_output_surface.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gfx/swap_result.h"
@@ -35,7 +36,7 @@
 // "surfaceless" surface (aka one backed by a buffer managed explicitly in
 // mus/ozone. This class is adapted from
 // GpuSurfacelessBrowserCompositorOutputSurface.
-class DisplayOutputSurfaceOzone : public cc::OutputSurface {
+class DisplayOutputSurfaceOzone : public DisplayOutputSurface {
  public:
   DisplayOutputSurfaceOzone(
       scoped_refptr<cc::InProcessContextProvider> context_provider,
@@ -51,9 +52,6 @@
 
  private:
   // cc::OutputSurface implementation.
-  void BindToClient(cc::OutputSurfaceClient* client) override;
-  void EnsureBackbuffer() override;
-  void DiscardBackbuffer() override;
   void BindFramebuffer() override;
   void Reshape(const gfx::Size& size,
                float device_scale_factor,
@@ -62,31 +60,19 @@
                bool use_stencil) override;
   void SwapBuffers(cc::OutputSurfaceFrame frame) override;
   uint32_t GetFramebufferCopyTextureFormat() override;
-  cc::OverlayCandidateValidator* GetOverlayCandidateValidator() const override;
   bool IsDisplayedAsOverlayPlane() const override;
   unsigned GetOverlayTextureId() const override;
-  bool SurfaceIsSuspendForRecycle() const override;
-  bool HasExternalStencilTest() const override;
-  void ApplyExternalStencil() override;
 
-  // Called when a swap completion is signaled from ImageTransportSurface.
-  void OnGpuSwapBuffersCompleted(
-      const std::vector<ui::LatencyInfo>& latency_info,
-      gfx::SwapResult result,
-      const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac);
-  void OnVSyncParametersUpdated(base::TimeTicks timebase,
-                                base::TimeDelta interval);
-
-  cc::OutputSurfaceClient* client_ = nullptr;
+  // DisplayOutputSurface:
+  void DidReceiveSwapBuffersAck(gfx::SwapResult result) override;
 
   display_compositor::GLHelper gl_helper_;
   std::unique_ptr<display_compositor::BufferQueue> buffer_queue_;
-  cc::SyntheticBeginFrameSource* const synthetic_begin_frame_source_;
 
   gfx::Size reshape_size_;
   gfx::Size swap_size_;
 
-  base::WeakPtrFactory<DisplayOutputSurfaceOzone> weak_ptr_factory_;
+  DISALLOW_COPY_AND_ASSIGN(DisplayOutputSurfaceOzone);
 };
 
 }  // namespace ui
diff --git a/services/ui/ws/event_dispatcher.cc b/services/ui/ws/event_dispatcher.cc
index f954ac54..80a0ed6 100644
--- a/services/ui/ws/event_dispatcher.cc
+++ b/services/ui/ws/event_dispatcher.cc
@@ -234,8 +234,17 @@
   std::unique_ptr<Accelerator> accelerator(new Accelerator(id, *event_matcher));
   // If an accelerator with the same id or matcher already exists, then abort.
   for (const auto& pair : accelerators_) {
-    if (pair.first == id || accelerator->EqualEventMatcher(pair.second.get()))
+    if (pair.first == id) {
+      DVLOG(1) << "duplicate accelerator. Accelerator id=" << accelerator->id()
+               << " type=" << event_matcher->type_matcher->type
+               << " flags=" << event_matcher->flags_matcher->flags;
       return false;
+    } else if (accelerator->EqualEventMatcher(pair.second.get())) {
+      DVLOG(1) << "duplicate matcher. Accelerator id=" << accelerator->id()
+               << " type=" << event_matcher->type_matcher->type
+               << " flags=" << event_matcher->flags_matcher->flags;
+      return false;
+    }
   }
   accelerators_.insert(Entry(id, std::move(accelerator)));
   return true;
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 8e14ac1..ac49e74 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -284,7 +284,6 @@
     "//third_party/skia/src/utils/SkDumpCanvas.cpp",
     "//third_party/skia/src/utils/SkFrontBufferedStream.cpp",
     "//third_party/skia/src/utils/SkInterpolator.cpp",
-    "//third_party/skia/src/utils/SkLayer.cpp",
     "//third_party/skia/src/utils/SkMeshUtils.cpp",
     "//third_party/skia/src/utils/SkOSPath.cpp",
     "//third_party/skia/src/utils/SkParsePath.cpp",
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index dde4a27..3b2e944 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -1320,7 +1320,8 @@
                 {
                     "name": "Enabled",
                     "enable_features": [
-                        "OfflinePagesAsyncDownload"
+                        "OfflinePagesAsyncDownload",
+                        "OfflinePagesSvelte"
                     ]
                 }
             ]
@@ -1642,9 +1643,9 @@
             ],
             "experiments": [
                 {
-                    "name": "EnabledGlobalRankingNoVersioned",
+                    "name": "EnabledCGUV20",
                     "params": {
-                        "config_url": "https://www.gstatic.com/chrome/wifiprefetch/precache_config_gm"
+                        "config_url": "https://www.gstatic.com/chrome/wifiprefetch/precache_config_g20"
                     }
                 }
             ]
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
index 8212055..70aee96 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
@@ -476,20 +476,9 @@
 Bug(none) fast/block/positioning/vertical-rl/002.html [ Failure ]
 Bug(none) fast/body-propagation/overflow/001-xhtml.xhtml [ Failure ]
 Bug(none) fast/body-propagation/overflow/001.html [ Failure ]
-Bug(none) fast/body-propagation/overflow/002-xhtml.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/002.html [ Failure ]
-Bug(none) fast/body-propagation/overflow/003-declarative.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/003-xhtml.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/003.html [ Failure ]
-Bug(none) fast/body-propagation/overflow/004-declarative.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/004-xhtml.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/004.html [ Failure ]
 Bug(none) fast/body-propagation/overflow/005-declarative.xhtml [ Failure ]
 Bug(none) fast/body-propagation/overflow/005-xhtml.xhtml [ Failure ]
 Bug(none) fast/body-propagation/overflow/005.html [ Failure ]
-Bug(none) fast/body-propagation/overflow/007-declarative.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/007-xhtml.xhtml [ Failure ]
-Bug(none) fast/body-propagation/overflow/007.html [ Failure ]
 Bug(none) fast/borders/block-mask-overlay-image-outset.html [ Failure ]
 Bug(none) fast/borders/block-mask-overlay-image.html [ Failure ]
 Bug(none) fast/borders/border-antialiasing.html [ Failure ]
@@ -604,26 +593,20 @@
 Bug(none) fast/forms/number/number-appearance-spinbutton-layer.html [ Failure ]
 Bug(none) fast/forms/placeholder-position.html [ Failure ]
 Bug(none) fast/forms/select/listbox-appearance-basic.html [ Failure ]
-Bug(none) fast/forms/select/listbox-scrollbar-incremental-load.html [ Failure ]
 Bug(none) fast/forms/select/menulist-appearance-basic.html [ Failure ]
 Bug(none) fast/forms/select/menulist-appearance-rtl.html [ Failure ]
 Bug(none) fast/forms/select/menulist-deselect-update.html [ Crash Failure ]
 Bug(none) fast/forms/select/menulist-width-change.html [ Crash Failure ]
 Bug(none) fast/forms/select/select-change-listbox-to-popup.html [ Crash Failure ]
-Bug(none) fast/forms/select/select-initial-position.html [ Failure ]
 Bug(none) fast/forms/select/select-writing-direction-natural.html [ Crash Failure ]
 Bug(none) fast/forms/select-popup/popup-menu-appearance-zoom110.html [ Crash ]
 Bug(none) fast/forms/text/input-appearance-selection.html [ Failure ]
-Bug(none) fast/forms/text/input-disabled-color.html [ Failure ]
 Bug(none) fast/forms/text/input-readonly-autoscroll.html [ Failure ]
-Bug(none) fast/forms/text/input-readonly-dimmed.html [ Failure ]
 Bug(none) fast/forms/text/input-table.html [ Failure ]
 Bug(none) fast/forms/text/input-text-scroll-left-on-blur.html [ Failure ]
-Bug(none) fast/forms/text/textfield-outline.html [ Failure ]
 Bug(none) fast/forms/text/textfield-overflow.html [ Failure ]
 Bug(none) fast/forms/textarea/basic-textareas-quirks.html [ Failure ]
 Bug(none) fast/forms/textarea/basic-textareas.html [ Failure ]
-Bug(none) fast/forms/textarea/textarea-scrollbar.html [ Failure ]
 Bug(none) fast/forms/textarea/textarea-scrolled-focus-ring.html [ Failure ]
 Bug(none) fast/forms/textarea/textarea-scrolled-mask.html [ Failure ]
 Bug(none) fast/forms/textarea/textarea-scrolled-type.html [ Failure ]
@@ -632,12 +615,10 @@
 Bug(none) fast/frames/frame-set-scaling-hit.html [ Crash Timeout ]
 Bug(none) fast/frames/frame-set-scaling-rotate.html [ Failure ]
 Bug(none) fast/frames/frame-set-scaling-skew.html [ Failure ]
-Bug(none) fast/frames/iframe-scaling-with-scroll.html [ Failure ]
 Bug(none) fast/frames/iframe-scrolling-attribute.html [ Failure ]
 Bug(none) fast/frames/transparent-scrollbar.html [ Failure ]
 Bug(none) fast/gradients/background-clipped.html [ Failure ]
 Bug(none) fast/gradients/css3-color-stop-units.html [ Failure ]
-Bug(none) fast/hidpi/scrollbar-appearance-decrease-device-scale-factor.html [ Failure ]
 Bug(none) fast/hidpi/scrollbar-appearance-increase-device-scale-factor.html [ Failure ]
 Bug(none) fast/html/details-add-summary-1-and-click.html [ Failure ]
 Bug(none) fast/html/details-add-summary-10-and-click.html [ Failure ]
@@ -880,22 +861,14 @@
 Bug(none) fast/multicol/vertical-rl/float-edge.html [ Failure ]
 Bug(none) fast/multicol/vertical-rl/float-paginate.html [ Failure ]
 Bug(none) fast/multicol/vertical-rl/unsplittable-inline-block.html [ Failure ]
-Bug(none) fast/overflow/002.html [ Failure ]
 Bug(none) fast/overflow/006.html [ Failure ]
 Bug(none) fast/overflow/007.html [ Failure ]
-Bug(none) fast/overflow/childFocusRingClip.html [ Failure ]
 Bug(none) fast/overflow/clip-rects-fixed-ancestor.html [ Failure ]
-Bug(none) fast/overflow/image-selection-highlight.html [ Failure ]
 Bug(none) fast/overflow/overflow-focus-ring.html [ Failure ]
-Bug(none) fast/overflow/overflow-rtl-vertical.html [ Failure ]
-Bug(none) fast/overflow/overflow-rtl.html [ Crash Failure ]
-Bug(none) fast/overflow/overflow-text-hit-testing.html [ Failure ]
 Bug(none) fast/overflow/overflow-update-transform.html [ Failure ]
-Bug(none) fast/overflow/overflow-with-local-background-attachment.html [ Failure ]
 Bug(none) fast/overflow/overflow-x-y.html [ Failure ]
 Bug(none) fast/overflow/position-fixed-transform-clipping.html [ Failure ]
 Bug(none) fast/overflow/scrollRevealButton.html [ Failure ]
-Bug(none) fast/overflow/table-overflow-float.html [ Crash Failure ]
 Bug(none) fast/reflections/abs-position-in-reflection.html [ Crash Failure ]
 Bug(none) fast/reflections/opacity-reflection-transform.html [ Crash Failure ]
 Bug(none) fast/reflections/reflection-direction.html [ Crash Failure ]
@@ -1072,7 +1045,6 @@
 Bug(none) svg/custom/focus-ring.svg [ Failure ]
 Bug(none) svg/custom/foreign-object-skew.svg [ Failure ]
 Bug(none) svg/custom/getscreenctm-in-scrollable-div-area-nested.xhtml [ Failure ]
-Bug(none) svg/custom/getscreenctm-in-scrollable-div-area.xhtml [ Failure ]
 Bug(none) svg/custom/getscreenctm-in-scrollable-svg-area.xhtml [ Failure ]
 Bug(none) svg/custom/grayscale-gradient-mask-2.svg [ Failure ]
 Bug(none) svg/custom/grayscale-gradient-mask.svg [ Failure ]
@@ -1552,10 +1524,6 @@
 
 crbug.com/667071 svg/foreignObject/vertical-foreignObject.html [ Failure ]
 
-Bug(none) fast/overflow/003.xml [ Failure ]
-Bug(none) fast/overflow/overflow-float-stacking.html [ Failure ]
-Bug(none) fast/overflow/overflow-stacking.html [ Failure ]
-
 Bug(none) css3/blending/background-blend-mode-overlapping-accelerated-elements.html [ Failure ]
 Bug(none) css3/blending/mix-blend-mode-simple-text.html [ Failure ]
 Bug(none) css3/blending/mix-blend-mode-simple.html [ Failure ]
@@ -1648,11 +1616,12 @@
 # transforms/transform-overflow.html
 
 # Subpixel adjustments due to differences in compositing
-Bug(none) fast/pagination/auto-height-with-break.html [ Failure ]
 Bug(none) svg/custom/non-scaling-stroke-update.svg [ Failure ]
 Bug(none) svg/custom/use-css-events.svg [ Failure ]
 Bug(none) svg/text/text-layout-crash.html [ Failure ]
 Bug(none) images/color-profile-iframe.html [ Failure ]
+Bug(none) compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure ]
+Bug(none) fast/table/edge-offsets.html [ Failure ]
 
 # Failing because SPv2 applies extra clips for SVG root clip or control clip.
 crbug.com/680325 fast/forms/button-positioned.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/W3CImportExpectations b/third_party/WebKit/LayoutTests/W3CImportExpectations
index eef9545..31fce61 100644
--- a/third_party/WebKit/LayoutTests/W3CImportExpectations
+++ b/third_party/WebKit/LayoutTests/W3CImportExpectations
@@ -227,11 +227,11 @@
 external/wpt/csp [ Skip ]
 external/wpt/cssom [ Skip ]
 external/wpt/cssom-view [ Skip ]
-## Owners: TBD
+## Owners: dom-dev@chromium.org
 # external/wpt/custom-elements [ Pass ]
 external/wpt/custom-elements/v0/registering/unresolved-element-pseudoclass [ Skip ]
 external/wpt/docs [ Skip ]
-## Owners: tkent@chromium.org
+## Owners: dom-dev@chromium.org
 external/wpt/dom [ Pass ]
 ## Owners: dom-dev@chromium.org
 # external/wpt/domparsing [ Pass ]
@@ -257,9 +257,9 @@
 external/wpt/geolocation-API [ Skip ]
 ## Owners: jsbell@chromium.org
 # external/wpt/hr-time [ Pass ]
-## Owners: tkent@chromium.org
+## Owners: dom-dev@chromium.org
 # external/wpt/html [ Pass ]
-## Owners: TBD
+## Owners: dom-dev@chromium.org
 # external/wpt/html-imports [ Pass ]
 external/wpt/html-longdesc [ Skip ]
 external/wpt/html-media-capture [ Skip ]
@@ -322,7 +322,7 @@
 # external/wpt/service-workers [ Pass ]
 ## Owners: jsbell@chromium.org
 # external/wpt/service-workers/cache-storage [ Pass ]
-## Owners: kochi@chromium.org crbug.com/505364
+## Owners: dom-dev@chromium.org
 # external/wpt/shadow-dom [ Pass ]
 ## Owners: domenic@chromium.org,ricea@chromium.org,tyoshino@chromium.org
 external/wpt/streams [ Pass ]
@@ -512,11 +512,6 @@
 external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-003.html [ Skip ]
 external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-004.html [ Skip ]
 
-# these contain an extraneous debug log div ..
-external/wpt/html-imports/link-import-null.html [ Skip ]
-external/wpt/html-imports/link-import.html [ Skip ]
-external/wpt/html-imports/loading-import.html [ Skip ]
-
 # We'll never be able to test WebRTC deny tests since we always auto-allow
 # user media.
 external/wpt/mediacapture-streams/obtaining-local-multimedia-content/navigatorusermedia/deny.html [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/error-attributes.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/error-attributes.html
similarity index 80%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/error-attributes.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/error-attributes.html
index 8fef2dd..33f5464 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/error-attributes.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/error-attributes.html
@@ -1,9 +1,12 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset=utf-8>
 <title>IndexedDB: Error attributes are DOMExceptions</title>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#idbrequest">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
+
 indexeddb_test(
     function(t, db) {
         db.createObjectStore('store');
@@ -31,4 +34,5 @@
     },
     'IDBRequest and IDBTransaction error properties should be DOMExceptions'
 );
+
 </script>
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbcursor-advance-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbcursor-advance-exception-order.html
similarity index 92%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbcursor-advance-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbcursor-advance-exception-order.html
index 0daeb742..13f7fdae 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbcursor-advance-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbcursor-advance-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBCursor advance() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBCursor advance() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbcursor-advance">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbdatabase-transaction-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbdatabase-transaction-exception-order.html
similarity index 88%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbdatabase-transaction-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbdatabase-transaction-exception-order.html
index e8d184b..686f44ef5 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbdatabase-transaction-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbdatabase-transaction-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBDatabase transaction() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBDatabase transaction() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAll-enforcerange.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAll-enforcerange.html
similarity index 74%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAll-enforcerange.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAll-enforcerange.html
index 358c716..d0cbe28 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAll-enforcerange.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAll-enforcerange.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBIndex getAll() uses [EnforceRange]</title>
+<!doctype html>
 <meta charset=utf-8>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<title>IndexedDB: IDBIndex getAll() uses [EnforceRange]</title>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#index-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAllKeys-enforcerange.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAllKeys-enforcerange.html
similarity index 75%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAllKeys-enforcerange.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAllKeys-enforcerange.html
index 5360dc8..e36a69f 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-getAllKeys-enforcerange.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-getAllKeys-enforcerange.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBIndex getAllKeys() uses [EnforceRange]</title>
+<!doctype html>
 <meta charset=utf-8>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<title>IndexedDB: IDBIndex getAllKeys() uses [EnforceRange]</title>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#index-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-query-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-query-exception-order.html
similarity index 90%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-query-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-query-exception-order.html
index ab479f3..fb4aa9c9 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbindex-query-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbindex-query-exception-order.html
@@ -1,15 +1,15 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBIndex query method Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBIndex query method Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-get">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-getall">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-getallkeys">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-count">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-opencursor">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-openkeycursor">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 ['get',
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-add-put-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-add-put-exception-order.html
similarity index 89%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-add-put-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-add-put-exception-order.html
index d9dcc414..6c76b622 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-add-put-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-add-put-exception-order.html
@@ -1,14 +1,14 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore add()/put() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
-<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-add">
+<title>IndexedDB: IDBObjectStore add()/put() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-put">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-add">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
-['add', 'put'].forEach(method => {
+['put', 'add'].forEach(method => {
   indexeddb_test(
     (t, db) => {
       const store = db.createObjectStore('s');
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-clear-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-clear-exception-order.html
similarity index 87%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-clear-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-clear-exception-order.html
index dfc93e8..e2a7707 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-clear-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-clear-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore clear() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBObjectStore clear() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-clear">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-delete-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-delete-exception-order.html
similarity index 90%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-delete-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-delete-exception-order.html
index e0b2bea..9a383e3 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-delete-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-delete-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore delete() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBObjectStore delete() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-delete">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-deleteIndex-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-deleteIndex-exception-order.html
similarity index 90%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-deleteIndex-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-deleteIndex-exception-order.html
index d8af3f97..5b069c6 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-deleteIndex-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-deleteIndex-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore deleteIndex() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBObjectStore deleteIndex() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-deleteindex">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAll-enforcerange.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAll-enforcerange.html
similarity index 71%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAll-enforcerange.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAll-enforcerange.html
index c62f1736..14e8b27e 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAll-enforcerange.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAll-enforcerange.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore getAll() uses [EnforceRange]</title>
+<!doctype html>
 <meta charset=utf-8>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<title>IndexedDB: IDBObjectStore getAll() uses [EnforceRange]</title>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#object-store-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAllKeys-enforcerange.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html
similarity index 72%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAllKeys-enforcerange.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html
index 45d4843..15b45ac9 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-getAllKeys-enforcerange.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBIObjectStore getAllKeys() uses [EnforceRange]</title>
+<!doctype html>
 <meta charset=utf-8>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<title>IndexedDB: IDBIObjectStore getAllKeys() uses [EnforceRange]</title>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#object-store-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-query-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-query-exception-order.html
similarity index 90%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-query-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-query-exception-order.html
index 79040f8..b4d134f 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore-query-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbobjectstore-query-exception-order.html
@@ -1,15 +1,15 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBObjectStore query method Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBObjectStore query method Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-get">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-getall">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-getallkeys">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-count">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-opencursor">
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-openkeycursor">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 ['get',
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbtransaction-objectStore-exception-order.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbtransaction-objectStore-exception-order.html
similarity index 78%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/idbtransaction-objectStore-exception-order.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbtransaction-objectStore-exception-order.html
index 31a9ed92..6bae783e 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/idbtransaction-objectStore-exception-order.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/idbtransaction-objectStore-exception-order.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html>
-<title>IndexedDB: IDBTransaction objectStore() Exception Ordering</title>
+<!doctype html>
 <meta charset=utf-8>
+<title>IndexedDB: IDBTransaction objectStore() Exception Ordering</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbtransaction-objectstore">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="resources/testharness-helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 indexeddb_test(
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/open-request-queue.html
similarity index 87%
rename from third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html
rename to third_party/WebKit/LayoutTests/external/wpt/IndexedDB/open-request-queue.html
index 1f8b99bf..3a77adb 100644
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/open-request-queue.html
@@ -1,8 +1,10 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset=utf-8>
 <title>IndexedDB: open and delete requests are processed as a FIFO queue</title>
-<script src='../../resources/testharness.js'></script>
-<script src='../../resources/testharnessreport.js'></script>
-<script src='resources/testharness-helpers.js'></script>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#request-connection-queue">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
 <script>
 
 async_test(t => {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/support.js b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/support.js
index 4bfaf72c..f1c599c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/support.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/IndexedDB/support.js
@@ -128,3 +128,18 @@
     });
   }, description);
 }
+
+// Call with a Test and an array of expected results in order. Returns
+// a function; call the function when a result arrives and when the
+// expected number appear the order will be asserted and test
+// completed.
+function expect(t, expected) {
+  var results = [];
+  return result => {
+    results.push(result);
+    if (results.length === expected.length) {
+      assert_array_equals(results, expected);
+      t.done();
+    }
+  };
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json b/third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json
index 4f8c3b8..37e5ab9 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json
@@ -17816,6 +17816,12 @@
      {}
     ]
    ],
+   "IndexedDB/error-attributes.html": [
+    [
+     "/IndexedDB/error-attributes.html",
+     {}
+    ]
+   ],
    "IndexedDB/historical.html": [
     [
      "/IndexedDB/historical.html",
@@ -17840,6 +17846,12 @@
      {}
     ]
    ],
+   "IndexedDB/idbcursor-advance-exception-order.html": [
+    [
+     "/IndexedDB/idbcursor-advance-exception-order.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbcursor-advance-invalid.htm": [
     [
      "/IndexedDB/idbcursor-advance-invalid.htm",
@@ -18316,6 +18328,12 @@
      {}
     ]
    ],
+   "IndexedDB/idbdatabase-transaction-exception-order.html": [
+    [
+     "/IndexedDB/idbdatabase-transaction-exception-order.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbdatabase_close.htm": [
     [
      "/IndexedDB/idbdatabase_close.htm",
@@ -18584,6 +18602,18 @@
      {}
     ]
    ],
+   "IndexedDB/idbindex-getAll-enforcerange.html": [
+    [
+     "/IndexedDB/idbindex-getAll-enforcerange.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbindex-getAllKeys-enforcerange.html": [
+    [
+     "/IndexedDB/idbindex-getAllKeys-enforcerange.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbindex-multientry-arraykeypath.htm": [
     [
      "/IndexedDB/idbindex-multientry-arraykeypath.htm",
@@ -18602,6 +18632,12 @@
      {}
     ]
    ],
+   "IndexedDB/idbindex-query-exception-order.html": [
+    [
+     "/IndexedDB/idbindex-query-exception-order.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbindex-rename-abort.html": [
     [
      "/IndexedDB/idbindex-rename-abort.html",
@@ -18820,6 +18856,48 @@
      {}
     ]
    ],
+   "IndexedDB/idbobjectstore-add-put-exception-order.html": [
+    [
+     "/IndexedDB/idbobjectstore-add-put-exception-order.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-clear-exception-order.html": [
+    [
+     "/IndexedDB/idbobjectstore-clear-exception-order.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-delete-exception-order.html": [
+    [
+     "/IndexedDB/idbobjectstore-delete-exception-order.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-deleteIndex-exception-order.html": [
+    [
+     "/IndexedDB/idbobjectstore-deleteIndex-exception-order.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-getAll-enforcerange.html": [
+    [
+     "/IndexedDB/idbobjectstore-getAll-enforcerange.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-getAllKeys-enforcerange.html": [
+    [
+     "/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html",
+     {}
+    ]
+   ],
+   "IndexedDB/idbobjectstore-query-exception-order.html": [
+    [
+     "/IndexedDB/idbobjectstore-query-exception-order.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbobjectstore-rename-abort.html": [
     [
      "/IndexedDB/idbobjectstore-rename-abort.html",
@@ -19312,6 +19390,12 @@
      {}
     ]
    ],
+   "IndexedDB/idbtransaction-objectStore-exception-order.html": [
+    [
+     "/IndexedDB/idbtransaction-objectStore-exception-order.html",
+     {}
+    ]
+   ],
    "IndexedDB/idbtransaction-oncomplete.htm": [
     [
      "/IndexedDB/idbtransaction-oncomplete.htm",
@@ -19436,6 +19520,12 @@
      {}
     ]
    ],
+   "IndexedDB/open-request-queue.html": [
+    [
+     "/IndexedDB/open-request-queue.html",
+     {}
+    ]
+   ],
    "IndexedDB/request_bubble-and-capture.htm": [
     [
      "/IndexedDB/request_bubble-and-capture.htm",
@@ -35219,6 +35309,10 @@
    "c12f2d91554335699409b338fa266bae845ab7d8",
    "testharness"
   ],
+  "IndexedDB/error-attributes.html": [
+   "3e69684b6dc5e23508ced8c7a033a389f6e135b6",
+   "testharness"
+  ],
   "IndexedDB/historical.html": [
    "0c4584e1b021a286445a2a9d3388ff011a1b933e",
    "testharness"
@@ -35235,6 +35329,10 @@
    "6dbb08d166c7c8c2cd5c918b83bb1b15fad50dce",
    "testharness"
   ],
+  "IndexedDB/idbcursor-advance-exception-order.html": [
+   "365472cd405c8fae1383540675f0b078c0bd4df9",
+   "testharness"
+  ],
   "IndexedDB/idbcursor-advance-invalid.htm": [
    "ddb2a1394f4846396f965e60a618f2bde1f57cf9",
    "testharness"
@@ -35551,6 +35649,10 @@
    "0e0ae655c2767b3755490104a28ae26e0d4cd500",
    "testharness"
   ],
+  "IndexedDB/idbdatabase-transaction-exception-order.html": [
+   "8033f0b03f01eb4363291dbc4ef16ae4b66c5bc5",
+   "testharness"
+  ],
   "IndexedDB/idbdatabase_close.htm": [
    "6b0a32c465f735544b89da588bb043bbfbb66230",
    "testharness"
@@ -35727,6 +35829,14 @@
    "25ff4fea8efa519a4aef0a2f157b55dacc63f9c4",
    "testharness"
   ],
+  "IndexedDB/idbindex-getAll-enforcerange.html": [
+   "b6e8d22ea40aec5a96a8fe748129016fcbe31b54",
+   "testharness"
+  ],
+  "IndexedDB/idbindex-getAllKeys-enforcerange.html": [
+   "b65396d5a29c5480e17ec3de9cf9710ab2d4160d",
+   "testharness"
+  ],
   "IndexedDB/idbindex-multientry-arraykeypath.htm": [
    "963cfc67685270be71b03ad978268c540a99b526",
    "testharness"
@@ -35739,6 +35849,10 @@
    "7d6028c0810f8cab7572c448a04c3e246bf1ec5a",
    "testharness"
   ],
+  "IndexedDB/idbindex-query-exception-order.html": [
+   "08dee6a9b0edf24801c3841c720a57f7f3de510e",
+   "testharness"
+  ],
   "IndexedDB/idbindex-rename-abort.html": [
    "34f3b979e4af1095209ea630d193193244fe954a",
    "testharness"
@@ -35883,6 +35997,34 @@
    "ecdfe47233f46edb270f7e57fe2ddf2c56377254",
    "testharness"
   ],
+  "IndexedDB/idbobjectstore-add-put-exception-order.html": [
+   "1a55a0194ff0a48c3689a8095fd2eb25c4cdc7a0",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-clear-exception-order.html": [
+   "246b46c340d37a3232289a53bb8ca32048d2b3ba",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-delete-exception-order.html": [
+   "170b46b8a0792002e3d3491cb95e4c768bccd758",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-deleteIndex-exception-order.html": [
+   "2fbff038323ca4ec3d85bcece55dd59441a3e5fb",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-getAll-enforcerange.html": [
+   "64de20d7ada146b69df90377faef6e4837b5a5e9",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-getAllKeys-enforcerange.html": [
+   "6c2fe5ac83765f679fd2572d4ad0d7d30466480d",
+   "testharness"
+  ],
+  "IndexedDB/idbobjectstore-query-exception-order.html": [
+   "91e12b5c824638c4f46892364ca3572bf5f28cea",
+   "testharness"
+  ],
   "IndexedDB/idbobjectstore-rename-abort.html": [
    "fd0531cf37106187811583999f8cf548f37e5a8a",
    "testharness"
@@ -36207,6 +36349,10 @@
    "3b6d79f577fa4869e801bbc493225beb5f70dbec",
    "testharness"
   ],
+  "IndexedDB/idbtransaction-objectStore-exception-order.html": [
+   "9c3e4f3e4ec46d222a611a812ef1d670741a9b6b",
+   "testharness"
+  ],
   "IndexedDB/idbtransaction-oncomplete.htm": [
    "c1204c119431395ef705ea01dfd67724db21955a",
    "testharness"
@@ -36299,6 +36445,10 @@
    "dda6c0ad4832b2a48980efdcb0efdae995c43fdd",
    "testharness"
   ],
+  "IndexedDB/open-request-queue.html": [
+   "cc9a2dbc7a7e8fcbbf2cb42d3049b561997eb353",
+   "testharness"
+  ],
   "IndexedDB/request_bubble-and-capture.htm": [
    "9c486babd57c2d14bb251d5bba202b3dbd6c802d",
    "testharness"
@@ -36312,7 +36462,7 @@
    "support"
   ],
   "IndexedDB/support.js": [
-   "0dfe81d16dd3f741deb013fda40faa6df9757334",
+   "d419c2daaafebb732e83c0810be816393fdb14f7",
    "support"
   ],
   "IndexedDB/transaction-abort-generator-revert.html": [
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html
deleted file mode 100644
index 68eda3e4..0000000
--- a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML>
-<svg style="display: block; width: 0; height: 0">
-  <defs>
-    <filter id="merge-clean">
-      <feColorMatrix type="matrix" values="0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 0 1" />
-      <feMerge>
-        <feMergeNode></feMergeNode>
-        <feMergeNode in="SourceGraphic"></feMergeNode>
-        <feMergeNode in="SourceAlpha"></feMergeNode>
-        <feMergeNode in="FillPaint"></feMergeNode>
-        <feMergeNode in="StrokePaint"></feMergeNode>
-      </feMerge>
-    </filter>
-    <circle id="circle" r="100" fill="blue" />
-  </defs>
-</svg><script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script>
-function testFilterValue(ctx)
-{
-    // testing filter value
-    assert_equals(ctx.filter, 'none');
-    ctx.filter = 'blur(5px)';
-    assert_equals(ctx.filter, 'blur(5px)');
-
-    ctx.save();
-    ctx.filter = 'none';
-    assert_equals(ctx.filter, 'none');
-    ctx.restore();
-    assert_equals(ctx.filter, 'blur(5px)');
-
-    // Invalid filter should be ignored
-    ctx.filter = 'blur(10)';
-    assert_equals(ctx.filter, 'blur(5px)');
-
-    // verify that exact string is preserved
-    ctx.filter = 'blur(  5px)';
-    assert_equals(ctx.filter, 'blur(  5px)');
-};
-
-function testFilterFillPaintColor(ctx)
-{
-   ctx.filter = 'drop-shadow(0px 10px black)';
-   ctx.fillStyle = '#0f0';
-   ctx.fillRect(25, 25, 50, 50);
-   
-   // the color of pixel (50, 50) must be #0f0
-   var colorData = ctx.getImageData(50, 50, 1, 1).data;
-   assert_equals(colorData[0], 0);
-   assert_equals(colorData[1], 255);
-   assert_equals(colorData[2], 0);
-   assert_equals(colorData[3], 255);
-
-   // the color of pixel (60, 80) must be black
-   colorData = ctx.getImageData(60, 80, 1, 1).data;
-   assert_equals(colorData[0], 0);
-   assert_equals(colorData[1], 0);
-   assert_equals(colorData[2], 0);
-   assert_equals(colorData[3], 0);
-}
-
-function testCSSShorthandFilter(ctx)
-{
-    ctx.filter = 'hue-rotate(45deg) drop-shadow(16px 16px blue)';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(15, 15, 50, 50);
-    var colorData = ctx.getImageData(60, 60, 1, 1).data;
-    assert_equals(colorData[0], 255);
-    assert_equals(colorData[1], 0);
-    assert_equals(colorData[2], 0);
-    assert_equals(colorData[3], 255);
-    var colorData2 = ctx.getImageData(70, 70, 1, 1).data;
-    assert_equals(colorData2[0], 0);
-    assert_equals(colorData2[1], 255);
-    assert_equals(colorData2[2], 0);
-    assert_equals(colorData2[3], 255);
-}
-
-function testWhitelistedSVGFilterNontaintness(ctx)
-{
-    ctx.fillStyle = '#00f';
-    ctx.fillRect(15, 15, 50, 50);
-    ctx.filter = 'blur(5px) url(#merge-clean) blur(5px)';
-    var colorData = ctx.getImageData(25, 25, 1, 1).data;
-    assert_equals(colorData[0], 0);
-    assert_equals(colorData[1], 0);
-    assert_equals(colorData[2], 255);
-    assert_equals(colorData[3], 255);
-}
-
-test(function() {
-    var ocanvas = new OffscreenCanvas(100, 100);
-    var ctx = ocanvas.getContext('2d');
-
-    testFilterValue(ctx);
-    testFilterFillPaintColor(ctx);
-    testCSSShorthandFilter(ctx);
-    testWhitelistedSVGFilterNontaintness(ctx);
-}, 'testFilter should not return any error');
-</script>
-
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-expected.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-expected.html
new file mode 100644
index 0000000..de03258
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-expected.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<canvas id='output0' width='100' height='100'></canvas>
+<canvas id='output1' width='100' height='100'></canvas>
+<canvas id='output2' width='100' height='100'></canvas>
+<canvas id='output3' width='100' height='100'></canvas>
+<canvas id='output4' width='100' height='100'></canvas>
+<canvas id='output5' width='100' height='100'></canvas>
+<canvas id='output6' width='100' height='100'></canvas>
+<canvas id='output7' width='100' height='100'></canvas>
+<canvas id='output8' width='100' height='100'></canvas>
+<canvas id='output9' width='100' height='100'></canvas>
+<canvas id='output10' width='100' height='100'></canvas>
+<canvas id='output11' width='100' height='100'></canvas>
+
+<script>
+var patternCanvas = document.createElement('canvas');
+patternCanvas.width = 30;
+patternCanvas.height = 30;
+var patternCtx = patternCanvas.getContext('2d');
+patternCtx.fillStyle = '#A00';
+patternCtx.fillRect(0, 0, 15, 15);
+patternCtx.fillStyle = '#0A0';
+patternCtx.fillRect(15, 0, 15, 15);
+patternCtx.fillStyle = '#00A';
+patternCtx.fillRect(0, 15, 15, 15);
+patternCtx.fillStyle = "#AA0";
+patternCtx.fillRect(15, 15, 15, 15);
+
+var paint = function(id, filter) {
+  var c = document.getElementById(id);
+  var ctx = c.getContext('2d');
+  ctx.filter = filter;
+  ctx.drawImage(patternCanvas, 5, 5);
+  ctx.drawImage(patternCanvas, 35, 35);
+  ctx.drawImage(patternCanvas, 65, 65);
+  return ctx;
+};
+
+paint('output0', "none");
+paint('output1', "blur(10px)");
+paint('output2', "brightness(40%)");
+paint('output3', "contrast(20%)");
+paint('output4', "drop-shadow(0 0 5px green)");
+paint('output5', "grayscale(100%)");
+paint('output6', "invert(100%)");
+paint('output7', "opacity(50%)");
+paint('output8', "saturate(20%)");
+paint('output9', "sepia(100%)");
+paint('output10', "sepia(1) hue-rotate(200deg)");
+paint('output11', "url(#url)");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker-expected.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker-expected.html
new file mode 100644
index 0000000..de03258
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker-expected.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<canvas id='output0' width='100' height='100'></canvas>
+<canvas id='output1' width='100' height='100'></canvas>
+<canvas id='output2' width='100' height='100'></canvas>
+<canvas id='output3' width='100' height='100'></canvas>
+<canvas id='output4' width='100' height='100'></canvas>
+<canvas id='output5' width='100' height='100'></canvas>
+<canvas id='output6' width='100' height='100'></canvas>
+<canvas id='output7' width='100' height='100'></canvas>
+<canvas id='output8' width='100' height='100'></canvas>
+<canvas id='output9' width='100' height='100'></canvas>
+<canvas id='output10' width='100' height='100'></canvas>
+<canvas id='output11' width='100' height='100'></canvas>
+
+<script>
+var patternCanvas = document.createElement('canvas');
+patternCanvas.width = 30;
+patternCanvas.height = 30;
+var patternCtx = patternCanvas.getContext('2d');
+patternCtx.fillStyle = '#A00';
+patternCtx.fillRect(0, 0, 15, 15);
+patternCtx.fillStyle = '#0A0';
+patternCtx.fillRect(15, 0, 15, 15);
+patternCtx.fillStyle = '#00A';
+patternCtx.fillRect(0, 15, 15, 15);
+patternCtx.fillStyle = "#AA0";
+patternCtx.fillRect(15, 15, 15, 15);
+
+var paint = function(id, filter) {
+  var c = document.getElementById(id);
+  var ctx = c.getContext('2d');
+  ctx.filter = filter;
+  ctx.drawImage(patternCanvas, 5, 5);
+  ctx.drawImage(patternCanvas, 35, 35);
+  ctx.drawImage(patternCanvas, 65, 65);
+  return ctx;
+};
+
+paint('output0', "none");
+paint('output1', "blur(10px)");
+paint('output2', "brightness(40%)");
+paint('output3', "contrast(20%)");
+paint('output4', "drop-shadow(0 0 5px green)");
+paint('output5', "grayscale(100%)");
+paint('output6', "invert(100%)");
+paint('output7', "opacity(50%)");
+paint('output8', "saturate(20%)");
+paint('output9', "sepia(100%)");
+paint('output10', "sepia(1) hue-rotate(200deg)");
+paint('output11', "url(#url)");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker.html
new file mode 100644
index 0000000..0d635b4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter-in-worker.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<canvas id='output0' width='100' height='100'></canvas>
+<canvas id='output1' width='100' height='100'></canvas>
+<canvas id='output2' width='100' height='100'></canvas>
+<canvas id='output3' width='100' height='100'></canvas>
+<canvas id='output4' width='100' height='100'></canvas>
+<canvas id='output5' width='100' height='100'></canvas>
+<canvas id='output6' width='100' height='100'></canvas>
+<canvas id='output7' width='100' height='100'></canvas>
+<canvas id='output8' width='100' height='100'></canvas>
+<canvas id='output9' width='100' height='100'></canvas>
+<canvas id='output10' width='100' height='100'></canvas>
+<canvas id='output11' width='100' height='100'></canvas>
+
+<script id='myWorker' type='text/worker'>
+self.onmessage = function(e) {
+
+  var paint = function(filter) {
+    var aCanvas = new OffscreenCanvas(100, 100);
+    var ctx = aCanvas.getContext('2d');
+    ctx.filter = filter;
+    ctx.drawImage(e.data, 5, 5);
+    ctx.drawImage(e.data, 35, 35);
+    ctx.drawImage(e.data, 65, 65);
+    return aCanvas;
+  };
+
+  var canvas = [];
+
+  // canvas[0] = paint("blur(10px)");
+
+  canvas[0] = paint("none");
+  canvas[1] = paint("blur(10px)");
+  canvas[2] = paint("brightness(40%)");
+  canvas[3] = paint("contrast(20%)");
+  canvas[4] = paint("drop-shadow(0 0 5px green)");
+  canvas[5] = paint("grayscale(100%)");
+  canvas[6] = paint("invert(100%)");
+  canvas[7] = paint("opacity(50%)");
+  canvas[8] = paint("saturate(20%)");
+  canvas[9] = paint("sepia(100%)");
+  canvas[10] = paint("sepia(1) hue-rotate(200deg)");
+  canvas[11] = paint("url(#url)");
+
+  var ret = [];
+  for (var i = 0; i < canvas.length; ++i) {
+    var img = canvas[i].transferToImageBitmap();
+    ret.push(img);
+  }
+
+  self.postMessage(ret, ret);
+};
+</script>
+
+<script>
+if (window.testRunner) {
+  testRunner.waitUntilDone();
+}
+
+var patternCanvas = document.createElement('canvas');
+patternCanvas.width = 30;
+patternCanvas.height = 30;
+var patternCtx = patternCanvas.getContext('2d');
+patternCtx.fillStyle = '#A00';
+patternCtx.fillRect(0, 0, 15, 15);
+patternCtx.fillStyle = '#0A0';
+patternCtx.fillRect(15, 0, 15, 15);
+patternCtx.fillStyle = '#00A';
+patternCtx.fillRect(0, 15, 15, 15);
+patternCtx.fillStyle = "#AA0";
+patternCtx.fillRect(15, 15, 15, 15);
+createImageBitmap(patternCanvas).then(consumeImageBitmap);
+
+function consumeImageBitmap(patternImage) {
+  var blob = new Blob([document.getElementById('myWorker').textContent]);
+  var worker = new Worker(URL.createObjectURL(blob));
+  worker.addEventListener('message', msg => {
+    for (var i = 0; i < msg.data.length; ++i) {
+      var outputCtx = document.getElementById('output' + i).getContext('bitmaprenderer');
+      outputCtx.transferFromImageBitmap(msg.data[i]);
+    }
+    if (window.testRunner) {
+      testRunner.notifyDone();
+    }
+  });
+  worker.postMessage(patternImage, [patternImage]);
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter.html
new file mode 100644
index 0000000..8ac08500
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-filter.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<canvas id='output0' width='100' height='100'></canvas>
+<canvas id='output1' width='100' height='100'></canvas>
+<canvas id='output2' width='100' height='100'></canvas>
+<canvas id='output3' width='100' height='100'></canvas>
+<canvas id='output4' width='100' height='100'></canvas>
+<canvas id='output5' width='100' height='100'></canvas>
+<canvas id='output6' width='100' height='100'></canvas>
+<canvas id='output7' width='100' height='100'></canvas>
+<canvas id='output8' width='100' height='100'></canvas>
+<canvas id='output9' width='100' height='100'></canvas>
+<canvas id='output10' width='100' height='100'></canvas>
+<canvas id='output11' width='100' height='100'></canvas>
+
+<script>
+var patternCanvas = document.createElement('canvas');
+patternCanvas.width = 30;
+patternCanvas.height = 30;
+var patternCtx = patternCanvas.getContext('2d');
+patternCtx.fillStyle = '#A00';
+patternCtx.fillRect(0, 0, 15, 15);
+patternCtx.fillStyle = '#0A0';
+patternCtx.fillRect(15, 0, 15, 15);
+patternCtx.fillStyle = '#00A';
+patternCtx.fillRect(0, 15, 15, 15);
+patternCtx.fillStyle = "#AA0";
+patternCtx.fillRect(15, 15, 15, 15);
+
+var paint = function(id, filter) {
+  var oc = new OffscreenCanvas(100, 100);
+  var ctx = oc.getContext('2d');
+  ctx.filter = filter;
+  ctx.drawImage(patternCanvas, 5, 5);
+  ctx.drawImage(patternCanvas, 35, 35);
+  ctx.drawImage(patternCanvas, 65, 65);
+
+  var c = document.getElementById(id);
+  var c = c.getContext('2d');
+  c.drawImage(oc, 0, 0);
+};
+
+paint('output0', "none");
+paint('output1', "blur(10px)");
+paint('output2', "brightness(40%)");
+paint('output3', "contrast(20%)");
+paint('output4', "drop-shadow(0 0 5px green)");
+paint('output5', "grayscale(100%)");
+paint('output6', "invert(100%)");
+paint('output7', "opacity(50%)");
+paint('output8', "saturate(20%)");
+paint('output9', "sepia(100%)");
+paint('output10', "sepia(1) hue-rotate(200deg)");
+paint('output11', "url(#url)");
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index 9f14b26..632fb9c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -622,6 +622,7 @@
 interface OffscreenCanvasRenderingContext2D
     getter canvas
     getter fillStyle
+    getter filter
     getter globalAlpha
     getter globalCompositeOperation
     getter imageSmoothingEnabled
@@ -674,6 +675,7 @@
     method transform
     method translate
     setter fillStyle
+    setter filter
     setter globalAlpha
     setter globalCompositeOperation
     setter imageSmoothingEnabled
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel-expected.txt
new file mode 100644
index 0000000..39a3de5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel-expected.txt
@@ -0,0 +1,4 @@
+Animation created
+Animation started
+Animation canceled
+
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel.html b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel.html
new file mode 100644
index 0000000..01aba78c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script>
+<script>
+
+function triggerEmptyTransition()
+{
+    node.style.transition = "1s";
+    node.offsetTop;
+    node.style.width = "200px";
+    node.offsetTop;
+    // Deliberately delay for two RAFs, which causes the animation to start
+    // before we cancel it by clearing the transition.
+    window.requestAnimationFrame(function() {
+      window.requestAnimationFrame(function() {
+        node.style.transition = "";
+      });
+    });
+}
+
+function test()
+{
+    InspectorTest.eventHandler["Animation.animationCreated"] = onCreated;
+    InspectorTest.eventHandler["Animation.animationStarted"] = onStarted;
+    InspectorTest.eventHandler["Animation.animationCanceled"] = onCanceled;
+    InspectorTest.sendCommand("Animation.enable", {});
+    InspectorTest.evaluateInPage("triggerEmptyTransition()", function() {});
+
+    function onCreated()
+    {
+        InspectorTest.log("Animation created");
+    }
+
+    function onStarted()
+    {
+        InspectorTest.log("Animation started");
+    }
+
+    function onCanceled()
+    {
+        InspectorTest.log("Animation canceled");
+        InspectorTest.completeTest();
+    }
+}
+
+</script>
+</head>
+<body onload="runTest()">
+    <div id="node" style="background-color: red; width: 100px"></div>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/inspector/console/console-timestamp-expected.txt b/third_party/WebKit/LayoutTests/inspector/console/console-timestamp-expected.txt
index 941d31e..5256333f 100644
--- a/third_party/WebKit/LayoutTests/inspector/console/console-timestamp-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/console/console-timestamp-expected.txt
@@ -9,4 +9,11 @@
 2014-05-13 16:53:21.000 <After>
 2014-05-13 16:53:21.000 <After>
 2014-05-13 16:53:21.456 <After>
+Console messages with short timestamps:
+16:53:20.123 <Before>
+16:53:20.123 <Before>
+16:53:20.456 <Before>
+16:53:21.000 <After>
+16:53:21.000 <After>
+16:53:21.456 <After>
 
diff --git a/third_party/WebKit/LayoutTests/inspector/console/console-timestamp.html b/third_party/WebKit/LayoutTests/inspector/console/console-timestamp.html
index 634b5d0..8e75051 100644
--- a/third_party/WebKit/LayoutTests/inspector/console/console-timestamp.html
+++ b/third_party/WebKit/LayoutTests/inspector/console/console-timestamp.html
@@ -37,16 +37,20 @@
     InspectorTest.dumpConsoleMessages();
 
     InspectorTest.addResult("Console messages with timestamps enabled:");
-    Common.settingForTest("consoleTimestampsEnabled").set(true);
+    Common.settingForTest("consoleTimestampFormat").set(Console.ConsoleViewMessage.TimestampFormat.Full);
 
     addMessageWithFixedTimestamp("<After>", baseTimestamp + 1000);
     addMessageWithFixedTimestamp("<After>", baseTimestamp + 1000);
     addMessageWithFixedTimestamp("<After>", baseTimestamp + 1456);
 
-    Common.settingForTest("consoleTimestampsEnabled").set(false);
-    Common.settingForTest("consoleTimestampsEnabled").set(true);
+    Common.settingForTest("consoleTimestampFormat").set(Console.ConsoleViewMessage.TimestampFormat.None);
+    Common.settingForTest("consoleTimestampFormat").set(Console.ConsoleViewMessage.TimestampFormat.Full);
 
     InspectorTest.dumpConsoleMessages();
+
+    InspectorTest.addResult("Console messages with short timestamps:");
+    Common.settingForTest("consoleTimestampFormat").set(Console.ConsoleViewMessage.TimestampFormat.Short);
+    InspectorTest.dumpConsoleMessages();
     InspectorTest.completeTest();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-profile-removal.html b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-profile-removal.html
index 9868123..0bd0b122 100644
--- a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-profile-removal.html
+++ b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-profile-removal.html
@@ -17,7 +17,7 @@
 {
     InspectorTest.startProfilerTest(function() {
         function viewLoaded() {
-            var profiles = UI.panels.heap_profiler;
+            var profiles = UI.panels.js_profiler;
             var type = Profiler.ProfileTypeRegistry.instance.cpuProfileType;
             while (type.getProfiles().length !== 0)
                 type.removeProfile(type.getProfiles()[0]);
diff --git a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-save-load.html b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-save-load.html
index 5774543..6b4aa54 100644
--- a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-save-load.html
+++ b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-save-load.html
@@ -102,7 +102,7 @@
                 }
                 next();
             }
-            var profilesPanel = UI.panels.heap_profiler;
+            var profilesPanel = UI.panels.js_profiler;
             var profileName = file.name.substr(0, file.name.length - ".cpuprofile".length);
             InspectorTest.waitUntilProfileViewIsShown(profileName, checkLoadedContent);
             profilesPanel._loadFromFile(file);
@@ -111,7 +111,7 @@
             {
                 loadedProfileData = this._jsonifiedProfile;
                 onTransferFinished.call(this);
-                UI.panels.heap_profiler.showProfile(this);
+                UI.panels.js_profiler.showProfile(this);
             }
         }
 
diff --git a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-stopped-removed-race.html b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-stopped-removed-race.html
index 028ba78..ee5935c1 100644
--- a/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-stopped-removed-race.html
+++ b/third_party/WebKit/LayoutTests/inspector/profiler/cpu-profiler-stopped-removed-race.html
@@ -12,7 +12,7 @@
             var cpuProfiler = SDK.targetManager.mainTarget().cpuProfilerModel;
             var targetManager = SDK.targetManager;
             targetManager.addEventListener(SDK.TargetManager.Events.SuspendStateChanged, onSuspendStateChanged);
-            var profilesPanel = UI.panels.heap_profiler;
+            var profilesPanel = UI.panels.js_profiler;
             InspectorTest.addSniffer(cpuProfiler, "stopRecording", stopRecording);
             InspectorTest.addSniffer(profilesPanel, "_addProfileHeader", onAddProfileHeader);
             profilesPanel.toggleRecord();  // Start profiling.
diff --git a/third_party/WebKit/LayoutTests/inspector/profiler/profiler-test.js b/third_party/WebKit/LayoutTests/inspector/profiler/profiler-test.js
index 4de21aa3..79e0808 100644
--- a/third_party/WebKit/LayoutTests/inspector/profiler/profiler-test.js
+++ b/third_party/WebKit/LayoutTests/inspector/profiler/profiler-test.js
@@ -1,12 +1,12 @@
 var initialize_ProfilerTest = function() {
 
-InspectorTest.preloadPanel("heap_profiler");
+InspectorTest.preloadPanel("js_profiler");
 Bindings.TempFile = InspectorTest.TempFileMock;
 
 InspectorTest.startProfilerTest = function(callback)
 {
     InspectorTest.addResult("Profiler was enabled.");
-    InspectorTest.addSniffer(UI.panels.heap_profiler, "_addProfileHeader", InspectorTest._profileHeaderAdded, true);
+    InspectorTest.addSniffer(UI.panels.js_profiler, "_addProfileHeader", InspectorTest._profileHeaderAdded, true);
     InspectorTest.addSniffer(Profiler.ProfileView.prototype, "refresh", InspectorTest._profileViewRefresh, true);
     InspectorTest.safeWrap(callback)();
 };
@@ -46,14 +46,14 @@
 InspectorTest._profileHeaderAdded = function(profile)
 {
     if (InspectorTest._showProfileWhenAdded === profile.title)
-        UI.panels.heap_profiler.showProfile(profile);
+        UI.panels.js_profiler.showProfile(profile);
 };
 
 InspectorTest.waitUntilProfileViewIsShown = function(title, callback)
 {
     callback = InspectorTest.safeWrap(callback);
 
-    var profilesPanel = UI.panels.heap_profiler;
+    var profilesPanel = UI.panels.js_profiler;
     if (profilesPanel.visibleView && profilesPanel.visibleView.profile && profilesPanel.visibleView._profileHeader.title === title)
         callback(profilesPanel.visibleView);
     else
diff --git a/third_party/WebKit/LayoutTests/inspector/user-metrics-expected.txt b/third_party/WebKit/LayoutTests/inspector/user-metrics-expected.txt
index bf3430f4..6ab094d7 100644
--- a/third_party/WebKit/LayoutTests/inspector/user-metrics-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/user-metrics-expected.txt
@@ -44,7 +44,7 @@
     sources : 4
     timeline : 5
 }
-Panel shown: heap_profiler
+Panel shown: js_profiler
 Panel shown: timeline
 Panel shown: audits
 
diff --git a/third_party/WebKit/LayoutTests/inspector/user-metrics.html b/third_party/WebKit/LayoutTests/inspector/user-metrics.html
index 453d77d..ca156a6 100644
--- a/third_party/WebKit/LayoutTests/inspector/user-metrics.html
+++ b/third_party/WebKit/LayoutTests/inspector/user-metrics.html
@@ -32,7 +32,7 @@
 
     InspectorTest.addResult("\nrecordPanelShown:");
     InspectorTest.dump(Host.UserMetrics._PanelCodes);
-    UI.viewManager.showView("heap_profiler");
+    UI.viewManager.showView("js_profiler");
     UI.viewManager.showView("timeline");
     UI.viewManager.showView("audits");
 
diff --git a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index 20069ec2..76f3340 100644
--- a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -629,6 +629,7 @@
 interface OffscreenCanvasRenderingContext2D
     getter canvas
     getter fillStyle
+    getter filter
     getter globalAlpha
     getter globalCompositeOperation
     getter imageSmoothingEnabled
@@ -681,6 +682,7 @@
     method transform
     method translate
     setter fillStyle
+    setter filter
     setter globalAlpha
     setter globalCompositeOperation
     setter imageSmoothingEnabled
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal-expected.txt
deleted file mode 100644
index 2ce064d..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-PASS Rendered signal is of correct length.
-PASS Rendered signal exactly matches the audio-rate gain changing signal.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal.html
index fbd034a7..6281e91 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-connect-audioratesignal.html
@@ -1,113 +1,104 @@
 <!DOCTYPE html>
 
-<!--
-Tests that an audio-rate signal (AudioNode output) can be connected to an AudioParam.
-Specifically, this tests that an audio-rate signal coming from an AudioBufferSourceNode
-playing an AudioBuffer containing a specific curve can be connected to an AudioGainNode's
-.gain attribute (an AudioParam).  Another AudioBufferSourceNode will be the audio source
-having its gain changed.  We load this one with an AudioBuffer containing a constant value of 1.
-Thus it's easy to check that the resultant signal should be equal to the gain-scaling curve.
+<!-- 
+Tests that an audio-rate signal (AudioNode output) can be connected to an
+AudioParam.  Specifically, this tests that an audio-rate signal coming from an
+AudioBufferSourceNode playing an AudioBuffer containing a specific curve can be
+connected to an AudioGainNode's .gain attribute (an AudioParam).  Another
+AudioBufferSourceNode will be the audio source having its gain changed.  We load
+this one with an AudioBuffer containing a constant value of 1.  Thus it's easy
+to check that the resultant signal should be equal to the gain-scaling curve.
 -->
 
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 
 </head>
 <body>
 
 <script>
+let audit = Audit.createTaskRunner();
 
-var sampleRate = 44100.0;
-var lengthInSeconds = 1;
+let sampleRate = 44100.0;
+let lengthInSeconds = 1;
 
-var context = 0;
-var constantOneBuffer = 0;
-var linearRampBuffer = 0;
+let context = 0;
+let constantOneBuffer = 0;
+let linearRampBuffer = 0;
 
-function checkResult(event) {
-    var renderedBuffer = event.renderedBuffer;
-    var renderedData = renderedBuffer.getChannelData(0);
-    var expectedData = linearRampBuffer.getChannelData(0);
-    var n = renderedBuffer.length;
+function checkResult(renderedBuffer, should) {
+  let renderedData = renderedBuffer.getChannelData(0);
+  let expectedData = linearRampBuffer.getChannelData(0);
+  let n = renderedBuffer.length;
 
-    if (n == linearRampBuffer.length) {
-        testPassed("Rendered signal is of correct length.");
-    } else {
-        testFailed("Rendered signal is not of correct length.");
+  should(n, 'Rendered signal length').beEqualTo(linearRampBuffer.length);
+
+  // Check that the rendered result exactly matches the buffer used to control
+  // gain.  This is because we're changing the gain of a signal having constant
+  // value 1.
+  let success = true;
+  for (let i = 0; i < n; ++i) {
+    if (renderedData[i] != expectedData[i]) {
+      success = false;
+      break;
     }
+  }
 
-    // Check that the rendered result exactly matches the buffer used to control gain.
-    // This is because we're changing the gain of a signal having constant value 1.
-    var success = true;
-    for (var i = 0; i < n; ++i) {
-        if (renderedData[i] != expectedData[i]) {
-            success = false;
-            break;
-        }
-    }
-
-    if (success) {
-        testPassed("Rendered signal exactly matches the audio-rate gain changing signal.");
-    } else {
-        testFailed("Rendered signal differs from the audio-rate gain changing signal.");
-    }
-
-    finishJSTest();
+  should(
+      success,
+      'Rendered signal exactly matches the audio-rate gain changing signal')
+      .beTrue();
 }
 
-function runTest() {
-    if (window.testRunner) {
-        testRunner.dumpAsText();
-        testRunner.waitUntilDone();
-    }
+audit.define('test', function(task, should) {
+  let sampleFrameLength = sampleRate * lengthInSeconds;
 
-    window.jsTestIsAsync = true;
+  // Create offline audio context.
+  context = new OfflineAudioContext(1, sampleFrameLength, sampleRate);
 
-    var sampleFrameLength = sampleRate * lengthInSeconds;
+  // Create buffer used by the source which will have its gain controlled.
+  constantOneBuffer = createConstantBuffer(context, sampleFrameLength, 1);
 
-    // Create offline audio context.
-    context = new OfflineAudioContext(1, sampleFrameLength, sampleRate);
+  // Create buffer used to control gain.
+  linearRampBuffer = createLinearRampBuffer(context, sampleFrameLength);
 
-    // Create buffer used by the source which will have its gain controlled.
-    constantOneBuffer = createConstantBuffer(context, sampleFrameLength, 1);
+  // Create the two sources.
 
-    // Create buffer used to control gain.
-    linearRampBuffer = createLinearRampBuffer(context, sampleFrameLength);
+  let constantSource = context.createBufferSource();
+  constantSource.buffer = constantOneBuffer;
 
-    // Create the two sources.
+  let gainChangingSource = context.createBufferSource();
+  gainChangingSource.buffer = linearRampBuffer;
 
-    var constantSource = context.createBufferSource();
-    constantSource.buffer = constantOneBuffer;
+  // Create a gain node controlling the gain of constantSource and make the
+  // connections.
+  let gainNode = context.createGain();
 
-    var gainChangingSource = context.createBufferSource();
-    gainChangingSource.buffer = linearRampBuffer;
+  // Intrinsic baseline gain of zero.
+  gainNode.gain.value = 0;
 
-    // Create a gain node controlling the gain of constantSource and make the connections.
-    var gainNode = context.createGain();
+  constantSource.connect(gainNode);
+  gainNode.connect(context.destination);
 
-    // Intrinsic baseline gain of zero.
-    gainNode.gain.value = 0;
+  // Connect an audio-rate signal to control the .gain AudioParam.
+  // This is the heart of what is being tested.
+  gainChangingSource.connect(gainNode.gain);
 
-    constantSource.connect(gainNode);
-    gainNode.connect(context.destination);
+  // Start both sources at time 0.
+  constantSource.start(0);
+  gainChangingSource.start(0);
 
-    // Connect an audio-rate signal to control the .gain AudioParam.
-    // This is the heart of what is being tested.
-    gainChangingSource.connect(gainNode.gain);
+  context.startRendering().then(buffer => {
+    checkResult(buffer, should);
+    task.done();
+  });
+});
 
-    // Start both sources at time 0.
-    constantSource.start(0);
-    gainChangingSource.start(0);
-
-    context.oncomplete = checkResult;
-    context.startRendering();
-}
-
-runTest();
-successfullyParsed = true;
+audit.run();
 
 </script>
 
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values-expected.txt
deleted file mode 100644
index fbbb1840..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Test exceptional arguments for AudioParam timeline events
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS gain.gain.setValueAtTime(Infinity, 1) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(Infinity, 1) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(Infinity, 1) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setTargetAtTime(Infinity, 1, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setValueAtTime(-Infinity, 1) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(-Infinity, 1) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(-Infinity, 1) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setTargetAtTime(-Infinity, 1, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setValueAtTime(NaN, 1) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(NaN, 1) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(NaN, 1) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setTargetAtTime(NaN, 1, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite..
-PASS gain.gain.setValueAtTime(1, -1) threw exception InvalidAccessError: Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1.
-PASS gain.gain.linearRampToValueAtTime(1, -1) threw exception InvalidAccessError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1.
-PASS gain.gain.exponentialRampToValueAtTime(1, -1) threw exception InvalidAccessError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1.
-PASS gain.gain.setTargetAtTime(1, -1, 1) threw exception InvalidAccessError: Failed to execute 'setTargetAtTime' on 'AudioParam': Time must be a finite non-negative number: -1.
-PASS gain.gain.setValueAtTime(1, Infinity) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(1, Infinity) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(1, Infinity) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, Infinity, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueAtTime(1, -Infinity) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(1, -Infinity) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(1, -Infinity) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, -Infinity, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueAtTime(1, NaN) threw exception TypeError: Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.linearRampToValueAtTime(1, NaN) threw exception TypeError: Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.exponentialRampToValueAtTime(1, NaN) threw exception TypeError: Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, NaN, 1) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, 1, -1) threw exception InvalidAccessError: Failed to execute 'setTargetAtTime' on 'AudioParam': Time constant must be a finite non-negative number: -1.
-PASS gain.gain.setTargetAtTime(1, 1, Infinity) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, 1, -Infinity) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setTargetAtTime(1, 1, NaN) threw exception TypeError: Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, -1, 1) threw exception InvalidAccessError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': Time must be a finite non-negative number: -1.
-PASS gain.gain.setValueCurveAtTime(curve, Infinity, 1) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, -Infinity, 1) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, NaN, 1) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, 1, -1) threw exception InvalidAccessError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1.
-PASS gain.gain.setValueCurveAtTime(curve, 1, Infinity) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, 1, -Infinity) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, 1, NaN) threw exception TypeError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite..
-PASS gain.gain.setValueCurveAtTime(curve, 1, 0) threw exception InvalidAccessError: Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: 0.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values.html
index a0aedef..298b00a 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exceptional-values.html
@@ -1,80 +1,110 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
-    <script src="../../resources/js-test.js"></script>
+    <script src="../../resources/testharness.js"></script>
+    <script src="../../resources/testharnessreport.js"></script> 
+    <script src="../resources/audit-util.js"></script>
+    <script src="../resources/audit.js"></script>
   </head>
 
   <body>
     <script>
-      description("Test exceptional arguments for AudioParam timeline events");
+      let audit = Audit.createTaskRunner();
 
-      var context;
-      var gain;
-
-      // For these values, AudioParam methods should throw an error because they are invalid; only
+      // For these values, AudioParam methods should throw an error because they
+      // are invalid; only
       // finite values are allowed.
-      var targetValues = [Infinity, -Infinity, NaN];
+      let targetValues = [Infinity, -Infinity, NaN];
 
-      // For these time values, AudioParam methods should throw an error because they are
-      // invalid. Only finite non-negative values are allowed for any time or time-like parameter.
-      var timeValues = [-1, Infinity, -Infinity, NaN];
+      // For these time values, AudioParam methods should throw an error because
+      // they are
+      // invalid. Only finite non-negative values are allowed for any time or
+      // time-like parameter.
+      let timeValues = [-1, Infinity, -Infinity, NaN];
 
-      // For these duration values, AudioParam methods should throw an error because they are
+      // For these duration values, AudioParam methods should throw an error
+      // because they are
       // invalid. Only finite values are allowed for any duration parameter.
-      var durationValues = [-1, Infinity, -Infinity, NaN, 0];
+      let durationValues = [-1, Infinity, -Infinity, NaN, 0];
 
-      // For these timeConstant values for setTargetAtTime an error must be thrown because they are
+      // For these timeConstant values for setTargetAtTime an error must be
+      // thrown because they are
       // invalid.
-      var timeConstantValues = [-1, Infinity, -Infinity, NaN];
+      let timeConstantValues = [-1, Infinity, -Infinity, NaN];
 
-      // Just an array for use by setValueCurveAtTime. The length and contents of the array are not
+      // Just an array for use by setValueCurveAtTime. The length and contents
+      // of the array are not
       // important.
-      var curve = new Float32Array(10);
+      let curve = new Float32Array(10);
 
-      function runTest() {
-        if (window.testRunner) {
-            testRunner.dumpAsText();
-            testRunner.waitUntilDone();
-        }
-        window.jsTestIsAsync = true;
-
-        context = new AudioContext();
-        gain = context.createGain();
+      audit.define('test', function(task, should) {
+        task.describe(
+            'Test exceptional arguments for AudioParam timeline events');
+        let context = new AudioContext();
+        let gain = context.createGain();
 
         // Test the value parameter
         for (value of targetValues) {
-          shouldThrow("gain.gain.setValueAtTime(" + value + ", 1)");
-          shouldThrow("gain.gain.linearRampToValueAtTime(" + value + ", 1)");
-          shouldThrow("gain.gain.exponentialRampToValueAtTime(" + value + ", 1)");
-          shouldThrow("gain.gain.setTargetAtTime(" + value + ", 1, 1)");
+          let testMethods = [
+            {name: 'setValueAtTime', arg: [value, 1]},
+            {name: 'linearRampToValueAtTime', arg: [value, 1]},
+            {name: 'exponentialRampToValueAtTime', arg: [value, 1]},
+            {name: 'setTargetAtTime', arg: [value, 1, 1]}
+          ];
+
+          for (method of testMethods) {
+            let message = 'gain.gain.' + method.name + '(' + method.arg + ')';
+            should(
+                () => gain.gain[method.name].apply(gain.gain, method.arg),
+                message)
+                .throw();
+          }
         }
 
         // Test the time parameter
         for (startTime of timeValues) {
-          shouldThrow("gain.gain.setValueAtTime(1, " + startTime + ")");
-          shouldThrow("gain.gain.linearRampToValueAtTime(1, " + startTime + ")");
-          shouldThrow("gain.gain.exponentialRampToValueAtTime(1, " + startTime + ")");
-          shouldThrow("gain.gain.setTargetAtTime(1, " + startTime + ", 1)");
+          let testMethods = [
+            {name: 'setValueAtTime', arg: [1, startTime]},
+            {name: 'linearRampToValueAtTime', arg: [1, startTime]},
+            {name: 'exponentialRampToValueAtTime', arg: [1, startTime]},
+            {name: 'setTargetAtTime', arg: [1, startTime, 1]}
+          ];
+
+          for (method of testMethods) {
+            let message = 'gain.gain.' + method.name + '(' + method.arg + ')';
+            should(
+                () => gain.gain[method.name].apply(gain.gain, method.arg),
+                message)
+                .throw();
+          }
         }
 
         // Test time constant
         for (value of timeConstantValues) {
-          shouldThrow("gain.gain.setTargetAtTime(1, 1, " + value + ")");
+          should(
+              () => gain.gain.setTargetAtTime(1, 1, value),
+              'gain.gain.setTargetAtTime(1, 1, ' + value + ')')
+              .throw();
         }
 
         // Test startTime and duration for setValueCurveAtTime
         for (startTime of timeValues) {
-          shouldThrow("gain.gain.setValueCurveAtTime(curve, " + startTime + ", 1)");
+          should(
+              () => gain.gain.setValueCurveAtTime(curve, startTime, 1),
+              'gain.gain.setValueCurveAtTime(curve, ' + startTime + ', 1)')
+              .throw();
         }
         for (duration of durationValues) {
-          shouldThrow("gain.gain.setValueCurveAtTime(curve, 1, " + duration + ")");
+          should(
+              () => gain.gain.setValueCurveAtTime(curve, 1, duration),
+              'gain.gain.setValueCurveAtTime(curve, 1, ' + duration + ')')
+              .throw();
         }
 
-        finishJSTest();
-      }
+        task.done();
+      });
 
-      runTest();
-      successfullyParsed = true;
+      audit.run();
     </script>
   </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-expected.txt
deleted file mode 100644
index be2b432f..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test AudioParam exponentialRampToValueAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 100 tests started and ended at the correct time.
-PASS All 100 tests passed within an acceptable relative tolerance of 0.00001222.
-PASS AudioParam exponentialRampToValueAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime.html
index f3ff722..3ac07f74 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-exponentialRampToValueAtTime.html
@@ -1,65 +1,58 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
-    <script src="../../resources/js-test.js"></script>
+    <script src="../../resources/testharness.js"></script>
+    <script src="../../resources/testharnessreport.js"></script> 
     <script src="../resources/audit-util.js"></script>
-    <script src="../resources/audio-testing.js"></script>
+    <script src="../resources/audit.js"></script>
     <script src="../resources/audioparam-testing.js"></script>
     <title>Test AudioParam.exponentialRampToValueAtTime</title>
   </head>
 
   <body>
-    <div id="description"></div>
-    <div id="console"></div>
-
     <script>
-      description("Test AudioParam exponentialRampToValueAtTime() functionality.");
+      let audit = Audit.createTaskRunner();
 
-      // Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
-      // exponentialRampToValueAtTime() at regular intervals to set the starting and ending values
-      // for an exponential ramp.  Each time interval has a ramp with a different starting and
-      // ending value so that there is a discontinuity at each time interval boundary.  The
-      // discontinuity is for testing timing.  Also, we alternate between an increasing and
-      // decreasing ramp for each interval.
+      // Play a long DC signal out through an AudioGainNode, and call
+      // setValueAtTime() and exponentialRampToValueAtTime() at regular
+      // intervals to set the starting and ending values for an exponential
+      // ramp.  Each time interval has a ramp with a different starting and
+      // ending value so that there is a discontinuity at each time interval
+      // boundary.  The discontinuity is for testing timing.  Also, we alternate
+      // between an increasing and decreasing ramp for each interval.
 
       // Number of tests to run.
-      var numberOfTests = 100;
+      let numberOfTests = 100;
 
-      // Max allowed difference between the rendered data and the expected result.
-      var maxAllowedError = 1.222e-5;
+      // Max allowed difference between the rendered data and the expected
+      // result.
+      let maxAllowedError = 1.222e-5;
 
       // The AudioGainNode starts with this value instead of the default value.
-      var initialValue = 100;
+      let initialValue = 100;
 
       // Set the gain node value to the specified value at the specified time.
-      function setValue(value, time)
-      {
-          gainNode.gain.setValueAtTime(value, time);
+      function setValue(value, time) {
+        gainNode.gain.setValueAtTime(value, time);
       }
 
-      // Generate an exponential ramp ending at time |endTime| with an ending value of |value|.
-      function generateRamp(value, startTime, endTime)
-      {
+      // Generate an exponential ramp ending at time |endTime| with an ending
+      // value of |value|.
+      function generateRamp(value, startTime, endTime){
           // |startTime| is ignored because the exponential ramp
           // uses the value from the setValueAtTime() call above.
-          gainNode.gain.exponentialRampToValueAtTime(value, endTime)
-      }
-      
-      function runTest()
-      {
-          createAudioGraphAndTest(numberOfTests,
-                                  initialValue,
-                                  setValue,
-                                  generateRamp,
-                                  "exponentialRampToValueAtTime()",
-                                  maxAllowedError,
-                                  createExponentialRampArray);
+          gainNode.gain.exponentialRampToValueAtTime(value, endTime)}
 
-      }
+      audit.define('test', function(task, should) {
+        task.describe(
+            'AudioParam exponentialRampToValueAtTime() functionality');
+        createAudioGraphAndTest(
+            task, should, numberOfTests, initialValue, setValue, generateRamp,
+            'exponentialRampToValueAtTime()', maxAllowedError,
+            createExponentialRampArray);
+      });
 
-      runTest();
-      successfullyParsed = true;
-      
+      audit.run();
     </script>
 
   </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime-expected.txt
deleted file mode 100644
index 5a62e28..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test AudioParam linearRampToValueAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 100 tests started and ended at the correct time.
-PASS All 100 tests passed within an acceptable relative tolerance of 0.000001865.
-PASS AudioParam linearRampToValueAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime.html
index ce9bb217..a072f76 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-linearRampToValueAtTime.html
@@ -1,60 +1,51 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 <script src="../resources/audioparam-testing.js"></script>
 <title>Test AudioParam.linearRampToValueAtTime</title>
 </head>
 
 <body>
-<div id="description"></div>
-<div id="console"></div>
-
 <script>
-description("Test AudioParam linearRampToValueAtTime() functionality.");
+let audit = Audit.createTaskRunner();
 
-// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
-// linearRampToValueAtTime() at regular intervals to set the starting and ending values for a
-// linear ramp. Each time interval has a ramp with a different starting and ending value so
-// that there is a discontinuity at each time interval boundary.  The discontinuity is for
-// testing timing.  Also, we alternate between an increasing and decreasing ramp for each
-// interval.
+// Play a long DC signal out through an AudioGainNode, and call setValueAtTime()
+// and linearRampToValueAtTime() at regular intervals to set the starting and
+// ending values for a linear ramp. Each time interval has a ramp with a
+// different starting and ending value so that there is a discontinuity at each
+// time interval boundary.  The discontinuity is for testing timing.  Also, we
+// alternate between an increasing and decreasing ramp for each interval.
 
 // Number of tests to run.
-var numberOfTests = 100;
+let numberOfTests = 100;
 
 // Max allowed difference between the rendered data and the expected result.
-var maxAllowedError = 1.865e-6;
+let maxAllowedError = 1.865e-6;
 
 // Set the gain node value to the specified value at the specified time.
-function setValue(value, time)
-{
-    gainNode.gain.setValueAtTime(value, time);
+function setValue(value, time) {
+  gainNode.gain.setValueAtTime(value, time);
 }
 
-// Generate a linear ramp ending at time |endTime| with an ending value of |value|.
-function generateRamp(value, startTime, endTime)
-{
-    // |startTime| is ignored because the linear ramp uses the value from the setValueAtTime() call above.
-    gainNode.gain.linearRampToValueAtTime(value, endTime)
-}
+// Generate a linear ramp ending at time |endTime| with an ending value of
+// |value|.
+function generateRamp(value, startTime, endTime){
+    // |startTime| is ignored because the linear ramp uses the value from the
+    // setValueAtTime() call above.
+    gainNode.gain.linearRampToValueAtTime(value, endTime)}
 
-function runTest()
-{
-    createAudioGraphAndTest(numberOfTests,
-                            1,
-                            setValue,
-                            generateRamp,
-                            "linearRampToValueAtTime()",
-                            maxAllowedError,
-                            createLinearRampArray);
-}
+audit.define('test', function(task, should) {
+  task.describe('AudioParam linearRampToValueAtTime() functionality');
+  createAudioGraphAndTest(
+      task, should, numberOfTests, 1, setValue, generateRamp,
+      'linearRampToValueAtTime()', maxAllowedError, createLinearRampArray);
+});
 
-runTest();
-successfullyParsed = true;
-  
+audit.run();
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-expected.txt
deleted file mode 100644
index e481a96..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test AudioParam setTargetAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 100 tests started and ended at the correct time.
-PASS All 100 tests passed within an acceptable relative tolerance of 0.0000016953.
-PASS AudioParam setTargetAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime.html
index 0fd4d74..e93b9d1 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime.html
@@ -1,25 +1,24 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 <script src="../resources/audioparam-testing.js"></script>
 <title>Test AudioParam.setTargetAtTime</title>
 </head>
 
 <body>
-<div id="description"></div>
-<div id="console"></div>
-
 <script>
-description("Test AudioParam setTargetAtTime() functionality.");
+let audit = Audit.createTaskRunner();
 
-// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
-// setTargetAtTime at regular intervals to set the starting value and the target
-// value. Each time interval has a ramp with a different starting and target value so that
-// there is a discontinuity at each time interval boundary.  The discontinuity is for testing
-// timing.  Also, we alternate between an increasing and decreasing ramp for each interval.
+// Play a long DC signal out through an AudioGainNode, and call setValueAtTime()
+// and setTargetAtTime at regular intervals to set the starting value and the
+// target value. Each time interval has a ramp with a different starting and
+// target value so that there is a discontinuity at each time interval boundary.
+// The discontinuity is for testing timing.  Also, we alternate between an
+// increasing and decreasing ramp for each interval.
 
 // Number of tests to run.
 var numberOfTests = 100;
@@ -31,32 +30,24 @@
 var initialValue = 100;
 
 // Set the gain node value to the specified value at the specified time.
-function setValue(value, time)
-{
-    gainNode.gain.setValueAtTime(value, time);
+function setValue(value, time) {
+  gainNode.gain.setValueAtTime(value, time);
 }
 
-// Generate an exponential approach starting at |startTime| with a target value of |value|.
-function automation(value, startTime, endTime)
-{
+// Generate an exponential approach starting at |startTime| with a target value
+// of |value|.
+function automation(value, startTime, endTime){
     // endTime is not used for setTargetAtTime.
-    gainNode.gain.setTargetAtTime(value, startTime, timeConstant)
-}
+    gainNode.gain.setTargetAtTime(value, startTime, timeConstant)}
 
-function runTest()
-{
-    createAudioGraphAndTest(numberOfTests,
-                            initialValue,
-                            setValue,
-                            automation,
-                            "setTargetAtTime()",
-                            maxAllowedError,
-                            createExponentialApproachArray);
-}
+audit.define('test', function(task, should) {
+  task.describe('AudioParam setTargetAtTime() functionality.');
+  createAudioGraphAndTest(
+      task, should, numberOfTests, initialValue, setValue, automation,
+      'setTargetAtTime()', maxAllowedError, createExponentialApproachArray);
+});
 
-runTest();
-successfullyParsed = true;
-
+audit.run();
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime-expected.txt
deleted file mode 100644
index 21391a4..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test AudioParam setValueAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 100 tests started and ended at the correct time.
-PASS All 100 tests passed within an acceptable relative tolerance of 6e-8.
-PASS AudioParam setValueAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime.html
index e718e35..ecc39f9 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueAtTime.html
@@ -1,58 +1,48 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 <script src="../resources/audioparam-testing.js"></script>
 </head>
 
 <body>
-<div id="description"></div>
-<div id="console"></div>
-
 <script>
-description("Test AudioParam setValueAtTime() functionality.");
+let audit = Audit.createTaskRunner();
 
-// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() at regular
-// intervals to set the value for the duration of the interval.  Each time interval has
-// different value so that there is a discontinuity at each time interval boundary.  The
-// discontinuity is for testing timing.
+// Play a long DC signal out through an AudioGainNode, and call setValueAtTime()
+// at regular intervals to set the value for the duration of the interval.  Each
+// time interval has different value so that there is a discontinuity at each
+// time interval boundary.  The discontinuity is for testing timing.
 
 // Number of tests to run.
-var numberOfTests = 100;
+let numberOfTests = 100;
 
 // Max allowed difference between the rendered data and the expected result.
-var maxAllowedError = 6e-8;
+let maxAllowedError = 6e-8;
 
 // Set the gain node value to the specified value at the specified time.
-function setValue(value, time)
-{
-    gainNode.gain.setValueAtTime(value, time);
+function setValue(value, time) {
+  gainNode.gain.setValueAtTime(value, time);
 }
 
-// For testing setValueAtTime(), we don't need to do anything for automation. because the value at
-// the beginning of the interval is set by setValue and it remains constant for the duration, which
-// is what we want.
-function automation(value, startTime, endTime)
-{
-    // Do nothing.
+// For testing setValueAtTime(), we don't need to do anything for automation.
+// because the value at the beginning of the interval is set by setValue and it
+// remains constant for the duration, which is what we want.
+function automation(value, startTime, endTime) {
+  // Do nothing.
 }
 
-function runTest()
-{
-    createAudioGraphAndTest(numberOfTests,
-                            1,
-                            setValue,
-                            automation,
-                            "setValueAtTime()",
-                            maxAllowedError,
-                            createConstantArray);
-}
+audit.define('test', function(task, should) {
+  task.describe('AudioParam setValueAtTime() functionality.');
+  createAudioGraphAndTest(
+      task, should, numberOfTests, 1, setValue, automation, 'setValueAtTime()',
+      maxAllowedError, createConstantArray);
+});
 
-runTest();
-successfullyParsed = true;
-
+audit.run();
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime-expected.txt
deleted file mode 100644
index 362a56e5..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test AudioParam setValueCurveAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 20 tests started and ended at the correct time.
-PASS All 20 tests passed within an acceptable relative tolerance of 0.0000037194.
-PASS AudioParam setValueCurveAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime.html
index 2cb0775..17fca76 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-setValueCurveAtTime.html
@@ -1,69 +1,62 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 <script src="../resources/audioparam-testing.js"></script>
 <title>Test AudioParam.setValueCurveAtTime</title>
 </head>
 
 <body>
-<div id="description"></div>
-<div id="console"></div>
-
 <script>
-description("Test AudioParam setValueCurveAtTime() functionality.");
+let audit = Audit.createTaskRunner();
 
-// Play a long DC signal out through an AudioGainNode and for each time interval call
-// setValueCurveAtTime() to set the values for the duration of the interval.  Each curve is a sine
-// wave, and we assume that the time interval is not an exact multiple of the period. This causes a
-// discontinuity between time intervals which is used to test timing.
+// Play a long DC signal out through an AudioGainNode and for each time interval
+// call setValueCurveAtTime() to set the values for the duration of the
+// interval.  Each curve is a sine wave, and we assume that the time interval is
+// not an exact multiple of the period. This causes a discontinuity between time
+// intervals which is used to test timing.
 
 // Number of tests to run.
-var numberOfTests = 20;
+let numberOfTests = 20;
 
-// Max allowed difference between the rendered data and the expected result.  Because of the linear
-// interpolation, the rendered curve isn't exactly the same as the reference.  This value is
-// experimentally determined.
-var maxAllowedError = 3.7194e-6;
+// Max allowed difference between the rendered data and the expected result.
+// Because of the linear interpolation, the rendered curve isn't exactly the
+// same as the reference.  This value is experimentally determined.
+let maxAllowedError = 3.7194e-6;
 
 // The amplitude of the sine wave.
-var sineAmplitude = 1;
+let sineAmplitude = 1;
 
 // Frequency of the sine wave.
-var freqHz = 440;
+let freqHz = 440;
 
 // Curve to use for setValueCurveAtTime().
-var curve;
+let curve;
 
 // Sets the curve data for the entire time interval.
-function automation(value, startTime, endTime)
-{
-    gainNode.gain.setValueCurveAtTime(curve, startTime, endTime - startTime);
+function automation(value, startTime, endTime) {
+  gainNode.gain.setValueCurveAtTime(curve, startTime, endTime - startTime);
 }
 
-function runTest() 
-{
-    // The curve of values to use.
-    curve = createSineWaveArray(timeInterval, freqHz, sineAmplitude, sampleRate);
+audit.define('test', function(task, should) {
+  task.describe('AudioParam setValueCurveAtTime() functionality.');
+  // The curve of values to use.
+  curve = createSineWaveArray(timeInterval, freqHz, sineAmplitude, sampleRate);
 
-    createAudioGraphAndTest(numberOfTests,
-                            sineAmplitude,
-                            function(k) {
-                                // Don't need to set the value.
-                            },
-                            automation,
-                            "setValueCurveAtTime()",
-                            maxAllowedError,
-                            createReferenceSineArray,
-                            2 * Math.PI * sineAmplitude * freqHz / sampleRate,
-                            differenceErrorMetric);
-}
+  createAudioGraphAndTest(
+      task, should, numberOfTests, sineAmplitude,
+      function(k) {
+        // Don't need to set the value.
+      },
+      automation, 'setValueCurveAtTime()', maxAllowedError,
+      createReferenceSineArray,
+      2 * Math.PI * sineAmplitude * freqHz / sampleRate, differenceErrorMetric);
+});
 
-runTest();
-successfullyParsed = true;
-
+audit.run();
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction-expected.txt b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction-expected.txt
deleted file mode 100644
index e528a09..0000000
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-PASS Rendered signal is of correct length.
-PASS Rendered signal matches sum of two audio-rate gain changing signals plus baseline gain.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction.html
index 2781ce317..bb42645 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-summingjunction.html
@@ -7,124 +7,114 @@
 
 <html>
 <head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script> 
 <script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
+<script src="../resources/audit.js"></script>
 <script src="../resources/mix-testing.js"></script>
 
 </head>
 <body>
 
 <script>
+let audit = Audit.createTaskRunner();
 
-var sampleRate = 44100.0;
-var lengthInSeconds = 1;
+let sampleRate = 44100.0;
+let lengthInSeconds = 1;
 
-var context = 0;
+let context = 0;
 
 // Buffers used by the two gain controlling sources.
-var linearRampBuffer;
-var toneBuffer;
-var toneFrequency = 440;
+let linearRampBuffer;
+let toneBuffer;
+let toneFrequency = 440;
 
 // Arbitrary non-zero value.
-var baselineGain = 5;
+let baselineGain = 5;
 
 // Allow for a small round-off error.
-var maxAllowedError = 1e-6;
+let maxAllowedError = 1e-6;
 
-function checkResult(event) {
-    var renderedBuffer = event.renderedBuffer;
-    var renderedData = renderedBuffer.getChannelData(0);
+function checkResult(renderedBuffer, should) {
+  let renderedData = renderedBuffer.getChannelData(0);
 
-    // Get buffer data from the two sources used to control gain.
-    var linearRampData = linearRampBuffer.getChannelData(0);
-    var toneData = toneBuffer.getChannelData(0);
+  // Get buffer data from the two sources used to control gain.
+  let linearRampData = linearRampBuffer.getChannelData(0);
+  let toneData = toneBuffer.getChannelData(0);
 
-    var n = renderedBuffer.length;
+  let n = renderedBuffer.length;
 
-    if (n == linearRampBuffer.length) {
-        testPassed("Rendered signal is of correct length.");
-    } else {
-        testFailed("Rendered signal is not of correct length.");
+  should(n, 'Rendered signal length').beEqualTo(linearRampBuffer.length);
+
+  // Check that the rendered result exactly matches the sum of the intrinsic
+  // gain plus the two sources used to control gain.
+  // This is because we're changing the gain of a signal having constant value
+  // 1.
+  let success = true;
+  for (let i = 0; i < n; ++i) {
+    let expectedValue = baselineGain + linearRampData[i] + toneData[i];
+    let error = Math.abs(expectedValue - renderedData[i]);
+
+    if (error > maxAllowedError) {
+      success = false;
+      break;
     }
+  }
 
-    // Check that the rendered result exactly matches the sum of the intrinsic gain plus the two sources used to control gain.
-    // This is because we're changing the gain of a signal having constant value 1.
-    var success = true;
-    for (var i = 0; i < n; ++i) {
-        var expectedValue = baselineGain + linearRampData[i] + toneData[i];
-        var error = Math.abs(expectedValue - renderedData[i]);
-
-        if (error > maxAllowedError) {
-            success = false;
-            break;
-        }
-    }
-
-    if (success) {
-        testPassed("Rendered signal matches sum of two audio-rate gain changing signals plus baseline gain.");
-    } else {
-        testFailed("Rendered signal differs from the sum of two audio-rate gain changing signals plus baseline gain.");
-    }
-
-    finishJSTest();
+  should(
+      success,
+      'Rendered signal matches sum of two audio-rate gain changing signals plus baseline gain')
+      .beTrue();
 }
 
-function runTest() {
-    if (window.testRunner) {
-        testRunner.dumpAsText();
-        testRunner.waitUntilDone();
-    }
+audit.define('test', function(task, should) {
+  let sampleFrameLength = sampleRate * lengthInSeconds;
 
-    window.jsTestIsAsync = true;
+  // Create offline audio context.
+  context = new OfflineAudioContext(1, sampleFrameLength, sampleRate);
 
-    var sampleFrameLength = sampleRate * lengthInSeconds;
+  // Create buffer used by the source which will have its gain controlled.
+  let constantOneBuffer = createConstantBuffer(context, sampleFrameLength, 1);
+  let constantSource = context.createBufferSource();
+  constantSource.buffer = constantOneBuffer;
 
-    // Create offline audio context.
-    context = new OfflineAudioContext(1, sampleFrameLength, sampleRate);
+  // Create 1st buffer used to control gain (a linear ramp).
+  linearRampBuffer = createLinearRampBuffer(context, sampleFrameLength);
+  let gainSource1 = context.createBufferSource();
+  gainSource1.buffer = linearRampBuffer;
 
-    // Create buffer used by the source which will have its gain controlled.
-    var constantOneBuffer = createConstantBuffer(context, sampleFrameLength, 1);
-    var constantSource = context.createBufferSource();
-    constantSource.buffer = constantOneBuffer;
+  // Create 2st buffer used to control gain (a simple sine wave tone).
+  toneBuffer = createToneBuffer(context, toneFrequency, lengthInSeconds, 1);
+  let gainSource2 = context.createBufferSource();
+  gainSource2.buffer = toneBuffer;
 
-    // Create 1st buffer used to control gain (a linear ramp).
-    linearRampBuffer = createLinearRampBuffer(context, sampleFrameLength);
-    var gainSource1 = context.createBufferSource();
-    gainSource1.buffer = linearRampBuffer;
+  // Create a gain node controlling the gain of constantSource and make the
+  // connections.
+  let gainNode = context.createGain();
 
-    // Create 2st buffer used to control gain (a simple sine wave tone).
-    toneBuffer = createToneBuffer(context, toneFrequency, lengthInSeconds, 1);
-    var gainSource2 = context.createBufferSource();
-    gainSource2.buffer = toneBuffer;
+  // Intrinsic baseline gain.
+  // This gain value should be summed with gainSource1 and gainSource2.
+  gainNode.gain.value = baselineGain;
 
-    // Create a gain node controlling the gain of constantSource and make the connections.
-    var gainNode = context.createGain();
+  constantSource.connect(gainNode);
+  gainNode.connect(context.destination);
 
-    // Intrinsic baseline gain.
-    // This gain value should be summed with gainSource1 and gainSource2.
-    gainNode.gain.value = baselineGain;
+  // Connect two audio-rate signals to control the .gain AudioParam.
+  gainSource1.connect(gainNode.gain);
+  gainSource2.connect(gainNode.gain);
 
-    constantSource.connect(gainNode);
-    gainNode.connect(context.destination);
+  // Start all sources at time 0.
+  constantSource.start(0);
+  gainSource1.start(0);
+  gainSource2.start(0);
 
-    // Connect two audio-rate signals to control the .gain AudioParam.
-    gainSource1.connect(gainNode.gain);
-    gainSource2.connect(gainNode.gain);
+  context.startRendering().then(buffer => {
+    checkResult(buffer, should);
+    task.done();
+  });
+});
 
-    // Start all sources at time 0.
-    constantSource.start(0);
-    gainSource1.start(0);
-    gainSource2.start(0);
-
-    context.oncomplete = checkResult;
-    context.startRendering();
-}
-
-runTest();
-successfullyParsed = true;
-
+audit.run();
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/webaudio/resources/audioparam-testing.js b/third_party/WebKit/LayoutTests/webaudio/resources/audioparam-testing.js
index b0461fc..530c98d 100644
--- a/third_party/WebKit/LayoutTests/webaudio/resources/audioparam-testing.js
+++ b/third_party/WebKit/LayoutTests/webaudio/resources/audioparam-testing.js
@@ -1,26 +1,31 @@
 var sampleRate = 44100;
 
-// Information about the starting/ending times and starting/ending values for each time interval.
+// Information about the starting/ending times and starting/ending values for
+// each time interval.
 var timeValueInfo;
 
 // The difference between starting values between each time interval.
 var startingValueDelta;
-      
-// For any automation function that has an end or target value, the end value is based the starting
-// value of the time interval.  The starting value will be increased or decreased by
-// |startEndValueChange|. We choose half of |startingValueDelta| so that the ending value will be
-// distinct from the starting value for next time interval.  This allows us to detect where the ramp
-// begins and ends.
+
+// For any automation function that has an end or target value, the end value is
+// based the starting value of the time interval.  The starting value will be
+// increased or decreased by |startEndValueChange|. We choose half of
+// |startingValueDelta| so that the ending value will be distinct from the
+// starting value for next time interval.  This allows us to detect where the
+// ramp begins and ends.
 var startEndValueChange;
 
-// Default threshold to use for detecting discontinuities that should appear at each time interval.
+// Default threshold to use for detecting discontinuities that should appear at
+// each time interval.
 var discontinuityThreshold;
 
-// Time interval between value changes.  It is best if 1 / numberOfTests is not close to timeInterval.
+// Time interval between value changes.  It is best if 1 / numberOfTests is not
+// close to timeInterval.
 var timeInterval = .03;
 
-// Some suitable time constant so that we can see a significant change over a timeInterval.  This is
-// only needed by setTargetAtTime() which needs a time constant.
+// Some suitable time constant so that we can see a significant change over a
+// timeInterval.  This is only needed by setTargetAtTime() which needs a time
+// constant.
 var timeConstant = timeInterval / 3;
 
 var gainNode;
@@ -28,343 +33,348 @@
 var context;
 
 // Make sure we render long enough to capture all of our test data.
-function renderLength(numberOfTests)
-{
-    return timeToSampleFrame((numberOfTests + 1) * timeInterval, sampleRate);
+function renderLength(numberOfTests) {
+  return timeToSampleFrame((numberOfTests + 1) * timeInterval, sampleRate);
 }
 
-// Create a constant reference signal with the given |value|.  Basically the same as
-// |createConstantBuffer|, but with the parameters to match the other create functions.  The
-// |endValue| is ignored.
-function createConstantArray(startTime, endTime, value, endValue, sampleRate)
-{
-    var startFrame = timeToSampleFrame(startTime, sampleRate);
-    var endFrame = timeToSampleFrame(endTime, sampleRate);
-    var length = endFrame - startFrame;
+// Create a constant reference signal with the given |value|.  Basically the
+// same as |createConstantBuffer|, but with the parameters to match the other
+// create functions.  The |endValue| is ignored.
+function createConstantArray(startTime, endTime, value, endValue, sampleRate) {
+  var startFrame = timeToSampleFrame(startTime, sampleRate);
+  var endFrame = timeToSampleFrame(endTime, sampleRate);
+  var length = endFrame - startFrame;
 
-    var buffer = createConstantBuffer(context, length, value);
+  var buffer = createConstantBuffer(context, length, value);
 
-    return buffer.getChannelData(0);
+  return buffer.getChannelData(0);
 }
 
-function getStartEndFrames(startTime, endTime, sampleRate)
-{
-    // Start frame is the ceiling of the start time because the ramp
-    // starts at or after the sample frame.  End frame is the ceiling
-    // because it's the exclusive ending frame of the automation.
-    var startFrame = Math.ceil(startTime * sampleRate);
-    var endFrame = Math.ceil(endTime * sampleRate);
+function getStartEndFrames(startTime, endTime, sampleRate) {
+  // Start frame is the ceiling of the start time because the ramp starts at or
+  // after the sample frame.  End frame is the ceiling because it's the
+  // exclusive ending frame of the automation.
+  var startFrame = Math.ceil(startTime * sampleRate);
+  var endFrame = Math.ceil(endTime * sampleRate);
 
-    return {startFrame: startFrame, endFrame: endFrame};
+  return {startFrame: startFrame, endFrame: endFrame};
 }
 
-// Create a linear ramp starting at |startValue| and ending at |endValue|.  The ramp starts at time
-// |startTime| and ends at |endTime|.  (The start and end times are only used to compute how many
-// samples to return.)
-function createLinearRampArray(startTime, endTime, startValue, endValue, sampleRate)
-{
-    var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
-    var startFrame = frameInfo.startFrame;
-    var endFrame = frameInfo.endFrame;
-    var length = endFrame - startFrame;
-    var array = new Array(length);
+// Create a linear ramp starting at |startValue| and ending at |endValue|.  The
+// ramp starts at time |startTime| and ends at |endTime|.  (The start and end
+// times are only used to compute how many samples to return.)
+function createLinearRampArray(
+    startTime, endTime, startValue, endValue, sampleRate) {
+  var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
+  var startFrame = frameInfo.startFrame;
+  var endFrame = frameInfo.endFrame;
+  var length = endFrame - startFrame;
+  var array = new Array(length);
 
-    var step = Math.fround((endValue - startValue) / (endTime - startTime) / sampleRate);
-    var start = Math.fround(startValue + (endValue - startValue) * (startFrame / sampleRate - startTime) / (endTime - startTime));
+  var step =
+      Math.fround((endValue - startValue) / (endTime - startTime) / sampleRate);
+  var start = Math.fround(
+      startValue +
+      (endValue - startValue) * (startFrame / sampleRate - startTime) /
+          (endTime - startTime));
 
-    var slope = (endValue - startValue) / (endTime - startTime);
+  var slope = (endValue - startValue) / (endTime - startTime);
 
-    // v(t) = v0 + (v1 - v0)*(t-t0)/(t1-t0)
-    for (k = 0; k < length; ++k) {
-        //array[k] = Math.fround(start + k * step);
-        var t = (startFrame + k) / sampleRate;
-        array[k] = startValue + slope * (t - startTime);
-    }
+  // v(t) = v0 + (v1 - v0)*(t-t0)/(t1-t0)
+  for (k = 0; k < length; ++k) {
+    // array[k] = Math.fround(start + k * step);
+    var t = (startFrame + k) / sampleRate;
+    array[k] = startValue + slope * (t - startTime);
+  }
 
-    return array;
+  return array;
 }
 
-// Create an exponential ramp starting at |startValue| and ending at |endValue|.  The ramp starts at
-// time |startTime| and ends at |endTime|.  (The start and end times are only used to compute how
-// many samples to return.)
-function createExponentialRampArray(startTime, endTime, startValue, endValue, sampleRate)
-{
-    var deltaTime = endTime - startTime;
+// Create an exponential ramp starting at |startValue| and ending at |endValue|.
+// The ramp starts at time |startTime| and ends at |endTime|.  (The start and
+// end times are only used to compute how many samples to return.)
+function createExponentialRampArray(
+    startTime, endTime, startValue, endValue, sampleRate) {
+  var deltaTime = endTime - startTime;
 
-    var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
-    var startFrame = frameInfo.startFrame;
-    var endFrame = frameInfo.endFrame;
-    var length = endFrame - startFrame;
-    var array = new Array(length);
+  var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
+  var startFrame = frameInfo.startFrame;
+  var endFrame = frameInfo.endFrame;
+  var length = endFrame - startFrame;
+  var array = new Array(length);
 
-    var ratio = endValue / startValue;
+  var ratio = endValue / startValue;
 
-    // v(t) = v0*(v1/v0)^((t-t0)/(t1-t0))
-    for (var k = 0; k < length; ++k) {
-        var t = Math.fround((startFrame + k) / sampleRate);
-        array[k] = Math.fround(startValue * Math.pow(ratio, (t - startTime) / deltaTime));
-    }
+  // v(t) = v0*(v1/v0)^((t-t0)/(t1-t0))
+  for (var k = 0; k < length; ++k) {
+    var t = Math.fround((startFrame + k) / sampleRate);
+    array[k] =
+        Math.fround(startValue * Math.pow(ratio, (t - startTime) / deltaTime));
+  }
 
-    return array;
+  return array;
 }
 
-function discreteTimeConstantForSampleRate(timeConstant, sampleRate)
-{
-    return 1 - Math.exp(-1 / (sampleRate * timeConstant));
+function discreteTimeConstantForSampleRate(timeConstant, sampleRate) {
+  return 1 - Math.exp(-1 / (sampleRate * timeConstant));
 }
 
-// Create a signal that starts at |startValue| and exponentially approaches the target value of
-// |targetValue|, using a time constant of |timeConstant|.  The ramp starts at time |startTime| and
-// ends at |endTime|.  (The start and end times are only used to compute how many samples to
-// return.)
-function createExponentialApproachArray(startTime, endTime, startValue, targetValue, sampleRate, timeConstant)
-{
-    var startFrameFloat = startTime * sampleRate;
-    var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
-    var startFrame = frameInfo.startFrame;
-    var endFrame = frameInfo.endFrame;
-    var length = Math.floor(endFrame - startFrame);
-    var array = new Array(length);
-    var c = discreteTimeConstantForSampleRate(timeConstant, sampleRate);
+// Create a signal that starts at |startValue| and exponentially approaches the
+// target value of |targetValue|, using a time constant of |timeConstant|.  The
+// ramp starts at time |startTime| and ends at |endTime|.  (The start and end
+// times are only used to compute how many samples to return.)
+function createExponentialApproachArray(
+    startTime, endTime, startValue, targetValue, sampleRate, timeConstant) {
+  var startFrameFloat = startTime * sampleRate;
+  var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
+  var startFrame = frameInfo.startFrame;
+  var endFrame = frameInfo.endFrame;
+  var length = Math.floor(endFrame - startFrame);
+  var array = new Array(length);
+  var c = discreteTimeConstantForSampleRate(timeConstant, sampleRate);
 
-    var delta = startValue - targetValue;
+  var delta = startValue - targetValue;
 
-    // v(t) = v1 + (v0 - v1) * exp(-(t-t0)/tau)
-    for (var k = 0; k < length; ++k) {
-        var t = (startFrame + k) / sampleRate;
-        var value = targetValue + delta * Math.exp(-(t - startTime) / timeConstant);
-        array[k] = value;
-    }
+  // v(t) = v1 + (v0 - v1) * exp(-(t-t0)/tau)
+  for (var k = 0; k < length; ++k) {
+    var t = (startFrame + k) / sampleRate;
+    var value = targetValue + delta * Math.exp(-(t - startTime) / timeConstant);
+    array[k] = value;
+  }
 
-    return array;
+  return array;
 }
 
 // Create a sine wave of the specified duration.
-function createReferenceSineArray(startTime, endTime, startValue, endValue, sampleRate)
-{
-    // Ignore |startValue| and |endValue| for the sine wave.
-    var curve = createSineWaveArray(endTime - startTime, freqHz, sineAmplitude, sampleRate);
-    // Sample the curve appropriately.
-    var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
-    var startFrame = frameInfo.startFrame;
-    var endFrame = frameInfo.endFrame;
-    var length = Math.floor(endFrame - startFrame);
-    var array = new Array(length);
+function createReferenceSineArray(
+    startTime, endTime, startValue, endValue, sampleRate) {
+  // Ignore |startValue| and |endValue| for the sine wave.
+  var curve = createSineWaveArray(
+      endTime - startTime, freqHz, sineAmplitude, sampleRate);
+  // Sample the curve appropriately.
+  var frameInfo = getStartEndFrames(startTime, endTime, sampleRate);
+  var startFrame = frameInfo.startFrame;
+  var endFrame = frameInfo.endFrame;
+  var length = Math.floor(endFrame - startFrame);
+  var array = new Array(length);
 
-    // v(t) = linearly interpolate between V[k] and V[k + 1] where k = floor((N-1)/duration*(t - t0))
-    var f = (length - 1) / (endTime - startTime);
+  // v(t) = linearly interpolate between V[k] and V[k + 1] where k =
+  // floor((N-1)/duration*(t - t0))
+  var f = (length - 1) / (endTime - startTime);
 
-    for (var k = 0; k < length; ++k) {
-        var t = (startFrame + k) / sampleRate;
-        var indexFloat = f * (t - startTime);
-        var index = Math.floor(indexFloat);
-        if (index + 1 < length) {
-            var v0 = curve[index];
-            var v1 = curve[index + 1];
-            array[k] = v0 + (v1 - v0) * (indexFloat - index);
-        } else {
-            array[k] = curve[length - 1];
-        }
-    }
-
-    return array;
-}
-
-// Create a sine wave of the given frequency and amplitude.  The sine wave is offset by half the
-// amplitude so that result is always positive.
-function createSineWaveArray(durationSeconds, freqHz, amplitude, sampleRate)
-{
-    var length = timeToSampleFrame(durationSeconds, sampleRate);
-    var signal = new Float32Array(length);
-    var omega = 2 * Math.PI * freqHz / sampleRate;
-    var halfAmplitude = amplitude / 2;
-    
-    for (var k = 0; k < length; ++k) {
-        signal[k] = halfAmplitude + halfAmplitude * Math.sin(omega * k);
-    }
-
-    return signal;
-}
-
-// Return the difference between the starting value and the ending value for time interval
-// |timeIntervalIndex|.  We alternate between an end value that is above or below the starting
-// value.
-function endValueDelta(timeIntervalIndex)
-{
-    if (timeIntervalIndex & 1) {
-        return -startEndValueChange;
+  for (var k = 0; k < length; ++k) {
+    var t = (startFrame + k) / sampleRate;
+    var indexFloat = f * (t - startTime);
+    var index = Math.floor(indexFloat);
+    if (index + 1 < length) {
+      var v0 = curve[index];
+      var v1 = curve[index + 1];
+      array[k] = v0 + (v1 - v0) * (indexFloat - index);
     } else {
-        return startEndValueChange;
+      array[k] = curve[length - 1];
     }
+  }
+
+  return array;
+}
+
+// Create a sine wave of the given frequency and amplitude.  The sine wave is
+// offset by half the amplitude so that result is always positive.
+function createSineWaveArray(durationSeconds, freqHz, amplitude, sampleRate) {
+  var length = timeToSampleFrame(durationSeconds, sampleRate);
+  var signal = new Float32Array(length);
+  var omega = 2 * Math.PI * freqHz / sampleRate;
+  var halfAmplitude = amplitude / 2;
+
+  for (var k = 0; k < length; ++k) {
+    signal[k] = halfAmplitude + halfAmplitude * Math.sin(omega * k);
+  }
+
+  return signal;
+}
+
+// Return the difference between the starting value and the ending value for
+// time interval |timeIntervalIndex|.  We alternate between an end value that is
+// above or below the starting value.
+function endValueDelta(timeIntervalIndex) {
+  if (timeIntervalIndex & 1) {
+    return -startEndValueChange;
+  } else {
+    return startEndValueChange;
+  }
 }
 
 // Relative error metric
-function relativeErrorMetric(actual, expected)
-{
-    return (actual - expected) / Math.abs(expected);
+function relativeErrorMetric(actual, expected) {
+  return (actual - expected) / Math.abs(expected);
 }
 
 // Difference metric
-function differenceErrorMetric(actual, expected)
-{
-    return actual - expected;
+function differenceErrorMetric(actual, expected) {
+  return actual - expected;
 }
 
-// Return the difference between the starting value at |timeIntervalIndex| and the starting value at
-// the next time interval.  Since we started at a large initial value, we decrease the value at each
-// time interval.
-function valueUpdate(timeIntervalIndex)
-{
-    return -startingValueDelta;
+// Return the difference between the starting value at |timeIntervalIndex| and
+// the starting value at the next time interval.  Since we started at a large
+// initial value, we decrease the value at each time interval.
+function valueUpdate(timeIntervalIndex) {
+  return -startingValueDelta;
 }
 
 // Compare a section of the rendered data against our expected signal.
-function comparePartialSignals(rendered, expectedFunction, startTime, endTime, valueInfo, sampleRate, errorMetric)
-{
-    var startSample = timeToSampleFrame(startTime, sampleRate);
-    var expected = expectedFunction(startTime, endTime, valueInfo.startValue, valueInfo.endValue, sampleRate, timeConstant);
+function comparePartialSignals(
+    should, rendered, expectedFunction, startTime, endTime, valueInfo,
+    sampleRate, errorMetric) {
+  var startSample = timeToSampleFrame(startTime, sampleRate);
+  var expected = expectedFunction(
+      startTime, endTime, valueInfo.startValue, valueInfo.endValue, sampleRate,
+      timeConstant);
 
-    var n = expected.length;
-    var maxError = -1;
-    var maxErrorIndex = -1;
-    
-    for (var k = 0; k < n; ++k) {
-        // Make sure we don't pass these tests because a NaN has been generated in either the
-        // rendered data or the reference data.
-        if (!isValidNumber(rendered[startSample + k])) {
-            maxError = Infinity;
-            maxErrorIndex = startSample + k;
-            testFailed("NaN or infinity for rendered data at " + maxErrorIndex);
-            break;
-        }
-        if (!isValidNumber(expected[k])) {
-            maxError = Infinity;
-            maxErrorIndex = startSample + k;
-            testFailed("Nan or infinity for reference data at " + maxErrorIndex);
-            break;
-        }
-        var error = Math.abs(errorMetric(rendered[startSample + k], expected[k]));
-        if (error > maxError) {
-            maxError = error;
-            maxErrorIndex = k;
-        }
+  var n = expected.length;
+  var maxError = -1;
+  var maxErrorIndex = -1;
+
+  for (var k = 0; k < n; ++k) {
+    // Make sure we don't pass these tests because a NaN has been generated in
+    // either the
+    // rendered data or the reference data.
+    if (!isValidNumber(rendered[startSample + k])) {
+      maxError = Infinity;
+      maxErrorIndex = startSample + k;
+      should(
+          isValidNumber(rendered[startSample + k]),
+          'NaN or infinity for rendered data at ' + maxErrorIndex)
+          .beTrue();
+      break;
     }
+    if (!isValidNumber(expected[k])) {
+      maxError = Infinity;
+      maxErrorIndex = startSample + k;
+      should(
+          isValidNumber(expected[k]),
+          'NaN or infinity for rendered data at ' + maxErrorIndex)
+          .beTrue();
+      break;
+    }
+    var error = Math.abs(errorMetric(rendered[startSample + k], expected[k]));
+    if (error > maxError) {
+      maxError = error;
+      maxErrorIndex = k;
+    }
+  }
 
-    return {maxError : maxError, index : maxErrorIndex, expected: expected};
+  return {maxError: maxError, index: maxErrorIndex, expected: expected};
 }
 
-// Find the discontinuities in the data and compare the locations of the discontinuities with the
-// times that define the time intervals. There is a discontinuity if the difference between
-// successive samples exceeds the threshold.
-function verifyDiscontinuities(values, times, threshold)
-{
-    var n = values.length;
-    var success = true;
-    var badLocations = 0;
-    var breaks = [];
+// Find the discontinuities in the data and compare the locations of the
+// discontinuities with the times that define the time intervals. There is a
+// discontinuity if the difference between successive samples exceeds the
+// threshold.
+function verifyDiscontinuities(should, values, times, threshold) {
+  var n = values.length;
+  var success = true;
+  var badLocations = 0;
+  var breaks = [];
 
-    // Find discontinuities.
-    for (var k = 1; k < n; ++k) {
-        if (Math.abs(values[k] - values[k - 1]) > threshold) {
-            breaks.push(k);
-        }
+  // Find discontinuities.
+  for (var k = 1; k < n; ++k) {
+    if (Math.abs(values[k] - values[k - 1]) > threshold) {
+      breaks.push(k);
     }
+  }
 
-    var testCount;
+  var testCount;
 
-    // If there are numberOfTests intervals, there are only numberOfTests - 1 internal interval
-    // boundaries. Hence the maximum number of discontinuties we expect to find is numberOfTests -
-    // 1. If we find more than that, we have no reference to compare against. We also assume that
-    // the actual discontinuities are close to the expected ones.
-    //
-    // This is just a sanity check when something goes really wrong.  For example, if the threshold
-    // is too low, every sample frame looks like a discontinuity.
-    if (breaks.length >= numberOfTests) {
-        testCount = numberOfTests - 1;
-        testFailed("Found more discontinuities (" + breaks.length + ") than expected.  Only comparing first " + testCount + "discontinuities.");
-        success = false;
-    } else {
-        testCount = breaks.length;
-    }
-    
-    // Compare the location of each discontinuity with the end time of each interval. (There is no
-    // discontinuity at the start of the signal.)
-    for (var k = 0; k < testCount; ++k) {
-        var expectedSampleFrame = timeToSampleFrame(times[k + 1], sampleRate);
-        if (breaks[k] != expectedSampleFrame) {
-            success = false;
-            ++badLocations;
-            testFailed("Expected discontinuity at " + expectedSampleFrame + " but got " + breaks[k]);
-        }
-    }
+  // If there are numberOfTests intervals, there are only numberOfTests - 1
+  // internal interval boundaries. Hence the maximum number of discontinuties we
+  // expect to find is numberOfTests - 1. If we find more than that, we have no
+  // reference to compare against. We also assume that the actual
+  // discontinuities are close to the expected ones.
+  //
+  // This is just a sanity check when something goes really wrong.  For example,
+  // if the threshold is too low, every sample frame looks like a discontinuity.
+  if (breaks.length >= numberOfTests) {
+    testCount = numberOfTests - 1;
+    should(breaks.length, 'Number of discontinuities')
+        .beLessThan(numberOfTests);
+    success = false;
+  } else {
+    testCount = breaks.length;
+  }
 
-    if (badLocations) {
-        testFailed(badLocations + " discontinuities at incorrect locations");
-        success = false;
-    } else {
-        if (breaks.length == numberOfTests - 1) {
-            testPassed("All " + numberOfTests + " tests started and ended at the correct time.");
-        } else {
-            testFailed("Found " + breaks.length + " discontinuities but expected " + (numberOfTests - 1));
-            success = false;
-        }
+  // Compare the location of each discontinuity with the end time of each
+  // interval. (There is no discontinuity at the start of the signal.)
+  for (var k = 0; k < testCount; ++k) {
+    var expectedSampleFrame = timeToSampleFrame(times[k + 1], sampleRate);
+    if (breaks[k] != expectedSampleFrame) {
+      success = false;
+      ++badLocations;
+      should(breaks[k], 'Discontinuity at index')
+          .beEqualTo(expectedSampleFrame);
     }
-    
-    return success;
+  }
+
+  if (badLocations) {
+    should(badLocations, 'Number of discontinuites at incorrect locations')
+        .beEqualTo(0);
+    success = false;
+  } else {
+    should(
+        breaks.length + 1,
+        'Number of tests started and ended at the correct time')
+        .beEqualTo(numberOfTests);
+  }
+
+  return success;
 }
 
 // Compare the rendered data with the expected data.
 //
 // testName - string describing the test
 //
-// maxError - maximum allowed difference between the rendered data and the expected data
+// maxError - maximum allowed difference between the rendered data and the
+// expected data
 //
 // rendererdData - array containing the rendered (actual) data
 //
 // expectedFunction - function to compute the expected data
 //
-// timeValueInfo - array containing information about the start and end times and the start and end
-// values of each interval.
+// timeValueInfo - array containing information about the start and end times
+// and the start and end values of each interval.
 //
 // breakThreshold - threshold to use for determining discontinuities.
-function compareSignals(testName, maxError, renderedData, expectedFunction, timeValueInfo, breakThreshold, errorMetric)
-{
-    var success = true;
-    var failedTestCount = 0;
-    var times = timeValueInfo.times;
-    var values = timeValueInfo.values;
-    var n = values.length;
-    var expectedSignal = [];
+function compareSignals(
+    should, testName, maxError, renderedData, expectedFunction, timeValueInfo,
+    breakThreshold, errorMetric) {
+  var success = true;
+  var failedTestCount = 0;
+  var times = timeValueInfo.times;
+  var values = timeValueInfo.values;
+  var n = values.length;
+  var expectedSignal = [];
 
-    success = verifyDiscontinuities(renderedData, times, breakThreshold);
+  success = verifyDiscontinuities(should, renderedData, times, breakThreshold);
 
-    for (var k = 0; k < n; ++k) {
-        var result = comparePartialSignals(renderedData, expectedFunction, times[k], times[k + 1], values[k], sampleRate, errorMetric);
+  for (var k = 0; k < n; ++k) {
+    var result = comparePartialSignals(
+        should, renderedData, expectedFunction, times[k], times[k + 1],
+        values[k], sampleRate, errorMetric);
 
-        expectedSignal = expectedSignal.concat(Array.prototype.slice.call(result.expected));
+    expectedSignal =
+        expectedSignal.concat(Array.prototype.slice.call(result.expected));
 
-        if (result.maxError > maxError) {
-            var offset = result.index + timeToSampleFrame(times[k], sampleRate);
-            testFailed("Incorrect value for test " + k + ". Max error = " + result.maxError
-                       + " at offset " + offset
-                       + ": actual = " + renderedData[offset]
-                       + ", expected = " + expectedSignal[offset] + ".");
-            ++failedTestCount;
-        }
-    }
+    should(
+        result.maxError,
+        'Max error for test ' + k + ' at offset ' +
+            (result.index + timeToSampleFrame(times[k], sampleRate)))
+        .beLessThanOrEqualTo(maxError);
+  }
 
-    if (failedTestCount) {
-        testFailed(failedTestCount + " tests failed out of " + n);
-        success = false;
-    } else {
-        testPassed("All " + n + " tests passed within an acceptable relative tolerance of " + maxError + ".");
-    }
-      
-    if (success) {
-        testPassed("AudioParam " + testName + " test passed.");
-    } else {
-        testFailed("AudioParam " + testName + " test failed.");
-    }
+  should(
+      failedTestCount,
+      'Number of failed tests with an acceptable relative tolerance of ' +
+          maxError)
+      .beEqualTo(0);
 }
 
 // Create a function to test the rendered data with the reference data.
@@ -373,30 +383,33 @@
 //
 // error - max allowed error between rendered data and the reference data.
 //
-// referenceFunction - function that generates the reference data to be compared with the rendered
-// data.
+// referenceFunction - function that generates the reference data to be compared
+// with the rendered data.
 //
-// jumpThreshold - optional parameter that specifies the threshold to use for detecting
-// discontinuities.  If not specified, defaults to discontinuityThreshold.
+// jumpThreshold - optional parameter that specifies the threshold to use for
+// detecting discontinuities.  If not specified, defaults to
+// discontinuityThreshold.
 //
-function checkResultFunction(testName, error, referenceFunction, jumpThreshold, errorMetric)
-{
-    return function(event) {
-        var buffer = event.renderedBuffer;
-        renderedData = buffer.getChannelData(0);
+function checkResultFunction(
+    task, should, testName, error, referenceFunction, jumpThreshold,
+    errorMetric) {
+  return function(event) {
+    var buffer = event.renderedBuffer;
+    renderedData = buffer.getChannelData(0);
 
-        var threshold;
+    var threshold;
 
-        if (!jumpThreshold) {
-            threshold = discontinuityThreshold;
-        } else {
-            threshold = jumpThreshold;
-        }
-        
-        compareSignals(testName, error, renderedData, referenceFunction, timeValueInfo, threshold, errorMetric);
-
-        finishJSTest();
+    if (!jumpThreshold) {
+      threshold = discontinuityThreshold;
+    } else {
+      threshold = jumpThreshold;
     }
+
+    compareSignals(
+        should, testName, error, renderedData, referenceFunction, timeValueInfo,
+        threshold, errorMetric);
+    task.done();
+  }
 }
 
 // Run all the automation tests.
@@ -405,38 +418,40 @@
 //
 // initialValue - The initial value of the first time interval.
 //
-// setValueFunction - function that sets the specified value at the start of a time interval.
+// setValueFunction - function that sets the specified value at the start of a
+// time interval.
 //
-// automationFunction - function that sets the end value for the time interval.  It specifies how
-// the value approaches the end value.
+// automationFunction - function that sets the end value for the time interval.
+// It specifies how the value approaches the end value.
 //
-// An object is returned containing an array of start times for each time interval, and an array
-// giving the start and end values for the interval.
-function doAutomation(numberOfTests, initialValue, setValueFunction, automationFunction)
-{
-    var timeInfo = [0];
-    var valueInfo = [];
-    var value = initialValue;
-    
-    for (var k = 0; k < numberOfTests; ++k) {
-        var startTime = k * timeInterval;
-        var endTime = (k + 1) * timeInterval;
-        var endValue = value + endValueDelta(k);
+// An object is returned containing an array of start times for each time
+// interval, and an array giving the start and end values for the interval.
+function doAutomation(
+    numberOfTests, initialValue, setValueFunction, automationFunction) {
+  var timeInfo = [0];
+  var valueInfo = [];
+  var value = initialValue;
 
-        // Set the value at the start of the time interval.
-        setValueFunction(value, startTime);
+  for (var k = 0; k < numberOfTests; ++k) {
+    var startTime = k * timeInterval;
+    var endTime = (k + 1) * timeInterval;
+    var endValue = value + endValueDelta(k);
 
-        // Specify the end or target value, and how we should approach it.
-        automationFunction(endValue, startTime, endTime);
+    // Set the value at the start of the time interval.
+    setValueFunction(value, startTime);
 
-        // Keep track of the start times, and the start and end values for each time interval.
-        timeInfo.push(endTime);
-        valueInfo.push({startValue: value, endValue : endValue});
+    // Specify the end or target value, and how we should approach it.
+    automationFunction(endValue, startTime, endTime);
 
-        value += valueUpdate(k);
-    }
+    // Keep track of the start times, and the start and end values for each time
+    // interval.
+    timeInfo.push(endTime);
+    valueInfo.push({startValue: value, endValue: endValue});
 
-    return {times : timeInfo, values : valueInfo};
+    value += valueUpdate(k);
+  }
+
+  return {times: timeInfo, values: valueInfo};
 }
 
 // Create the audio graph for the test and then run the test.
@@ -445,61 +460,56 @@
 //
 // initialValue - the initial value of the gain at time 0.
 //
-// setValueFunction - function to set the value at the beginning of each time interval.
+// setValueFunction - function to set the value at the beginning of each time
+// interval.
 //
 // automationFunction - the AudioParamTimeline automation function
 //
 // testName - string indicating the test that is being run.
 //
-// maxError - maximum allowed error between the rendered data and the reference data
+// maxError - maximum allowed error between the rendered data and the reference
+// data
 //
-// referenceFunction - function that generates the reference data to be compared against the
-// rendered data.
+// referenceFunction - function that generates the reference data to be compared
+// against the rendered data.
 //
-// jumpThreshold - optional parameter that specifies the threshold to use for detecting
-// discontinuities.  If not specified, defaults to discontinuityThreshold.
+// jumpThreshold - optional parameter that specifies the threshold to use for
+// detecting discontinuities.  If not specified, defaults to
+// discontinuityThreshold.
 //
-function createAudioGraphAndTest(numberOfTests, initialValue, setValueFunction, automationFunction, testName, maxError, referenceFunction, jumpThreshold, errorMetric)
-{
-    if (window.testRunner) {
-        testRunner.dumpAsText();
-        testRunner.waitUntilDone();
-    }
+function createAudioGraphAndTest(
+    task, should, numberOfTests, initialValue, setValueFunction,
+    automationFunction, testName, maxError, referenceFunction, jumpThreshold,
+    errorMetric) {
+  // Create offline audio context.
+  context = new OfflineAudioContext(2, renderLength(numberOfTests), sampleRate);
+  var constantBuffer =
+      createConstantBuffer(context, renderLength(numberOfTests), 1);
 
-    window.jsTestIsAsync = true;
+  // We use an AudioGainNode here simply as a convenient way to test the
+  // AudioParam automation, since it's easy to pass a constant value through the
+  // node, automate the .gain attribute and observe the resulting values.
 
-    // Create offline audio context.
-    context = new OfflineAudioContext(2, renderLength(numberOfTests), sampleRate);
-    var constantBuffer = createConstantBuffer(context, renderLength(numberOfTests), 1);
+  gainNode = context.createGain();
 
-    // We use an AudioGainNode here simply as a convenient way to test the AudioParam
-    // automation, since it's easy to pass a constant value through the node, automate the
-    // .gain attribute and observe the resulting values.
+  var bufferSource = context.createBufferSource();
+  bufferSource.buffer = constantBuffer;
+  bufferSource.connect(gainNode);
+  gainNode.connect(context.destination);
 
-    gainNode = context.createGain();
+  // Set up default values for the parameters that control how the automation
+  // test values progress for each time interval.
+  startingValueDelta = initialValue / numberOfTests;
+  startEndValueChange = startingValueDelta / 2;
+  discontinuityThreshold = startEndValueChange / 2;
 
-    var bufferSource = context.createBufferSource();
-    bufferSource.buffer = constantBuffer;
-    bufferSource.connect(gainNode);
-    gainNode.connect(context.destination);
+  // Run the automation tests.
+  timeValueInfo = doAutomation(
+      numberOfTests, initialValue, setValueFunction, automationFunction);
+  bufferSource.start(0);
 
-    // Set up default values for the parameters that control how the automation test values progress
-    // for each time interval.
-    startingValueDelta = initialValue / numberOfTests;
-    startEndValueChange = startingValueDelta / 2;
-    discontinuityThreshold = startEndValueChange / 2;
-
-    // Run the automation tests.
-    timeValueInfo = doAutomation(numberOfTests,
-                                 initialValue,
-                                 setValueFunction,
-                                 automationFunction);
-    bufferSource.start(0);
-      
-    context.oncomplete = checkResultFunction(testName,
-                                             maxError,
-                                             referenceFunction,
-                                             jumpThreshold,
-                                             errorMetric || relativeErrorMetric);
-    context.startRendering();
+  context.oncomplete = checkResultFunction(
+      task, should, testName, maxError, referenceFunction, jumpThreshold,
+      errorMetric || relativeErrorMetric);
+  context.startRendering();
 }
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
index a0f69402..c1ec130 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -650,6 +650,7 @@
 [Worker]     attribute @@toStringTag
 [Worker]     getter canvas
 [Worker]     getter fillStyle
+[Worker]     getter filter
 [Worker]     getter globalAlpha
 [Worker]     getter globalCompositeOperation
 [Worker]     getter imageSmoothingEnabled
@@ -702,6 +703,7 @@
 [Worker]     method transform
 [Worker]     method translate
 [Worker]     setter fillStyle
+[Worker]     setter filter
 [Worker]     setter globalAlpha
 [Worker]     setter globalCompositeOperation
 [Worker]     setter imageSmoothingEnabled
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
index 8100512..97aced3 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -645,6 +645,7 @@
 [Worker]     attribute @@toStringTag
 [Worker]     getter canvas
 [Worker]     getter fillStyle
+[Worker]     getter filter
 [Worker]     getter globalAlpha
 [Worker]     getter globalCompositeOperation
 [Worker]     getter imageSmoothingEnabled
@@ -697,6 +698,7 @@
 [Worker]     method transform
 [Worker]     method translate
 [Worker]     setter fillStyle
+[Worker]     setter filter
 [Worker]     setter globalAlpha
 [Worker]     setter globalCompositeOperation
 [Worker]     setter imageSmoothingEnabled
diff --git a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp
index 49796352..40110221 100644
--- a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp
+++ b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp
@@ -1259,8 +1259,8 @@
 void updateDummyTransformNode(ObjectPaintProperties& properties,
                               CompositingReasons reasons) {
   properties.updateTransform(TransformPaintPropertyNode::root(),
-                             TransformationMatrix(), FloatPoint3D(), nullptr,
-                             false, 0, reasons);
+                             TransformationMatrix(), FloatPoint3D(), false, 0,
+                             reasons);
 }
 
 void updateDummyEffectNode(ObjectPaintProperties& properties,
diff --git a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
index 74458c8..dda12dca 100644
--- a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
@@ -39,6 +39,9 @@
 
 namespace blink {
 
+static float kOffScreenCanvasEMFontSize = 10.0;
+static float kOffScreenCanvasREMFontSize = 16.0;
+
 FilterOperation::OperationType FilterOperationResolver::filterOperationForType(
     CSSValueID type) {
   switch (type) {
@@ -63,7 +66,7 @@
     case CSSValueDropShadow:
       return FilterOperation::DROP_SHADOW;
     default:
-      ASSERT_NOT_REACHED();
+      NOTREACHED();
       // FIXME: We shouldn't have a type None since we never create them
       return FilterOperation::NONE;
   }
@@ -77,7 +80,7 @@
   switch (operationType) {
     case FilterOperation::NONE:
     case FilterOperation::BOX_REFLECT:
-      ASSERT_NOT_REACHED();
+      NOTREACHED();
       return;
     case FilterOperation::REFERENCE:
       feature = UseCounter::CSSFilterReference;
@@ -128,6 +131,7 @@
 
   const CSSToLengthConversionData& conversionData =
       state.cssToLengthConversionData();
+
   for (auto& currValue : toCSSValueList(inValue)) {
     if (currValue->isURIValue()) {
       countFilterUse(FilterOperation::REFERENCE, state.document());
@@ -150,67 +154,50 @@
         filterValue->length() && filterValue->item(0).isPrimitiveValue()
             ? &toCSSPrimitiveValue(filterValue->item(0))
             : nullptr;
+    double firstNumber =
+        StyleBuilderConverter::convertValueToNumber(filterValue, firstValue);
+
     switch (filterValue->functionType()) {
       case CSSValueGrayscale:
       case CSSValueSepia:
-      case CSSValueSaturate: {
-        double amount = 1;
-        if (filterValue->length() == 1) {
-          amount = firstValue->getDoubleValue();
-          if (firstValue->isPercentage())
-            amount /= 100;
-        }
-
-        operations.operations().push_back(
-            BasicColorMatrixFilterOperation::create(amount, operationType));
-        break;
-      }
+      case CSSValueSaturate:
       case CSSValueHueRotate: {
-        double angle = 0;
-        if (filterValue->length() == 1)
-          angle = firstValue->computeDegrees();
-
         operations.operations().push_back(
-            BasicColorMatrixFilterOperation::create(angle, operationType));
+            BasicColorMatrixFilterOperation::create(firstNumber,
+                                                    operationType));
         break;
       }
       case CSSValueInvert:
       case CSSValueBrightness:
       case CSSValueContrast:
       case CSSValueOpacity: {
-        double amount =
-            (filterValue->functionType() == CSSValueBrightness) ? 0 : 1;
-        if (filterValue->length() == 1) {
-          amount = firstValue->getDoubleValue();
-          if (firstValue->isPercentage())
-            amount /= 100;
-        }
-
         operations.operations().push_back(
-            BasicComponentTransferFilterOperation::create(amount,
+            BasicComponentTransferFilterOperation::create(firstNumber,
                                                           operationType));
         break;
       }
       case CSSValueBlur: {
         Length stdDeviation = Length(0, Fixed);
-        if (filterValue->length() >= 1)
+        if (filterValue->length() >= 1) {
           stdDeviation = firstValue->convertToLength(conversionData);
+        }
         operations.operations().push_back(
             BlurFilterOperation::create(stdDeviation));
         break;
       }
       case CSSValueDropShadow: {
-        ShadowData shadow =
-            StyleBuilderConverter::convertShadow(state, filterValue->item(0));
+        ShadowData shadow = StyleBuilderConverter::convertShadow(
+            conversionData, &state, filterValue->item(0));
         // TODO(fs): Resolve 'currentcolor' when constructing the filter chain.
-        if (shadow.color().isCurrentColor())
+        if (shadow.color().isCurrentColor()) {
           shadow.overrideColor(state.style()->color());
+        }
         operations.operations().push_back(
             DropShadowFilterOperation::create(shadow));
         break;
       }
       default:
-        ASSERT_NOT_REACHED();
+        NOTREACHED();
         break;
     }
   }
@@ -218,4 +205,87 @@
   return operations;
 }
 
+FilterOperations FilterOperationResolver::createOffscreenFilterOperations(
+    const CSSValue& inValue) {
+  FilterOperations operations;
+
+  if (inValue.isIdentifierValue()) {
+    DCHECK_EQ(toCSSIdentifierValue(inValue).getValueID(), CSSValueNone);
+    return operations;
+  }
+
+  FontDescription fontDescription;
+  Font font(fontDescription);
+  CSSToLengthConversionData::FontSizes fontSizes(
+      kOffScreenCanvasEMFontSize, kOffScreenCanvasREMFontSize, &font);
+  CSSToLengthConversionData::ViewportSize viewportSize(1024, 768);
+  CSSToLengthConversionData conversionData(&ComputedStyle::initialStyle(),
+                                           fontSizes, viewportSize, 1);
+
+  for (auto& currValue : toCSSValueList(inValue)) {
+    if (currValue->isURIValue())
+      continue;
+
+    const CSSFunctionValue* filterValue = toCSSFunctionValue(currValue.get());
+    FilterOperation::OperationType operationType =
+        filterOperationForType(filterValue->functionType());
+    // TODO(fserb): Take an ExecutionContext argument to this function,
+    // so we can have workers using UseCounter as well.
+    // countFilterUse(operationType, state.document());
+    DCHECK_LE(filterValue->length(), 1u);
+
+    const CSSPrimitiveValue* firstValue =
+        filterValue->length() && filterValue->item(0).isPrimitiveValue()
+            ? &toCSSPrimitiveValue(filterValue->item(0))
+            : nullptr;
+    double firstNumber =
+        StyleBuilderConverter::convertValueToNumber(filterValue, firstValue);
+
+    switch (filterValue->functionType()) {
+      case CSSValueGrayscale:
+      case CSSValueSepia:
+      case CSSValueSaturate:
+      case CSSValueHueRotate: {
+        operations.operations().push_back(
+            BasicColorMatrixFilterOperation::create(firstNumber,
+                                                    operationType));
+        break;
+      }
+      case CSSValueInvert:
+      case CSSValueBrightness:
+      case CSSValueContrast:
+      case CSSValueOpacity: {
+        operations.operations().push_back(
+            BasicComponentTransferFilterOperation::create(firstNumber,
+                                                          operationType));
+        break;
+      }
+      case CSSValueBlur: {
+        Length stdDeviation = Length(0, Fixed);
+        if (filterValue->length() >= 1) {
+          stdDeviation = firstValue->convertToLength(conversionData);
+        }
+        operations.operations().push_back(
+            BlurFilterOperation::create(stdDeviation));
+        break;
+      }
+      case CSSValueDropShadow: {
+        ShadowData shadow = StyleBuilderConverter::convertShadow(
+            conversionData, nullptr, filterValue->item(0));
+        // For offscreen canvas, the default color is always black.
+        if (shadow.color().isCurrentColor()) {
+          shadow.overrideColor(Color::black);
+        }
+        operations.operations().push_back(
+            DropShadowFilterOperation::create(shadow));
+        break;
+      }
+      default:
+        NOTREACHED();
+        break;
+    }
+  }
+  return operations;
+}
+
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.h b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.h
index 860533e4..439f2d7 100644
--- a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.h
+++ b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.h
@@ -24,6 +24,7 @@
 #define FilterOperationResolver_h
 
 #include "core/CSSValueKeywords.h"
+#include "core/css/CSSToLengthConversionData.h"
 #include "core/style/FilterOperations.h"
 #include "platform/heap/Handle.h"
 
@@ -32,13 +33,14 @@
 class CSSValue;
 class StyleResolverState;
 
-class FilterOperationResolver {
+class CORE_EXPORT FilterOperationResolver {
   STATIC_ONLY(FilterOperationResolver);
 
  public:
   static FilterOperation::OperationType filterOperationForType(CSSValueID);
   static FilterOperations createFilterOperations(StyleResolverState&,
                                                  const CSSValue&);
+  static FilterOperations createOffscreenFilterOperations(const CSSValue&);
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
index 948350c..16a2d9d 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
@@ -28,6 +28,7 @@
 
 #include "core/css/BasicShapeFunctions.h"
 #include "core/css/CSSBasicShapeValues.h"
+#include "core/css/CSSColorValue.h"
 #include "core/css/CSSContentDistributionValue.h"
 #include "core/css/CSSCustomIdentValue.h"
 #include "core/css/CSSFontFamilyValue.h"
@@ -156,6 +157,11 @@
   return FilterOperationResolver::createFilterOperations(state, value);
 }
 
+FilterOperations StyleBuilderConverter::convertOffscreenFilterOperations(
+    const CSSValue& value) {
+  return FilterOperationResolver::createOffscreenFilterOperations(value);
+}
+
 static FontDescription::GenericFamilyType convertGenericFamily(
     CSSValueID valueID) {
   switch (valueID) {
@@ -328,6 +334,36 @@
   return primitiveValue.getFloatValue();
 }
 
+double StyleBuilderConverter::convertValueToNumber(
+    const CSSFunctionValue* filter,
+    const CSSPrimitiveValue* value) {
+  switch (filter->functionType()) {
+    case CSSValueGrayscale:
+    case CSSValueSepia:
+    case CSSValueSaturate:
+    case CSSValueInvert:
+    case CSSValueBrightness:
+    case CSSValueContrast:
+    case CSSValueOpacity: {
+      double amount = (filter->functionType() == CSSValueBrightness) ? 0 : 1;
+      if (filter->length() == 1) {
+        amount = value->getDoubleValue();
+        if (value->isPercentage())
+          amount /= 100;
+      }
+      return amount;
+    }
+    case CSSValueHueRotate: {
+      double angle = 0;
+      if (filter->length() == 1)
+        angle = value->computeDegrees();
+      return angle;
+    }
+    default:
+      return 0;
+  }
+}
+
 FontWeight StyleBuilderConverter::convertFontWeight(StyleResolverState& state,
                                                     const CSSValue& value) {
   const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
@@ -1000,25 +1036,48 @@
   return LengthSize(radiusWidth, radiusHeight);
 }
 
-ShadowData StyleBuilderConverter::convertShadow(StyleResolverState& state,
-                                                const CSSValue& value) {
+ShadowData StyleBuilderConverter::convertShadow(
+    const CSSToLengthConversionData& conversionData,
+    StyleResolverState* state,
+    const CSSValue& value) {
   const CSSShadowValue& shadow = toCSSShadowValue(value);
-  float x = shadow.x->computeLength<float>(state.cssToLengthConversionData());
-  float y = shadow.y->computeLength<float>(state.cssToLengthConversionData());
+  float x = shadow.x->computeLength<float>(conversionData);
+  float y = shadow.y->computeLength<float>(conversionData);
   float blur =
-      shadow.blur
-          ? shadow.blur->computeLength<float>(state.cssToLengthConversionData())
-          : 0;
-  float spread = shadow.spread
-                     ? shadow.spread->computeLength<float>(
-                           state.cssToLengthConversionData())
-                     : 0;
+      shadow.blur ? shadow.blur->computeLength<float>(conversionData) : 0;
+  float spread =
+      shadow.spread ? shadow.spread->computeLength<float>(conversionData) : 0;
   ShadowStyle shadowStyle =
       shadow.style && shadow.style->getValueID() == CSSValueInset ? Inset
                                                                   : Normal;
   StyleColor color = StyleColor::currentColor();
-  if (shadow.color)
-    color = convertStyleColor(state, *shadow.color);
+  if (shadow.color) {
+    if (state) {
+      color = convertStyleColor(*state, *shadow.color);
+    } else {
+      // For OffScreen canvas, we default to black and only parse non
+      // Document dependent CSS colors.
+      color = StyleColor(Color::black);
+      if (shadow.color->isColorValue()) {
+        color = toCSSColorValue(*shadow.color).value();
+      } else {
+        CSSValueID valueID = toCSSIdentifierValue(*shadow.color).getValueID();
+        switch (valueID) {
+          case CSSValueInvalid:
+            NOTREACHED();
+          case CSSValueInternalQuirkInherit:
+          case CSSValueWebkitLink:
+          case CSSValueWebkitActivelink:
+          case CSSValueWebkitFocusRingColor:
+          case CSSValueCurrentcolor:
+            break;
+          default:
+            color = StyleColor::colorFromKeyword(valueID);
+        }
+      }
+    }
+  }
+
   return ShadowData(FloatPoint(x, y), blur, spread, shadowStyle, color);
 }
 
@@ -1031,8 +1090,10 @@
   }
 
   ShadowDataVector shadows;
-  for (const auto& item : toCSSValueList(value))
-    shadows.push_back(convertShadow(state, *item));
+  for (const auto& item : toCSSValueList(value)) {
+    shadows.push_back(
+        convertShadow(state.cssToLengthConversionData(), &state, *item));
+  }
 
   return ShadowList::adopt(shadows);
 }
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h
index 33f31ae7..9511dfe 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h
@@ -27,6 +27,7 @@
 #ifndef StyleBuilderConverter_h
 #define StyleBuilderConverter_h
 
+#include "core/css/CSSFunctionValue.h"
 #include "core/css/CSSIdentifierValue.h"
 #include "core/css/CSSStringValue.h"
 #include "core/css/CSSValue.h"
@@ -73,6 +74,7 @@
                                                        const CSSValue&);
   static FilterOperations convertFilterOperations(StyleResolverState&,
                                                   const CSSValue&);
+  static FilterOperations convertOffscreenFilterOperations(const CSSValue&);
   template <typename T>
   static T convertFlags(StyleResolverState&, const CSSValue&);
   static FontDescription::FamilyDescription convertFontFamily(
@@ -130,7 +132,11 @@
                                               const CSSValue&);
   static LengthSize convertRadius(StyleResolverState&, const CSSValue&);
   static EPaintOrder convertPaintOrder(StyleResolverState&, const CSSValue&);
-  static ShadowData convertShadow(StyleResolverState&, const CSSValue&);
+  static ShadowData convertShadow(const CSSToLengthConversionData&,
+                                  StyleResolverState*,
+                                  const CSSValue&);
+  static double convertValueToNumber(const CSSFunctionValue*,
+                                     const CSSPrimitiveValue*);
   static PassRefPtr<ShadowList> convertShadowList(StyleResolverState&,
                                                   const CSSValue&);
   static ShapeValue* convertShapeValue(StyleResolverState&, const CSSValue&);
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
index 1267adb0..b50947044 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
@@ -4977,8 +4977,8 @@
     // Slimming paint v2 stores main thread scrolling reasons on property
     // trees instead of in |m_mainThreadScrollingReasons|.
     MainThreadScrollingReasons reasons = 0;
-    if (const auto* scrollNode = scroll())
-      reasons |= scrollNode->mainThreadScrollingReasons();
+    if (const auto* scrollTranslation = this->scrollTranslation())
+      reasons |= scrollTranslation->scrollNode()->mainThreadScrollingReasons();
     return String(
         MainThreadScrollingReason::mainThreadScrollingReasonsAsText(reasons)
             .c_str());
diff --git a/third_party/WebKit/Source/core/frame/FrameView.h b/third_party/WebKit/Source/core/frame/FrameView.h
index 7de27821..4400f9e 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.h
+++ b/third_party/WebKit/Source/core/frame/FrameView.h
@@ -714,11 +714,6 @@
     return m_scrollTranslation.get();
   }
 
-  void setScroll(PassRefPtr<ScrollPaintPropertyNode> scroll) {
-    m_scroll = scroll;
-  }
-  ScrollPaintPropertyNode* scroll() const { return m_scroll.get(); }
-
   void setContentClip(PassRefPtr<ClipPaintPropertyNode> contentClip) {
     m_contentClip = contentClip;
   }
@@ -1151,7 +1146,6 @@
   // enabled.
   RefPtr<TransformPaintPropertyNode> m_preTranslation;
   RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
-  RefPtr<ScrollPaintPropertyNode> m_scroll;
   // The content clip clips the document (= LayoutView) but not the scrollbars.
   // TODO(trchen): This will not be needed once settings->rootLayerScrolls() is
   // enabled.
diff --git a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp
index 081bdb56..c08cdce7 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp
@@ -500,11 +500,16 @@
     blink::Animation::AnimationPlayState oldPlayState,
     blink::Animation::AnimationPlayState newPlayState) {
   const String& animationId = String::number(animation->sequenceNumber());
-  if (m_idToAnimation.get(animationId) ||
-      m_clearedAnimations.contains(animationId))
+
+  // We no longer care about animations that have been released.
+  if (m_clearedAnimations.contains(animationId))
     return;
-  if (newPlayState == blink::Animation::Running ||
-      newPlayState == blink::Animation::Finished)
+
+  // Record newly starting animations only once, as |buildObjectForAnimation|
+  // constructs and caches our internal representation of the given |animation|.
+  if ((newPlayState == blink::Animation::Running ||
+       newPlayState == blink::Animation::Finished) &&
+      !m_idToAnimation.contains(animationId))
     frontend()->animationStarted(buildObjectForAnimation(*animation));
   else if (newPlayState == blink::Animation::Idle ||
            newPlayState == blink::Animation::Paused)
diff --git a/third_party/WebKit/Source/core/paint/BlockPainter.cpp b/third_party/WebKit/Source/core/paint/BlockPainter.cpp
index c075bb1..067bd04e 100644
--- a/third_party/WebKit/Source/core/paint/BlockPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/BlockPainter.cpp
@@ -202,14 +202,12 @@
     Optional<PaintInfo> scrolledPaintInfo;
     if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
       const auto* objectProperties = m_layoutBlock.paintProperties();
-      if (auto* scroll =
-              objectProperties ? objectProperties->scroll() : nullptr) {
+      auto* scrollTranslation =
+          objectProperties ? objectProperties->scrollTranslation() : nullptr;
+      if (scrollTranslation) {
         PaintChunkProperties properties(paintInfo.context.getPaintController()
                                             .currentPaintChunkProperties());
-        auto* scrollTranslation = objectProperties->scrollTranslation();
-        DCHECK(scrollTranslation);
         properties.propertyTreeState.setTransform(scrollTranslation);
-        properties.propertyTreeState.setScroll(scroll);
         m_scopedScrollProperty.emplace(
             paintInfo.context.getPaintController(), m_layoutBlock,
             DisplayItem::paintPhaseToDrawingType(paintPhase), properties);
diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
index 7c862d8..8147307 100644
--- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
@@ -120,6 +120,14 @@
 
 }  // namespace
 
+FilterEffectBuilder::FilterEffectBuilder(const FloatRect& zoomedReferenceBox,
+                                         float zoom,
+                                         const SkPaint* fillPaint,
+                                         const SkPaint* strokePaint) {
+  FilterEffectBuilder(nullptr, zoomedReferenceBox, zoom, fillPaint,
+                      strokePaint);
+}
+
 FilterEffectBuilder::FilterEffectBuilder(Node* target,
                                          const FloatRect& zoomedReferenceBox,
                                          float zoom,
diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
index 3d7d597a..02f06ea 100644
--- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
+++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
@@ -49,6 +49,10 @@
   STACK_ALLOCATED();
 
  public:
+  FilterEffectBuilder(const FloatRect& zoomedReferenceBox,
+                      float zoom,
+                      const SkPaint* fillPaint = nullptr,
+                      const SkPaint* strokePaint = nullptr);
   FilterEffectBuilder(Node*,
                       const FloatRect& zoomedReferenceBox,
                       float zoom,
diff --git a/third_party/WebKit/Source/core/paint/FindPropertiesNeedingUpdate.h b/third_party/WebKit/Source/core/paint/FindPropertiesNeedingUpdate.h
index 835870b..673c366 100644
--- a/third_party/WebKit/Source/core/paint/FindPropertiesNeedingUpdate.h
+++ b/third_party/WebKit/Source/core/paint/FindPropertiesNeedingUpdate.h
@@ -62,8 +62,6 @@
       m_originalContentClip = contentClip->clone();
     if (auto* scrollTranslation = m_frameView->scrollTranslation())
       m_originalScrollTranslation = scrollTranslation->clone();
-    if (auto* scroll = m_frameView->scroll())
-      m_originalScroll = scroll->clone();
   }
 
   ~FindFrameViewPropertiesNeedingUpdateScope() {
@@ -83,7 +81,6 @@
                                  m_frameView->contentClip());
     DCHECK_FRAMEVIEW_PROPERTY_EQ(m_originalScrollTranslation,
                                  m_frameView->scrollTranslation());
-    DCHECK_FRAMEVIEW_PROPERTY_EQ(m_originalScroll, m_frameView->scroll());
 
     // Restore original clean bit.
     m_frameView->clearNeedsPaintPropertyUpdate();
@@ -96,7 +93,6 @@
   RefPtr<TransformPaintPropertyNode> m_originalPreTranslation;
   RefPtr<ClipPaintPropertyNode> m_originalContentClip;
   RefPtr<TransformPaintPropertyNode> m_originalScrollTranslation;
-  RefPtr<ScrollPaintPropertyNode> m_originalScroll;
 };
 
 #define DCHECK_OBJECT_PROPERTY_EQ(object, original, updated)            \
@@ -165,9 +161,6 @@
                                 m_originalProperties->scrollTranslation(),
                                 objectProperties->scrollTranslation());
       DCHECK_OBJECT_PROPERTY_EQ(m_object,
-                                m_originalProperties->scrollTranslation(),
-                                objectProperties->scrollTranslation());
-      DCHECK_OBJECT_PROPERTY_EQ(m_object,
                                 m_originalProperties->scrollbarPaintOffset(),
                                 objectProperties->scrollbarPaintOffset());
       const auto* originalBorderBox =
@@ -181,8 +174,6 @@
                                   objectBorderBox->clip());
         DCHECK_OBJECT_PROPERTY_EQ(m_object, originalBorderBox->effect(),
                                   objectBorderBox->effect());
-        DCHECK_OBJECT_PROPERTY_EQ(m_object, originalBorderBox->scroll(),
-                                  objectBorderBox->scroll());
       } else {
         DCHECK_EQ(!!originalBorderBox, !!objectBorderBox)
             << " Object: " << m_object.debugName();
diff --git a/third_party/WebKit/Source/core/paint/FramePainter.cpp b/third_party/WebKit/Source/core/paint/FramePainter.cpp
index 5a62f26..20dc935c 100644
--- a/third_party/WebKit/Source/core/paint/FramePainter.cpp
+++ b/third_party/WebKit/Source/core/paint/FramePainter.cpp
@@ -103,10 +103,6 @@
         properties.propertyTreeState.setClip(
             m_frameView->contentClip()->parent());
         properties.propertyTreeState.setEffect(contentsState->effect());
-        auto* scrollBarScroll = contentsState->scroll();
-        if (m_frameView->scroll())
-          scrollBarScroll = m_frameView->scroll()->parent();
-        properties.propertyTreeState.setScroll(scrollBarScroll);
         scopedPaintChunkProperties.emplace(context.getPaintController(),
                                            *frameView().layoutView(),
                                            properties);
diff --git a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp
index f79de534..eb3bf25 100644
--- a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp
+++ b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp
@@ -15,10 +15,6 @@
 
   if (scrollTranslation())
     m_contentsProperties->setTransform(scrollTranslation());
-
-  if (scroll())
-    m_contentsProperties->setScroll(scroll());
-
   if (overflowClip())
     m_contentsProperties->setClip(overflowClip());
   else if (cssClip())
diff --git a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
index 2ccf33bc..582996b 100644
--- a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
+++ b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
@@ -91,11 +91,6 @@
     return m_scrollbarPaintOffset.get();
   }
 
-  // Auxiliary scrolling information. Includes information such as the hierarchy
-  // of scrollable areas, the extent that can be scrolled, etc. The actual
-  // scroll offset is stored in the transform tree (m_scrollTranslation).
-  const ScrollPaintPropertyNode* scroll() const { return m_scroll.get(); }
-
   const EffectPaintPropertyNode* effect() const { return m_effect.get(); }
 
   // The hierarchy of the clip subtree created by a LayoutObject is as follows:
@@ -116,24 +111,22 @@
     return m_overflowClip.get();
   }
 
-  // This is a complete set of property nodes and paint offset that should be
-  // used as a starting point to paint this layout object. This is cached
-  // because some properties inherit from the containing block chain instead of
-  // the painting parent and cannot be derived in O(1) during the paint walk.
-  // For example, <div style='opacity: 0.3; position: relative; margin: 11px;'/>
-  // would have a paint offset of (11px, 11px) and propertyTreeState.effect()
-  // would be an effect node with opacity of 0.3 which was created by the div
-  // itself. Note that propertyTreeState.transform() would not be null but would
-  // instead point to the transform space setup by div's ancestors.
+  // This is a complete set of property nodes that should be used as a starting
+  // point to paint this layout object. This is cached because some properties
+  // inherit from the containing block chain instead of the painting parent and
+  // cannot be derived in O(1) during the paint walk. For example:
+  // <div style='opacity: 0.3;'/> would have a propertyTreeState.effect()
+  // with opacity of 0.3 which was created by the div itself. Note that
+  // propertyTreeState.transform() would not be null but would instead point to
+  // the transform space setup by div's ancestors.
   const PropertyTreeState* localBorderBoxProperties() const {
     return m_localBorderBoxProperties.get();
   }
 
-  // This is the complete set of property nodes and paint offset that can be
-  // used to paint the contents of this object. It is similar to
-  // localBorderBoxProperties but includes properties (e.g., overflow clip,
-  // scroll translation) that apply to contents. This is suitable for paint
-  // invalidation.
+  // This is the complete set of property nodes that can be used to paint the
+  // contents of this object. It is similar to localBorderBoxProperties but
+  // includes properties (e.g., overflow clip, scroll translation) that apply to
+  // contents. This is suitable for paint invalidation.
   const PropertyTreeState* contentsProperties() const {
     if (!m_contentsProperties) {
       if (!m_localBorderBoxProperties)
@@ -155,16 +148,14 @@
   void updateLocalBorderBoxProperties(
       const TransformPaintPropertyNode* transform,
       const ClipPaintPropertyNode* clip,
-      const EffectPaintPropertyNode* effect,
-      const ScrollPaintPropertyNode* scroll) {
+      const EffectPaintPropertyNode* effect) {
     if (m_localBorderBoxProperties) {
       m_localBorderBoxProperties->setTransform(transform);
       m_localBorderBoxProperties->setClip(clip);
       m_localBorderBoxProperties->setEffect(effect);
-      m_localBorderBoxProperties->setScroll(scroll);
     } else {
-      m_localBorderBoxProperties = WTF::wrapUnique(new PropertyTreeState(
-          PropertyTreeState(transform, clip, effect, scroll)));
+      m_localBorderBoxProperties = WTF::wrapUnique(
+          new PropertyTreeState(PropertyTreeState(transform, clip, effect)));
     }
     m_contentsProperties = nullptr;
   }
@@ -190,7 +181,6 @@
   }
   bool clearScrollTranslation() { return clear(m_scrollTranslation); }
   bool clearScrollbarPaintOffset() { return clear(m_scrollbarPaintOffset); }
-  bool clearScroll() { return clear(m_scroll); }
 
   // The following update* functions return true if the property tree structure
   // changes (a new node was created), and false otherwise. See the class-level
@@ -220,17 +210,19 @@
     DCHECK(!svgLocalToBorderBoxTransform())
         << "SVG elements cannot scroll so there should never be both a scroll "
            "translation and an SVG local to border box transform.";
-    return update(m_scrollTranslation, std::forward<Args>(args)...);
+    if (m_scrollTranslation) {
+      m_scrollTranslation->updateScrollTranslation(std::forward<Args>(args)...);
+      return false;
+    }
+    m_scrollTranslation = TransformPaintPropertyNode::createScrollTranslation(
+        std::forward<Args>(args)...);
+    return true;
   }
   template <typename... Args>
   bool updateScrollbarPaintOffset(Args&&... args) {
     return update(m_scrollbarPaintOffset, std::forward<Args>(args)...);
   }
   template <typename... Args>
-  bool updateScroll(Args&&... args) {
-    return update(m_scroll, std::forward<Args>(args)...);
-  }
-  template <typename... Args>
   bool updateEffect(Args&&... args) {
     return update(m_effect, std::forward<Args>(args)...);
   }
@@ -279,8 +271,6 @@
       cloned->m_scrollTranslation = m_scrollTranslation->clone();
     if (m_scrollbarPaintOffset)
       cloned->m_scrollbarPaintOffset = m_scrollbarPaintOffset->clone();
-    if (m_scroll)
-      cloned->m_scroll = m_scroll->clone();
     if (m_localBorderBoxProperties) {
       cloned->m_localBorderBoxProperties =
           WTF::wrapUnique(new PropertyTreeState(*m_localBorderBoxProperties));
@@ -331,7 +321,6 @@
   RefPtr<TransformPaintPropertyNode> m_svgLocalToBorderBoxTransform;
   RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
   RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset;
-  RefPtr<ScrollPaintPropertyNode> m_scroll;
 
   std::unique_ptr<PropertyTreeState> m_localBorderBoxProperties;
   mutable std::unique_ptr<PropertyTreeState> m_contentsProperties;
diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp
index 8bb3ea1..018acd1 100644
--- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp
@@ -227,8 +227,10 @@
                             DisplayItem::kClipFrameToVisibleContentRect)));
   }
 
+  // Verify that the background does not scroll.
   const PaintChunk& backgroundChunk = rootPaintController().paintChunks()[0];
-  EXPECT_TRUE(backgroundChunk.properties.propertyTreeState.scroll()->isRoot());
+  EXPECT_FALSE(backgroundChunk.properties.propertyTreeState.transform()
+                   ->isScrollTranslation());
 
   const EffectPaintPropertyNode* effectNode = div.paintProperties()->effect();
   EXPECT_EQ(0.5f, effectNode->opacity());
diff --git a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
index aeccb6c..162dba32 100644
--- a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
@@ -116,7 +116,7 @@
     } else {
       PropertyTreeState currentTreeState(
           context.treeBuilderContext.current.transform,
-          context.treeBuilderContext.current.clip, nullptr, nullptr);
+          context.treeBuilderContext.current.clip, nullptr);
       result = LayoutRect(geometryMapper.sourceToDestinationVisualRect(
           FloatRect(rect), currentTreeState, *containerContentsProperties));
     }
@@ -245,11 +245,14 @@
 
     if (frameView.contentClip() == m_savedContext.clip)
       m_treeBuilderContext.current.clip = m_savedContext.clip->parent();
-    if (frameView.scroll() == m_savedContext.scroll)
-      m_treeBuilderContext.current.scroll = m_savedContext.scroll->parent();
-    if (frameView.scrollTranslation() == m_savedContext.transform)
-      m_treeBuilderContext.current.transform =
-          m_savedContext.transform->parent();
+    if (const auto* scrollTranslation = frameView.scrollTranslation()) {
+      if (scrollTranslation->scrollNode() == m_savedContext.scroll)
+        m_treeBuilderContext.current.scroll = m_savedContext.scroll->parent();
+      if (scrollTranslation == m_savedContext.transform) {
+        m_treeBuilderContext.current.transform =
+            m_savedContext.transform->parent();
+      }
+    }
   }
 
   ~ScopedUndoFrameViewContentClipAndScroll() {
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
index 92d3dd1..72d15516 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
@@ -328,31 +328,50 @@
   }
 }
 
+static const ScrollPaintPropertyNode* nearestScrollNode(
+    const TransformPaintPropertyNode* transform) {
+  if (const auto* scrollNode = transform->scrollNode())
+    return scrollNode;
+  for (const auto* ancestor = transform->parent(); ancestor;
+       ancestor = ancestor->parent()) {
+    if (const auto* scrollNode = ancestor->scrollNode())
+      return scrollNode;
+  }
+  // The root transform node references the root scroll node so a scroll node
+  // should always exist.
+  NOTREACHED();
+  return nullptr;
+}
+
 bool PaintLayer::sticksToViewport() const {
   if (layoutObject()->style()->position() != FixedPosition &&
       layoutObject()->style()->position() != StickyPosition)
     return false;
 
+  // TODO(pdr): This approach of calculating the nearest scroll node is O(n).
+  // An option for improving this is to cache the nearest scroll node in
+  // the local border box properties.
   if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
     const ScrollPaintPropertyNode* ancestorTargetScrollNode;
     if (layoutObject()->style()->position() == FixedPosition) {
-      ancestorTargetScrollNode = layoutObject()
-                                     ->view()
-                                     ->paintProperties()
-                                     ->localBorderBoxProperties()
-                                     ->scroll();
+      ancestorTargetScrollNode =
+          nearestScrollNode(layoutObject()
+                                ->view()
+                                ->paintProperties()
+                                ->localBorderBoxProperties()
+                                ->transform());
     } else {
-      ancestorTargetScrollNode = layoutObject()
-                                     ->view()
-                                     ->paintProperties()
-                                     ->contentsProperties()
-                                     ->scroll();
+      ancestorTargetScrollNode = nearestScrollNode(layoutObject()
+                                                       ->view()
+                                                       ->paintProperties()
+                                                       ->contentsProperties()
+                                                       ->transform());
     }
 
-    return layoutObject()
-               ->paintProperties()
-               ->localBorderBoxProperties()
-               ->scroll() == ancestorTargetScrollNode;
+    return nearestScrollNode(layoutObject()
+                                 ->paintProperties()
+                                 ->localBorderBoxProperties()
+                                 ->transform()) == ancestorTargetScrollNode;
   }
 
   return (layoutObject()->style()->position() == FixedPosition &&
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
index 716a2d0..445c595 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
@@ -76,49 +76,38 @@
                                    CompositorSubElementId::Primary);
 }
 
-// True if a new property was created, false if an existing one was updated.
+// True if a new property was created or a main thread scrolling reason changed
+// (which can affect descendants), false if an existing one was updated.
 static bool updateScrollTranslation(
     FrameView& frameView,
     PassRefPtr<const TransformPaintPropertyNode> parent,
     const TransformationMatrix& matrix,
     const FloatPoint3D& origin,
-    PassRefPtr<const ScrollPaintPropertyNode> scroll) {
-  DCHECK(!RuntimeEnabledFeatures::rootLayerScrollingEnabled());
-  CompositorElementId compositorElementId =
-      createDomNodeBasedCompositorElementId(*frameView.layoutView());
-  if (auto* existingScrollTranslation = frameView.scrollTranslation()) {
-    existingScrollTranslation->update(
-        std::move(parent), matrix, origin, std::move(scroll), false, 0,
-        CompositingReasonNone, compositorElementId);
-    return false;
-  }
-  frameView.setScrollTranslation(TransformPaintPropertyNode::create(
-      std::move(parent), matrix, origin, std::move(scroll), false, 0,
-      CompositingReasonNone, compositorElementId));
-  return true;
-}
-
-// True if a new property was created or a main thread scrolling reason changed
-// (which can affect descendants), false if an existing one was updated.
-static bool updateScroll(
-    FrameView& frameView,
-    PassRefPtr<const ScrollPaintPropertyNode> parent,
+    PassRefPtr<const ScrollPaintPropertyNode> scrollParent,
     const IntSize& clip,
     const IntSize& bounds,
     bool userScrollableHorizontal,
     bool userScrollableVertical,
     MainThreadScrollingReasons mainThreadScrollingReasons) {
   DCHECK(!RuntimeEnabledFeatures::rootLayerScrollingEnabled());
-  if (auto* existingScroll = frameView.scroll()) {
-    auto existingReasons = existingScroll->mainThreadScrollingReasons();
-    existingScroll->update(std::move(parent), clip, bounds,
-                           userScrollableHorizontal, userScrollableVertical,
-                           mainThreadScrollingReasons);
+  CompositorElementId compositorElementId =
+      createDomNodeBasedCompositorElementId(*frameView.layoutView());
+  if (auto* existingScrollTranslation = frameView.scrollTranslation()) {
+    auto existingReasons =
+        existingScrollTranslation->scrollNode()->mainThreadScrollingReasons();
+    existingScrollTranslation->updateScrollTranslation(
+        std::move(parent), matrix, origin, false, 0, CompositingReasonNone,
+        compositorElementId, std::move(scrollParent), clip, bounds,
+        userScrollableHorizontal, userScrollableVertical,
+        mainThreadScrollingReasons);
     return existingReasons != mainThreadScrollingReasons;
   }
-  frameView.setScroll(ScrollPaintPropertyNode::create(
-      std::move(parent), clip, bounds, userScrollableHorizontal,
-      userScrollableVertical, mainThreadScrollingReasons));
+  frameView.setScrollTranslation(
+      TransformPaintPropertyNode::createScrollTranslation(
+          std::move(parent), matrix, origin, false, 0, CompositingReasonNone,
+          compositorElementId, std::move(scrollParent), clip, bounds,
+          userScrollableHorizontal, userScrollableVertical,
+          mainThreadScrollingReasons));
   return true;
 }
 
@@ -169,6 +158,9 @@
 
     ScrollOffset scrollOffset = frameView.getScrollOffset();
     if (frameView.isScrollable() || !scrollOffset.isZero()) {
+      TransformationMatrix frameScroll;
+      frameScroll.translate(-scrollOffset.width(), -scrollOffset.height());
+
       IntSize scrollClip = frameView.visibleContentSize();
       IntSize scrollBounds = frameView.contentsSize();
       bool userScrollableHorizontal =
@@ -179,21 +171,15 @@
       auto ancestorReasons =
           context.current.scroll->mainThreadScrollingReasons();
       auto reasons = mainThreadScrollingReasons(frameView, ancestorReasons);
-      context.forceSubtreeUpdate |= updateScroll(
-          frameView, context.current.scroll, scrollClip, scrollBounds,
-          userScrollableHorizontal, userScrollableVertical, reasons);
 
-      TransformationMatrix frameScroll;
-      frameScroll.translate(-scrollOffset.width(), -scrollOffset.height());
       context.forceSubtreeUpdate |= updateScrollTranslation(
           frameView, frameView.preTranslation(), frameScroll, FloatPoint3D(),
-          frameView.scroll());
+          context.current.scroll, scrollClip, scrollBounds,
+          userScrollableHorizontal, userScrollableVertical, reasons);
     } else {
-      if (frameView.scrollTranslation() || frameView.scroll()) {
+      if (frameView.scrollTranslation()) {
         // Ensure pre-existing properties are cleared if there is no scrolling.
         frameView.setScrollTranslation(nullptr);
-        frameView.setScroll(nullptr);
-
         // Rebuild all descendant properties because a property was removed.
         context.forceSubtreeUpdate = true;
       }
@@ -211,10 +197,10 @@
   context.current.transform = frameView.preTranslation();
   DCHECK(frameView.contentClip());
   context.current.clip = frameView.contentClip();
-  if (const auto* scrollTranslation = frameView.scrollTranslation())
+  if (const auto* scrollTranslation = frameView.scrollTranslation()) {
     context.current.transform = scrollTranslation;
-  if (const auto* scroll = frameView.scroll())
-    context.current.scroll = scroll;
+    context.current.scroll = scrollTranslation->scrollNode();
+  }
   context.current.paintOffset = LayoutPoint();
   context.current.renderingContextId = 0;
   context.current.shouldFlattenInheritedTransform = true;
@@ -224,9 +210,8 @@
   context.fixedPosition.transform = fixedTransformNode;
   context.fixedPosition.scroll = fixedScrollNode;
 
-  std::unique_ptr<PropertyTreeState> contentsState(
-      new PropertyTreeState(context.current.transform, context.current.clip,
-                            context.currentEffect, context.current.scroll));
+  std::unique_ptr<PropertyTreeState> contentsState(new PropertyTreeState(
+      context.current.transform, context.current.clip, context.currentEffect));
   frameView.setTotalPropertyTreeStateForContents(std::move(contentsState));
 }
 
@@ -265,8 +250,7 @@
           context.current.transform,
           TransformationMatrix().translate(roundedPaintOffset.x(),
                                            roundedPaintOffset.y()),
-          FloatPoint3D(), nullptr,
-          context.current.shouldFlattenInheritedTransform,
+          FloatPoint3D(), context.current.shouldFlattenInheritedTransform,
           context.current.renderingContextId);
     } else {
       if (auto* properties = object.getMutableForPainting().paintProperties())
@@ -405,7 +389,7 @@
         auto& properties =
             object.getMutableForPainting().ensurePaintProperties();
         context.forceSubtreeUpdate |= properties.updateTransform(
-            context.current.transform, matrix, transformOrigin(box), nullptr,
+            context.current.transform, matrix, transformOrigin(box),
             context.current.shouldFlattenInheritedTransform, renderingContextId,
             compositingReasons, compositorElementId);
         hasTransform = true;
@@ -589,8 +573,7 @@
   } else {
     auto& properties = object.getMutableForPainting().ensurePaintProperties();
     properties.updateLocalBorderBoxProperties(
-        context.current.transform, context.current.clip, context.currentEffect,
-        context.current.scroll);
+        context.current.transform, context.current.clip, context.currentEffect);
   }
 }
 
@@ -694,7 +677,7 @@
                             toLayoutSize(context.current.paintOffset);
       auto& properties = object.getMutableForPainting().ensurePaintProperties();
       context.forceSubtreeUpdate |= properties.updatePerspective(
-          context.current.transform, matrix, origin, nullptr,
+          context.current.transform, matrix, origin,
           context.current.shouldFlattenInheritedTransform,
           context.current.renderingContextId);
     } else {
@@ -773,6 +756,8 @@
       if (scrollNodeNeededForMainThreadReasons || !scrollOffset.isZero() ||
           scrollableArea->scrollsOverflow()) {
         needsScrollProperties = true;
+        auto& properties =
+            object.getMutableForPainting().ensurePaintProperties();
 
         IntSize scrollClip = scrollableArea->visibleContentRect().size();
         IntSize scrollBounds = scrollableArea->contentsSize();
@@ -783,42 +768,37 @@
 
         // Main thread scrolling reasons depend on their ancestor's reasons
         // so ensure the entire subtree is updated when reasons change.
-        auto& properties =
-            object.getMutableForPainting().ensurePaintProperties();
-        if (auto* existingScrollNode = properties.scroll()) {
+        if (auto* existingScrollTranslation = properties.scrollTranslation()) {
+          auto* existingScrollNode = existingScrollTranslation->scrollNode();
           if (existingScrollNode->mainThreadScrollingReasons() != reasons)
             context.forceSubtreeUpdate = true;
         }
 
-        context.forceSubtreeUpdate |= properties.updateScroll(
-            context.current.scroll, scrollClip, scrollBounds,
-            userScrollableHorizontal, userScrollableVertical, reasons);
-
         CompositorElementId compositorElementId =
             createDomNodeBasedCompositorElementId(object);
         TransformationMatrix matrix = TransformationMatrix().translate(
             -scrollOffset.width(), -scrollOffset.height());
         context.forceSubtreeUpdate |= properties.updateScrollTranslation(
             context.current.transform, matrix, FloatPoint3D(),
-            properties.scroll(),
             context.current.shouldFlattenInheritedTransform,
             context.current.renderingContextId, CompositingReasonNone,
-            compositorElementId);
+            compositorElementId, context.current.scroll, scrollClip,
+            scrollBounds, userScrollableHorizontal, userScrollableVertical,
+            reasons);
       }
     }
 
     if (!needsScrollProperties) {
       // Ensure pre-existing properties are cleared.
-      if (auto* properties = object.getMutableForPainting().paintProperties()) {
+      if (auto* properties = object.getMutableForPainting().paintProperties())
         context.forceSubtreeUpdate |= properties->clearScrollTranslation();
-        context.forceSubtreeUpdate |= properties->clearScroll();
-      }
     }
   }
 
-  if (object.paintProperties() && object.paintProperties()->scroll()) {
+  if (object.paintProperties() &&
+      object.paintProperties()->scrollTranslation()) {
     context.current.transform = object.paintProperties()->scrollTranslation();
-    context.current.scroll = object.paintProperties()->scroll();
+    context.current.scroll = context.current.transform->scrollNode();
     context.current.shouldFlattenInheritedTransform = false;
   }
 }
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
index 9014db1..dfcc403 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
@@ -47,9 +47,14 @@
     FrameView* frameView) {
   if (!frameView)
     frameView = document().view();
-  if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
-    return frameView->layoutView()->paintProperties()->scroll();
-  return frameView->scroll();
+  if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+    const auto* scrollTranslation =
+        frameView->layoutView()->paintProperties()->scrollTranslation();
+    return scrollTranslation ? scrollTranslation->scrollNode() : nullptr;
+  }
+  return frameView->scrollTranslation()
+             ? frameView->scrollTranslation()->scrollNode()
+             : nullptr;
 }
 
 const ObjectPaintProperties*
@@ -149,7 +154,7 @@
   EXPECT_TRUE(positionedScrollNode->parent()->isRoot());
   EXPECT_EQ(TransformationMatrix().translate(0, -3),
             positionedScrollTranslation->matrix());
-  EXPECT_EQ(nullptr, target1Properties->scroll());
+  EXPECT_EQ(nullptr, target1Properties->scrollTranslation());
   CHECK_EXACT_VISUAL_RECT(LayoutRect(200, 150, 100, 100),
                           target1->layoutObject(), frameView->layoutView());
 
@@ -175,7 +180,7 @@
   EXPECT_TRUE(transformedScrollNode->parent()->isRoot());
   EXPECT_EQ(TransformationMatrix().translate(0, -5),
             transformedScrollTranslation->matrix());
-  EXPECT_EQ(nullptr, target2Properties->scroll());
+  EXPECT_EQ(nullptr, target2Properties->scrollTranslation());
 
   CHECK_EXACT_VISUAL_RECT(LayoutRect(208, 153, 200, 100),
                           target2->layoutObject(), frameView->layoutView());
@@ -196,11 +201,12 @@
             scrollerProperties->scrollTranslation()->parent());
   EXPECT_EQ(frameScrollTranslation(),
             scrollerProperties->overflowClip()->localTransformSpace());
-  EXPECT_EQ(frameScroll(), scrollerProperties->scroll()->parent());
-  EXPECT_EQ(FloatSize(413, 317), scrollerProperties->scroll()->clip());
-  EXPECT_EQ(FloatSize(660, 10200), scrollerProperties->scroll()->bounds());
-  EXPECT_FALSE(scrollerProperties->scroll()->userScrollableHorizontal());
-  EXPECT_TRUE(scrollerProperties->scroll()->userScrollableVertical());
+  const auto* scroll = scrollerProperties->scrollTranslation()->scrollNode();
+  EXPECT_EQ(frameScroll(), scroll->parent());
+  EXPECT_EQ(FloatSize(413, 317), scroll->clip());
+  EXPECT_EQ(FloatSize(660, 10200), scroll->bounds());
+  EXPECT_FALSE(scroll->userScrollableHorizontal());
+  EXPECT_TRUE(scroll->userScrollableVertical());
   EXPECT_EQ(FloatRoundedRect(120, 340, 413, 317),
             scrollerProperties->overflowClip()->clipRect());
   EXPECT_EQ(frameContentClip(), scrollerProperties->overflowClip()->parent());
@@ -2721,7 +2727,9 @@
       overflow->layoutObject()->paintProperties();
   auto* scrollTranslation = overflowScrollProperties->scrollTranslation();
   auto* overflowScrollNode = scrollTranslation->scrollNode();
-  EXPECT_EQ(frameScroll(), overflowScrollProperties->scroll()->parent());
+  EXPECT_EQ(
+      frameScroll(),
+      overflowScrollProperties->scrollTranslation()->scrollNode()->parent());
   EXPECT_EQ(TransformationMatrix().translate(0, -37),
             scrollTranslation->matrix());
   EXPECT_EQ(IntSize(5, 3), overflowScrollNode->clip());
@@ -2876,7 +2884,8 @@
   Element* overflow = document().getElementById("overflow");
   EXPECT_TRUE(frameScroll()->hasBackgroundAttachmentFixedDescendants());
   // No scroll node is needed.
-  EXPECT_EQ(overflow->layoutObject()->paintProperties()->scroll(), nullptr);
+  EXPECT_EQ(overflow->layoutObject()->paintProperties()->scrollTranslation(),
+            nullptr);
 }
 
 TEST_P(PaintPropertyTreeBuilderTest, PaintOffsetsUnderMultiColumn) {
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.cpp
index 3344e8a8..db1612b 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.cpp
@@ -219,16 +219,20 @@
   static void addFrameViewProperties(
       const FrameView& frameView,
       PropertyTreePrinter<ScrollPaintPropertyNode>& printer) {
-    if (const ScrollPaintPropertyNode* scroll = frameView.scroll())
-      printer.addPropertyNode(scroll, "Scroll (FrameView)");
+    if (const auto* scrollTranslation = frameView.scrollTranslation()) {
+      const auto* scrollNode = scrollTranslation->scrollNode();
+      printer.addPropertyNode(scrollNode, "Scroll (FrameView)");
+    }
   }
 
   static void addObjectPaintProperties(
       const LayoutObject& object,
       const ObjectPaintProperties& paintProperties,
       PropertyTreePrinter<ScrollPaintPropertyNode>& printer) {
-    if (const ScrollPaintPropertyNode* scroll = paintProperties.scroll())
-      printer.addPropertyNode(scroll, "Scroll (" + object.debugName() + ")");
+    if (const auto* scrollTranslation = paintProperties.scrollTranslation()) {
+      printer.addPropertyNode(scrollTranslation->scrollNode(),
+                              "Scroll (" + object.debugName() + ")");
+    }
   }
 };
 
@@ -429,7 +433,9 @@
       if (object.isLayoutView() && overflowClip->parent())
         writePaintPropertyNode(*overflowClip->parent(), nullptr, "rootClip");
     }
-    const ScrollPaintPropertyNode* scroll = properties->scroll();
+
+    const auto* scroll =
+        scrollTranslation ? scrollTranslation->scrollNode() : nullptr;
     if (scroll)
       writePaintPropertyNode(*scroll, &object, "scroll");
   }
@@ -450,8 +456,6 @@
         writePaintPropertyNode(*root, &frameView, "rootClip");
       if (const auto* root = getRoot(contentsState->effect()))
         writePaintPropertyNode(*root, &frameView, "rootEffect");
-      if (const auto* root = getRoot(contentsState->scroll()))
-        writePaintPropertyNode(*root, &frameView, "rootScroll");
     }
     TransformPaintPropertyNode* preTranslation = frameView.preTranslation();
     if (preTranslation)
@@ -464,7 +468,8 @@
     ClipPaintPropertyNode* contentClip = frameView.contentClip();
     if (contentClip)
       writePaintPropertyNode(*contentClip, &frameView, "contentClip");
-    const ScrollPaintPropertyNode* scroll = frameView.scroll();
+    const auto* scroll =
+        scrollTranslation ? scrollTranslation->scrollNode() : nullptr;
     if (scroll)
       writePaintPropertyNode(*scroll, &frameView, "scroll");
   }
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinterTest.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinterTest.cpp
index 38386c1..4cf9a15 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinterTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinterTest.cpp
@@ -126,7 +126,8 @@
   LayoutObject* scrollObject =
       document().getElementById("scroll")->layoutObject();
   const auto* scrollObjectProperties = scrollObject->paintProperties();
-  String scrollPathAsString = scrollObjectProperties->scroll()->toTreeString();
+  String scrollPathAsString =
+      scrollObjectProperties->scrollTranslation()->scrollNode()->toTreeString();
   EXPECT_THAT(scrollPathAsString.ascii().data(),
               testing::MatchesRegex("root .* parent.*"
                                     "  .* parent.*"));
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeUpdateTests.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeUpdateTests.cpp
index fb26bff..7f04b680 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeUpdateTests.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeUpdateTests.cpp
@@ -35,7 +35,8 @@
   EXPECT_FALSE(frameScroll()->threadedScrollingDisabled());
   EXPECT_FALSE(overflowA->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->threadedScrollingDisabled());
 
   document().settings()->setThreadedScrollingEnabled(false);
@@ -47,7 +48,8 @@
   EXPECT_TRUE(frameScroll()->threadedScrollingDisabled());
   EXPECT_TRUE(overflowA->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->threadedScrollingDisabled());
 }
 
@@ -88,11 +90,13 @@
   EXPECT_TRUE(frameScroll()->hasBackgroundAttachmentFixedDescendants());
   EXPECT_TRUE(overflowA->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_TRUE(overflowB->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->hasBackgroundAttachmentFixedDescendants());
 
   // Removing a main thread scrolling reason should update the entire tree.
@@ -101,11 +105,13 @@
   EXPECT_FALSE(frameScroll()->hasBackgroundAttachmentFixedDescendants());
   EXPECT_FALSE(overflowA->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_FALSE(overflowB->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->hasBackgroundAttachmentFixedDescendants());
 
   // Adding a main thread scrolling reason should update the entire tree.
@@ -114,11 +120,13 @@
   EXPECT_TRUE(frameScroll()->hasBackgroundAttachmentFixedDescendants());
   EXPECT_TRUE(overflowA->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_TRUE(overflowB->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->hasBackgroundAttachmentFixedDescendants());
 }
 
@@ -232,15 +240,18 @@
   // reasons as we could be.
   EXPECT_TRUE(overflowA->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_FALSE(overflowB->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_TRUE(overflowB->layoutObject()
                   ->paintProperties()
-                  ->scroll()
+                  ->scrollTranslation()
+                  ->scrollNode()
                   ->parent()
                   ->isRoot());
 
@@ -249,15 +260,18 @@
   document().view()->updateAllLifecyclePhases();
   EXPECT_FALSE(overflowA->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_FALSE(overflowB->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->hasBackgroundAttachmentFixedDescendants());
   EXPECT_FALSE(overflowB->layoutObject()
                    ->paintProperties()
-                   ->scroll()
+                   ->scrollTranslation()
+                   ->scrollNode()
                    ->parent()
                    ->hasBackgroundAttachmentFixedDescendants());
 }
diff --git a/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp b/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
index 891ab6ff..d7eb33f 100644
--- a/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
+++ b/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
@@ -292,9 +292,9 @@
   // from the embedding frame tree.
   if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
     PaintChunk::Id id(patternPicture, DisplayItem::kSVGImage);
-    PropertyTreeState state(
-        TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-        EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+    PropertyTreeState state(TransformPaintPropertyNode::root(),
+                            ClipPaintPropertyNode::root(),
+                            EffectPaintPropertyNode::root());
     m_paintController->updateCurrentPaintChunkProperties(&id, state);
   }
 
@@ -393,9 +393,9 @@
   // from the embedding frame tree.
   if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
     PaintChunk::Id id(imagePicture, DisplayItem::kSVGImage);
-    PropertyTreeState state(
-        TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-        EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+    PropertyTreeState state(TransformPaintPropertyNode::root(),
+                            ClipPaintPropertyNode::root(),
+                            EffectPaintPropertyNode::root());
     m_paintController->updateCurrentPaintChunkProperties(&id, state);
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Settings.js b/third_party/WebKit/Source/devtools/front_end/common/Settings.js
index fc709b7..6c822c45 100644
--- a/third_party/WebKit/Source/devtools/front_end/common/Settings.js
+++ b/third_party/WebKit/Source/devtools/front_end/common/Settings.js
@@ -709,6 +709,15 @@
     breakpointsSetting.set(breakpoints);
   }
 
+  _updateVersionFrom22To23() {
+    var oldSetting = Common.settings.createSetting('consoleTimestampsEnabled', false);
+    var newSetting = Common.settings.createSetting('consoleTimestampFormat', 'none');
+    var oldValue = oldSetting.get();
+    if (oldValue)
+      newSetting.set('short');
+    oldSetting.remove();
+  }
+
   _migrateSettingsFromLocalStorage() {
     // This step migrates all the settings except for the ones below into the browser profile.
     var localSettings = new Set([
@@ -741,7 +750,7 @@
 };
 
 Common.VersionController._currentVersionName = 'inspectorVersion';
-Common.VersionController.currentVersion = 22;
+Common.VersionController.currentVersion = 23;
 
 /**
  * @type {!Common.Settings}
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
index efca992..59263a5 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
@@ -144,7 +144,7 @@
     this._consoleHistoryAutocompleteChanged();
 
     this._updateFilterStatus();
-    Common.moduleSetting('consoleTimestampsEnabled').addChangeListener(this._consoleTimestampsSettingChanged, this);
+    Common.moduleSetting('consoleTimestampFormat').addChangeListener(this._consoleTimestampsSettingChanged, this);
 
     this._registerWithMessageSink();
     SDK.targetManager.observeTargets(this);
@@ -321,15 +321,9 @@
     this._addConsoleMessage(consoleMessage);
   }
 
-  /**
-   * @param {!Common.Event} event
-   */
-  _consoleTimestampsSettingChanged(event) {
-    var enabled = /** @type {boolean} */ (event.data);
+  _consoleTimestampsSettingChanged() {
     this._updateMessageList();
-    this._consoleMessages.forEach(function(viewMessage) {
-      viewMessage.updateTimestamp(enabled);
-    });
+    this._consoleMessages.forEach(viewMessage => viewMessage.updateTimestamp());
   }
 
   _executionContextChanged() {
@@ -684,8 +678,9 @@
    * @return {boolean}
    */
   _tryToCollapseMessages(lastMessage, viewMessage) {
-    if (!Common.moduleSetting('consoleTimestampsEnabled').get() && viewMessage &&
-        !lastMessage.consoleMessage().isGroupMessage() &&
+    var timestampFormat = Common.moduleSetting('consoleTimestampFormat').get();
+    var timestampsShown = timestampFormat !== Console.ConsoleViewMessage.TimestampFormat.None;
+    if (!timestampsShown && viewMessage && !lastMessage.consoleMessage().isGroupMessage() &&
         lastMessage.consoleMessage().isEqual(viewMessage.consoleMessage())) {
       viewMessage.incrementRepeatCount();
       return true;
@@ -1206,6 +1201,8 @@
       } else {
         this._updateSearch();
       }
+
+      this.updateTimestamp();
     }
     return this._contentElement;
   }
@@ -1248,7 +1245,6 @@
         element.insertBefore(icon, element.firstChild);
       }
     }
-    this.updateTimestamp(false);
     return element;
   }
 };
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
index d62855f8..3215d2a 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
@@ -817,23 +817,47 @@
     return regexObject.test(text);
   }
 
-  /**
-   * @param {boolean} show
-   */
-  updateTimestamp(show) {
+  updateTimestamp() {
     if (!this._contentElement)
       return;
 
-    if (show && !this.timestampElement) {
-      this.timestampElement = createElementWithClass('span', 'console-timestamp');
-      this.timestampElement.textContent = (new Date(this._message.timestamp)).toConsoleTime() + ' ';
-      this._contentElement.insertBefore(this.timestampElement, this._contentElement.firstChild);
-      return;
+    var format = Common.moduleSetting('consoleTimestampFormat').get();
+    if (format !== Console.ConsoleViewMessage.TimestampFormat.None) {
+      var timestampText = formatTimestamp(this._message.timestamp, format);
+      if (!this._timestampElement)
+        this._timestampElement = createElementWithClass('span', 'console-timestamp');
+      this._timestampElement.textContent = timestampText + ' ';
+      this._timestampElement.title = timestampText;
+      this._contentElement.insertBefore(this._timestampElement, this._contentElement.firstChild);
+    } else if (this._timestampElement) {
+      this._timestampElement.remove();
+      delete this._timestampElement;
     }
 
-    if (!show && this.timestampElement) {
-      this.timestampElement.remove();
-      delete this.timestampElement;
+    /**
+     * @param {number} timestamp
+     * @param {!Console.ConsoleViewMessage.TimestampFormat} format
+     * @return {string}
+     */
+    function formatTimestamp(timestamp, format) {
+      var date = new Date(timestamp);
+      var yymmdd = date.getFullYear() + '-' + leadZero(date.getMonth() + 1, 2) + '-' + leadZero(date.getDate(), 2);
+      var hhmmssfff = leadZero(date.getHours(), 2) + ':' + leadZero(date.getMinutes(), 2) + ':' +
+          leadZero(date.getSeconds(), 2) + '.' + leadZero(date.getMilliseconds(), 3);
+      if (format === Console.ConsoleViewMessage.TimestampFormat.Full)
+        return yymmdd + ' ' + hhmmssfff;
+      return hhmmssfff;
+
+      /**
+       * @param {number} value
+       * @param {number} length
+       * @return {string}
+       */
+      function leadZero(value, length) {
+        var valueString = value.toString();
+        var padding = length - valueString.length;
+        return padding <= 0 ? valueString : '0'.repeat(padding) + valueString;
+      }
     }
   }
 
@@ -896,7 +920,7 @@
       formattedMessage = this._buildMessage(consoleMessage);
     contentElement.appendChild(formattedMessage);
 
-    this.updateTimestamp(Common.moduleSetting('consoleTimestampsEnabled').get());
+    this.updateTimestamp();
     return this._contentElement;
   }
 
@@ -987,6 +1011,8 @@
       return;
 
     this._repeatCountElement.remove();
+    if (this._contentElement)
+      this._contentElement.classList.remove('repeated-message');
     delete this._repeatCountElement;
   }
 
@@ -1173,6 +1199,15 @@
 };
 
 /**
+ * @enum {string}
+ */
+Console.ConsoleViewMessage.TimestampFormat = {
+  None: 'none',
+  Full: 'full',
+  Short: 'short'
+};
+
+/**
  * @unrestricted
  */
 Console.ConsoleGroupViewMessage = class extends Console.ConsoleViewMessage {
diff --git a/third_party/WebKit/Source/devtools/front_end/console/consoleView.css b/third_party/WebKit/Source/devtools/front_end/console/consoleView.css
index ff4e77e..976ba204 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/consoleView.css
+++ b/third_party/WebKit/Source/devtools/front_end/console/consoleView.css
@@ -98,7 +98,7 @@
 .console-timestamp {
     color: gray;
     -webkit-user-select: none;
-    flex-grow: 0;
+    flex: none;
     margin-right: 5px;
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/console/module.json b/third_party/WebKit/Source/devtools/front_end/console/module.json
index e5f5f9b..258492e8 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/module.json
+++ b/third_party/WebKit/Source/devtools/front_end/console/module.json
@@ -106,18 +106,25 @@
         {
             "type": "setting",
             "category": "Console",
-            "title": "Show timestamps",
-            "settingName": "consoleTimestampsEnabled",
-            "settingType": "boolean",
-            "defaultValue": false,
+            "title": "Timestamps:",
+            "settingName": "consoleTimestampFormat",
+            "settingType": "enum",
+            "defaultValue": "none",
             "options": [
                 {
-                    "value": true,
-                    "title": "Show timestamps"
+                    "title": "Hide timestamps",
+                    "text": "None",
+                    "value": "none"
                 },
                 {
-                    "value": false,
-                    "title": "Hide timestamps"
+                    "title": "Full (yyyy-MM-dd HH:mm:ss.fff)",
+                    "text": "Full",
+                    "value": "full"
+                },
+                {
+                    "title": "Short (HH:mm:ss.fff)",
+                    "text": "Short",
+                    "value": "short"
                 }
             ]
         },
diff --git a/third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js b/third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js
index 581eba91..5b75ec3 100644
--- a/third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js
+++ b/third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js
@@ -23,7 +23,6 @@
     this._scrollContainer.addEventListener('mousewheel', this._onWheel.bind(this), true);
     /** @type {!Array.<!DataGrid.ViewportDataGridNode>} */
     this._visibleNodes = [];
-    /** @type {boolean} */
     this._inline = false;
 
     // Wheel target shouldn't be removed from DOM to preserve native kinetic scrolling.
@@ -34,11 +33,9 @@
     /** @type {?Node} */
     this._hiddenWheelTarget = null;
 
-    /** @type {boolean} */
     this._stickToBottom = false;
-    /** @type {boolean} */
+    this._updateIsFromUser = false;
     this._atBottom = true;
-    /** @type {number} */
     this._lastScrollTop = 0;
     this._firstVisibleIsStriped = false;
 
@@ -84,7 +81,7 @@
   _onScroll(event) {
     this._atBottom = this._scrollContainer.isScrolledToBottom();
     if (this._lastScrollTop !== this._scrollContainer.scrollTop)
-      this.scheduleUpdate();
+      this.scheduleUpdate(true);
   }
 
   /**
@@ -94,7 +91,11 @@
     this.scheduleUpdate();
   }
 
-  scheduleUpdate() {
+  /**
+   * @param {boolean=} isFromUser
+   */
+  scheduleUpdate(isFromUser) {
+    this._updateIsFromUser = this._updateIsFromUser || isFromUser;
     if (this._updateAnimationFrameId)
       return;
     this._updateAnimationFrameId = this.element.window().requestAnimationFrame(this._update.bind(this));
@@ -173,8 +174,9 @@
     var scrollTop = this._scrollContainer.scrollTop;
     var currentScrollTop = scrollTop;
     var maxScrollTop = Math.max(0, this._contentHeight() - clientHeight);
-    if (this._stickToBottom && this._atBottom)
+    if (!this._updateIsFromUser && this._stickToBottom && this._atBottom)
       scrollTop = maxScrollTop;
+    this._updateIsFromUser = false;
     scrollTop = Math.min(maxScrollTop, scrollTop);
     this._atBottom = scrollTop === maxScrollTop;
 
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
index 6e60ef2..a775c8d 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
@@ -125,7 +125,6 @@
     this._dataGridScroller.addEventListener('mousewheel', this._onMouseWheel.bind(this, true), true);
 
     this._waterfallScroller = this._waterfallColumn.contentElement.createChild('div', 'network-waterfall-v-scroll');
-    this._waterfallScroller.addEventListener('scroll', this._syncScrollers.bind(this), {passive: true});
     this._waterfallScrollerContent = this._waterfallScroller.createChild('div', 'network-waterfall-v-scroll-content');
 
     this._dataGrid.addEventListener(DataGrid.DataGrid.Events.PaddingChanged, () => {
diff --git a/third_party/WebKit/Source/devtools/front_end/platform/utilities.js b/third_party/WebKit/Source/devtools/front_end/platform/utilities.js
index 2b5b514d..7d5bed33 100644
--- a/third_party/WebKit/Source/devtools/front_end/platform/utilities.js
+++ b/third_party/WebKit/Source/devtools/front_end/platform/utilities.js
@@ -404,31 +404,6 @@
       leadZero(this.getHours()) + leadZero(this.getMinutes()) + leadZero(this.getSeconds());
 };
 
-/**
- * @return {string}
- */
-Date.prototype.toConsoleTime = function() {
-  /**
-   * @param {number} x
-   * @return {string}
-   */
-  function leadZero2(x) {
-    return (x > 9 ? '' : '0') + x;
-  }
-
-  /**
-   * @param {number} x
-   * @return {string}
-   */
-  function leadZero3(x) {
-    return '0'.repeat(3 - x.toString().length) + x;
-  }
-
-  return this.getFullYear() + '-' + leadZero2(this.getMonth() + 1) + '-' + leadZero2(this.getDate()) + ' ' +
-      leadZero2(this.getHours()) + ':' + leadZero2(this.getMinutes()) + ':' + leadZero2(this.getSeconds()) + '.' +
-      leadZero3(this.getMilliseconds());
-};
-
 Object.defineProperty(Array.prototype, 'remove', {
   /**
    * @param {!T} value
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/HeapProfilerPanel.js b/third_party/WebKit/Source/devtools/front_end/profiler/HeapProfilerPanel.js
index 0be71254..49c7d66 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/HeapProfilerPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/HeapProfilerPanel.js
@@ -11,10 +11,7 @@
     var registry = Profiler.ProfileTypeRegistry.instance;
     super(
         'heap_profiler',
-        [
-          registry.cpuProfileType, registry.heapSnapshotProfileType, registry.samplingHeapProfileType,
-          registry.trackingHeapSnapshotProfileType
-        ],
+        [registry.heapSnapshotProfileType, registry.samplingHeapProfileType, registry.trackingHeapSnapshotProfileType],
         'profiler.heap-toggle-recording');
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/module.json b/third_party/WebKit/Source/devtools/front_end/profiler/module.json
index e7d7a81..54351bc6f 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/module.json
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/module.json
@@ -4,11 +4,30 @@
             "type": "view",
             "location": "panel",
             "id": "heap_profiler",
-            "title": "Profiles",
+            "title": "Memory",
             "order": 60,
             "className": "Profiler.HeapProfilerPanel"
         },
         {
+            "type": "view",
+            "location": "panel",
+            "id": "js_profiler",
+            "title": "Profiler",
+            "order": 65,
+            "className": "Profiler.JSProfilerPanel",
+            "condition": "v8only"
+        },
+        {
+            "type": "view",
+            "location": "panel",
+            "id": "js_profiler",
+            "title": "JavaScript Profiler",
+            "persistence": "closeable",
+            "order": 65,
+            "className": "Profiler.JSProfilerPanel",
+            "condition": "!v8only"
+        },
+        {
             "type": "@UI.ContextMenu.Provider",
             "contextTypes": [
                 "SDK.RemoteObject"
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/profilesPanel.css b/third_party/WebKit/Source/devtools/front_end/profiler/profilesPanel.css
index 20a7dfe..3d86ce7 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/profilesPanel.css
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/profilesPanel.css
@@ -171,6 +171,7 @@
     margin: 0 0 0 10px !important;
 }
 
+.js_profiler.panel select.chrome-select,
 .heap_profiler.panel select.chrome-select
  {
     font-size: 12px;
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
index 788a3aa..186e9662 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
@@ -718,20 +718,31 @@
     this._landingPage.contentElement.classList.add('timeline-landing-page', 'fill');
     var centered = this._landingPage.contentElement.createChild('div');
 
-    var p = centered.createChild('p');
-    p.appendChild(UI.formatLocalized(
-        'To capture a new recording, click the record toolbar button or hit %s. ' +
-            'To evaluate page load performance, hit %s to record the reload.',
-        [recordNode, reloadNode]));
+    centered.createChild('p').appendChild(UI.formatLocalized(
+        'To capture a new recording, click the record button or hit %s.%s' +
+        'To evaluate the page load, click the reload button or hit %s to record the reload.',
+        [recordNode, createElement('br'), reloadNode]));
 
-    p = centered.createChild('p');
-    p.appendChild(UI.formatLocalized(
+    centered.createChild('p').appendChild(UI.formatLocalized(
         'After recording, select an area of interest in the overview by dragging. ' +
-            'Then, zoom and pan the timeline with the mousewheel or %s keys.',
-        [navigateNode]));
+        'Then, zoom and pan the timeline with the mousewheel or %s keys. %s',
+        [navigateNode, learnMoreNode]));
 
-    p = centered.createChild('p');
-    p.appendChild(learnMoreNode);
+    var cpuProfilerHintSetting = Common.settings.createSetting('timelineShowProfilerHint', true);
+    if (cpuProfilerHintSetting.get()) {
+      var warning = centered.createChild('p', 'timeline-landing-warning');
+      var closeButton = warning.createChild('div', 'timeline-landing-warning-close', 'dt-close-button');
+      closeButton.addEventListener('click', () => {
+        warning.style.visibility = 'hidden';
+        cpuProfilerHintSetting.set(false);
+      }, false);
+      var performanceSpan = encloseWithTag('b', Common.UIString('Performance'));
+      warning.createChild('div').appendChild(UI.formatLocalized(
+          'The %s panel provides the combined functionality of Timeline and CPU profiler.%s' +
+          'The JavaScript CPU profiler will be removed shortly. Meanwhile, it\'s available under ' +
+          '%s \u2192 More Tools \u2192 JavaScript Profiler.',
+          [performanceSpan, createElement('p'), UI.Icon.create('largeicon-menu')]));
+    }
 
     this._landingPage.show(this._statusPaneContainer);
   }
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/module.json b/third_party/WebKit/Source/devtools/front_end/timeline/module.json
index 05328fb..c75bfef 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/module.json
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/module.json
@@ -4,7 +4,7 @@
             "type": "view",
             "location": "panel",
             "id": "timeline",
-            "title": "Timeline",
+            "title": "Performance",
             "order": 50,
             "className": "Timeline.TimelinePanel"
         },
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/timelinePanel.css b/third_party/WebKit/Source/devtools/front_end/timeline/timelinePanel.css
index 35f271ca..f4b885c 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/timelinePanel.css
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/timelinePanel.css
@@ -668,10 +668,17 @@
 
 .timeline-landing-warning {
     background-color: #fffde7;
-    padding: 10px 14px;
+    padding: 16px 20px;
+    margin-top: 40px;
     box-shadow: 1px 1px 3px rgba(0,0,0,0.2);
 }
 
+.timeline-landing-warning-close {
+    float: right;
+    margin-top: -10px;
+    margin-right: -13px;
+}
+
 .timeline-landing-warning span[is=ui-icon] {
     margin: -8px;
 }
\ No newline at end of file
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/FilterBar.js b/third_party/WebKit/Source/devtools/front_end/ui/FilterBar.js
index a050aed..04f5744 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/FilterBar.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/FilterBar.js
@@ -233,7 +233,7 @@
    * @return {!Element}
    */
   element() {
-    return this._proxyElement;
+    return this._filterElement;
   }
 
   /**
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/ShortcutsScreen.js b/third_party/WebKit/Source/devtools/front_end/ui/ShortcutsScreen.js
index 4d46ab24..ead1725e 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/ShortcutsScreen.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/ShortcutsScreen.js
@@ -141,7 +141,7 @@
         Common.UIString('Switch between files with the same name and different extensions.'));
 
     // Performance panel
-    section = UI.shortcutsScreen.section(Common.UIString('Timeline Panel'));
+    section = UI.shortcutsScreen.section(Common.UIString('Performance Panel'));
     section.addAlternateKeys(
         UI.shortcutRegistry.shortcutDescriptorsForAction('timeline.toggle-recording'),
         Common.UIString('Start/stop recording'));
@@ -157,7 +157,7 @@
         Common.UIString('Jump to previous/next frame'));
 
     // Memory panel
-    section = UI.shortcutsScreen.section(Common.UIString('Profiles Panel'));
+    section = UI.shortcutsScreen.section(Common.UIString('Memory Panel'));
     section.addAlternateKeys(
         UI.shortcutRegistry.shortcutDescriptorsForAction('profiler.heap-toggle-recording'),
         Common.UIString('Start/stop recording'));
diff --git a/third_party/WebKit/Source/devtools/readme.md b/third_party/WebKit/Source/devtools/readme.md
index fdbc2d49..889af42 100644
--- a/third_party/WebKit/Source/devtools/readme.md
+++ b/third_party/WebKit/Source/devtools/readme.md
@@ -63,6 +63,11 @@
 #### `npm run format` 
 Formats your code using clang-format
 
+### `npm run format-py`
+Formats your Python code using [yapf](https://github.com/google/yapf)
+
+> Note: Yapf is a command line tool. You will have to install this manually, either from PyPi through `pip install yapf` or if you want to enable multiprocessing in Python 2.7, `pip install futures`
+
 #### `npm test`
 Builds devtools and runs all inspector/devtools layout tests.
 
diff --git a/third_party/WebKit/Source/devtools/scripts/hosted_mode/server.js b/third_party/WebKit/Source/devtools/scripts/hosted_mode/server.js
index 0828e236..4303c269 100644
--- a/third_party/WebKit/Source/devtools/scripts/hosted_mode/server.js
+++ b/third_party/WebKit/Source/devtools/scripts/hosted_mode/server.js
@@ -17,7 +17,7 @@
 console.log(`Started hosted mode server at http://localhost:${serverPort}\n`);
 console.log('For info on using the hosted mode server, see our contributing docs:');
 console.log('https://bit.ly/devtools-contribution-guide');
-console.log('Tip: Look for the \'Hosted Mode Server Options\' section\n');
+console.log('Tip: Look for the \'Development server options\' section\n');
 
 function requestHandler(request, response) {
   var filePath = parseURL(request.url).pathname;
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp
index dcc455b..98c248c 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp
@@ -272,6 +272,40 @@
   m_isTransformInvertible = true;
 }
 
+sk_sp<SkImageFilter> CanvasRenderingContext2DState::getFilterForOffscreenCanvas(
+    IntSize canvasSize) const {
+  if (!m_filterValue)
+    return nullptr;
+
+  if (m_resolvedFilter)
+    return m_resolvedFilter;
+
+  FilterOperations operations =
+      FilterOperationResolver::createOffscreenFilterOperations(*m_filterValue);
+
+  // We can't reuse m_fillPaint and m_strokePaint for the filter, since these
+  // incorporate the global alpha, which isn't applicable here.
+  SkPaint fillPaintForFilter;
+  m_fillStyle->applyToPaint(fillPaintForFilter);
+  fillPaintForFilter.setColor(m_fillStyle->paintColor());
+  SkPaint strokePaintForFilter;
+  m_strokeStyle->applyToPaint(strokePaintForFilter);
+  strokePaintForFilter.setColor(m_strokeStyle->paintColor());
+
+  FilterEffectBuilder filterEffectBuilder(
+      FloatRect((FloatPoint()), FloatSize(canvasSize)),
+      1.0f,  // Deliberately ignore zoom on the canvas element.
+      &fillPaintForFilter, &strokePaintForFilter);
+
+  FilterEffect* lastEffect = filterEffectBuilder.buildFilterEffect(operations);
+  if (lastEffect) {
+    m_resolvedFilter =
+        SkiaImageFilterBuilder::build(lastEffect, ColorSpaceDeviceRGB);
+  }
+
+  return m_resolvedFilter;
+}
+
 sk_sp<SkImageFilter> CanvasRenderingContext2DState::getFilter(
     Element* styleResolutionHost,
     IntSize canvasSize,
@@ -329,6 +363,13 @@
   return m_resolvedFilter;
 }
 
+bool CanvasRenderingContext2DState::hasFilterForOffscreenCanvas(
+    IntSize canvasSize) const {
+  // Checking for a non-null m_filterValue isn't sufficient, since this value
+  // might refer to a non-existent filter.
+  return !!getFilterForOffscreenCanvas(canvasSize);
+}
+
 bool CanvasRenderingContext2DState::hasFilter(
     Element* styleResolutionHost,
     IntSize canvasSize,
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
index f3216522..cd6e445 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
@@ -95,6 +95,8 @@
   sk_sp<SkImageFilter> getFilter(Element*,
                                  IntSize canvasSize,
                                  CanvasRenderingContext2D*) const;
+  sk_sp<SkImageFilter> getFilterForOffscreenCanvas(IntSize canvasSize) const;
+  bool hasFilterForOffscreenCanvas(IntSize canvasSize) const;
   bool hasFilter(Element*, IntSize canvasSize, CanvasRenderingContext2D*) const;
   void clearResolvedFilter() const;
 
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
index 1ae9597b..6d34346 100644
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
@@ -77,9 +77,9 @@
     CanvasImageSource* source,
     ExecutionContext* executionContext) {
   if (executionContext->isWorkerGlobalScope()) {
-    // We only support passing in ImageBitmap and OffscreenCanvases as source
-    // images in drawImage() or createPattern() in a OffscreenCanvas2d in
-    // worker.
+    // We only support passing in ImageBitmap and OffscreenCanvases as
+    // source images in drawImage() or createPattern() in a
+    // OffscreenCanvas2d in worker.
     DCHECK(source->isImageBitmap() || source->isOffscreenCanvas());
   }
 
@@ -227,17 +227,11 @@
 void OffscreenCanvasRenderingContext2D::didDraw(const SkIRect& dirtyRect) {}
 
 bool OffscreenCanvasRenderingContext2D::stateHasFilter() {
-  // TODO: crbug.com/593838 make hasFilter accept nullptr
-  // return state().hasFilter(nullptr, nullptr, IntSize(width(), height()),
-  // this);
-  return false;
+  return state().hasFilterForOffscreenCanvas(offscreenCanvas()->size());
 }
 
 sk_sp<SkImageFilter> OffscreenCanvasRenderingContext2D::stateGetFilter() {
-  // TODO: make getFilter accept nullptr
-  // return state().getFilter(nullptr, nullptr, IntSize(width(), height()),
-  // this);
-  return nullptr;
+  return state().getFilterForOffscreenCanvas(offscreenCanvas()->size());
 }
 
 void OffscreenCanvasRenderingContext2D::validateStateStack() const {
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h
index aea21e2..94d2b72 100644
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h
@@ -44,8 +44,8 @@
   ContextType getContextType() const override { return Context2d; }
   bool is2d() const override { return true; }
   void setOffscreenCanvasGetContextResult(OffscreenRenderingContext&) final;
-  void setIsHidden(bool) final { ASSERT_NOT_REACHED(); }
-  void stop() final { ASSERT_NOT_REACHED(); }
+  void setIsHidden(bool) final { NOTREACHED(); }
+  void stop() final { NOTREACHED(); }
   void setCanvasGetContextResult(RenderingContext&) final {}
   void clearRect(double x, double y, double width, double height) override {
     BaseRenderingContext2D::clearRect(x, y, width, height);
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl
index aa3345c..d07bb70b 100644
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl
@@ -28,7 +28,7 @@
     // compositing
     attribute unrestricted double globalAlpha; // (default 1.0)
     attribute DOMString globalCompositeOperation; // (default source-over)
-    [Exposed=Window] attribute DOMString filter;
+    attribute DOMString filter;
 
     // image smoothing
     attribute boolean imageSmoothingEnabled; // (default True)
diff --git a/third_party/WebKit/Source/platform/fonts/FontCacheTest.cpp b/third_party/WebKit/Source/platform/fonts/FontCacheTest.cpp
index ba35d668..72a8ba07 100644
--- a/third_party/WebKit/Source/platform/fonts/FontCacheTest.cpp
+++ b/third_party/WebKit/Source/platform/fonts/FontCacheTest.cpp
@@ -47,4 +47,11 @@
             FontCache::firstAvailableOrFirst(", not exist, not exist"));
 }
 
+#if !OS(MACOSX)
+TEST(FontCache, systemFont) {
+  FontCache::systemFontFamily();
+  // Test the function does not crash. Return value varies by system and config.
+}
+#endif
+
 }  // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
index 5effe8e..d5df483e 100644
--- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
+++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
@@ -595,9 +595,9 @@
     const PaintChunk& paintChunk,
     const PendingLayer& candidatePendingLayer,
     GeometryMapper& geometryMapper) {
-  PropertyTreeState rootPropertyTreeState(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState rootPropertyTreeState(TransformPaintPropertyNode::root(),
+                                          ClipPaintPropertyNode::root(),
+                                          EffectPaintPropertyNode::root());
 
   FloatRect paintChunkScreenVisualRect =
       geometryMapper.localToAncestorVisualRect(
@@ -706,10 +706,9 @@
         paintArtifact, pendingLayer, layerOffset, newContentLayerClients,
         rasterChunkInvalidations, storeDebugInfo, geometryMapper);
 
-    int transformId = propertyTreeManager.ensureCompositorTransformNode(
-        pendingLayer.propertyTreeState.transform());
-    int scrollId = propertyTreeManager.ensureCompositorScrollNode(
-        pendingLayer.propertyTreeState.scroll());
+    const auto* transform = pendingLayer.propertyTreeState.transform();
+    int transformId =
+        propertyTreeManager.ensureCompositorTransformNode(transform);
     int clipId = propertyTreeManager.ensureCompositorClipNode(
         pendingLayer.propertyTreeState.clip());
     int effectId = propertyTreeManager.switchToEffectNode(
@@ -724,7 +723,10 @@
     layer->SetTransformTreeIndex(transformId);
     layer->SetClipTreeIndex(clipId);
     layer->SetEffectTreeIndex(effectId);
-    layer->SetScrollTreeIndex(scrollId);
+    if (const auto* scrollNode = transform->scrollNode()) {
+      layer->SetScrollTreeIndex(
+          propertyTreeManager.ensureCompositorScrollNode(scrollNode));
+    }
 
     layer->SetShouldCheckBackfaceVisibility(pendingLayer.backfaceHidden);
 
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
index 1ad40ee..889a1b6 100644
--- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
@@ -42,9 +42,9 @@
 using ::testing::Pointee;
 
 PaintChunkProperties defaultPaintChunkProperties() {
-  PropertyTreeState propertyTreeState(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState propertyTreeState(TransformPaintPropertyNode::root(),
+                                      ClipPaintPropertyNode::root(),
+                                      EffectPaintPropertyNode::root());
   return PaintChunkProperties(propertyTreeState);
 }
 
@@ -168,8 +168,7 @@
   RefPtr<TransformPaintPropertyNode> transform =
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(), TransformationMatrix().rotate(90),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0,
-          CompositingReason3DTransform);
+          FloatPoint3D(100, 100, 0), false, 0, CompositingReason3DTransform);
 
   TestPaintArtifact artifact;
   artifact
@@ -215,12 +214,11 @@
   RefPtr<TransformPaintPropertyNode> transform1 =
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(), TransformationMatrix().scale(2),
-          FloatPoint3D(10, 10, 0), nullptr, false, 0,
-          CompositingReason3DTransform);
+          FloatPoint3D(10, 10, 0), false, 0, CompositingReason3DTransform);
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform1, TransformationMatrix().translate(5, 5), FloatPoint3D(),
-          nullptr, false, 0, CompositingReason3DTransform);
+          false, 0, CompositingReason3DTransform);
 
   TestPaintArtifact artifact;
   artifact
@@ -276,7 +274,7 @@
     RefPtr<TransformPaintPropertyNode> transform3 =
         TransformPaintPropertyNode::create(
             transform2, TransformationMatrix().rotate3d(0, 45, 0),
-            FloatPoint3D(), nullptr, transformIsFlattened);
+            FloatPoint3D(), transformIsFlattened);
 
     TestPaintArtifact artifact;
     artifact
@@ -323,17 +321,17 @@
   // Establishes a 3D rendering context.
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(transform1, TransformationMatrix(),
-                                         FloatPoint3D(), nullptr, false, 1,
+                                         FloatPoint3D(), false, 1,
                                          CompositingReason3DTransform);
   // Extends the 3D rendering context of transform2.
   RefPtr<TransformPaintPropertyNode> transform3 =
       TransformPaintPropertyNode::create(transform2, TransformationMatrix(),
-                                         FloatPoint3D(), nullptr, false, 1,
+                                         FloatPoint3D(), false, 1,
                                          CompositingReason3DTransform);
   // Establishes a 3D rendering context distinct from transform2.
   RefPtr<TransformPaintPropertyNode> transform4 =
       TransformPaintPropertyNode::create(transform2, TransformationMatrix(),
-                                         FloatPoint3D(), nullptr, false, 2,
+                                         FloatPoint3D(), false, 2,
                                          CompositingReason3DTransform);
 
   TestPaintArtifact artifact;
@@ -667,20 +665,19 @@
 }
 
 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneScrollNode) {
-  RefPtr<ScrollPaintPropertyNode> scroll = ScrollPaintPropertyNode::create(
-      ScrollPaintPropertyNode::root(), IntSize(11, 13), IntSize(27, 31), true,
-      false, 0 /* mainThreadScrollingReasons */);
   CompositorElementId expectedCompositorElementId = CompositorElementId(2, 0);
   RefPtr<TransformPaintPropertyNode> scrollTranslation =
-      TransformPaintPropertyNode::create(
+      TransformPaintPropertyNode::createScrollTranslation(
           TransformPaintPropertyNode::root(),
-          TransformationMatrix().translate(7, 9), FloatPoint3D(), scroll.get(),
-          false, 0, CompositingReasonNone, expectedCompositorElementId);
+          TransformationMatrix().translate(7, 9), FloatPoint3D(), false, 0,
+          CompositingReasonNone, expectedCompositorElementId,
+          ScrollPaintPropertyNode::root(), IntSize(11, 13), IntSize(27, 31),
+          true, false, 0 /* mainThreadScrollingReasons */);
 
   TestPaintArtifact artifact;
   artifact
       .chunk(scrollTranslation, ClipPaintPropertyNode::root(),
-             EffectPaintPropertyNode::root(), scroll)
+             EffectPaintPropertyNode::root())
       .rectDrawing(FloatRect(11, 13, 17, 19), Color::white);
   update(artifact.build());
 
@@ -712,72 +709,54 @@
   RefPtr<EffectPaintPropertyNode> effect =
       createOpacityOnlyEffect(EffectPaintPropertyNode::root(), 0.5);
 
-  RefPtr<ScrollPaintPropertyNode> scrollA = ScrollPaintPropertyNode::create(
-      ScrollPaintPropertyNode::root(), IntSize(2, 3), IntSize(5, 7), false,
-      true, MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects);
   CompositorElementId expectedCompositorElementIdA = CompositorElementId(2, 0);
   RefPtr<TransformPaintPropertyNode> scrollTranslationA =
-      TransformPaintPropertyNode::create(
+      TransformPaintPropertyNode::createScrollTranslation(
           TransformPaintPropertyNode::root(),
-          TransformationMatrix().translate(11, 13), FloatPoint3D(),
-          scrollA.get(), false, 0, CompositingReasonNone,
-          expectedCompositorElementIdA);
-  RefPtr<ScrollPaintPropertyNode> scrollB = ScrollPaintPropertyNode::create(
-      scrollA, IntSize(19, 23), IntSize(29, 31), true, false,
-      0 /* mainThreadScrollingReasons */);
+          TransformationMatrix().translate(11, 13), FloatPoint3D(), false, 0,
+          CompositingReasonNone, expectedCompositorElementIdA,
+          ScrollPaintPropertyNode::root(), IntSize(2, 3), IntSize(5, 7), false,
+          true,
+          MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects);
+
   CompositorElementId expectedCompositorElementIdB = CompositorElementId(3, 0);
   RefPtr<TransformPaintPropertyNode> scrollTranslationB =
-      TransformPaintPropertyNode::create(
+      TransformPaintPropertyNode::createScrollTranslation(
           scrollTranslationA, TransformationMatrix().translate(37, 41),
-          FloatPoint3D(), scrollB.get(), false, 0, CompositingReasonNone,
-          expectedCompositorElementIdB);
+          FloatPoint3D(), false, 0, CompositingReasonNone,
+          expectedCompositorElementIdB, scrollTranslationA->scrollNode(),
+          IntSize(19, 23), IntSize(29, 31), true, false,
+          0 /* mainThreadScrollingReasons */);
   TestPaintArtifact artifact;
-  artifact
-      .chunk(scrollTranslationA, ClipPaintPropertyNode::root(), effect, scrollA)
+  artifact.chunk(scrollTranslationA, ClipPaintPropertyNode::root(), effect)
       .rectDrawing(FloatRect(7, 11, 13, 17), Color::white);
-  artifact
-      .chunk(scrollTranslationB, ClipPaintPropertyNode::root(), effect, scrollB)
+  artifact.chunk(scrollTranslationB, ClipPaintPropertyNode::root(), effect)
       .rectDrawing(FloatRect(1, 2, 3, 5), Color::white);
   update(artifact.build());
 
   const cc::ScrollTree& scrollTree = propertyTrees().scroll_tree;
   // Node #0 reserved for null; #1 for root render surface.
-  ASSERT_EQ(4u, scrollTree.size());
-  const cc::ScrollNode& scrollNodeA = *scrollTree.Node(2);
-  EXPECT_EQ(gfx::Size(2, 3), scrollNodeA.scroll_clip_layer_bounds);
-  EXPECT_EQ(gfx::Size(5, 7), scrollNodeA.bounds);
-  EXPECT_FALSE(scrollNodeA.user_scrollable_horizontal);
-  EXPECT_TRUE(scrollNodeA.user_scrollable_vertical);
-  EXPECT_EQ(1, scrollNodeA.parent_id);
-  const cc::ScrollNode& scrollNodeB = *scrollTree.Node(3);
-  EXPECT_EQ(gfx::Size(19, 23), scrollNodeB.scroll_clip_layer_bounds);
-  EXPECT_EQ(gfx::Size(29, 31), scrollNodeB.bounds);
-  EXPECT_TRUE(scrollNodeB.user_scrollable_horizontal);
-  EXPECT_FALSE(scrollNodeB.user_scrollable_vertical);
-  EXPECT_EQ(scrollNodeA.id, scrollNodeB.parent_id);
-  EXPECT_EQ(expectedCompositorElementIdA, scrollNodeA.element_id);
-  EXPECT_EQ(scrollNodeA.id,
+  ASSERT_EQ(3u, scrollTree.size());
+  const cc::ScrollNode& scrollNode = *scrollTree.Node(2);
+  EXPECT_EQ(gfx::Size(2, 3), scrollNode.scroll_clip_layer_bounds);
+  EXPECT_EQ(gfx::Size(5, 7), scrollNode.bounds);
+  EXPECT_FALSE(scrollNode.user_scrollable_horizontal);
+  EXPECT_TRUE(scrollNode.user_scrollable_vertical);
+  EXPECT_EQ(1, scrollNode.parent_id);
+  EXPECT_EQ(expectedCompositorElementIdA, scrollNode.element_id);
+  EXPECT_EQ(scrollNode.id,
             elementIdToScrollNodeIndex(expectedCompositorElementIdA));
-  EXPECT_EQ(expectedCompositorElementIdB, scrollNodeB.element_id);
-  EXPECT_EQ(scrollNodeB.id,
-            elementIdToScrollNodeIndex(expectedCompositorElementIdB));
+
   EXPECT_EQ(expectedCompositorElementIdA, contentLayerAt(0)->element_id());
-  EXPECT_EQ(expectedCompositorElementIdB, contentLayerAt(1)->element_id());
 
   const cc::TransformTree& transformTree = propertyTrees().transform_tree;
   const cc::TransformNode& transformNodeA =
-      *transformTree.Node(scrollNodeA.transform_id);
+      *transformTree.Node(scrollNode.transform_id);
   EXPECT_TRUE(transformNodeA.local.IsIdentity());
   EXPECT_EQ(gfx::ScrollOffset(-11, -13), transformNodeA.scroll_offset);
 
-  const cc::TransformNode& transformNodeB =
-      *transformTree.Node(scrollNodeB.transform_id);
-  EXPECT_EQ(gfx::ScrollOffset(-37, -41), transformNodeB.scroll_offset);
-
-  EXPECT_TRUE(scrollNodeA.main_thread_scrolling_reasons &
+  EXPECT_TRUE(scrollNode.main_thread_scrolling_reasons &
               MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects);
-  EXPECT_FALSE(scrollNodeB.main_thread_scrolling_reasons &
-               MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects);
 }
 
 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, MergeSimpleChunks) {
@@ -865,7 +844,7 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(50, 50), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   TestPaintArtifact testArtifact;
   testArtifact
@@ -914,12 +893,12 @@
   RefPtr<TransformPaintPropertyNode> transform =
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(), TransformationMatrix(),
-          FloatPoint3D(), nullptr, false, 0, CompositingReason3DTransform);
+          FloatPoint3D(), false, 0, CompositingReason3DTransform);
 
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform.get(), TransformationMatrix().translate(50, 50),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+          FloatPoint3D(100, 100, 0), false, 0);
 
   TestPaintArtifact testArtifact;
   testArtifact
@@ -958,9 +937,9 @@
 
 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, MergeTransformOrigin) {
   RefPtr<TransformPaintPropertyNode> transform =
-      TransformPaintPropertyNode::create(
-          TransformPaintPropertyNode::root(), TransformationMatrix().rotate(45),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+      TransformPaintPropertyNode::create(TransformPaintPropertyNode::root(),
+                                         TransformationMatrix().rotate(45),
+                                         FloatPoint3D(100, 100, 0), false, 0);
 
   TestPaintArtifact testArtifact;
   testArtifact
@@ -1061,7 +1040,7 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(50, 50), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   RefPtr<ClipPaintPropertyNode> clip = ClipPaintPropertyNode::create(
       ClipPaintPropertyNode::root(), transform.get(),
@@ -1121,12 +1100,12 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(20, 25), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform.get(), TransformationMatrix().translate(20, 25),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+          FloatPoint3D(100, 100, 0), false, 0);
 
   RefPtr<ClipPaintPropertyNode> clip = ClipPaintPropertyNode::create(
       ClipPaintPropertyNode::root(), transform2.get(),
@@ -1183,12 +1162,12 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(20, 25), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform.get(), TransformationMatrix().translate(20, 25),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+          FloatPoint3D(100, 100, 0), false, 0);
 
   float opacity = 2.0 / 255.0;
   RefPtr<EffectPaintPropertyNode> effect = EffectPaintPropertyNode::create(
@@ -1246,12 +1225,12 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(20, 25), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform.get(), TransformationMatrix().translate(20, 25),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+          FloatPoint3D(100, 100, 0), false, 0);
 
   RefPtr<ClipPaintPropertyNode> clip = ClipPaintPropertyNode::create(
       ClipPaintPropertyNode::root(), transform.get(),
@@ -1415,14 +1394,14 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(20, 25), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
   RefPtr<ClipPaintPropertyNode> clip = ClipPaintPropertyNode::create(
       ClipPaintPropertyNode::root(), TransformPaintPropertyNode::root(),
       FloatRoundedRect(0, 0, 50, 60));
   RefPtr<TransformPaintPropertyNode> transform2 =
       TransformPaintPropertyNode::create(
           transform.get(), TransformationMatrix().translate(20, 25),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0);
+          FloatPoint3D(100, 100, 0), false, 0);
   TestPaintArtifact testArtifact;
   testArtifact
       .chunk(TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
@@ -1463,7 +1442,7 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(50, 50), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0, CompositingReason3DTransform);
+          false, 0, CompositingReason3DTransform);
 
   TestPaintArtifact testArtifact;
   testArtifact.chunk(defaultPaintChunkProperties())
@@ -1518,7 +1497,7 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(99, 0), FloatPoint3D(100, 100, 0),
-          nullptr, false);
+          false);
 
   paintChunk2.properties.propertyTreeState.setTransform(transform.get());
   EXPECT_TRUE(PaintArtifactCompositor::mightOverlap(paintChunk2, pendingLayer,
@@ -1528,7 +1507,7 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(100, 0), FloatPoint3D(100, 100, 0),
-          nullptr, false);
+          false);
   paintChunk2.properties.propertyTreeState.setTransform(transform2.get());
 
   EXPECT_FALSE(PaintArtifactCompositor::mightOverlap(paintChunk2, pendingLayer,
@@ -1539,7 +1518,7 @@
   PaintChunk chunk1;
   chunk1.properties.propertyTreeState = PropertyTreeState(
       TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+      EffectPaintPropertyNode::root());
   chunk1.properties.backfaceHidden = true;
   chunk1.knownToBeOpaque = true;
   chunk1.bounds = FloatRect(0, 0, 30, 40);
@@ -1579,12 +1558,12 @@
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(),
           TransformationMatrix().translate(20, 25), FloatPoint3D(100, 100, 0),
-          nullptr, false, 0);
+          false, 0);
 
   PaintChunk chunk1;
   chunk1.properties.propertyTreeState = PropertyTreeState(
       TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+      EffectPaintPropertyNode::root());
   chunk1.bounds = FloatRect(0, 0, 30, 40);
 
   PaintArtifactCompositor::PendingLayer pendingLayer(chunk1);
@@ -1605,7 +1584,7 @@
   PaintChunk chunk1;
   chunk1.properties.propertyTreeState = PropertyTreeState(
       TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+      EffectPaintPropertyNode::root());
   chunk1.bounds = FloatRect(0, 0, 30, 40);
   chunk1.knownToBeOpaque = false;
   PaintArtifactCompositor::PendingLayer pendingLayer(chunk1);
@@ -1636,8 +1615,8 @@
   RefPtr<TransformPaintPropertyNode> transform =
       TransformPaintPropertyNode::create(
           TransformPaintPropertyNode::root(), TransformationMatrix().rotate(90),
-          FloatPoint3D(100, 100, 0), nullptr, false, 0,
-          CompositingReason3DTransform, expectedCompositorElementId);
+          FloatPoint3D(100, 100, 0), false, 0, CompositingReason3DTransform,
+          expectedCompositorElementId);
 
   TestPaintArtifact artifact;
   artifact
diff --git a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
index aa8aa34..7a5f7a7 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
@@ -8,7 +8,6 @@
 #include "platform/geometry/LayoutRect.h"
 #include "platform/graphics/paint/ClipPaintPropertyNode.h"
 #include "platform/graphics/paint/EffectPaintPropertyNode.h"
-#include "platform/graphics/paint/ScrollPaintPropertyNode.h"
 #include "platform/graphics/paint/TransformPaintPropertyNode.h"
 #include "platform/testing/PaintPropertyTestHelpers.h"
 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
@@ -24,9 +23,9 @@
   std::unique_ptr<GeometryMapper> geometryMapper;
 
   PropertyTreeState rootPropertyTreeState() {
-    PropertyTreeState state(
-        TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-        EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+    PropertyTreeState state(TransformPaintPropertyNode::root(),
+                            ClipPaintPropertyNode::root(),
+                            EffectPaintPropertyNode::root());
     return state;
   }
 
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintChunkProperties.h b/third_party/WebKit/Source/platform/graphics/paint/PaintChunkProperties.h
index 77a80e6..b8687a19 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintChunkProperties.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintChunkProperties.h
@@ -14,7 +14,7 @@
 
 // The set of paint properties applying to a |PaintChunk|. These properties are
 // not local-only paint style parameters such as color, but instead represent
-// the hierarchy of transforms, clips, effects, etc, that apply to a contiguous
+// the hierarchy of transforms, clips, and effects that apply to a contiguous
 // chunk of display items. A single DisplayItemClient can generate multiple
 // properties of the same type and this struct represents the total state of all
 // properties for a given |PaintChunk|.
@@ -28,8 +28,7 @@
       : propertyTreeState(state), backfaceHidden(false) {}
 
   PaintChunkProperties()
-      : propertyTreeState(nullptr, nullptr, nullptr, nullptr),
-        backfaceHidden(false) {}
+      : propertyTreeState(nullptr, nullptr, nullptr), backfaceHidden(false) {}
 
   PropertyTreeState propertyTreeState;
   bool backfaceHidden;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintChunker.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintChunker.cpp
index bb0a1e1..a2d87d6 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintChunker.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintChunker.cpp
@@ -41,7 +41,6 @@
     DCHECK(m_currentProperties.propertyTreeState.transform());
     DCHECK(m_currentProperties.propertyTreeState.clip());
     DCHECK(m_currentProperties.propertyTreeState.effect());
-    DCHECK(m_currentProperties.propertyTreeState.scroll());
   }
 #endif
 
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
index b8c70c0..cac9fe06 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
@@ -99,7 +99,7 @@
 
 String PropertyTreeState::toTreeString() const {
   return transform()->toTreeString() + "\n" + clip()->toTreeString() + "\n" +
-         effect()->toTreeString() + "\n" + scroll()->toTreeString();
+         effect()->toTreeString();
 }
 
 #endif
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h
index d99b0b1..c27d1fd 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h
@@ -7,7 +7,6 @@
 
 #include "platform/graphics/paint/ClipPaintPropertyNode.h"
 #include "platform/graphics/paint/EffectPaintPropertyNode.h"
-#include "platform/graphics/paint/ScrollPaintPropertyNode.h"
 #include "platform/graphics/paint/TransformPaintPropertyNode.h"
 #include "wtf/HashFunctions.h"
 #include "wtf/HashTraits.h"
@@ -23,16 +22,11 @@
  public:
   PropertyTreeState(const TransformPaintPropertyNode* transform,
                     const ClipPaintPropertyNode* clip,
-                    const EffectPaintPropertyNode* effect,
-                    const ScrollPaintPropertyNode* scroll)
-      : m_transform(transform),
-        m_clip(clip),
-        m_effect(effect),
-        m_scroll(scroll) {
+                    const EffectPaintPropertyNode* effect)
+      : m_transform(transform), m_clip(clip), m_effect(effect) {
     DCHECK(!m_transform || !m_transform->hasOneRef());
     DCHECK(!m_clip || !m_clip->hasOneRef());
     DCHECK(!m_effect || !m_effect->hasOneRef());
-    DCHECK(!m_scroll || !m_scroll->hasOneRef());
   }
 
   bool hasDirectCompositingReasons() const;
@@ -61,17 +55,9 @@
     m_effect = std::move(node);
   }
 
-  const ScrollPaintPropertyNode* scroll() const {
-    DCHECK(!m_scroll || !m_scroll->hasOneRef());
-    return m_scroll.get();
-  }
-  void setScroll(RefPtr<const ScrollPaintPropertyNode> node) {
-    m_scroll = std::move(node);
-  }
-
-  // Returns the compositor element id, if any, for this property state. If none
-  // of the scroll, effect or transform nodes for this state have a compositor
-  // element id then a default instance is returned.
+  // Returns the compositor element id, if any, for this property state. If
+  // neither the effect nor transform nodes have a compositor element id then a
+  // default instance is returned.
   const CompositorElementId compositorElementId() const;
 
   enum InnermostNode {
@@ -127,13 +113,11 @@
   RefPtr<const TransformPaintPropertyNode> m_transform;
   RefPtr<const ClipPaintPropertyNode> m_clip;
   RefPtr<const EffectPaintPropertyNode> m_effect;
-  // TODO(pdr): Remove the scroll node from PropertyTreeState.
-  RefPtr<const ScrollPaintPropertyNode> m_scroll;
 };
 
 inline bool operator==(const PropertyTreeState& a, const PropertyTreeState& b) {
   return a.transform() == b.transform() && a.clip() == b.clip() &&
-         a.effect() == b.effect() && a.scroll() == b.scroll();
+         a.effect() == b.effect();
 }
 
 // Iterates over the sequence transforms, clips and effects for a
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeStateTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeStateTest.cpp
index 3065dda6..90b6b1e1 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeStateTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeStateTest.cpp
@@ -24,8 +24,7 @@
       EffectPaintPropertyNode::root(), TransformPaintPropertyNode::root(),
       clip.get(), CompositorFilterOperations(), 1.0, SkBlendMode::kSrcOver);
 
-  PropertyTreeState state(transform.get(), clip.get(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+  PropertyTreeState state(transform.get(), clip.get(), effect.get());
   EXPECT_EQ(PropertyTreeState::Transform, state.innermostNode());
 
   PropertyTreeStateIterator iterator(state);
@@ -35,9 +34,9 @@
 }
 
 TEST_F(PropertyTreeStateTest, RootState) {
-  PropertyTreeState state(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState state(TransformPaintPropertyNode::root(),
+                          ClipPaintPropertyNode::root(),
+                          EffectPaintPropertyNode::root());
   EXPECT_EQ(PropertyTreeState::None, state.innermostNode());
 }
 
@@ -54,8 +53,7 @@
       EffectPaintPropertyNode::root(), transform.get(), clip.get(),
       CompositorFilterOperations(), 1.0, SkBlendMode::kSrcOver);
 
-  PropertyTreeState state(transform.get(), clip.get(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+  PropertyTreeState state(transform.get(), clip.get(), effect.get());
   EXPECT_EQ(PropertyTreeState::Effect, state.innermostNode());
 
   PropertyTreeStateIterator iterator(state);
@@ -78,8 +76,7 @@
       ClipPaintPropertyNode::root(), CompositorFilterOperations(), 1.0,
       SkBlendMode::kSrcOver);
 
-  PropertyTreeState state(transform.get(), clip.get(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+  PropertyTreeState state(transform.get(), clip.get(), effect.get());
   EXPECT_EQ(PropertyTreeState::Clip, state.innermostNode());
 
   PropertyTreeStateIterator iterator(state);
@@ -110,8 +107,7 @@
   // ancestor of the clip's transform. This models situations such as
   // a clip inside a scroller that applies to an absolute-positioned element
   // which escapes the scroll transform but not the clip.
-  PropertyTreeState state(transform.get(), clip.get(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+  PropertyTreeState state(transform.get(), clip.get(), effect.get());
   EXPECT_EQ(PropertyTreeState::Clip, state.innermostNode());
 
   PropertyTreeStateIterator iterator(state);
@@ -143,8 +139,7 @@
   // ancestor of the clip's transform. This models situations such as
   // a clip inside a scroller that applies to an absolute-positioned element
   // which escapes the scroll transform but not the clip.
-  PropertyTreeState state(transform.get(), clip.get(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+  PropertyTreeState state(transform.get(), clip.get(), effect.get());
   EXPECT_EQ(PropertyTreeState::Effect, state.innermostNode());
 
   PropertyTreeStateIterator iterator(state);
@@ -154,22 +149,21 @@
 }
 
 TEST_F(PropertyTreeStateTest, CompositorElementIdNoElementIdOnAnyNode) {
-  PropertyTreeState state(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState state(TransformPaintPropertyNode::root(),
+                          ClipPaintPropertyNode::root(),
+                          EffectPaintPropertyNode::root());
   EXPECT_EQ(CompositorElementId(), state.compositorElementId());
 }
 
 TEST_F(PropertyTreeStateTest, CompositorElementIdWithElementIdOnTransformNode) {
   CompositorElementId expectedCompositorElementId = CompositorElementId(2, 0);
   RefPtr<TransformPaintPropertyNode> transform =
-      TransformPaintPropertyNode::create(
-          TransformPaintPropertyNode::root(), TransformationMatrix(),
-          FloatPoint3D(), nullptr, false, 0, CompositingReasonNone,
-          expectedCompositorElementId);
+      TransformPaintPropertyNode::create(TransformPaintPropertyNode::root(),
+                                         TransformationMatrix(), FloatPoint3D(),
+                                         false, 0, CompositingReasonNone,
+                                         expectedCompositorElementId);
   PropertyTreeState state(transform.get(), ClipPaintPropertyNode::root(),
-                          EffectPaintPropertyNode::root(),
-                          ScrollPaintPropertyNode::root());
+                          EffectPaintPropertyNode::root());
   EXPECT_EQ(expectedCompositorElementId, state.compositorElementId());
 }
 
@@ -181,27 +175,24 @@
       SkBlendMode::kSrcOver, CompositingReasonNone,
       expectedCompositorElementId);
   PropertyTreeState state(TransformPaintPropertyNode::root(),
-                          ClipPaintPropertyNode::root(), effect.get(),
-                          ScrollPaintPropertyNode::root());
+                          ClipPaintPropertyNode::root(), effect.get());
   EXPECT_EQ(expectedCompositorElementId, state.compositorElementId());
 }
 
 TEST_F(PropertyTreeStateTest, CompositorElementIdWithElementIdOnMultipleNodes) {
-  RefPtr<ScrollPaintPropertyNode> scroll = ScrollPaintPropertyNode::create(
-      ScrollPaintPropertyNode::root(), IntSize(), IntSize(), true, false, 0);
   CompositorElementId expectedCompositorElementId = CompositorElementId(2, 0);
   RefPtr<TransformPaintPropertyNode> transform =
-      TransformPaintPropertyNode::create(
-          TransformPaintPropertyNode::root(), TransformationMatrix(),
-          FloatPoint3D(), nullptr, false, 0, CompositingReasonNone,
-          expectedCompositorElementId);
+      TransformPaintPropertyNode::create(TransformPaintPropertyNode::root(),
+                                         TransformationMatrix(), FloatPoint3D(),
+                                         false, 0, CompositingReasonNone,
+                                         expectedCompositorElementId);
   RefPtr<EffectPaintPropertyNode> effect = EffectPaintPropertyNode::create(
       EffectPaintPropertyNode::root(), TransformPaintPropertyNode::root(),
       ClipPaintPropertyNode::root(), CompositorFilterOperations(), 1.0,
       SkBlendMode::kSrcOver, CompositingReasonNone,
       expectedCompositorElementId);
   PropertyTreeState state(transform.get(), ClipPaintPropertyNode::root(),
-                          effect.get(), scroll.get());
+                          effect.get());
   EXPECT_EQ(expectedCompositorElementId, state.compositorElementId());
 }
 
diff --git a/third_party/WebKit/Source/platform/graphics/paint/SkPictureBuilder.cpp b/third_party/WebKit/Source/platform/graphics/paint/SkPictureBuilder.cpp
index 86f6a95cb..a89e349 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/SkPictureBuilder.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/SkPictureBuilder.cpp
@@ -30,9 +30,9 @@
     // independent property tree set.
     if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
       PaintChunk::Id id(*this, DisplayItem::kSVGImage);
-      PropertyTreeState state(
-          TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-          EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+      PropertyTreeState state(TransformPaintPropertyNode::root(),
+                              ClipPaintPropertyNode::root(),
+                              EffectPaintPropertyNode::root());
       m_paintController->updateCurrentPaintChunkProperties(&id, state);
     }
   }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.cpp b/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.cpp
index 7796b1a..4e86f40 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.cpp
@@ -8,17 +8,19 @@
 
 namespace blink {
 
+// The root of the transform tree. The root transform node references the root
+// scroll node.
 TransformPaintPropertyNode* TransformPaintPropertyNode::root() {
   DEFINE_STATIC_REF(TransformPaintPropertyNode, root,
-                    (TransformPaintPropertyNode::create(
-                        nullptr, TransformationMatrix(), FloatPoint3D(),
+                    adoptRef(new TransformPaintPropertyNode(
+                        nullptr, TransformationMatrix(), FloatPoint3D(), false,
+                        0, CompositingReasonNone, CompositorElementId(),
                         ScrollPaintPropertyNode::root())));
   return root;
 }
 
-// TODO(pdr): print out scroll node information.
 String TransformPaintPropertyNode::toString() const {
-  return String::format(
+  auto transform = String::format(
       "parent=%p transform=%s origin=%s flattensInheritedTransform=%s "
       "renderingContextId=%x directCompositingReasons=%s "
       "compositorElementId=(%d, %d)",
@@ -27,6 +29,9 @@
       m_flattensInheritedTransform ? "yes" : "no", m_renderingContextId,
       compositingReasonsAsString(m_directCompositingReasons).ascii().data(),
       m_compositorElementId.primaryId, m_compositorElementId.secondaryId);
+  if (m_scroll)
+    return transform + " scroll=" + m_scroll->toString();
+  return transform;
 }
 
 #if DCHECK_IS_ON()
diff --git a/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h b/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
index 1a525b8..e145ac4f 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
@@ -39,25 +39,43 @@
       PassRefPtr<const TransformPaintPropertyNode> parent,
       const TransformationMatrix& matrix,
       const FloatPoint3D& origin,
-      PassRefPtr<const ScrollPaintPropertyNode> scroll = nullptr,
       bool flattensInheritedTransform = false,
       unsigned renderingContextId = 0,
       CompositingReasons directCompositingReasons = CompositingReasonNone,
       const CompositorElementId& compositorElementId = CompositorElementId()) {
-    // If this transform is for scroll offset, it should be a 2d translation.
-    if (scroll)
-      DCHECK(matrix.isIdentityOr2DTranslation());
     return adoptRef(new TransformPaintPropertyNode(
-        std::move(parent), matrix, origin, std::move(scroll),
-        flattensInheritedTransform, renderingContextId,
-        directCompositingReasons, compositorElementId));
+        std::move(parent), matrix, origin, flattensInheritedTransform,
+        renderingContextId, directCompositingReasons, compositorElementId));
+  }
+
+  static PassRefPtr<TransformPaintPropertyNode> createScrollTranslation(
+      PassRefPtr<const TransformPaintPropertyNode> parent,
+      const TransformationMatrix& matrix,
+      const FloatPoint3D& origin,
+      bool flattensInheritedTransform,
+      unsigned renderingContextId,
+      CompositingReasons directCompositingReasons,
+      const CompositorElementId& compositorElementId,
+      PassRefPtr<const ScrollPaintPropertyNode> parentScroll,
+      const IntSize& clip,
+      const IntSize& bounds,
+      bool userScrollableHorizontal,
+      bool userScrollableVertical,
+      MainThreadScrollingReasons mainThreadScrollingReasons) {
+    // If this transform is for scroll offset, it should be a 2d translation.
+    DCHECK(matrix.isIdentityOr2DTranslation());
+    return adoptRef(new TransformPaintPropertyNode(
+        std::move(parent), matrix, origin, flattensInheritedTransform,
+        renderingContextId, directCompositingReasons, compositorElementId,
+        ScrollPaintPropertyNode::create(
+            std::move(parentScroll), clip, bounds, userScrollableHorizontal,
+            userScrollableVertical, mainThreadScrollingReasons)));
   }
 
   void update(
       PassRefPtr<const TransformPaintPropertyNode> parent,
       const TransformationMatrix& matrix,
       const FloatPoint3D& origin,
-      PassRefPtr<const ScrollPaintPropertyNode> scroll = nullptr,
       bool flattensInheritedTransform = false,
       unsigned renderingContextId = 0,
       CompositingReasons directCompositingReasons = CompositingReasonNone,
@@ -67,16 +85,35 @@
     m_parent = parent;
     m_matrix = matrix;
     m_origin = origin;
-    // If this transform is for scroll offset, it should be a 2d translation.
-    if (scroll)
-      DCHECK(matrix.isIdentityOr2DTranslation());
-    m_scroll = scroll;
     m_flattensInheritedTransform = flattensInheritedTransform;
     m_renderingContextId = renderingContextId;
     m_directCompositingReasons = directCompositingReasons;
     m_compositorElementId = compositorElementId;
   }
 
+  void updateScrollTranslation(
+      PassRefPtr<const TransformPaintPropertyNode> parent,
+      const TransformationMatrix& matrix,
+      const FloatPoint3D& origin,
+      bool flattensInheritedTransform,
+      unsigned renderingContextId,
+      CompositingReasons directCompositingReasons,
+      CompositorElementId compositorElementId,
+      PassRefPtr<const ScrollPaintPropertyNode> parentScroll,
+      const IntSize& clip,
+      const IntSize& bounds,
+      bool userScrollableHorizontal,
+      bool userScrollableVertical,
+      MainThreadScrollingReasons mainThreadScrollingReasons) {
+    update(std::move(parent), matrix, origin, flattensInheritedTransform,
+           renderingContextId, directCompositingReasons, compositorElementId);
+    DCHECK(m_scroll);
+    DCHECK(matrix.isIdentityOr2DTranslation());
+    m_scroll->update(std::move(parentScroll), clip, bounds,
+                     userScrollableHorizontal, userScrollableVertical,
+                     mainThreadScrollingReasons);
+  }
+
   const TransformationMatrix& matrix() const { return m_matrix; }
   const FloatPoint3D& origin() const { return m_origin; }
 
@@ -85,6 +122,8 @@
   const TransformPaintPropertyNode* parent() const { return m_parent.get(); }
   bool isRoot() const { return !m_parent; }
 
+  // True if this transform is for the scroll offset translation.
+  bool isScrollTranslation() const { return !!m_scroll; }
   // The associated scroll node if this transform is the scroll offset for
   // scrolling, or nullptr otherwise.
   const ScrollPaintPropertyNode* scrollNode() const { return m_scroll.get(); }
@@ -118,20 +157,23 @@
   // a transform node before it has been updated, to later detect changes.
   PassRefPtr<TransformPaintPropertyNode> clone() const {
     return adoptRef(new TransformPaintPropertyNode(
-        m_parent, m_matrix, m_origin, m_scroll, m_flattensInheritedTransform,
-        m_renderingContextId, m_directCompositingReasons,
-        m_compositorElementId));
+        m_parent, m_matrix, m_origin, m_flattensInheritedTransform,
+        m_renderingContextId, m_directCompositingReasons, m_compositorElementId,
+        m_scroll ? m_scroll->clone() : nullptr));
   }
 
   // The equality operator is used by FindPropertiesNeedingUpdate.h for checking
   // if a transform node has changed.
   bool operator==(const TransformPaintPropertyNode& o) const {
+    if (m_scroll && o.m_scroll && !(*m_scroll == *o.m_scroll))
+      return false;
     return m_parent == o.m_parent && m_matrix == o.m_matrix &&
-           m_origin == o.m_origin && m_scroll == o.m_scroll &&
+           m_origin == o.m_origin &&
            m_flattensInheritedTransform == o.m_flattensInheritedTransform &&
            m_renderingContextId == o.m_renderingContextId &&
            m_directCompositingReasons == o.m_directCompositingReasons &&
-           m_compositorElementId == o.m_compositorElementId;
+           m_compositorElementId == o.m_compositorElementId &&
+           !!m_scroll == !!o.m_scroll;
   }
 
   String toTreeString() const;
@@ -144,28 +186,28 @@
       PassRefPtr<const TransformPaintPropertyNode> parent,
       const TransformationMatrix& matrix,
       const FloatPoint3D& origin,
-      PassRefPtr<const ScrollPaintPropertyNode> scroll,
       bool flattensInheritedTransform,
       unsigned renderingContextId,
       CompositingReasons directCompositingReasons,
-      CompositorElementId compositorElementId)
+      CompositorElementId compositorElementId,
+      PassRefPtr<ScrollPaintPropertyNode> scroll = nullptr)
       : m_parent(parent),
         m_matrix(matrix),
         m_origin(origin),
-        m_scroll(scroll),
         m_flattensInheritedTransform(flattensInheritedTransform),
         m_renderingContextId(renderingContextId),
         m_directCompositingReasons(directCompositingReasons),
-        m_compositorElementId(compositorElementId) {}
+        m_compositorElementId(compositorElementId),
+        m_scroll(scroll) {}
 
   RefPtr<const TransformPaintPropertyNode> m_parent;
   TransformationMatrix m_matrix;
   FloatPoint3D m_origin;
-  RefPtr<const ScrollPaintPropertyNode> m_scroll;
   bool m_flattensInheritedTransform;
   unsigned m_renderingContextId;
   CompositingReasons m_directCompositingReasons;
   CompositorElementId m_compositorElementId;
+  RefPtr<ScrollPaintPropertyNode> m_scroll;
 };
 
 // Redeclared here to avoid ODR issues.
diff --git a/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp b/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
index e3ed0aa..119fe8f3 100644
--- a/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
+++ b/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
@@ -82,14 +82,6 @@
     printedProperty = true;
   }
 
-  if (properties.propertyTreeState.scroll()) {
-    if (printedProperty)
-      *os << ", ";
-    *os << "scroll=";
-    PrintTo(*properties.propertyTreeState.scroll(), os);
-    printedProperty = true;
-  }
-
   if (printedProperty)
     *os << ", ";
   *os << "backfaceHidden=" << properties.backfaceHidden;
diff --git a/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h b/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h
index 128cd55..b59ae12 100644
--- a/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h
+++ b/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h
@@ -5,7 +5,6 @@
 #include "platform/graphics/paint/ClipPaintPropertyNode.h"
 #include "platform/graphics/paint/EffectPaintPropertyNode.h"
 #include "platform/graphics/paint/PaintChunkProperties.h"
-#include "platform/graphics/paint/ScrollPaintPropertyNode.h"
 #include "platform/graphics/paint/TransformPaintPropertyNode.h"
 
 namespace blink {
@@ -24,9 +23,9 @@
 }
 
 static inline PaintChunkProperties defaultPaintChunkProperties() {
-  PropertyTreeState propertyTreeState(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState propertyTreeState(TransformPaintPropertyNode::root(),
+                                      ClipPaintPropertyNode::root(),
+                                      EffectPaintPropertyNode::root());
   PaintChunkProperties defaultProperties(propertyTreeState);
 
   return defaultProperties;
diff --git a/third_party/WebKit/Source/platform/testing/TestPaintArtifact.cpp b/third_party/WebKit/Source/platform/testing/TestPaintArtifact.cpp
index e2d1699..ca98c01 100644
--- a/third_party/WebKit/Source/platform/testing/TestPaintArtifact.cpp
+++ b/third_party/WebKit/Source/platform/testing/TestPaintArtifact.cpp
@@ -48,12 +48,11 @@
 TestPaintArtifact::~TestPaintArtifact() {}
 
 TestPaintArtifact& TestPaintArtifact::chunk(
-    PassRefPtr<TransformPaintPropertyNode> transform,
-    PassRefPtr<ClipPaintPropertyNode> clip,
-    PassRefPtr<EffectPaintPropertyNode> effect,
-    PassRefPtr<ScrollPaintPropertyNode> scroll) {
-  PropertyTreeState propertyTreeState(transform.get(), clip.get(), effect.get(),
-                                      scroll.get());
+    PassRefPtr<const TransformPaintPropertyNode> transform,
+    PassRefPtr<const ClipPaintPropertyNode> clip,
+    PassRefPtr<const EffectPaintPropertyNode> effect) {
+  PropertyTreeState propertyTreeState(transform.get(), clip.get(),
+                                      effect.get());
   PaintChunkProperties properties(propertyTreeState);
   return chunk(properties);
 }
diff --git a/third_party/WebKit/Source/platform/testing/TestPaintArtifact.h b/third_party/WebKit/Source/platform/testing/TestPaintArtifact.h
index 6c26971a..53e78c2 100644
--- a/third_party/WebKit/Source/platform/testing/TestPaintArtifact.h
+++ b/third_party/WebKit/Source/platform/testing/TestPaintArtifact.h
@@ -47,11 +47,9 @@
   ~TestPaintArtifact();
 
   // Add to the artifact.
-  TestPaintArtifact& chunk(
-      PassRefPtr<TransformPaintPropertyNode>,
-      PassRefPtr<ClipPaintPropertyNode>,
-      PassRefPtr<EffectPaintPropertyNode>,
-      PassRefPtr<ScrollPaintPropertyNode> = ScrollPaintPropertyNode::root());
+  TestPaintArtifact& chunk(PassRefPtr<const TransformPaintPropertyNode>,
+                           PassRefPtr<const ClipPaintPropertyNode>,
+                           PassRefPtr<const EffectPaintPropertyNode>);
   TestPaintArtifact& chunk(const PaintChunkProperties&);
   TestPaintArtifact& rectDrawing(const FloatRect& bounds, Color);
   TestPaintArtifact& foreignLayer(const FloatPoint&,
diff --git a/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp b/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
index 54b44ad..6c78b0fc 100644
--- a/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
@@ -776,9 +776,9 @@
       static_cast<const CompositedPlugin*>(container->plugin());
 
   std::unique_ptr<PaintController> paintController = PaintController::create();
-  PropertyTreeState propertyTreeState(
-      TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(),
-      EffectPaintPropertyNode::root(), ScrollPaintPropertyNode::root());
+  PropertyTreeState propertyTreeState(TransformPaintPropertyNode::root(),
+                                      ClipPaintPropertyNode::root(),
+                                      EffectPaintPropertyNode::root());
   PaintChunkProperties properties(propertyTreeState);
 
   paintController->updateCurrentPaintChunkProperties(nullptr, properties);
diff --git a/third_party/afl/README.chromium b/third_party/afl/README.chromium
index 8be900fc..d5fea42 100644
--- a/third_party/afl/README.chromium
+++ b/third_party/afl/README.chromium
@@ -1,8 +1,8 @@
 Name: American Fuzzy Lop
 Short Name: AFL
 URL: http://lcamtuf.coredump.cx/afl/
-Version: 2.31b
-Date: August 18, 2016
+Version: 2.38b
+Date: January 29, 2017
 License: Apache 2.0
 License File: src/docs/COPYING
 Security Critical: no
@@ -13,10 +13,10 @@
 
 Local Modifications:
 - Use update.py to roll forward.
-- Renamed afl-2.31b/ to src/.
+- Renamed afl-2.38b/ to src/.
 - Removed the following unneeded files/directories:
   - src/experimental/argv_fuzzing/
-  - src/docs/vuln_samples/*.elf
+  - src/docs/vuln_samples
   - src/testcases/others/elf
   - src/llvm_mode/afl-llvm-pass.so.cc
   - src/dictionaries/
diff --git a/third_party/afl/src/Makefile b/third_party/afl/src/Makefile
index e4072def..44d1ffa 100644
--- a/third_party/afl/src/Makefile
+++ b/third_party/afl/src/Makefile
@@ -123,7 +123,11 @@
 	install -m 755 $(PROGS) $(SH_PROGS) $${DESTDIR}$(BIN_PATH)
 	rm -f $${DESTDIR}$(BIN_PATH)/afl-as
 	if [ -f afl-qemu-trace ]; then install -m 755 afl-qemu-trace $${DESTDIR}$(BIN_PATH); fi
+ifndef AFL_TRACE_PC
 	if [ -f afl-clang-fast -a -f afl-llvm-pass.so -a -f afl-llvm-rt.o ]; then set -e; install -m 755 afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 afl-llvm-pass.so afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi
+else
+	if [ -f afl-clang-fast -a -f afl-llvm-rt.o ]; then set -e; install -m 755 afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi
+endif
 	if [ -f afl-llvm-rt-32.o ]; then set -e; install -m 755 afl-llvm-rt-32.o $${DESTDIR}$(HELPER_PATH); fi
 	if [ -f afl-llvm-rt-64.o ]; then set -e; install -m 755 afl-llvm-rt-64.o $${DESTDIR}$(HELPER_PATH); fi
 	set -e; for i in afl-g++ afl-clang afl-clang++; do ln -sf afl-gcc $${DESTDIR}$(BIN_PATH)/$$i; done
diff --git a/third_party/afl/src/afl-fuzz.c b/third_party/afl/src/afl-fuzz.c
index c113f19..e730cb29 100644
--- a/third_party/afl/src/afl-fuzz.c
+++ b/third_party/afl/src/afl-fuzz.c
@@ -3906,7 +3906,7 @@
 
   /* Honor AFL_EXIT_WHEN_DONE and AFL_BENCH_UNTIL_CRASH. */
 
-  if (!dumb_mode && cycles_wo_finds > 50 && !pending_not_fuzzed &&
+  if (!dumb_mode && cycles_wo_finds > 100 && !pending_not_fuzzed &&
       getenv("AFL_EXIT_WHEN_DONE")) stop_soon = 2;
 
   if (total_crashes && getenv("AFL_BENCH_UNTIL_CRASH")) stop_soon = 2;
@@ -3980,10 +3980,10 @@
     if (queue_cycle == 1) strcpy(tmp, cMGN); else
 
     /* Subsequent cycles, but we're still making finds. */
-    if (cycles_wo_finds < 5) strcpy(tmp, cYEL); else
+    if (cycles_wo_finds < 25) strcpy(tmp, cYEL); else
 
     /* No finds for a long time and no test cases to try. */
-    if (cycles_wo_finds > 50 && !pending_not_fuzzed) strcpy(tmp, cLGN);
+    if (cycles_wo_finds > 100 && !pending_not_fuzzed) strcpy(tmp, cLGN);
 
     /* Default: cautiously OK to stop? */
     else strcpy(tmp, cLBL);
@@ -4669,9 +4669,9 @@
 
     case 0 ... 3:   break;
     case 4 ... 7:   perf_score *= 2; break;
-    case 8 ... 13:  perf_score *= 4; break;
-    case 14 ... 25: perf_score *= 6; break;
-    default:        perf_score *= 8;
+    case 8 ... 13:  perf_score *= 3; break;
+    case 14 ... 25: perf_score *= 4; break;
+    default:        perf_score *= 5;
 
   }
 
@@ -4924,8 +4924,11 @@
 
 #endif /* ^IGNORE_FINDS */
 
-  if (not_on_tty)
-    ACTF("Fuzzing test case #%u (%u total)...", current_entry, queued_paths);
+  if (not_on_tty) {
+    ACTF("Fuzzing test case #%u (%u total, %llu uniq crashes found)...",
+         current_entry, queued_paths, unique_crashes);
+    fflush(stdout);
+  }
 
   /* Map the test case into memory. */
 
@@ -6922,6 +6925,12 @@
 
   struct winsize ws;
 
+  if (getenv("AFL_NO_UI")) {
+    OKF("Disabling the UI because AFL_NO_UI is set.");
+    not_on_tty = 1;
+    return;
+  }
+
   if (ioctl(1, TIOCGWINSZ, &ws)) {
 
     if (errno == ENOTTY) {
@@ -7308,8 +7317,9 @@
 
 #endif /* __APPLE__ || __FreeBSD__ || __OpenBSD__ */
 
-    OKF("You have %u CPU cores and %u runnable tasks (utilization: %0.0f%%).",
-        cpu_core_count, cur_runnable, cur_runnable * 100.0 / cpu_core_count);
+    OKF("You have %u CPU core%s and %u runnable tasks (utilization: %0.0f%%).",
+        cpu_core_count, cpu_core_count > 1 ? "s" : "",
+        cur_runnable, cur_runnable * 100.0 / cpu_core_count);
 
     if (cpu_core_count > 1) {
 
@@ -7652,7 +7662,7 @@
           u8* c;
 
           if (sync_id) FATAL("Multiple -S or -M options not supported");
-          sync_id = optarg;
+          sync_id = ck_strdup(optarg);
 
           if ((c = strchr(sync_id, ':'))) {
 
@@ -7673,7 +7683,7 @@
       case 'S': 
 
         if (sync_id) FATAL("Multiple -S or -M options not supported");
-        sync_id = optarg;
+        sync_id = ck_strdup(optarg);
         break;
 
       case 'f': /* target file */
@@ -7982,6 +7992,7 @@
   destroy_queue();
   destroy_extras();
   ck_free(target_path);
+  ck_free(sync_id);
 
   alloc_report();
 
diff --git a/third_party/afl/src/afl-gcc.c b/third_party/afl/src/afl-gcc.c
index 1a588da..fa3dec1a 100644
--- a/third_party/afl/src/afl-gcc.c
+++ b/third_party/afl/src/afl-gcc.c
@@ -229,18 +229,27 @@
 
   } else if (getenv("AFL_USE_ASAN")) {
 
-    cc_params[cc_par_cnt++] = "-fsanitize=address";
-
     if (getenv("AFL_USE_MSAN"))
       FATAL("ASAN and MSAN are mutually exclusive");
 
-  } else if (getenv("AFL_USE_MSAN")) {
+    if (getenv("AFL_HARDEN"))
+      FATAL("ASAN and AFL_HARDEN are mutually exclusive");
 
-    cc_params[cc_par_cnt++] = "-fsanitize=memory";
+    cc_params[cc_par_cnt++] = "-U_FORTIFY_SOURCE";
+    cc_params[cc_par_cnt++] = "-fsanitize=address";
+
+  } else if (getenv("AFL_USE_MSAN")) {
 
     if (getenv("AFL_USE_ASAN"))
       FATAL("ASAN and MSAN are mutually exclusive");
 
+    if (getenv("AFL_HARDEN"))
+      FATAL("MSAN and AFL_HARDEN are mutually exclusive");
+
+    cc_params[cc_par_cnt++] = "-U_FORTIFY_SOURCE";
+    cc_params[cc_par_cnt++] = "-fsanitize=memory";
+
+
   }
 
   if (!getenv("AFL_DONT_OPTIMIZE")) {
@@ -314,7 +323,6 @@
 
   }
 
-
   find_as(argv[0]);
 
   edit_params(argc, argv);
diff --git a/third_party/afl/src/afl-showmap.c b/third_party/afl/src/afl-showmap.c
index bb96002..4b81862 100644
--- a/third_party/afl/src/afl-showmap.c
+++ b/third_party/afl/src/afl-showmap.c
@@ -63,7 +63,8 @@
 
 static u8  quiet_mode,                /* Hide non-essential messages?      */
            edges_only,                /* Ignore hit counts?                */
-           cmin_mode;                 /* Generate output in afl-cmin mode? */
+           cmin_mode,                 /* Generate output in afl-cmin mode? */
+           binary_mode;               /* Write output as a binary map      */
 
 static volatile u8
            stop_soon,                 /* Ctrl-C pressed?                   */
@@ -73,7 +74,7 @@
 /* Classify tuple counts. Instead of mapping to individual bits, as in
    afl-fuzz.c, we map to more user-friendly numbers between 1 and 8. */
 
-static const u8 count_class_lookup[256] = {
+static const u8 count_class_human[256] = {
 
   [0]           = 0,
   [1]           = 1,
@@ -87,7 +88,21 @@
 
 };
 
-static void classify_counts(u8* mem) {
+static const u8 count_class_binary[256] = {
+
+  [0]           = 0,
+  [1]           = 1,
+  [2]           = 2,
+  [3]           = 4,
+  [4 ... 7]     = 8,
+  [8 ... 15]    = 16,
+  [16 ... 31]   = 32,
+  [32 ... 127]  = 64,
+  [128 ... 255] = 128
+
+};
+
+static void classify_counts(u8* mem, const u8* map) {
 
   u32 i = MAP_SIZE;
 
@@ -101,7 +116,7 @@
   } else {
 
     while (i--) {
-      *mem = count_class_lookup[*mem];
+      *mem = map[*mem];
       mem++;
     }
 
@@ -148,8 +163,8 @@
 static u32 write_results(void) {
 
   s32 fd;
-  FILE* f;
   u32 i, ret = 0;
+
   u8  cco = !!getenv("AFL_CMIN_CRASHES_ONLY"),
       caa = !!getenv("AFL_CMIN_ALLOW_ANY");
 
@@ -171,27 +186,40 @@
 
   }
 
-  f = fdopen(fd, "w");
 
-  if (!f) PFATAL("fdopen() failed");
+  if (binary_mode) {
 
-  for (i = 0; i < MAP_SIZE; i++) {
+    for (i = 0; i < MAP_SIZE; i++)
+      if (trace_bits[i]) ret++;
+    
+    ck_write(fd, trace_bits, MAP_SIZE, out_file);
+    close(fd);
 
-    if (!trace_bits[i]) continue;
-    ret++;
+  } else {
 
-    if (cmin_mode) {
+    FILE* f = fdopen(fd, "w");
 
-      if (child_timed_out) break;
-      if (!caa && child_crashed != cco) break;
+    if (!f) PFATAL("fdopen() failed");
 
-      fprintf(f, "%u%u\n", trace_bits[i], i);
+    for (i = 0; i < MAP_SIZE; i++) {
 
-    } else fprintf(f, "%06u:%u\n", i, trace_bits[i]);
+      if (!trace_bits[i]) continue;
+      ret++;
+
+      if (cmin_mode) {
+
+        if (child_timed_out) break;
+        if (!caa && child_crashed != cco) break;
+
+        fprintf(f, "%u%u\n", trace_bits[i], i);
+
+      } else fprintf(f, "%06u:%u\n", i, trace_bits[i]);
+
+    }
+  
+    fclose(f);
 
   }
-  
-  fclose(f);
 
   return ret;
 
@@ -293,7 +321,8 @@
   if (*(u32*)trace_bits == EXEC_FAIL_SIG)
     FATAL("Unable to execute '%s'", argv[0]);
 
-  classify_counts(trace_bits);
+  classify_counts(trace_bits, binary_mode ?
+                  count_class_binary : count_class_human);
 
   if (!quiet_mode)
     SAYF(cRST "-- Program output ends --\n");
@@ -585,7 +614,7 @@
 
   doc_path = access(DOC_PATH, F_OK) ? "docs" : DOC_PATH;
 
-  while ((opt = getopt(argc,argv,"+o:m:t:A:eqZQ")) > 0)
+  while ((opt = getopt(argc,argv,"+o:m:t:A:eqZQb")) > 0)
 
     switch (opt) {
 
@@ -682,6 +711,14 @@
         qemu_mode = 1;
         break;
 
+      case 'b':
+
+        /* Secret undocumented mode. Writes output in raw binary format
+           similar to that dumped by afl-fuzz in <out_dir/queue/fuzz_bitmap. */
+
+        binary_mode = 1;
+        break;
+
       default:
 
         usage(argv[0]);
diff --git a/third_party/afl/src/afl-tmin.c b/third_party/afl/src/afl-tmin.c
index 912acae..c1abbe7 100644
--- a/third_party/afl/src/afl-tmin.c
+++ b/third_party/afl/src/afl-tmin.c
@@ -46,7 +46,8 @@
 
 static s32 child_pid;                 /* PID of the tested program         */
 
-static u8* trace_bits;                /* SHM with instrumentation bitmap   */
+static u8 *trace_bits,                /* SHM with instrumentation bitmap   */
+          *mask_bitmap;               /* Mask for trace bits (-B)          */
 
 static u8 *in_file,                   /* Minimizer input test case         */
           *out_file,                  /* Minimizer output file             */
@@ -118,6 +119,25 @@
 }
 
 
+/* Apply mask to classified bitmap (if set). */
+
+static void apply_mask(u32* mem, u32* mask) {
+
+  u32 i = (MAP_SIZE >> 2);
+
+  if (!mask) return;
+
+  while (i--) {
+
+    *mem &= ~*mask;
+    mem++;
+    mask++;
+
+  }
+
+}
+
+
 /* See if any bytes are set in the bitmap. */
 
 static inline u8 anything_set(void) {
@@ -314,6 +334,7 @@
     FATAL("Unable to execute '%s'", argv[0]);
 
   classify_counts(trace_bits);
+  apply_mask((u32*)trace_bits, (u32*)mask_bitmap);
   total_execs++;
 
   if (stop_soon) {
@@ -919,6 +940,22 @@
 }
 
 
+/* Read mask bitmap from file. This is for the -B option. */
+
+static void read_bitmap(u8* fname) {
+
+  s32 fd = open(fname, O_RDONLY);
+
+  if (fd < 0) PFATAL("Unable to open '%s'", fname);
+
+  ck_read(fd, mask_bitmap, MAP_SIZE, fname);
+
+  close(fd);
+
+}
+
+
+
 /* Main entry point */
 
 int main(int argc, char** argv) {
@@ -931,7 +968,7 @@
 
   SAYF(cCYA "afl-tmin " cBRI VERSION cRST " by <lcamtuf@google.com>\n");
 
-  while ((opt = getopt(argc,argv,"+i:o:f:m:t:xeQ")) > 0)
+  while ((opt = getopt(argc,argv,"+i:o:f:m:t:B:xeQ")) > 0)
 
     switch (opt) {
 
@@ -1023,6 +1060,26 @@
         qemu_mode = 1;
         break;
 
+      case 'B': /* load bitmap */
+
+        /* This is a secret undocumented option! It is speculated to be useful
+           if you have a baseline "boring" input file and another "interesting"
+           file you want to minimize.
+
+           You can dump a binary bitmap for the boring file using
+           afl-showmap -b, and then load it into afl-tmin via -B. The minimizer
+           will then minimize to preserve only the edges that are unique to
+           the interesting input file, but ignoring everything from the
+           original map.
+
+           The option may be extended and made more official if it proves
+           to be useful. */
+
+        if (mask_bitmap) FATAL("Multiple -B options not supported");
+        mask_bitmap = ck_alloc(MAP_SIZE);
+        read_bitmap(optarg);
+        break;
+
       default:
 
         usage(argv[0]);
diff --git a/third_party/afl/src/afl-whatsup b/third_party/afl/src/afl-whatsup
index 9a186f9..a4d3041 100755
--- a/third_party/afl/src/afl-whatsup
+++ b/third_party/afl/src/afl-whatsup
@@ -74,7 +74,7 @@
 
 fi
 
-for i in `find . -maxdepth 2 -iname fuzzer_stats`; do
+for i in `find . -maxdepth 2 -iname fuzzer_stats | sort`; do
 
   sed 's/^command_line.*$/_skip:1/;s/[ ]*:[ ]*/="/;s/$/"/' "$i" >"$TMP"
   . "$TMP"
diff --git a/third_party/afl/src/config.h b/third_party/afl/src/config.h
index bc2a29da..2fdef50 100644
--- a/third_party/afl/src/config.h
+++ b/third_party/afl/src/config.h
@@ -21,7 +21,7 @@
 
 /* Version string: */
 
-#define VERSION             "2.31b"
+#define VERSION             "2.38b"
 
 /******************************************************
  *                                                    *
@@ -115,7 +115,7 @@
 
 /* Splicing cycle count: */
 
-#define SPLICE_CYCLES       16
+#define SPLICE_CYCLES       15
 
 /* Nominal per-splice havoc cycle length: */
 
diff --git a/third_party/afl/src/docs/ChangeLog b/third_party/afl/src/docs/ChangeLog
index 70413c4..3eb01a7 100644
--- a/third_party/afl/src/docs/ChangeLog
+++ b/third_party/afl/src/docs/ChangeLog
@@ -17,6 +17,92 @@
 to get on with the times.
 
 --------------
+Version 2.38b:
+--------------
+
+  - Added -mllvm -sanitizer-coverage-block-threshold=0 to trace-pc-guard
+    mode, as suggested by Kostya Serebryany.
+
+--------------
+Version 2.37b:
+--------------
+
+  - Fixed a typo. Spotted by Jakub Wilk.
+
+  - Fixed support for make install when using trace-pc. Spotted by
+    Kurt Roeckx.
+
+  - Switched trace-pc to trace-pc-guard, which should be considerably
+    faster and is less quirky. Kudos to Konstantin Serebryany (and sorry
+    for dragging my feet).
+
+    Note that for some reason, this mode doesn't perform as well as
+    "vanilla" afl-clang-fast / afl-clang.
+
+--------------
+Version 2.36b:
+--------------
+
+  - Fixed a cosmetic bad free() bug when aborting -S sessions. Spotted
+    by Johannes S.
+
+  - Made a small change to afl-whatsup to sort fuzzers by name.
+
+  - Fixed a minor issue with malloc(0) in libdislocator. Spotted by
+    Rene Freingruber.
+
+  - Changed the clobber pattern in libdislocator to a slightly more
+    reliable one. Suggested by Rene Freingruber.
+
+  - Added a note about THP performance. Suggested by Sergey Davidoff.
+
+  - Added a somewhat unofficial support for running afl-tmin with a
+    baseline "mask" that causes it to minimize only for edges that
+    are unique to the input file, but not to the "boring" baseline.
+    Suggested by Sami Liedes.
+
+  - "Fixed" a getPassName() problem with never versions of clang.
+    Reported by Craig Young and several other folks.
+
+  Yep, I know I have a backlog on several other feature requests.
+  Stay tuned!
+
+--------------
+Version 2.35b:
+--------------
+
+  - Fixed a minor cmdline reporting glitch, spotted by Leo Barnes.
+
+  - Fixed a silly bug in libdislocator. Spotted by Johannes Schultz.
+
+--------------
+Version 2.34b:
+--------------
+
+  - Added a note about afl-tmin to technical_details.txt.
+
+  - Added support for AFL_NO_UI, as suggested by Leo Barnes.
+
+--------------
+Version 2.33b:
+--------------
+
+  - Added code to strip -Wl,-z,defs and -Wl,--no-undefined for afl-clang-fast,
+    since they interfere with -shared. Spotted and diagnosed by Toby Hutton.
+
+  - Added some fuzzing tips for Android.
+
+--------------
+Version 2.32b:
+--------------
+
+  - Added a check for AFL_HARDEN combined with AFL_USE_*SAN. Suggested by
+    Hanno Boeck.
+
+  - Made several other cosmetic adjustments to cycle timing in the wake of the
+    big tweak made in 2.31b.
+
+--------------
 Version 2.31b:
 --------------
 
diff --git a/third_party/afl/src/docs/INSTALL b/third_party/afl/src/docs/INSTALL
index fa8a34c..4168e88f 100644
--- a/third_party/afl/src/docs/INSTALL
+++ b/third_party/afl/src/docs/INSTALL
@@ -164,8 +164,20 @@
 20x faster or so. If you have a *really* compelling use case for Cygwin, let
 me know.
 
-Although Android on x86 should theoretically work, the stock kernel has SHM
-support compiled out, so you will need to address this issue first. It's
-possible that all you need is this:
+Although Android on x86 should theoretically work, the stock kernel may have
+SHM support compiled out, and if so, you may have to address that issue first.
+It's possible that all you need is this workaround:
 
   https://github.com/pelya/android-shmem
+
+Joshua J. Drake notes that the Android linker adds a shim that automatically
+intercepts SIGSEGV and related signals. To fix this issue and be able to see
+crashes, you need to put this at the beginning of the fuzzed program:
+
+  signal(SIGILL, SIG_DFL);
+  signal(SIGABRT, SIG_DFL);
+  signal(SIGBUS, SIG_DFL);
+  signal(SIGFPE, SIG_DFL);
+  signal(SIGSEGV, SIG_DFL);
+
+You may need to #include <signal.h> first.
diff --git a/third_party/afl/src/docs/README b/third_party/afl/src/docs/README
index a9a05fa..501bdd4 100644
--- a/third_party/afl/src/docs/README
+++ b/third_party/afl/src/docs/README
@@ -478,6 +478,9 @@
   Vegard Nossum                         Jan Kneschke
   Kurt Roeckx                           Marcel Bohme
   Van-Thuan Pham                        Abhik Roychoudhury
+  Joshua J. Drake                       Toby Hutton
+  Rene Freingruber                      Sergey Davidoff
+  Sami Liedes                           Craig Young
 
 Thank you!
 
diff --git a/third_party/afl/src/docs/env_variables.txt b/third_party/afl/src/docs/env_variables.txt
index fc2a610..a91b43a 100644
--- a/third_party/afl/src/docs/env_variables.txt
+++ b/third_party/afl/src/docs/env_variables.txt
@@ -145,6 +145,10 @@
     without disrupting the afl-fuzz process itself. This is useful, among other
     things, for bootstrapping libdislocator.so.
 
+  - Setting AFL_NO_UI inhibits the UI altogether, and just periodically prints
+    some basic stats. This behavior is also automatically triggered when the
+    output from afl-fuzz is redirected to a file or to a pipe.
+
   - If you are Jakub, you may need AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES.
     Others need not apply.
 
diff --git a/third_party/afl/src/docs/notes_for_asan.txt b/third_party/afl/src/docs/notes_for_asan.txt
index 0f5bdca..dff89ba 100644
--- a/third_party/afl/src/docs/notes_for_asan.txt
+++ b/third_party/afl/src/docs/notes_for_asan.txt
@@ -31,11 +31,6 @@
 
 (You can also use AFL_USE_MSAN=1 to enable MSAN instead.)
 
-Note that both ASAN and MSAN are incompatible with -D_FORTIFY_SOURCE (enabled
-by default in some distros) and with AFL_HARDEN. Attempting to combine these
-settings can lead to false negatives in ASAN and false positives in MSAN. This
-is not AFL-specific.
-
 There is also the option of generating a corpus using a non-ASAN binary, and
 then feeding it to an ASAN-instrumented one to check for bugs. This is faster,
 and can give you somewhat comparable results. You can also try using
diff --git a/third_party/afl/src/docs/perf_tips.txt b/third_party/afl/src/docs/perf_tips.txt
index 0821b02..3a8997a 100644
--- a/third_party/afl/src/docs/perf_tips.txt
+++ b/third_party/afl/src/docs/perf_tips.txt
@@ -167,6 +167,12 @@
     On other systems, the impact of CPU scaling will be different; when fuzzing,
     use OS-specific tools to find out if all cores are running at full speed.
 
+  - Transparent huge pages. Some allocators, such as jemalloc, can incur a
+    heavy fuzzing penalty when transparent huge pages (THP) are enabled in the
+    kernel. You can disable this via:
+
+    echo never > /sys/kernel/mm/transparent_hugepage/enabled
+
   - Suboptimal scheduling strategies. The significance of this will vary from
     one target to another, but on Linux, you may want to make sure that the
     following options are set:
diff --git a/third_party/afl/src/docs/sister_projects.txt b/third_party/afl/src/docs/sister_projects.txt
index 9c70604..1434e37 100644
--- a/third_party/afl/src/docs/sister_projects.txt
+++ b/third_party/afl/src/docs/sister_projects.txt
@@ -173,6 +173,13 @@
 
   https://github.com/mrash/afl-cov
 
+afl-sancov (Bhargava Shastry)
+-----------------------------
+
+  Similar to afl-cov, but uses clang sanitizer instrumentation.
+
+  https://github.com/bshastry/afl-sancov
+
 RecidiVM (Jakub Wilk)
 ---------------------
 
diff --git a/third_party/afl/src/docs/technical_details.txt b/third_party/afl/src/docs/technical_details.txt
index 3ec48741..af6131c 100644
--- a/third_party/afl/src/docs/technical_details.txt
+++ b/third_party/afl/src/docs/technical_details.txt
@@ -279,7 +279,38 @@
 and stepover to match. The average per-file gains are around 5-20%.
 
 The standalone afl-tmin tool uses a more exhaustive, iterative algorithm, and
-also attempts to perform alphabet normalization on the trimmed files. 
+also attempts to perform alphabet normalization on the trimmed files. The
+operation of afl-tmin is as follows.
+
+First, the tool automatically selects the operating mode. If the initial input
+crashes the target binary, afl-tmin will run in non-instrumented mode, simply
+keeping any tweaks that produce a simpler file but still crash the target. If
+the target is non-crashing, the tool uses an instrumented mode and keeps only
+the tweaks that produce exactly the same execution path.
+
+The actual minimization algorithm is:
+
+  1) Attempt to zero large blocks of data with large stepovers. Empirically,
+     this is shown to reduce the number of execs by preempting finer-grained
+     efforts later on.
+
+  2) Perform a block deletion pass with decreasing block sizes and stepovers,
+     binary-search-style. 
+
+  3) Perform alphabet normalization by counting unique characters and trying
+     to bulk-replace each with a zero value.
+
+  4) As a last result, perform byte-by-byte normalization on non-zero bytes.
+
+Instead of zeroing with a 0x00 byte, afl-tmin uses the ASCII digit '0'. This
+is done because such a modification is much less likely to interfere with
+text parsing, so it is more likely to result in successful minimization of
+text files.
+
+The algorithm used here is less involved than some other test case
+minimization approaches proposed in academic work, but requires far fewer
+executions and tends to produce comparable results in most real-world
+applications.
 
 6) Fuzzing strategies
 ---------------------
diff --git a/third_party/afl/src/docs/vuln_samples/bash-cmd-exec.var b/third_party/afl/src/docs/vuln_samples/bash-cmd-exec.var
deleted file mode 100644
index 6422d427..0000000
--- a/third_party/afl/src/docs/vuln_samples/bash-cmd-exec.var
+++ /dev/null
@@ -1 +0,0 @@
-() { _; } >_[$($())] { id; }
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/bash-uninit-mem.var b/third_party/afl/src/docs/vuln_samples/bash-uninit-mem.var
deleted file mode 100644
index 6d7d5360..0000000
--- a/third_party/afl/src/docs/vuln_samples/bash-uninit-mem.var
+++ /dev/null
@@ -1 +0,0 @@
-() { x() { _; }; x() { _; } <<a; }
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-ptr-800m.mp4 b/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-ptr-800m.mp4
deleted file mode 100644
index ce23a8bd..0000000
--- a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-ptr-800m.mp4
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-read.mp4 b/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-read.mp4
deleted file mode 100644
index 57a0ac90..0000000
--- a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-bad-read.mp4
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-call-stack-overflow.mp4 b/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-call-stack-overflow.mp4
deleted file mode 100644
index 5471105..0000000
--- a/third_party/afl/src/docs/vuln_samples/ffmpeg-h264-call-stack-overflow.mp4
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/firefox-bmp-leak.bmp b/third_party/afl/src/docs/vuln_samples/firefox-bmp-leak.bmp
deleted file mode 100644
index 857e242..0000000
--- a/third_party/afl/src/docs/vuln_samples/firefox-bmp-leak.bmp
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/firefox-chrome-leak.jpg b/third_party/afl/src/docs/vuln_samples/firefox-chrome-leak.jpg
deleted file mode 100644
index a642d98..0000000
--- a/third_party/afl/src/docs/vuln_samples/firefox-chrome-leak.jpg
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/firefox-gif-leak.gif b/third_party/afl/src/docs/vuln_samples/firefox-gif-leak.gif
deleted file mode 100644
index 310cd36..0000000
--- a/third_party/afl/src/docs/vuln_samples/firefox-gif-leak.gif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/firefox-gif-leak2.gif b/third_party/afl/src/docs/vuln_samples/firefox-gif-leak2.gif
deleted file mode 100644
index bb41696..0000000
--- a/third_party/afl/src/docs/vuln_samples/firefox-gif-leak2.gif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/jxrlib-crash.jxr b/third_party/afl/src/docs/vuln_samples/jxrlib-crash.jxr
deleted file mode 100644
index 71d190e..0000000
--- a/third_party/afl/src/docs/vuln_samples/jxrlib-crash.jxr
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/jxrlib-crash2.jxr b/third_party/afl/src/docs/vuln_samples/jxrlib-crash2.jxr
deleted file mode 100644
index 0831325..0000000
--- a/third_party/afl/src/docs/vuln_samples/jxrlib-crash2.jxr
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/jxrlib-crash3.jxr b/third_party/afl/src/docs/vuln_samples/jxrlib-crash3.jxr
deleted file mode 100644
index 47af7f1..0000000
--- a/third_party/afl/src/docs/vuln_samples/jxrlib-crash3.jxr
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/jxrlib-crash4.jxr b/third_party/afl/src/docs/vuln_samples/jxrlib-crash4.jxr
deleted file mode 100644
index 51daf47d..0000000
--- a/third_party/afl/src/docs/vuln_samples/jxrlib-crash4.jxr
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/lesspipe-cpio-bad-write.cpio b/third_party/afl/src/docs/vuln_samples/lesspipe-cpio-bad-write.cpio
deleted file mode 100644
index ec5a992d..0000000
--- a/third_party/afl/src/docs/vuln_samples/lesspipe-cpio-bad-write.cpio
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libjpeg-sos-leak.jpg b/third_party/afl/src/docs/vuln_samples/libjpeg-sos-leak.jpg
deleted file mode 100644
index 02653b87..0000000
--- a/third_party/afl/src/docs/vuln_samples/libjpeg-sos-leak.jpg
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libjpeg-turbo-dht-leak.jpg b/third_party/afl/src/docs/vuln_samples/libjpeg-turbo-dht-leak.jpg
deleted file mode 100644
index cfc21a8..0000000
--- a/third_party/afl/src/docs/vuln_samples/libjpeg-turbo-dht-leak.jpg
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libtiff-bad-write.tif b/third_party/afl/src/docs/vuln_samples/libtiff-bad-write.tif
deleted file mode 100644
index 45027cd..0000000
--- a/third_party/afl/src/docs/vuln_samples/libtiff-bad-write.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem.tif b/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem.tif
deleted file mode 100644
index b94e2a9..0000000
--- a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem2.tif b/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem2.tif
deleted file mode 100644
index 0f9711b..0000000
--- a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem2.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem3.tif b/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem3.tif
deleted file mode 100644
index 6889a3d..0000000
--- a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem3.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem4.tif b/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem4.tif
deleted file mode 100644
index 98af970..0000000
--- a/third_party/afl/src/docs/vuln_samples/libtiff-uninit-mem4.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/libxml2-bad-read.xml b/third_party/afl/src/docs/vuln_samples/libxml2-bad-read.xml
deleted file mode 100644
index d46fd12..0000000
--- a/third_party/afl/src/docs/vuln_samples/libxml2-bad-read.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<!DOCTYPEd[<!ENTITY
-S	""><!ENTITY %
-N	"<!ELEMENT<![INCLUDE0"<!ENTITYL%N;
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/msie-dht-leak.jpg b/third_party/afl/src/docs/vuln_samples/msie-dht-leak.jpg
deleted file mode 100644
index a0fb121c..0000000
--- a/third_party/afl/src/docs/vuln_samples/msie-dht-leak.jpg
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/msie-jxr-mem-leak.jxr b/third_party/afl/src/docs/vuln_samples/msie-jxr-mem-leak.jxr
deleted file mode 100644
index 519f9c1..0000000
--- a/third_party/afl/src/docs/vuln_samples/msie-jxr-mem-leak.jxr
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/msie-png-mem-leak.png b/third_party/afl/src/docs/vuln_samples/msie-png-mem-leak.png
deleted file mode 100644
index bc193bf..0000000
--- a/third_party/afl/src/docs/vuln_samples/msie-png-mem-leak.png
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/msie-tiff-mem-leak.tif b/third_party/afl/src/docs/vuln_samples/msie-tiff-mem-leak.tif
deleted file mode 100644
index 7e937c9..0000000
--- a/third_party/afl/src/docs/vuln_samples/msie-tiff-mem-leak.tif
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/msie-zlib-dos.png b/third_party/afl/src/docs/vuln_samples/msie-zlib-dos.png
deleted file mode 100644
index df3ab80..0000000
--- a/third_party/afl/src/docs/vuln_samples/msie-zlib-dos.png
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/openssl-null-ptr.der b/third_party/afl/src/docs/vuln_samples/openssl-null-ptr.der
deleted file mode 100644
index dd3975d6..0000000
--- a/third_party/afl/src/docs/vuln_samples/openssl-null-ptr.der
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/openssl-null-ptr2.der b/third_party/afl/src/docs/vuln_samples/openssl-null-ptr2.der
deleted file mode 100644
index 85cf6b05..0000000
--- a/third_party/afl/src/docs/vuln_samples/openssl-null-ptr2.der
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/photoshop-mem-leak.jpg b/third_party/afl/src/docs/vuln_samples/photoshop-mem-leak.jpg
deleted file mode 100644
index 5b9f591..0000000
--- a/third_party/afl/src/docs/vuln_samples/photoshop-mem-leak.jpg
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-bad-free.sql b/third_party/afl/src/docs/vuln_samples/sqlite-bad-free.sql
deleted file mode 100644
index 4e37f49c..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-bad-free.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-create table t0(o CHar(0)CHECK(0&O>O));insert into t0
-select randomblob(0)-trim(0);
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr.sql b/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr.sql
deleted file mode 100644
index 46e78afa..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr.sql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT 0 UNION SELECT 0 ORDER BY 1 COLLATE"""""""";
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr2.sql b/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr2.sql
deleted file mode 100644
index cd613d08..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr2.sql
+++ /dev/null
@@ -1 +0,0 @@
-PRAGMA foreign_keys=1;CREATE TABLE t1("""0"PRIMARY KEy REFERENCES t1 ON DELETE SET NULL);REPLACE INTO t1 SELECT(0);
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr3.sql b/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr3.sql
deleted file mode 100644
index 7518816..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-bad-ptr3.sql
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-heap-overflow.sql b/third_party/afl/src/docs/vuln_samples/sqlite-heap-overflow.sql
deleted file mode 100644
index 066fc83..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-heap-overflow.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-DROP TABLE IF EXISTS t;CREATE VIRTUAL TABLE t0 USING fts4();insert into t0 select zeroblob(0);SAVEPOINT O;insert into t0
-select(0);SAVEPOINT E;insert into t0 SELECT 0 UNION SELECT 0'x'ORDER BY x;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-heap-overwrite.sql b/third_party/afl/src/docs/vuln_samples/sqlite-heap-overwrite.sql
deleted file mode 100644
index 51ed82c..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-heap-overwrite.sql
+++ /dev/null
@@ -1 +0,0 @@
-ATTACH "file:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?mode=memory&cache=shared" AS x;
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-negative-memset.sql b/third_party/afl/src/docs/vuln_samples/sqlite-negative-memset.sql
deleted file mode 100644
index d647bea..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-negative-memset.sql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT*from(select"",zeroblob(0),zeroblob(1E9),zeroblob(0),zeroblob(150000000),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(1E9),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0)),(select"",zeroblob(1E9),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(1E9),(0),zeroblob(150000000),(0),zeroblob(0),(0)EXCEPT select zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0),zeroblob(0));
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr1.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr1.sql
deleted file mode 100644
index 3f9d46c7..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr1.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-create table t0(t);insert into t0
-select strftime();
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr10.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr10.sql
deleted file mode 100644
index 798bbf14..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr10.sql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT fts3_tokenizer(@0());
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr11.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr11.sql
deleted file mode 100644
index f6bcf65f..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr11.sql
+++ /dev/null
@@ -1 +0,0 @@
-select''like''like''like#0;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr12.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr12.sql
deleted file mode 100644
index 8d14a86..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr12.sql
+++ /dev/null
@@ -1 +0,0 @@
-PRAGMA e;select lower(0);select lower(0)"a",""GROUP BY a ORDER BY a;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr13.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr13.sql
deleted file mode 100644
index e730db3..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr13.sql
+++ /dev/null
@@ -1 +0,0 @@
-WITH x AS(SELECT*FROM t)SELECT""EXCEPT SELECT 0 ORDER BY 0 COLLATE"";
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr14.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr14.sql
deleted file mode 100644
index 37b9bae..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr14.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE VIRTUAL TABLE x USING fts4();VALUES(0,0),(0,0),(0,0),(0,0);PRAGMA writable_schema=ON;UPDATE sqlite_master SET sql=''WHERE name='';UPDATE sqlite_master SET sql='CREATE table t(d CHECK(T(#0)';SAVEPOINT K;SAVEPOINT T;SAVEPOINT T;ANALYZE;ROLLBACK;SAVEPOINT E;DROP TABLE IF EXISTS t;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr15.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr15.sql
deleted file mode 100644
index 83d5c9d..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr15.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE VIRTUAL TABLE t4 USING fts4(0,b,c,notindexed=0);INSERT INTO t4 VALUES('','','0');BEGIN;INSERT INTO t4 VALUES('','','0');INSERT INTO t4(t4)VALUES('integrity-check');
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr2.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr2.sql
deleted file mode 100644
index 11c5a37..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr2.sql
+++ /dev/null
@@ -1 +0,0 @@
-DETACH(select group_concat(q));
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr3.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr3.sql
deleted file mode 100644
index 14df82a7..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr3.sql
+++ /dev/null
@@ -1 +0,0 @@
-select(select strftime());
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr4.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr4.sql
deleted file mode 100644
index fdb80476..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr4.sql
+++ /dev/null
@@ -1 +0,0 @@
-select n()AND+#00;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr5.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr5.sql
deleted file mode 100644
index 7bbb785..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr5.sql
+++ /dev/null
@@ -1 +0,0 @@
-select e.*,0 from(s,(L))e;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr6.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr6.sql
deleted file mode 100644
index 1431f3f5..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr6.sql
+++ /dev/null
@@ -1 +0,0 @@
-PRAGMA encoding='UTF16';CREATE VIRTUAL TABLE È USING s;
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr7.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr7.sql
deleted file mode 100644
index 57ab12c51..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr7.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE VIRTUAL TABLE t USING fts4(tokenize=);
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr8.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr8.sql
deleted file mode 100644
index 4d5db064..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr8.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE TABLE p(a UNIQUE,PRIMARY KEY('a'))WITHOUT rowid;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr9.sql b/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr9.sql
deleted file mode 100644
index 0ae836a2..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-null-ptr9.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE TABLE t0(z);WITH d(x)AS(SELECT*UNION SELECT 0)INSERT INTO t0 SELECT 0 FROM d;
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-oob-read.sql b/third_party/afl/src/docs/vuln_samples/sqlite-oob-read.sql
deleted file mode 100644
index 75f4150..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-oob-read.sql
+++ /dev/null
@@ -1 +0,0 @@
-create table t0(‰ DEFAULT(0=0)NOT/**/NULL);REPLACE into t0 select'';
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-oob-write.sql b/third_party/afl/src/docs/vuln_samples/sqlite-oob-write.sql
deleted file mode 100644
index 9b2c427d..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-oob-write.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-CREATE VIRTUAL TABLE t0 USING fts4(x,order=DESC);
-INSERT INTO t0(docid,x)VALUES(-1E0,'0(o');
-INSERT INTO t0 VALUES('');
-INSERT INTO t0 VALUES('');
-INSeRT INTO t0 VALUES('o');
-SELECT docid FROM t0 WHERE t0 MATCH'"0*o"';
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-stack-buf-overflow.sql b/third_party/afl/src/docs/vuln_samples/sqlite-stack-buf-overflow.sql
deleted file mode 100644
index 4be57fd..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-stack-buf-overflow.sql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT printf('%*.*f',90000||006000000&6600000000,00000000000000000909000000000000.0000000000000000)""WHERE"">"";
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-stack-exhaustion.sql b/third_party/afl/src/docs/vuln_samples/sqlite-stack-exhaustion.sql
deleted file mode 100644
index 6031a93..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-stack-exhaustion.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE VIRTUAL TABLE t0 USING fts4(content=t0);
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-unint-mem.sql b/third_party/afl/src/docs/vuln_samples/sqlite-unint-mem.sql
deleted file mode 100644
index 83b77112..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-unint-mem.sql
+++ /dev/null
@@ -1 +0,0 @@
-REATE VIRTUAL TABLE t0 USING fts4(prefix=0);INSERT INTO t0 VALUES(0);
diff --git a/third_party/afl/src/docs/vuln_samples/sqlite-use-after-free.sql b/third_party/afl/src/docs/vuln_samples/sqlite-use-after-free.sql
deleted file mode 100644
index 4083ee6..0000000
--- a/third_party/afl/src/docs/vuln_samples/sqlite-use-after-free.sql
+++ /dev/null
@@ -1 +0,0 @@
-create table t(s);PRAGMA writable_schema=ON;UPDATE sqlite_master SET sql='ANALYZE;CREATE VIRTUAL TABLE t USING fts3;DROP TABLE t;DROP TABLE EXISTS t';PRAGMA r;SAVEPOINT T;ANALYZE;ROLLBACK;SAVEPOINT E;DROP TABLE IF EXISTS t;
diff --git a/third_party/afl/src/docs/vuln_samples/strings-stack-overflow b/third_party/afl/src/docs/vuln_samples/strings-stack-overflow
deleted file mode 100644
index a3d0e04..0000000
--- a/third_party/afl/src/docs/vuln_samples/strings-stack-overflow
+++ /dev/null
@@ -1,3 +0,0 @@
-$$@$$$@$o
-S…Ôo
-S…Ô
\ No newline at end of file
diff --git a/third_party/afl/src/docs/vuln_samples/tcpdump-arp-crash.pcap b/third_party/afl/src/docs/vuln_samples/tcpdump-arp-crash.pcap
deleted file mode 100644
index 40d199a2..0000000
--- a/third_party/afl/src/docs/vuln_samples/tcpdump-arp-crash.pcap
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/tcpdump-ppp-crash.pcap b/third_party/afl/src/docs/vuln_samples/tcpdump-ppp-crash.pcap
deleted file mode 100644
index b6831155..0000000
--- a/third_party/afl/src/docs/vuln_samples/tcpdump-ppp-crash.pcap
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/unrtf-arbitrary-read.rtf b/third_party/afl/src/docs/vuln_samples/unrtf-arbitrary-read.rtf
deleted file mode 100644
index b7f4c2837..0000000
--- a/third_party/afl/src/docs/vuln_samples/unrtf-arbitrary-read.rtf
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/docs/vuln_samples/unzip-t-mem-corruption.zip b/third_party/afl/src/docs/vuln_samples/unzip-t-mem-corruption.zip
deleted file mode 100644
index d34fa39e..0000000
--- a/third_party/afl/src/docs/vuln_samples/unzip-t-mem-corruption.zip
+++ /dev/null
Binary files differ
diff --git a/third_party/afl/src/libdislocator/libdislocator.so.c b/third_party/afl/src/libdislocator/libdislocator.so.c
index 1d4648f..0dfc98e 100644
--- a/third_party/afl/src/libdislocator/libdislocator.so.c
+++ b/third_party/afl/src/libdislocator/libdislocator.so.c
@@ -64,7 +64,7 @@
 /* Canary & clobber bytes: */
 
 #define ALLOC_CANARY  0xAACCAACC
-#define ALLOC_CLOBBER 0x41
+#define ALLOC_CLOBBER 0xCC
 
 #define PTR_C(_p) (((u32*)(_p))[-1])
 #define PTR_L(_p) (((u32*)(_p))[-2])
@@ -89,7 +89,8 @@
 
   void* ret;
 
-  if (total_mem + len > max_mem) {
+
+  if (total_mem + len > max_mem || total_mem + len < total_mem) {
 
     if (hard_fail)
       FATAL("total allocs exceed %u MB", max_mem / 1024 / 1024);
diff --git a/third_party/afl/src/llvm_mode/README.llvm b/third_party/afl/src/llvm_mode/README.llvm
index f7d48c91..d96d8c31 100644
--- a/third_party/afl/src/llvm_mode/README.llvm
+++ b/third_party/afl/src/llvm_mode/README.llvm
@@ -166,14 +166,14 @@
 faster than the normal fork() model, and compared to in-process fuzzing,
 should be a lot more robust.
 
-6) Bonus feature #3: new 'trace-pc' mode
-----------------------------------------
+6) Bonus feature #3: new 'trace-pc-guard' mode
+----------------------------------------------
 
 Recent versions of LLVM are shipping with a built-in execution tracing feature
-that is fairly usable for AFL, without the need to post-process the assembly
-or install any compiler plugins. See:
+that provides AFL with the necessary tracing data without the need to
+post-process the assembly or install any compiler plugins. See:
 
-  http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs
+  http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards
 
 As of this writing, the feature is only available on SVN trunk, and is yet to
 make it to an official release of LLVM. Nevertheless, if you have a
@@ -182,10 +182,7 @@
 
   AFL_TRACE_PC=1 make clean all
 
-Since a form of 'trace-pc' is also supported in GCC, this mode may become a
-longer-term solution to all our needs.
+Note that this mode is currently about 20-30% slower than "vanilla"
+afl-clang-fast, and about 5-10% slower than afl-clang. I am not entirely sure
+why.
 
-Note that this mode supports AFL_INST_RATIO at run time, not at compilation
-time. This is somewhat similar to the behavior of the QEMU mode. Because of
-the need to support it at run time, the mode is also a tad slower than the
-plugin-based approach.
diff --git a/third_party/afl/src/llvm_mode/afl-clang-fast.c b/third_party/afl/src/llvm_mode/afl-clang-fast.c
index 725a16f..4f7fe475 100644
--- a/third_party/afl/src/llvm_mode/afl-clang-fast.c
+++ b/third_party/afl/src/llvm_mode/afl-clang-fast.c
@@ -114,13 +114,15 @@
 
   /* There are two ways to compile afl-clang-fast. In the traditional mode, we
      use afl-llvm-pass.so to inject instrumentation. In the experimental
-     'trace-pc' mode, we use native LLVM instrumentation callbacks instead.
-     The latter is a very recent addition - see:
+     'trace-pc-guard' mode, we use native LLVM instrumentation callbacks
+     instead. The latter is a very recent addition - see:
 
-     http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs */
+     http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */
 
 #ifdef USE_TRACE_PC
-  cc_params[cc_par_cnt++] = "-fsanitize-coverage=bb,trace-pc";
+  cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
+  cc_params[cc_par_cnt++] = "-mllvm";
+  cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0";
 #else
   cc_params[cc_par_cnt++] = "-Xclang";
   cc_params[cc_par_cnt++] = "-load";
@@ -152,6 +154,9 @@
 
     if (!strcmp(cur, "-shared")) maybe_linking = 0;
 
+    if (!strcmp(cur, "-Wl,-z,defs") ||
+        !strcmp(cur, "-Wl,--no-undefined")) continue;
+
     cc_params[cc_par_cnt++] = cur;
 
   }
@@ -169,18 +174,26 @@
 
     if (getenv("AFL_USE_ASAN")) {
 
-      cc_params[cc_par_cnt++] = "-fsanitize=address";
-
       if (getenv("AFL_USE_MSAN"))
         FATAL("ASAN and MSAN are mutually exclusive");
 
-    } else if (getenv("AFL_USE_MSAN")) {
+      if (getenv("AFL_HARDEN"))
+        FATAL("ASAN and AFL_HARDEN are mutually exclusive");
 
-      cc_params[cc_par_cnt++] = "-fsanitize=memory";
+      cc_params[cc_par_cnt++] = "-U_FORTIFY_SOURCE";
+      cc_params[cc_par_cnt++] = "-fsanitize=address";
+
+    } else if (getenv("AFL_USE_MSAN")) {
 
       if (getenv("AFL_USE_ASAN"))
         FATAL("ASAN and MSAN are mutually exclusive");
 
+      if (getenv("AFL_HARDEN"))
+        FATAL("MSAN and AFL_HARDEN are mutually exclusive");
+
+      cc_params[cc_par_cnt++] = "-U_FORTIFY_SOURCE";
+      cc_params[cc_par_cnt++] = "-fsanitize=memory";
+
     }
 
   }
diff --git a/third_party/afl/src/llvm_mode/afl-llvm-rt.o.c b/third_party/afl/src/llvm_mode/afl-llvm-rt.o.c
index e2ef151..905c76f 100644
--- a/third_party/afl/src/llvm_mode/afl-llvm-rt.o.c
+++ b/third_party/afl/src/llvm_mode/afl-llvm-rt.o.c
@@ -34,6 +34,16 @@
 #include <sys/wait.h>
 #include <sys/types.h>
 
+/* This is a somewhat ugly hack for the experimental 'trace-pc-guard' mode.
+   Basically, we need to make sure that the forkserver is initialized after
+   the LLVM-generated runtime initialization pass, not before. */
+
+#ifdef USE_TRACE_PC
+#  define CONST_PRIO 5
+#else
+#  define CONST_PRIO 0
+#endif /* ^USE_TRACE_PC */
+
 
 /* Globals needed by the injected instrumentation. The __afl_area_initial region
    is used for instrumentation output before __afl_map_shm() has a chance to run.
@@ -234,17 +244,12 @@
 }
 
 
-static void __afl_trace_pc_init(void);
-
-
 /* Proper initialization routine. */
 
-__attribute__((constructor(0))) void __afl_auto_init(void) {
+__attribute__((constructor(CONST_PRIO))) void __afl_auto_init(void) {
 
   is_persistent = !!getenv(PERSIST_ENV_VAR);
 
-  __afl_trace_pc_init();
-
   if (getenv(DEFER_ENV_VAR)) return;
 
   __afl_manual_init();
@@ -252,63 +257,42 @@
 }
 
 
-/* The following stuff deals with support for -fsanitize-coverage=bb,trace-pc.
+/* The following stuff deals with supporting -fsanitize-coverage=trace-pc-guard.
    It remains non-operational in the traditional, plugin-backed LLVM mode.
-   For more info about 'trace-pc', see README.llvm.
+   For more info about 'trace-pc-guard', see README.llvm.
 
-   The first function (__sanitizer_cov_trace_pc) is called back on every
-   basic block. Since LLVM is not giving us any stable IDs for the blocks,
-   we use 12 least significant bits of the return address (which should be
-   stable even with ASLR; more significant bits may vary across runs).
+   The first function (__sanitizer_cov_trace_pc_guard) is called back on every
+   edge (as opposed to every basic block). */
 
-   Since MAP_SIZE is usually larger than 12 bits, we "pad" it by combining
-   left-shifted __afl_prev_loc. This gives us a theoretical maximum of 24 
-   bits, although instruction alignment likely reduces this somewhat. */
-
-
-static u32 inst_ratio_scaled = MIN(4096, MAP_SIZE);
-
-void __sanitizer_cov_trace_pc(void) {
-
-  u32 cur = ((u32)__builtin_return_address(0)) & MIN(4095, MAP_SIZE - 1);
-
-  if (cur > inst_ratio_scaled) return;
-
-  __afl_area_ptr[cur ^ __afl_prev_loc]++;
-
-#if MAP_SIZE_POW2 > 12
-  __afl_prev_loc = cur << (MAP_SIZE_POW2 - 12);
-#else
-  __afl_prev_loc = cur >> 1;
-#endif /* ^MAP_SIZE_POW2 > 12 */
-
+void __sanitizer_cov_trace_pc_guard(uint32_t* guard) {
+  __afl_area_ptr[*guard]++;
 }
 
 
-/* Init callback. Unfortunately, LLVM does not support compile-time
-   instrumentation density scaling, at least not just yet. This means
-   taking some performance hit by checking inst_ratio_scaled at runtime. */
+/* Init callback. Populates instrumentation IDs. Note that we're using
+   ID of 0 as a special value to indicate non-instrumented bits. That may
+   still touch the bitmap, but in a fairly harmless way. */
 
-static void __afl_trace_pc_init(void) {
+void __sanitizer_cov_trace_pc_guard_init(uint32_t* start, uint32_t* stop) {
 
-  u8* x = getenv("AFL_INST_RATIO");
+  u32 inst_ratio = 100;
+  u8* x;
 
-  if (!x) return;
+  x = getenv("AFL_INST_RATIO");
+  if (x) inst_ratio = atoi(x);
 
-  inst_ratio_scaled = atoi(x);
-
-  if (!inst_ratio_scaled || inst_ratio_scaled > 100) {
+  if (!inst_ratio || inst_ratio > 100) {
     fprintf(stderr, "[-] ERROR: Invalid AFL_INST_RATIO (must be 1-100).\n");
     abort();
   }
 
-  inst_ratio_scaled = inst_ratio_scaled * MIN(4096, MAP_SIZE) / 100;
+  while (start < stop) {
+
+    if (R(100) < inst_ratio) *start = R(MAP_SIZE - 1) + 1;
+    else *start = 0;
+
+    start++;
+
+  }
 
 }
-
-
-/* Work around a short-lived bug in LLVM with -fsanitize-coverage=trace-pc. */
-
-void __sanitizer_cov_module_init(void) __attribute__((weak));
-void __sanitizer_cov_module_init(void) { }
-
diff --git a/third_party/afl/src/qemu_mode/README.qemu b/third_party/afl/src/qemu_mode/README.qemu
index ce4181e4..f9dce99 100644
--- a/third_party/afl/src/qemu_mode/README.qemu
+++ b/third_party/afl/src/qemu_mode/README.qemu
@@ -98,6 +98,11 @@
 security boundary. The binaries can freely interact with the host OS. If you
 somehow need to fuzz an untrusted binary, put everything in a sandbox first.
 
+QEMU does not necessarily support all CPU or hardware features that your
+target program may be utilizing. In particular, it does not appear to have
+full support for AVX2 / FMA3. Using binaries for older CPUs, or recompiling them
+with -march=core2, can help.
+
 Beyond that, this is an early-stage mechanism, so fields reports are welcome.
 You can send them to <afl-users@googlegroups.com>.
 
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium
index 55cad35..50b716eb 100644
--- a/third_party/libvpx/README.chromium
+++ b/third_party/libvpx/README.chromium
@@ -5,9 +5,9 @@
 License File: source/libvpx/LICENSE
 Security Critical: yes
 
-Date: Friday January 20 2017
+Date: Friday January 27 2017
 Branch: master
-Commit: f4169936ee9f944d3a269b2636085c34010fd853
+Commit: 164db8278f68a5ab376500ed6aad99ef7da3e9b0
 
 Description:
 Contains the sources used to compile libvpx binaries used by Google Chrome and
diff --git a/third_party/libvpx/libvpx_srcs.gni b/third_party/libvpx/libvpx_srcs.gni
index 664a0fd..6d33cc9b1 100644
--- a/third_party/libvpx/libvpx_srcs.gni
+++ b/third_party/libvpx/libvpx_srcs.gni
@@ -222,12 +222,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -659,12 +662,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -1100,12 +1106,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -1457,12 +1466,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -1825,12 +1837,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -2243,12 +2258,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -2602,12 +2620,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -2932,12 +2953,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
@@ -3262,12 +3286,15 @@
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_extend.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_job_queue.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_lookahead.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mbgraph.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_mcomp.h",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.c",
+  "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_multi_thread.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.c",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_noise_estimate.h",
   "//third_party/libvpx/source/libvpx/vp9/encoder/vp9_picklpf.c",
diff --git a/third_party/libvpx/source/config/vpx_version.h b/third_party/libvpx/source/config/vpx_version.h
index 07811f7..a686a8f 100644
--- a/third_party/libvpx/source/config/vpx_version.h
+++ b/third_party/libvpx/source/config/vpx_version.h
@@ -1,7 +1,7 @@
 #define VERSION_MAJOR  1
 #define VERSION_MINOR  6
 #define VERSION_PATCH  1
-#define VERSION_EXTRA  "51-gf4169936e"
+#define VERSION_EXTRA  "87-g164db8278"
 #define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
-#define VERSION_STRING_NOSP "v1.6.1-51-gf4169936e"
-#define VERSION_STRING      " v1.6.1-51-gf4169936e"
+#define VERSION_STRING_NOSP "v1.6.1-87-g164db8278"
+#define VERSION_STRING      " v1.6.1-87-g164db8278"
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 60c65bb..988cba6 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -10074,6 +10074,34 @@
   </summary>
 </histogram>
 
+<histogram name="DesktopIOSPromotion.IOSSigninReason"
+    enum="DesktopIOSPromotionEntryPoint">
+  <owner>mrefaat@chromium.org</owner>
+  <summary>
+    [IOS] For users who sign-in on Chrome for iOS, log the type of the desktop
+    iOS promotions that was shown to the user. Only recorded if the user has
+    seen at least one desktop iOS promotion in the last 7 days and is signing
+    into chrome on iOS. The last promotion entry point that sent an SMS (if any)
+    is logged as DesktopIOSPromot.SMSSent.IOSSigninReason; all other promotions
+    that the user has seen are logged as
+    DesktopIOSPromotion.NoSMS.IOSSigninReason.
+  </summary>
+</histogram>
+
+<histogram name="DesktopIOSPromotion.SMSToSigninTime" units="hours">
+  <owner>mrefaat@chromium.org</owner>
+  <summary>
+    [IOS] The difference between the client time of triggering the SMS action on
+    a specific entry point promotion on desktop and client time of signing in
+    Chrome iOS app. This will only be logged if at least one promotion was shown
+    to the user on the last 7 days and if at least one SMS was sent. If multiple
+    SMSs were sent (at any time), it uses the time from the most recently sent
+    one. If the  is negative due to bad clock on one of the clients it will be
+    logged as 0. CompletionTime will be prefixed by the entry point promotion
+    name that was responsible for the SMS sending.
+  </summary>
+</histogram>
+
 <histogram name="DevTools.ActionTaken" enum="DevToolsAction">
   <owner>sergeyv@chromium.org</owner>
   <owner>vsevik@chromium.org</owner>
@@ -82547,7 +82575,13 @@
   <int value="458880" label="EXC_SYSCALL/128"/>
   <int value="483328" label="EXC_SYSCALL/0x6000"/>
   <int value="655363" label="EXC_CRASH/SIGQUIT"/>
+  <int value="655364" label="EXC_CRASH/SIGILL (raised)"/>
+  <int value="655365" label="EXC_CRASH/SIGTRAP (raised)"/>
   <int value="655366" label="EXC_CRASH/SIGABRT"/>
+  <int value="655367" label="EXC_CRASH/SIGEMT (raised)"/>
+  <int value="655368" label="EXC_CRASH/SIGFPE (raised)"/>
+  <int value="655370" label="EXC_CRASH/SIGBUS (raised)"/>
+  <int value="655371" label="EXC_CRASH/SIGSEGV (raised)"/>
   <int value="655372" label="EXC_CRASH/SIGSYS"/>
   <int value="721153"
       label="EXC_RESOURCE/RESOURCE_TYPE_CPU/FLAVOR_CPU_MONITOR"/>
@@ -82665,6 +82699,7 @@
   <int value="1783" label="RPC_X_BAD_STUB_DATA"/>
   <int value="1818" label="RPC_S_CALL_CANCELLED"/>
   <int value="85436397" label="crashpad::kSimulatedExceptionCode"/>
+  <int value="250477278" label="(Delphi exception)"/>
 </enum>
 
 <enum name="CreatePersistentHistogramResult" type="int">
@@ -83595,6 +83630,13 @@
   <int value="12" label="Tab capturer created without audio capturer."/>
 </enum>
 
+<enum name="DesktopIOSPromotionEntryPoint" type="int">
+  <int value="1" label="Save Passwords new bubble."/>
+  <int value="2" label="Bookmarks new bubble."/>
+  <int value="3" label="Bookmarks existing bubble."/>
+  <int value="4" label="HistoryPage."/>
+</enum>
+
 <enum name="DesktopSearchRedirectionInfobarCloseAction" type="int">
   <int value="0" label="Clicked the 'Manage search settings' link"/>
   <int value="1" label="Clicked the dismiss button"/>
@@ -112330,6 +112372,22 @@
       name="Prerender.SimulatedLocalBrowsingPLT_PrerenderNoUse"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="DesktopIOSEntryPoints" separator="."
+    ordering="prefix">
+  <suffix name="SavePasswordsNewBubble"/>
+  <suffix name="BookmarksNewBubble"/>
+  <suffix name="BookmarksExistingBubble"/>
+  <suffix name="HistoryPage"/>
+  <affected-histogram name="DesktopIOSPromotion.SMSToSigninTime"/>
+</histogram_suffixes>
+
+<histogram_suffixes name="DesktopIOSPromotionSMSSent" separator="."
+    ordering="prefix">
+  <suffix name="SMSSent" label="SMS sent from the promotion."/>
+  <suffix name="NoSMS" label="No SMS was sent from the promotion."/>
+  <affected-histogram name="DesktopIOSPromotion.IOSSigninReason"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="DiskUsagePerUserCount" separator=".">
   <suffix name="1User" label="Only 1 user exists on device."/>
   <suffix name="2Users" label="2 users exist on device."/>
@@ -113356,6 +113414,7 @@
       label="ChromiumWritableFile::SyncParent"/>
   <affected-histogram name="LevelDBEnv.IDB.IOError.BFE"/>
   <affected-histogram name="LevelDBEnv.IOError.BFE"/>
+  <affected-histogram name="LevelDBEnv.LocalStorage.IOError.BFE"/>
   <affected-histogram name="LevelDBEnv.ServiceWorker.IOError.BFE"/>
   <affected-histogram name="WebCore.IndexedDB.LevelDBOpenErrors.BFE"/>
   <affected-histogram name="WebCore.IndexedDB.LevelDBReadErrors.BFE"/>
@@ -113383,6 +113442,7 @@
       label="This histogram shows the limit when open failed for reasons
              other than exceeding the limit."/>
   <affected-histogram name="LevelDBEnv.IDB.MaxFDs"/>
+  <affected-histogram name="LevelDBEnv.LocalStorage.MaxFDs"/>
   <affected-histogram name="LevelDBEnv.MaxFDs"/>
   <affected-histogram name="LevelDBEnv.ServiceWorker.MaxFDs"/>
 </histogram_suffixes>
@@ -113404,6 +113464,8 @@
   <suffix name="CreateDir" label="CreateDir"/>
   <affected-histogram name="LevelDBEnv.IDB.RetryRecoveredFromErrorIn"/>
   <affected-histogram name="LevelDBEnv.IDB.TimeUntilSuccessFor"/>
+  <affected-histogram name="LevelDBEnv.LocalStorage.RetryRecoveredFromErrorIn"/>
+  <affected-histogram name="LevelDBEnv.LocalStorage.TimeUntilSuccessFor"/>
   <affected-histogram name="LevelDBEnv.RetryRecoveredFromErrorIn"/>
   <affected-histogram
       name="LevelDBEnv.ServiceWorker.RetryRecoveredFromErrorIn"/>
@@ -113423,6 +113485,8 @@
 
 <histogram_suffixes name="LevelDBEnvTypes" separator="." ordering="prefix">
   <suffix name="IDB" label="Restricted to IndexedDB LevelDB environments"/>
+  <suffix name="LocalStorage"
+      label="Restricted to LocalStorage LevelDB environments"/>
   <suffix name="ServiceWorker"
       label="Restricted to ServiceWorker LevelDB environments"/>
   <affected-histogram name="LevelDBEnv.IOError"/>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_am.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_am.xtb
index 061db87..bae6c5b 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_am.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_am.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">አማራጮች</translation>
 <translation id="6838518108677880446">አዋቅር፦</translation>
 <translation id="690628312087070417">caret በሰፊ ርቀት በሚዘልበት ጊዜ፦</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="7379645913608427028">ዲግሪ</translation>
 <translation id="7384431257964758081">ከፍተኛ ንፅፅር ነቅቷል</translation>
 <translation id="7586636300921797327">እርምጃ 2፦ በተመረጠው ረድፍ ላይ ሁሉም ኮከቦች ሙሉ በሙሉ እስከሚታዩ ድረስ
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_cs.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_cs.xtb
index 588046ff0..a2be5d2 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_cs.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_cs.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">Procházení pomocí kurzoru</translation>
 <translation id="1791496371305830581">Povolit všechny animované obrázky</translation>
 <translation id="1996252509865389616">Aktivovat?</translation>
-<translation id="2079545284768500474">Zpět</translation>
+<translation id="2079545284768500474" />
 <translation id="2179565792157161713">Otevřít dlouhý popis na nové kartě</translation>
 <translation id="2223143012868735942">Přizpůsobitelný barevný filtr používaný na webové stránky s cílem zlepšit vnímání barev.</translation>
 <translation id="2394933097471027016">Vyzkoušejte to – procházení pomocí kurzoru je na této stránce vždy aktivováno.</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_de.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_de.xtb
index f6d72844..2ac6b2b 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_de.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_de.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">Tastaturnavigation</translation>
 <translation id="1791496371305830581">Alle animierten Bilder zulassen</translation>
 <translation id="1996252509865389616">Aktivieren?</translation>
-<translation id="2079545284768500474">Rückgängig</translation>
+<translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="2179565792157161713">Ausführliche Beschreibung in neuem Tab öffnen</translation>
 <translation id="2223143012868735942">Anpassbarer Farbfilter zur Verbesserung der Farbwahrnehmung auf Webseiten</translation>
 <translation id="2394933097471027016">Probieren Sie es aus. Die Tastaturnavigation ist auf dieser Seite immer aktiviert.</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_el.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_el.xtb
index 439ec78..c3c576f 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_el.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_el.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">Επιλογές</translation>
 <translation id="6838518108677880446">Ρύθμιση:</translation>
 <translation id="690628312087070417">Όταν το σύμβολο προσθήκης μεταπηδά σε μεγάλη απόσταση:</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="7379645913608427028">Βαθμός</translation>
 <translation id="7384431257964758081">Η υψηλή αντίθεση είναι ενεργοποιημένη</translation>
 <translation id="7586636300921797327">Βήμα 2: Προσαρμογή ρυθμιστικού μέχρι όλα τα αστέρια να είναι ορατά στην
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb
index 39649f2..b2ef5a4 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">Opciones</translation>
 <translation id="6838518108677880446">Configuración:</translation>
 <translation id="690628312087070417">Cuando el cursor de texto avanza a una parte alejada:</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="7379645913608427028">Grado</translation>
 <translation id="7384431257964758081">El alto contraste está habilitado.</translation>
 <translation id="7586636300921797327">Paso 2. Ajusta el control deslizante hasta que todas las estrellas sean visibles en la
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_et.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_et.xtb
index 109bd19..ebf5bb3 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_et.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_et.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">Valikud</translation>
 <translation id="6838518108677880446">Seadistamine:</translation>
 <translation id="690628312087070417">Kui sisestusmärk liigub edasi suure vahemaaga:</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="7379645913608427028">Aste</translation>
 <translation id="7384431257964758081">Suur kontrastsus on lubatud</translation>
 <translation id="7586636300921797327">2. toiming. Reguleerige liugurit, kuni kõik tärnid valitud real
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_fa.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_fa.xtb
index cbf20da..2b7f5db 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_fa.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_fa.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">گزینه‌ها</translation>
 <translation id="6838518108677880446">راه‌اندازی:</translation>
 <translation id="690628312087070417">زمانی که هشتک یک فاصله زیاد را رد می‌کند:</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="7379645913608427028">درجه</translation>
 <translation id="7384431257964758081">کنتراست بالا فعال است</translation>
 <translation id="7586636300921797327">مرحله ۲: لغزنده را به گونه‌ای تنظیم کنید که همه ستاره‌ها در ردیف انتخابی قابل مشاهده باشند</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_gu.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_gu.xtb
index 8f70ac4..14a9715 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_gu.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_gu.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">કૅરેટ બ્રાઉઝિંગ</translation>
 <translation id="1791496371305830581">બધી એનિમેટ થતી છબીઓને મંજૂરી આપો.</translation>
 <translation id="1996252509865389616">સક્ષમ કરીએ?</translation>
-<translation id="2079545284768500474">પૂર્વવત્ કરો</translation>
+<translation id="2079545284768500474">પૂર્વવત કરો</translation>
 <translation id="2179565792157161713">નવા ટૅબમાં લાંબુ વર્ણન ખોલો</translation>
 <translation id="2223143012868735942">રંગ વિભાવના સુધારવા માટે વેબ પેજીસને કસ્ટમાઇઝ કરી શકાય તેવું રંગ ફિલ્ટર લાગુ કરવામાં આવ્યું.</translation>
 <translation id="2394933097471027016">તેને હમણાં અજમાવી જુઓ - કૅરેટ બ્રાઉઝિંગ આ પૃષ્ઠ પર હંમેશા સક્ષમ હોય છે!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_hi.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_hi.xtb
index abc33736..7ef2cbb 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_hi.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_hi.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">कैरेट ब्राउज़िंग</translation>
 <translation id="1791496371305830581">सभी ऐनिमेट किए गए चित्रों को अनुमति दें.</translation>
 <translation id="1996252509865389616">सक्षम करें?</translation>
-<translation id="2079545284768500474">पूर्ववत् करें</translation>
+<translation id="2079545284768500474">वापस लाएं</translation>
 <translation id="2179565792157161713">लंबे वर्णन को नए टैब में खोलें</translation>
 <translation id="2223143012868735942">रंग की समझ को बेहतर बनाने के लिए वेबपृष्‍ठों में एक कस्‍टमाइज़ करने योग्‍य रंग फ़िल्‍टर लागू किया गया है.</translation>
 <translation id="2394933097471027016">इसे अभी आज़माएं - कैरेट ब्राउज़िंग इस पृष्‍ठ पर हमेशा सक्षम रहती है!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_id.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_id.xtb
index a63d1daa..25550595 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_id.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_id.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">Penjelajahan Caret</translation>
 <translation id="1791496371305830581">Izinkan semua gambar animasi.</translation>
 <translation id="1996252509865389616">Aktifkan?</translation>
-<translation id="2079545284768500474">Batalkan</translation>
+<translation id="2079545284768500474">Urungkan</translation>
 <translation id="2179565792157161713">Buka Deskripsi Panjang di Tab Baru</translation>
 <translation id="2223143012868735942">Filter warna yang disesuaikan diterapkan ke laman web untuk meningkatkan persepsi warna.</translation>
 <translation id="2394933097471027016">Cobalah sekarang - Penjelajahan Caret selalu diaktifkan pada laman ini!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
index efedc9b6..22ac9fc 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">דפדוף עם סמן</translation>
 <translation id="1791496371305830581">אפשר את כל התמונות המכילות אנימציה.</translation>
 <translation id="1996252509865389616">האם להפעיל?</translation>
-<translation id="2079545284768500474">בטל</translation>
+<translation id="2079545284768500474">בטל פעולה</translation>
 <translation id="2179565792157161713">פתיחת תיאור ארוך בכרטיסייה חדשה</translation>
 <translation id="2223143012868735942">מסנן צבע הניתן להתאמה המופעל באתרים כדי לשפר את ההבחנה בין צבעים.</translation>
 <translation id="2394933097471027016">נסה עכשיו - דפדוף עם סמן מופעל תמיד בדף זה!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ja.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ja.xtb
index ebfb9fa..fc9434b 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ja.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ja.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">カーソル ブラウジング</translation>
 <translation id="1791496371305830581">すべての画像アニメーションを許可する。</translation>
 <translation id="1996252509865389616">有効にする</translation>
-<translation id="2079545284768500474">取り消す</translation>
+<translation id="2079545284768500474">元に戻す</translation>
 <translation id="2179565792157161713">詳しい説明を新しいタブで開く</translation>
 <translation id="2223143012868735942">カスタマイズ可能なカラーフィルタをウェブページに適用して色を認識しやすくします。</translation>
 <translation id="2394933097471027016">お試しください - このページではカーソル ブラウジングが常に有効になっています。</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ko.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ko.xtb
index 070cde20..3ea31bb 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ko.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ko.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">캐럿 브라우징</translation>
 <translation id="1791496371305830581">모든 애니메이션 이미지를 허용합니다.</translation>
 <translation id="1996252509865389616">사용하기</translation>
-<translation id="2079545284768500474">실행 취소</translation>
+<translation id="2079545284768500474">실행취소</translation>
 <translation id="2179565792157161713">새 탭에서 상세 설명 열기</translation>
 <translation id="2223143012868735942">웹페이지에 적용하는 맞춤설정이 가능한 색상 필터로 색상 인식도를 높일 수 있습니다.</translation>
 <translation id="2394933097471027016">지금 시도해 보세요. 이 페이지에는 캐럿 브라우징이 항상 사용 설정되어 있습니다.</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb
index 280225b5..868b4f9 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">കാരറ്റ് ബ്രൗസുചെയ്യൽ</translation>
 <translation id="1791496371305830581">ആനിമേറ്റുചെയ്‌ത എല്ലാ ചിത്രങ്ങളും അനുവദിക്കുക.</translation>
 <translation id="1996252509865389616">പ്രവർത്തനക്ഷമമാക്കണോ?</translation>
-<translation id="2079545284768500474">പൂര്‍‌വ്വാവസ്ഥയിലാക്കുക</translation>
+<translation id="2079545284768500474">പഴയപടിയാക്കുക</translation>
 <translation id="2179565792157161713">പുതിയ ടാബിൽ ദൈർഘ്യമുള്ള വിവരണം തുറക്കുക</translation>
 <translation id="2223143012868735942">വർണ്ണ സ്‌പഷ്‌ടത മെച്ചപ്പെടുത്താൻ വെബ്‌പേജുകൾ ഉപയോഗിക്കാനാവുന്ന ഒരു ഇഷ്ടാനുസൃത വർണ്ണ ഫിൽട്ടർ.</translation>
 <translation id="2394933097471027016">ഇത് ഇപ്പോൾ പരീക്ഷിക്കുക - കാരറ്റ് ബ്രൗസുചെയ്യൽ, ഈ പേജിൽ എപ്പോഴും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ru.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ru.xtb
index 16dca15..d9c6a306 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ru.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ru.xtb
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">Параметры</translation>
 <translation id="6838518108677880446">Настроить:</translation>
 <translation id="690628312087070417">При переносе курсора в другую часть страницы:</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="7379645913608427028">Интенсивность</translation>
 <translation id="7384431257964758081">Резкий контраст включен</translation>
 <translation id="7586636300921797327">Шаг 2. Перемещайте ползунок до тех пор, пока все звездочки не станут видны
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
index 83723bd..bcfd341 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">కేరెట్ బ్రౌజింగ్</translation>
 <translation id="1791496371305830581">అన్ని యానిమేట్ చేసిన చిత్రాలను చూపండి.</translation>
 <translation id="1996252509865389616">ప్రారంభించాలా?</translation>
-<translation id="2079545284768500474">అన్డు</translation>
+<translation id="2079545284768500474">చర్య రద్దు</translation>
 <translation id="2179565792157161713">సుదీర్ఘ వివరణను కొత్త ట్యాబ్‌లో తెరువు</translation>
 <translation id="2223143012868735942">రంగు గ్రాహ్యతను మెరుగుపరచడానికి అనుకూలీకృత రంగు ఫిల్టర్ వెబ్‌పేజీలకు వర్తింపజేయబడింది.</translation>
 <translation id="2394933097471027016">ఇప్పుడే దీన్ని ప్రయత్నించండి - కేరెట్ బ్రౌజింగ్ ఈ పేజీలో ఎల్లప్పుడూ ప్రారంభించబడి ఉంటుంది!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_tr.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_tr.xtb
index 1c27d76..5da37bfc 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_tr.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_tr.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">Klavye Göz Atma</translation>
 <translation id="1791496371305830581">Tüm animasyonlu resimlere izin verin.</translation>
 <translation id="1996252509865389616">Etkinleştirilsin mi?</translation>
-<translation id="2079545284768500474">Geri Al</translation>
+<translation id="2079545284768500474">Geri al</translation>
 <translation id="2179565792157161713">Uzun Açıklamayı Yeni Sekmede Aç</translation>
 <translation id="2223143012868735942">Renk algısını iyileştirmek için web sayfalarına uygulanan özelleştirilebilir bir renk filtresi.</translation>
 <translation id="2394933097471027016">Caret Browsing bu sayfada her zaman etkindir, hemen deneyin!</translation>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_uk.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_uk.xtb
index f61a2115..a1df80b 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_uk.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_uk.xtb
@@ -10,7 +10,7 @@
 <translation id="1703735871906654364">Клавішна навігація</translation>
 <translation id="1791496371305830581">Дозволити анімовані зображення.</translation>
 <translation id="1996252509865389616">Увімкнути?</translation>
-<translation id="2079545284768500474">Скасувати</translation>
+<translation id="2079545284768500474">Відмінити</translation>
 <translation id="2179565792157161713">Відкрити докладний опис у новій вкладці</translation>
 <translation id="2223143012868735942">До сторінок застосовується спеціальний фільтр, щоб покращити сприйняття кольорів.</translation>
 <translation id="2394933097471027016">Спробуйте. На цій сторінці клавішну навігацію завжди ввімкнено.</translation>
@@ -52,7 +52,7 @@
 <translation id="6550675742724504774">Параметри</translation>
 <translation id="6838518108677880446">Налаштування</translation>
 <translation id="690628312087070417">Коли курсор переходить на велику відстань:</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="7379645913608427028">Градус</translation>
 <translation id="7384431257964758081">Високий контраст увімкнено</translation>
 <translation id="7586636300921797327">Крок 2. Пересуньте повзунок так, щоб було видно всі зірочки у
diff --git a/ui/aura/client/aura_constants.cc b/ui/aura/client/aura_constants.cc
index 3b85a64..98b02c3 100644
--- a/ui/aura/client/aura_constants.cc
+++ b/ui/aura/client/aura_constants.cc
@@ -5,57 +5,58 @@
 #include "ui/aura/client/aura_constants.h"
 
 #include "services/ui/public/interfaces/window_manager_constants.mojom.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/gfx/geometry/rect.h"
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, bool)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, base::string16*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, ui::ModalType)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, gfx::ImageSkia*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, gfx::Rect*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, gfx::Size*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, std::string*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, ui::WindowShowState)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, ui::mojom::WindowType);
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, void*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, SkColor)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, int32_t)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, int64_t)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, bool)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, base::string16*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, ui::ModalType)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, gfx::ImageSkia*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, gfx::Rect*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, gfx::Size*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, std::string*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, ui::WindowShowState)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, ui::mojom::WindowType);
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, void*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, SkColor)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, int32_t)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, int64_t)
 
 namespace aura {
 namespace client {
 
 // Alphabetical sort.
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kAccessibilityFocusFallsbackToWidgetKey, true);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kAlwaysOnTopKey, false);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kAnimationsDisabledKey, false);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::ImageSkia, kAppIconKey, nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(std::string, kAppIdKey, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(int, kAppType, 0);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kConstrainedWindowKey, false);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kDrawAttentionKey, false);
-DEFINE_WINDOW_PROPERTY_KEY(Window*, kHostWindowKey, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kImmersiveFullscreenKey, false);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kMirroringEnabledKey, false);
-DEFINE_WINDOW_PROPERTY_KEY(ui::ModalType, kModalKey, ui::MODAL_TYPE_NONE);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(std::string, kNameKey, nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Size, kPreferredSize, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
+     bool, kAccessibilityFocusFallsbackToWidgetKey, true);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kAlwaysOnTopKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kAnimationsDisabledKey, false);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::ImageSkia, kAppIconKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kAppIdKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kAppType, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kConstrainedWindowKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kDrawAttentionKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(Window*, kHostWindowKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kImmersiveFullscreenKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kMirroringEnabledKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(ui::ModalType, kModalKey, ui::MODAL_TYPE_NONE);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kNameKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Size, kPreferredSize, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(
     ui::WindowShowState, kPreMinimizedShowStateKey, ui::SHOW_STATE_DEFAULT);
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     ui::WindowShowState, kPreFullscreenShowStateKey, ui::SHOW_STATE_DEFAULT);
-DEFINE_WINDOW_PROPERTY_KEY(int32_t,
+DEFINE_UI_CLASS_PROPERTY_KEY(int32_t,
                            kResizeBehaviorKey,
                            ui::mojom::kResizeBehaviorCanResize);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Rect, kRestoreBoundsKey, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect, kRestoreBoundsKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(
     ui::WindowShowState, kShowStateKey, ui::SHOW_STATE_DEFAULT);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(base::string16, kTitleKey, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(int, kTopViewInset, 0);
-DEFINE_WINDOW_PROPERTY_KEY(SkColor, kTopViewColor, SK_ColorTRANSPARENT);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::ImageSkia, kWindowIconKey, nullptr);
-DEFINE_WINDOW_PROPERTY_KEY(ui::mojom::WindowType,
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::string16, kTitleKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kTopViewInset, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(SkColor, kTopViewColor, SK_ColorTRANSPARENT);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::ImageSkia, kWindowIconKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(ui::mojom::WindowType,
                            kWindowTypeKey,
                            ui::mojom::WindowType::UNKNOWN);
 
diff --git a/ui/aura/client/capture_client.cc b/ui/aura/client/capture_client.cc
index 6d78c88d..8ac130c 100644
--- a/ui/aura/client/capture_client.cc
+++ b/ui/aura/client/capture_client.cc
@@ -4,15 +4,16 @@
 
 #include "ui/aura/client/capture_client.h"
 
+#include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::CaptureClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::CaptureClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     CaptureClient*, kRootWindowCaptureClientKey, NULL);
 
 void SetCaptureClient(Window* root_window, CaptureClient* client) {
diff --git a/ui/aura/client/cursor_client.cc b/ui/aura/client/cursor_client.cc
index ca105ed..29c678f 100644
--- a/ui/aura/client/cursor_client.cc
+++ b/ui/aura/client/cursor_client.cc
@@ -5,15 +5,15 @@
 #include "ui/aura/client/cursor_client.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::CursorClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::CursorClient*)
 
 namespace aura {
 namespace client {
 
 // A property key to store a client that handles window moves.
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     CursorClient*, kCursorClientKey, NULL);
 
 void SetCursorClient(Window* window, CursorClient* client) {
diff --git a/ui/aura/client/drag_drop_client.cc b/ui/aura/client/drag_drop_client.cc
index 41a04a8..f7dc619d 100644
--- a/ui/aura/client/drag_drop_client.cc
+++ b/ui/aura/client/drag_drop_client.cc
@@ -5,14 +5,14 @@
 #include "ui/aura/client/drag_drop_client.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::DragDropClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::DragDropClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     DragDropClient*, kRootWindowDragDropClientKey, NULL);
 
 void SetDragDropClient(Window* root_window, DragDropClient* client) {
diff --git a/ui/aura/client/drag_drop_delegate.cc b/ui/aura/client/drag_drop_delegate.cc
index 975a671..fb71a8d 100644
--- a/ui/aura/client/drag_drop_delegate.cc
+++ b/ui/aura/client/drag_drop_delegate.cc
@@ -5,14 +5,14 @@
 #include "ui/aura/client/drag_drop_delegate.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::DragDropDelegate*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::DragDropDelegate*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(DragDropDelegate*,
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(DragDropDelegate*,
                                  kDragDropDelegateKey,
                                  nullptr);
 
diff --git a/ui/aura/client/event_client.cc b/ui/aura/client/event_client.cc
index d6da07e..b83fec1 100644
--- a/ui/aura/client/event_client.cc
+++ b/ui/aura/client/event_client.cc
@@ -4,15 +4,16 @@
 
 #include "ui/aura/client/event_client.h"
 
+#include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::EventClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::EventClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(EventClient*, kRootWindowEventClientKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(EventClient*, kRootWindowEventClientKey, NULL);
 
 void SetEventClient(Window* root_window, EventClient* client) {
   DCHECK_EQ(root_window->GetRootWindow(), root_window);
diff --git a/ui/aura/client/focus_change_observer.cc b/ui/aura/client/focus_change_observer.cc
index 8db471d..4c1b8d4 100644
--- a/ui/aura/client/focus_change_observer.cc
+++ b/ui/aura/client/focus_change_observer.cc
@@ -5,14 +5,14 @@
 #include "ui/aura/client/focus_change_observer.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::FocusChangeObserver*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::FocusChangeObserver*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     FocusChangeObserver*, kFocusChangeObserverKey, NULL);
 
 FocusChangeObserver* GetFocusChangeObserver(Window* window) {
diff --git a/ui/aura/client/focus_client.cc b/ui/aura/client/focus_client.cc
index a5f179df..0a916422 100644
--- a/ui/aura/client/focus_client.cc
+++ b/ui/aura/client/focus_client.cc
@@ -5,14 +5,14 @@
 #include "ui/aura/client/focus_client.h"
 
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, aura::client::FocusClient*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, aura::client::FocusClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(FocusClient*, kFocusClientKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(FocusClient*, kFocusClientKey, nullptr);
 
 void SetFocusClient(Window* root_window, FocusClient* client) {
   DCHECK_EQ(root_window->GetRootWindow(), root_window);
diff --git a/ui/aura/client/screen_position_client.cc b/ui/aura/client/screen_position_client.cc
index 6415376d..1a05538 100644
--- a/ui/aura/client/screen_position_client.cc
+++ b/ui/aura/client/screen_position_client.cc
@@ -4,16 +4,16 @@
 
 #include "ui/aura/client/screen_position_client.h"
 
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::ScreenPositionClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::ScreenPositionClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(ScreenPositionClient*,
-                                 kScreenPositionClientKey,
-                                 NULL);
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(ScreenPositionClient*,
+                                kScreenPositionClientKey,
+                                NULL);
 
 void SetScreenPositionClient(Window* root_window,
                              ScreenPositionClient* client) {
diff --git a/ui/aura/client/visibility_client.cc b/ui/aura/client/visibility_client.cc
index 853c034..5cd637f3 100644
--- a/ui/aura/client/visibility_client.cc
+++ b/ui/aura/client/visibility_client.cc
@@ -4,16 +4,17 @@
 
 #include "ui/aura/client/visibility_client.h"
 
+#include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::VisibilityClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::VisibilityClient*)
 
 namespace aura {
 namespace client {
 
 // A property key to store a client that handles window visibility changes.
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     VisibilityClient*, kWindowVisibilityClientKey, NULL);
 
 
diff --git a/ui/aura/client/window_parenting_client.cc b/ui/aura/client/window_parenting_client.cc
index 9d199b14..d667a02 100644
--- a/ui/aura/client/window_parenting_client.cc
+++ b/ui/aura/client/window_parenting_client.cc
@@ -5,17 +5,18 @@
 #include "ui/aura/client/window_parenting_client.h"
 
 #include "ui/aura/env.h"
+#include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::WindowParentingClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::WindowParentingClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(WindowParentingClient*,
-                           kRootWindowWindowParentingClientKey,
-                           NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(WindowParentingClient*,
+                          kRootWindowWindowParentingClientKey,
+                          NULL);
 
 void SetWindowParentingClient(Window* window,
                               WindowParentingClient* window_tree_client) {
diff --git a/ui/aura/mus/mus_util.cc b/ui/aura/mus/mus_util.cc
index 9676ca4..f32e881 100644
--- a/ui/aura/mus/mus_util.cc
+++ b/ui/aura/mus/mus_util.cc
@@ -5,7 +5,7 @@
 #include "ui/aura/mus/mus_util.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
 namespace aura {
 namespace {
diff --git a/ui/aura/mus/property_converter.cc b/ui/aura/mus/property_converter.cc
index 9872296..04c6fe61 100644
--- a/ui/aura/mus/property_converter.cc
+++ b/ui/aura/mus/property_converter.cc
@@ -9,7 +9,7 @@
 #include "services/ui/public/cpp/property_type_converters.h"
 #include "services/ui/public/interfaces/window_manager.mojom.h"
 #include "ui/aura/client/aura_constants.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
 namespace aura {
 
diff --git a/ui/aura/mus/property_converter_unittest.cc b/ui/aura/mus/property_converter_unittest.cc
index 0e22f83..ad01a8a4d 100644
--- a/ui/aura/mus/property_converter_unittest.cc
+++ b/ui/aura/mus/property_converter_unittest.cc
@@ -15,40 +15,41 @@
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/image/image_skia.h"
 #include "ui/gfx/skia_util.h"
 
 // See aura_constants.cc for bool, int32_t, int64_t, std::string, gfx::Rect,
 // base::string16, uint32_t (via SkColor), and gfx::ImageSkia.
-DECLARE_WINDOW_PROPERTY_TYPE(uint8_t)
-DECLARE_WINDOW_PROPERTY_TYPE(uint16_t)
-DECLARE_WINDOW_PROPERTY_TYPE(uint64_t)
-DECLARE_WINDOW_PROPERTY_TYPE(int8_t)
-DECLARE_WINDOW_PROPERTY_TYPE(int16_t)
+DECLARE_UI_CLASS_PROPERTY_TYPE(uint8_t)
+DECLARE_UI_CLASS_PROPERTY_TYPE(uint16_t)
+DECLARE_UI_CLASS_PROPERTY_TYPE(uint64_t)
+DECLARE_UI_CLASS_PROPERTY_TYPE(int8_t)
+DECLARE_UI_CLASS_PROPERTY_TYPE(int16_t)
 
 namespace aura {
 
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(bool, kTestPropertyKey0, false);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kTestPropertyKey1, true);
-DEFINE_WINDOW_PROPERTY_KEY(uint8_t, kTestPropertyKey2, UINT8_MAX / 3);
-DEFINE_WINDOW_PROPERTY_KEY(uint16_t, kTestPropertyKey3, UINT16_MAX / 3);
-DEFINE_WINDOW_PROPERTY_KEY(uint32_t, kTestPropertyKey4, UINT32_MAX);
-DEFINE_WINDOW_PROPERTY_KEY(uint64_t, kTestPropertyKey5, UINT64_MAX);
-DEFINE_WINDOW_PROPERTY_KEY(int8_t, kTestPropertyKey6, 0);
-DEFINE_WINDOW_PROPERTY_KEY(int16_t, kTestPropertyKey7, 1);
-DEFINE_WINDOW_PROPERTY_KEY(int32_t, kTestPropertyKey8, -1);
-DEFINE_WINDOW_PROPERTY_KEY(int64_t, kTestPropertyKey9, 777);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kTestPropertyKey0, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kTestPropertyKey1, true);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint8_t, kTestPropertyKey2, UINT8_MAX / 3);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint16_t, kTestPropertyKey3, UINT16_MAX / 3);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint32_t, kTestPropertyKey4, UINT32_MAX);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint64_t, kTestPropertyKey5, UINT64_MAX);
+DEFINE_UI_CLASS_PROPERTY_KEY(int8_t, kTestPropertyKey6, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(int16_t, kTestPropertyKey7, 1);
+DEFINE_UI_CLASS_PROPERTY_KEY(int32_t, kTestPropertyKey8, -1);
+DEFINE_UI_CLASS_PROPERTY_KEY(int64_t, kTestPropertyKey9, 777);
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::ImageSkia, kTestImagePropertyKey,
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::ImageSkia, kTestImagePropertyKey,
                                  nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Rect, kTestRectPropertyKey, nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Size, kTestSizePropertyKey, nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(std::string, kTestStringPropertyKey, nullptr);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(base::string16, kTestString16PropertyKey,
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect, kTestRectPropertyKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Size, kTestSizePropertyKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(
+     std::string, kTestStringPropertyKey, nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::string16, kTestString16PropertyKey,
                                  nullptr);
 
 const char kTestPropertyServerKey0[] = "test-property-server0";
diff --git a/ui/aura/mus/window_port_mus.cc b/ui/aura/mus/window_port_mus.cc
index 50bbe029..68a4cda3 100644
--- a/ui/aura/mus/window_port_mus.cc
+++ b/ui/aura/mus/window_port_mus.cc
@@ -14,7 +14,7 @@
 #include "ui/aura/window.h"
 #include "ui/aura/window_delegate.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
 namespace aura {
 
@@ -419,7 +419,7 @@
     window_tree_client_->OnWindowMusBoundsChanged(this, old_bounds, new_bounds);
 }
 
-std::unique_ptr<WindowPortPropertyData> WindowPortMus::OnWillChangeProperty(
+std::unique_ptr<ui::PropertyData> WindowPortMus::OnWillChangeProperty(
     const void* key) {
   // |window_| is null if a property is set on the aura::Window before
   // Window::Init() is called. It's safe to ignore the change in this case as
@@ -433,7 +433,7 @@
 
 void WindowPortMus::OnPropertyChanged(
     const void* key,
-    std::unique_ptr<WindowPortPropertyData> data) {
+    std::unique_ptr<ui::PropertyData> data) {
   // See comment in OnWillChangeProperty() as to why |window_| may be null.
   if (!window_)
     return;
diff --git a/ui/aura/mus/window_port_mus.h b/ui/aura/mus/window_port_mus.h
index c293b84..c3018a36 100644
--- a/ui/aura/mus/window_port_mus.h
+++ b/ui/aura/mus/window_port_mus.h
@@ -231,10 +231,10 @@
   void OnVisibilityChanged(bool visible) override;
   void OnDidChangeBounds(const gfx::Rect& old_bounds,
                          const gfx::Rect& new_bounds) override;
-  std::unique_ptr<WindowPortPropertyData> OnWillChangeProperty(
+  std::unique_ptr<ui::PropertyData> OnWillChangeProperty(
       const void* key) override;
   void OnPropertyChanged(const void* key,
-                         std::unique_ptr<WindowPortPropertyData> data) override;
+                         std::unique_ptr<ui::PropertyData> data) override;
 
   WindowTreeClient* window_tree_client_;
 
diff --git a/ui/aura/mus/window_tree_client.cc b/ui/aura/mus/window_tree_client.cc
index 8a20c99..5f73fbb 100644
--- a/ui/aura/mus/window_tree_client.cc
+++ b/ui/aura/mus/window_tree_client.cc
@@ -69,7 +69,7 @@
   return static_cast<uint16_t>((id >> 16) & 0xFFFF);
 }
 
-struct WindowPortPropertyDataMus : public WindowPortPropertyData {
+struct WindowPortPropertyDataMus : public ui::PropertyData {
   std::string transport_name;
   std::unique_ptr<std::vector<uint8_t>> transport_value;
 };
@@ -596,7 +596,7 @@
 
   std::unordered_map<std::string, std::vector<uint8_t>> transport_properties;
   std::set<const void*> property_keys =
-      window->GetWindow()->GetAllPropertKeys();
+      window->GetWindow()->GetAllPropertyKeys();
   PropertyConverter* property_converter = delegate_->GetPropertyConverter();
   for (const void* key : property_keys) {
     std::string transport_name;
@@ -712,7 +712,7 @@
   tree_->SetWindowVisibility(change_id, window->server_id(), visible);
 }
 
-std::unique_ptr<WindowPortPropertyData>
+std::unique_ptr<ui::PropertyData>
 WindowTreeClient::OnWindowMusWillChangeProperty(WindowMus* window,
                                                 const void* key) {
   if (IsInternalProperty(key))
@@ -731,7 +731,7 @@
 void WindowTreeClient::OnWindowMusPropertyChanged(
     WindowMus* window,
     const void* key,
-    std::unique_ptr<WindowPortPropertyData> data) {
+    std::unique_ptr<ui::PropertyData> data) {
   if (HandleInternalPropertyChanged(window, key) || !data)
     return;
 
diff --git a/ui/aura/mus/window_tree_client.h b/ui/aura/mus/window_tree_client.h
index 221466c..f218b5e 100644
--- a/ui/aura/mus/window_tree_client.h
+++ b/ui/aura/mus/window_tree_client.h
@@ -38,6 +38,10 @@
 class Insets;
 }
 
+namespace ui {
+struct PropertyData;
+}
+
 namespace service_manager {
 class Connector;
 }
@@ -58,7 +62,6 @@
 class MusContextFactory;
 class WindowMus;
 class WindowPortMus;
-struct WindowPortPropertyData;
 class WindowTreeClientDelegate;
 class WindowTreeClientPrivate;
 class WindowTreeClientObserver;
@@ -277,12 +280,12 @@
                             size_t current_index,
                             size_t dest_index);
   void OnWindowMusSetVisible(WindowMus* window, bool visible);
-  std::unique_ptr<WindowPortPropertyData> OnWindowMusWillChangeProperty(
+  std::unique_ptr<ui::PropertyData> OnWindowMusWillChangeProperty(
       WindowMus* window,
       const void* key);
   void OnWindowMusPropertyChanged(WindowMus* window,
                                   const void* key,
-                                  std::unique_ptr<WindowPortPropertyData> data);
+                                  std::unique_ptr<ui::PropertyData> data);
 
   // Callback passed from WmPerformMoveLoop().
   void OnWmMoveLoopCompleted(uint32_t change_id, bool completed);
diff --git a/ui/aura/mus/window_tree_client_unittest.cc b/ui/aura/mus/window_tree_client_unittest.cc
index 66fa7d87..f6f877f 100644
--- a/ui/aura/mus/window_tree_client_unittest.cc
+++ b/ui/aura/mus/window_tree_client_unittest.cc
@@ -30,9 +30,9 @@
 #include "ui/aura/test/mus/window_tree_client_private.h"
 #include "ui/aura/test/test_window_delegate.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tracker.h"
 #include "ui/aura/window_tree_host_observer.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/compositor.h"
 #include "ui/display/display_switches.h"
 #include "ui/events/event.h"
@@ -43,9 +43,9 @@
 
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(uint8_t, kTestPropertyKey1, 0);
-DEFINE_WINDOW_PROPERTY_KEY(uint16_t, kTestPropertyKey2, 0);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kTestPropertyKey3, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint8_t, kTestPropertyKey1, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(uint16_t, kTestPropertyKey2, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kTestPropertyKey3, false);
 
 const char kTestPropertyServerKey1[] = "test-property-server1";
 const char kTestPropertyServerKey2[] = "test-property-server2";
diff --git a/ui/aura/mus/window_tree_host_mus.cc b/ui/aura/mus/window_tree_host_mus.cc
index 95fa6b4..07c720c 100644
--- a/ui/aura/mus/window_tree_host_mus.cc
+++ b/ui/aura/mus/window_tree_host_mus.cc
@@ -12,19 +12,20 @@
 #include "ui/aura/mus/window_tree_host_mus_delegate.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/events/event.h"
 #include "ui/platform_window/stub/stub_window.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::WindowTreeHostMus*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::WindowTreeHostMus*);
 
 namespace aura {
 
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(WindowTreeHostMus*, kWindowTreeHostMusKey, nullptr);
+DEFINE_UI_CLASS_PROPERTY_KEY(
+    WindowTreeHostMus*, kWindowTreeHostMusKey, nullptr);
 
 static uint32_t accelerated_widget_count = 1;
 
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index 83a532b..64ec5af 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -123,14 +123,7 @@
   // depends upon properties existing the properties are still valid.
   layout_manager_.reset();
 
-  // Clear properties.
-  for (std::map<const void*, Value>::const_iterator iter = prop_map_.begin();
-       iter != prop_map_.end();
-       ++iter) {
-    if (iter->second.deallocator)
-      (*iter->second.deallocator)(iter->second.value);
-  }
-  prop_map_.clear();
+  ClearProperties();
 
   // The layer will either be destroyed by |layer_owner_|'s dtor, or by whoever
   // acquired it.
@@ -599,14 +592,7 @@
   layer()->SuppressPaint();
 }
 
-std::set<const void*> Window::GetAllPropertKeys() const {
-  std::set<const void*> keys;
-  for (auto& pair : prop_map_)
-    keys.insert(pair.first);
-  return keys;
-}
-
-// {Set,Get,Clear}Property are implemented in window_property.h.
+// {Set,Get,Clear}Property are implemented in class_property.h.
 
 void Window::SetNativeWindowProperty(const char* key, void* value) {
   SetPropertyInternal(key, key, NULL, reinterpret_cast<int64_t>(value), 0);
@@ -661,41 +647,22 @@
   }
 }
 
-///////////////////////////////////////////////////////////////////////////////
-// Window, private:
+std::unique_ptr<ui::PropertyData> Window::BeforePropertyChange(
+    const void* key) {
+  return port_ ? port_->OnWillChangeProperty(key) : nullptr;
+}
 
-int64_t Window::SetPropertyInternal(const void* key,
-                                    const char* name,
-                                    PropertyDeallocator deallocator,
-                                    int64_t value,
-                                    int64_t default_value) {
-  // This code may be called before |port_| has been created.
-  std::unique_ptr<WindowPortPropertyData> data =
-      port_ ? port_->OnWillChangeProperty(key) : nullptr;
-  int64_t old = GetPropertyInternal(key, default_value);
-  if (value == default_value) {
-    prop_map_.erase(key);
-  } else {
-    Value prop_value;
-    prop_value.name = name;
-    prop_value.value = value;
-    prop_value.deallocator = deallocator;
-    prop_map_[key] = prop_value;
-  }
+void Window::AfterPropertyChange(const void* key,
+                                 int64_t old_value,
+                                 std::unique_ptr<ui::PropertyData> data) {
   if (port_)
     port_->OnPropertyChanged(key, std::move(data));
   for (WindowObserver& observer : observers_)
-    observer.OnWindowPropertyChanged(this, key, old);
-  return old;
+    observer.OnWindowPropertyChanged(this, key, old_value);
 }
 
-int64_t Window::GetPropertyInternal(const void* key,
-                                    int64_t default_value) const {
-  std::map<const void*, Value>::const_iterator iter = prop_map_.find(key);
-  if (iter == prop_map_.end())
-    return default_value;
-  return iter->second.value;
-}
+///////////////////////////////////////////////////////////////////////////////
+// Window, private:
 
 bool Window::HitTest(const gfx::Point& local_point) {
   gfx::Rect local_bounds(bounds().size());
diff --git a/ui/aura/window.h b/ui/aura/window.h
index 80770c17..01c6c96 100644
--- a/ui/aura/window.h
+++ b/ui/aura/window.h
@@ -19,6 +19,7 @@
 #include "base/strings/string16.h"
 #include "ui/aura/aura_export.h"
 #include "ui/aura/window_observer.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/layer_animator.h"
 #include "ui/compositor/layer_delegate.h"
 #include "ui/compositor/layer_owner.h"
@@ -51,13 +52,9 @@
 class WindowObserver;
 class WindowTreeHost;
 
-// Defined in window_property.h (which we do not include)
+// Defined in class_property.h (which we do not include)
 template<typename T>
-struct WindowProperty;
-
-namespace subtle {
-class PropertyHelper;
-}
+using WindowProperty = ui::ClassProperty<T>;
 
 namespace test {
 class WindowTestApi;
@@ -69,7 +66,8 @@
 class AURA_EXPORT Window : public ui::LayerDelegate,
                            public ui::LayerOwner,
                            public ui::EventTarget,
-                           public ui::GestureConsumer {
+                           public ui::GestureConsumer,
+                           public ui::PropertyHandler {
  public:
   // Initial value of id() for newly created windows.
   static constexpr int kInitialId = -1;
@@ -292,25 +290,6 @@
   // reenable painting.
   void SuppressPaint();
 
-  // Sets the |value| of the given window |property|. Setting to the default
-  // value (e.g., NULL) removes the property. The caller is responsible for the
-  // lifetime of any object set as a property on the Window.
-  template<typename T>
-  void SetProperty(const WindowProperty<T>* property, T value);
-
-  // Returns the value of the given window |property|.  Returns the
-  // property-specific default value if the property was not previously set.
-  template<typename T>
-  T GetProperty(const WindowProperty<T>* property) const;
-
-  // Sets the |property| to its default value. Useful for avoiding a cast when
-  // setting to NULL.
-  template<typename T>
-  void ClearProperty(const WindowProperty<T>* property);
-
-  // Returns the value of all properties with a non-default value.
-  std::set<const void*> GetAllPropertKeys() const;
-
   // NativeWidget::[GS]etNativeWindowProperty use strings as keys, and this is
   // difficult to change while retaining compatibility with other platforms.
   // TODO(benrg): Find a better solution.
@@ -318,7 +297,7 @@
   void* GetNativeWindowProperty(const char* key) const;
 
   // Type of a function to delete a property that this window owns.
-  typedef void (*PropertyDeallocator)(int64_t value);
+  //typedef void (*PropertyDeallocator)(int64_t value);
 
   // Overridden from ui::LayerDelegate:
   void OnDeviceScaleFactorChanged(float device_scale_factor) override;
@@ -337,22 +316,19 @@
   // use from the destructor.
   void RemoveOrDestroyChildren();
 
+  // Overrides from ui::PropertyHandler
+  std::unique_ptr<ui::PropertyData> BeforePropertyChange(const void* key)
+      override;
+  void AfterPropertyChange(const void* key,
+                           int64_t old_value,
+                           std::unique_ptr<ui::PropertyData> data) override;
  private:
   friend class LayoutManager;
   friend class PropertyConverter;
   friend class WindowPort;
   friend class WindowTargeter;
-  friend class subtle::PropertyHelper;
   friend class test::WindowTestApi;
 
-  // Called by the public {Set,Get,Clear}Property functions.
-  int64_t SetPropertyInternal(const void* key,
-                              const char* name,
-                              PropertyDeallocator deallocator,
-                              int64_t value,
-                              int64_t default_value);
-  int64_t GetPropertyInternal(const void* key, int64_t default_value) const;
-
   // Returns true if the mouse pointer at relative-to-this-Window's-origin
   // |local_point| can trigger an event for this Window.
   // TODO(beng): A Window can supply a hit-test mask to cause some portions of
@@ -511,17 +487,6 @@
 
   base::ObserverList<WindowObserver, true> observers_;
 
-  // Value struct to keep the name and deallocator for this property.
-  // Key cannot be used for this purpose because it can be char* or
-  // WindowProperty<>.
-  struct Value {
-    const char* name;
-    int64_t value;
-    PropertyDeallocator deallocator;
-  };
-
-  std::map<const void*, Value> prop_map_;
-
   DISALLOW_COPY_AND_ASSIGN(Window);
 };
 
diff --git a/ui/aura/window_port.h b/ui/aura/window_port.h
index b82305d..cc1ee547 100644
--- a/ui/aura/window_port.h
+++ b/ui/aura/window_port.h
@@ -13,6 +13,7 @@
 #include "base/observer_list.h"
 #include "base/strings/string16.h"
 #include "ui/aura/aura_export.h"
+#include "ui/base/class_property.h"
 
 namespace gfx {
 class Rect;
@@ -23,11 +24,6 @@
 class Window;
 class WindowObserver;
 
-// See comments in OnWillChangeProperty() for details.
-struct AURA_EXPORT WindowPortPropertyData {
-  virtual ~WindowPortPropertyData() {}
-};
-
 // WindowPort defines an interface to enable Window to be used with or without
 // mus. WindowPort is owned by Window and called at key points in Windows
 // lifetime that enable Window to be used in both environments.
@@ -65,14 +61,14 @@
   // Called before a property is changed. The return value from this is supplied
   // into OnPropertyChanged() so that WindowPort may pass data between the two
   // calls.
-  virtual std::unique_ptr<WindowPortPropertyData> OnWillChangeProperty(
+  virtual std::unique_ptr<ui::PropertyData> OnWillChangeProperty(
       const void* key) = 0;
 
   // Called after a property changes, but before observers are notified. |data|
   // is the return value from OnWillChangeProperty().
   virtual void OnPropertyChanged(
       const void* key,
-      std::unique_ptr<WindowPortPropertyData> data) = 0;
+      std::unique_ptr<ui::PropertyData> data) = 0;
 
  protected:
   // Returns the WindowPort associated with a Window.
diff --git a/ui/aura/window_port_local.cc b/ui/aura/window_port_local.cc
index 9037c26..746f5e48 100644
--- a/ui/aura/window_port_local.cc
+++ b/ui/aura/window_port_local.cc
@@ -79,13 +79,13 @@
 void WindowPortLocal::OnDidChangeBounds(const gfx::Rect& old_bounds,
                                         const gfx::Rect& new_bounds) {}
 
-std::unique_ptr<WindowPortPropertyData> WindowPortLocal::OnWillChangeProperty(
+std::unique_ptr<ui::PropertyData> WindowPortLocal::OnWillChangeProperty(
     const void* key) {
   return nullptr;
 }
 
 void WindowPortLocal::OnPropertyChanged(
     const void* key,
-    std::unique_ptr<WindowPortPropertyData> data) {}
+    std::unique_ptr<ui::PropertyData> data) {}
 
 }  // namespace aura
diff --git a/ui/aura/window_port_local.h b/ui/aura/window_port_local.h
index 7a8bf6c2..646f9aec 100644
--- a/ui/aura/window_port_local.h
+++ b/ui/aura/window_port_local.h
@@ -7,6 +7,7 @@
 
 #include "base/macros.h"
 #include "ui/aura/window_port.h"
+#include "ui/base/property_data.h"
 
 namespace aura {
 
@@ -27,10 +28,10 @@
   void OnVisibilityChanged(bool visible) override;
   void OnDidChangeBounds(const gfx::Rect& old_bounds,
                          const gfx::Rect& new_bounds) override;
-  std::unique_ptr<WindowPortPropertyData> OnWillChangeProperty(
+  std::unique_ptr<ui::PropertyData> OnWillChangeProperty(
       const void* key) override;
   void OnPropertyChanged(const void* key,
-                         std::unique_ptr<WindowPortPropertyData> data) override;
+                         std::unique_ptr<ui::PropertyData> data) override;
 
  private:
   Window* window_;
diff --git a/ui/aura/window_property.h b/ui/aura/window_property.h
deleted file mode 100644
index 6c2bbb4..0000000
--- a/ui/aura/window_property.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_AURA_WINDOW_PROPERTY_H_
-#define UI_AURA_WINDOW_PROPERTY_H_
-
-#include <stdint.h>
-
-#include "ui/aura/aura_export.h"
-#include "ui/aura/window.h"
-
-// This header should be included by code that defines WindowProperties.
-//
-// To define a new WindowProperty:
-//
-//  #include "foo/foo_export.h"
-//  #include "ui/aura/window_property.h"
-//
-//  DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(FOO_EXPORT, MyType);
-//  namespace foo {
-//    // Use this to define an exported property that is primitive,
-//    // or a pointer you don't want automatically deleted.
-//    DEFINE_WINDOW_PROPERTY_KEY(MyType, kMyKey, MyDefault);
-//
-//    // Use this to define an exported property whose value is a heap
-//    // allocated object, and has to be owned and freed by the window.
-//    DEFINE_OWNED_WINDOW_PROPERTY_KEY(gfx::Rect, kRestoreBoundsKey, NULL);
-//
-//    // Use this to define a non exported property that is primitive,
-//    // or a pointer you don't want to automatically deleted, and is used
-//    // only in a specific file. This will define the property in an unnamed
-//    // namespace which cannot be accessed from another file.
-//    DEFINE_LOCAL_WINDOW_PROPERTY_KEY(MyType, kMyKey, MyDefault);
-//
-//  }  // foo namespace
-//
-// To define a new type used for WindowProperty.
-//
-//  // outside all namespaces:
-//  DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(FOO_EXPORT, MyType)
-//
-// If a property type is not exported, use DECLARE_WINDOW_PROPERTY_TYPE(MyType)
-// which is a shorthand for DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(, MyType).
-
-namespace aura {
-namespace {
-
-// No single new-style cast works for every conversion to/from int64_t, so we
-// need this helper class. A third specialization is needed for bool because
-// MSVC warning C4800 (forcing value to bool) is not suppressed by an explicit
-// cast (!).
-template<typename T>
-class WindowPropertyCaster {
- public:
-  static int64_t ToInt64(T x) { return static_cast<int64_t>(x); }
-  static T FromInt64(int64_t x) { return static_cast<T>(x); }
-};
-template<typename T>
-class WindowPropertyCaster<T*> {
- public:
-  static int64_t ToInt64(T* x) { return reinterpret_cast<int64_t>(x); }
-  static T* FromInt64(int64_t x) { return reinterpret_cast<T*>(x); }
-};
-template<>
-class WindowPropertyCaster<bool> {
- public:
-  static int64_t ToInt64(bool x) { return static_cast<int64_t>(x); }
-  static bool FromInt64(int64_t x) { return x != 0; }
-};
-
-}  // namespace
-
-template<typename T>
-struct WindowProperty {
-  T default_value;
-  const char* name;
-  Window::PropertyDeallocator deallocator;
-};
-
-namespace subtle {
-
-class AURA_EXPORT PropertyHelper {
- public:
-  template<typename T>
-  static void Set(Window* window, const WindowProperty<T>* property, T value) {
-    int64_t old = window->SetPropertyInternal(
-        property, property->name,
-        value == property->default_value ? nullptr : property->deallocator,
-        WindowPropertyCaster<T>::ToInt64(value),
-        WindowPropertyCaster<T>::ToInt64(property->default_value));
-    if (property->deallocator &&
-        old != WindowPropertyCaster<T>::ToInt64(property->default_value)) {
-      (*property->deallocator)(old);
-    }
-  }
-  template<typename T>
-  static T Get(const Window* window, const WindowProperty<T>* property) {
-    return WindowPropertyCaster<T>::FromInt64(window->GetPropertyInternal(
-        property, WindowPropertyCaster<T>::ToInt64(property->default_value)));
-  }
-  template<typename T>
-  static void Clear(Window* window, const WindowProperty<T>* property) {
-    window->SetProperty(property, property->default_value);       \
-  }
-};
-
-}  // namespace subtle
-
-}  // namespace aura
-
-// Macros to instantiate the property getter/setter template functions.
-#define DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(EXPORT, T)                  \
-  namespace aura {                                                        \
-  template <>                                                             \
-  EXPORT void Window::SetProperty(const WindowProperty<T>* property,      \
-                                  T value) {                              \
-    subtle::PropertyHelper::Set<T>(this, property, value);                \
-  }                                                                       \
-  template <>                                                             \
-  EXPORT T Window::GetProperty(const WindowProperty<T>* property) const { \
-    return subtle::PropertyHelper::Get<T>(this, property);                \
-  }                                                                       \
-  template <>                                                             \
-  EXPORT void Window::ClearProperty(const WindowProperty<T>* property) {  \
-    subtle::PropertyHelper::Clear<T>(this, property);                     \
-  }                                                                       \
-  }
-#define DECLARE_WINDOW_PROPERTY_TYPE(T)  \
-    DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(, T)
-
-#define DEFINE_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT)                      \
-  static_assert(sizeof(TYPE) <= sizeof(int64_t), "property type too large"); \
-  namespace {                                                                \
-  const aura::WindowProperty<TYPE> NAME##_Value = {DEFAULT, #NAME, nullptr}; \
-  }                                                                          \
-  const aura::WindowProperty<TYPE>* const NAME = &NAME##_Value;
-
-#define DEFINE_LOCAL_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT)                \
-  static_assert(sizeof(TYPE) <= sizeof(int64_t), "property type too large"); \
-  namespace {                                                                \
-  const aura::WindowProperty<TYPE> NAME##_Value = {DEFAULT, #NAME, nullptr}; \
-  const aura::WindowProperty<TYPE>* const NAME = &NAME##_Value;              \
-  }
-
-#define DEFINE_OWNED_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT)            \
-  namespace {                                                            \
-  void Deallocator##NAME(int64_t p) {                                    \
-    enum { type_must_be_complete = sizeof(TYPE) };                       \
-    delete aura::WindowPropertyCaster<TYPE*>::FromInt64(p);              \
-  }                                                                      \
-  const aura::WindowProperty<TYPE*> NAME##_Value = {DEFAULT, #NAME,      \
-                                                    &Deallocator##NAME}; \
-  }                                                                      \
-  const aura::WindowProperty<TYPE*>* const NAME = &NAME##_Value;
-
-#endif  // UI_AURA_WINDOW_PROPERTY_H_
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc
index 6d5cf838..566cd68 100644
--- a/ui/aura/window_unittest.cc
+++ b/ui/aura/window_unittest.cc
@@ -30,8 +30,8 @@
 #include "ui/aura/window_delegate.h"
 #include "ui/aura/window_event_dispatcher.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_animation_observer.h"
@@ -48,7 +48,7 @@
 #include "ui/gfx/geometry/vector2d.h"
 #include "ui/gfx/skia_util.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(const char*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(const char*)
 
 namespace {
 
@@ -98,31 +98,13 @@
   DISALLOW_COPY_AND_ASSIGN(DeletionTestProperty);
 };
 
-class TestProperty {
- public:
-  TestProperty() {}
-  ~TestProperty() {
-    last_deleted_ = this;
-  }
-  static TestProperty* last_deleted() { return last_deleted_; }
-
- private:
-  static TestProperty* last_deleted_;
-  DISALLOW_COPY_AND_ASSIGN(TestProperty);
-};
-
-TestProperty* TestProperty::last_deleted_ = nullptr;
-
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(TestProperty, kOwnedKey, NULL);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(DeletionTestProperty,
-                                 kDeletionTestPropertyKey,
-                                 nullptr);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(DeletionTestProperty,
+                                   kDeletionTestPropertyKey,
+                                   nullptr);
 
 }  // namespace
 
-DECLARE_WINDOW_PROPERTY_TYPE(TestProperty*);
-
-DECLARE_WINDOW_PROPERTY_TYPE(DeletionTestProperty*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(DeletionTestProperty*);
 
 namespace aura {
 namespace test {
@@ -1655,73 +1637,18 @@
   EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString());
 }
 
-namespace {
-DEFINE_WINDOW_PROPERTY_KEY(int, kIntKey, -2);
-DEFINE_WINDOW_PROPERTY_KEY(const char*, kStringKey, "squeamish");
-}
-
 TEST_P(WindowTest, Property) {
   std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
 
   static const char native_prop_key[] = "fnord";
 
   // Non-existent properties should return the default values.
-  EXPECT_EQ(-2, w->GetProperty(kIntKey));
-  EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
-  EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key));
-
-  // A set property value should be returned again (even if it's the default
-  // value).
-  w->SetProperty(kIntKey, INT_MAX);
-  EXPECT_EQ(INT_MAX, w->GetProperty(kIntKey));
-  w->SetProperty(kIntKey, -2);
-  EXPECT_EQ(-2, w->GetProperty(kIntKey));
-  w->SetProperty(kIntKey, INT_MIN);
-  EXPECT_EQ(INT_MIN, w->GetProperty(kIntKey));
-
-  w->SetProperty(kStringKey, static_cast<const char*>(NULL));
-  EXPECT_EQ(NULL, w->GetProperty(kStringKey));
-  w->SetProperty(kStringKey, "squeamish");
-  EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
-  w->SetProperty(kStringKey, "ossifrage");
-  EXPECT_EQ(std::string("ossifrage"), w->GetProperty(kStringKey));
+  EXPECT_EQ(nullptr, w->GetNativeWindowProperty(native_prop_key));
 
   w->SetNativeWindowProperty(native_prop_key, &*w);
   EXPECT_EQ(&*w, w->GetNativeWindowProperty(native_prop_key));
-  w->SetNativeWindowProperty(native_prop_key, NULL);
-  EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key));
-
-  // ClearProperty should restore the default value.
-  w->ClearProperty(kIntKey);
-  EXPECT_EQ(-2, w->GetProperty(kIntKey));
-  w->ClearProperty(kStringKey);
-  EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
-}
-
-TEST_P(WindowTest, OwnedProperty) {
-  std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
-  EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
-  TestProperty* last_deleted = TestProperty::last_deleted();
-  TestProperty* p1 = new TestProperty();
-  w->SetProperty(kOwnedKey, p1);
-  EXPECT_EQ(p1, w->GetProperty(kOwnedKey));
-  EXPECT_EQ(last_deleted, TestProperty::last_deleted());
-
-  TestProperty* p2 = new TestProperty();
-  w->SetProperty(kOwnedKey, p2);
-  EXPECT_EQ(p2, w->GetProperty(kOwnedKey));
-  EXPECT_EQ(p1, TestProperty::last_deleted());
-
-  w->ClearProperty(kOwnedKey);
-  EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
-  EXPECT_EQ(p2, TestProperty::last_deleted());
-
-  TestProperty* p3 = new TestProperty();
-  w->SetProperty(kOwnedKey, p3);
-  EXPECT_EQ(p3, w->GetProperty(kOwnedKey));
-  EXPECT_EQ(p2, TestProperty::last_deleted());
-  w.reset();
-  EXPECT_EQ(p3, TestProperty::last_deleted());
+  w->SetNativeWindowProperty(native_prop_key, nullptr);
+  EXPECT_EQ(nullptr, w->GetNativeWindowProperty(native_prop_key));
 }
 
 namespace {
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 9408e427..06a5608 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -67,6 +67,8 @@
     "accelerators/platform_accelerator_cocoa.mm",
     "android/ui_base_jni_registrar.cc",
     "android/ui_base_jni_registrar.h",
+    "class_property.cc",
+    "class_property.h",
     "clipboard/clipboard_android.cc",
     "clipboard/clipboard_android.h",
     "clipboard/clipboard_mac.h",
@@ -227,6 +229,7 @@
     "nine_image_painter_factory.h",
     "page_transition_types.cc",
     "page_transition_types.h",
+    "property_data.h",
     "resource/resource_bundle.cc",
     "resource/resource_bundle.h",
     "resource/resource_bundle_android.cc",
@@ -743,6 +746,7 @@
 
 test("ui_base_unittests") {
   sources = [
+    "class_property_unittest.cc",
     "clipboard/clipboard_mac_unittest.mm",
     "clipboard/clipboard_util_mac_unittest.mm",
     "l10n/l10n_util_mac_unittest.mm",
diff --git a/ui/base/accelerators/accelerator_manager.cc b/ui/base/accelerators/accelerator_manager.cc
index fad3bf6..7b4308ad 100644
--- a/ui/base/accelerators/accelerator_manager.cc
+++ b/ui/base/accelerators/accelerator_manager.cc
@@ -17,33 +17,43 @@
 AcceleratorManager::~AcceleratorManager() {
 }
 
-void AcceleratorManager::Register(const Accelerator& accelerator,
-                                  HandlerPriority priority,
-                                  AcceleratorTarget* target) {
+void AcceleratorManager::Register(
+    const std::vector<ui::Accelerator>& accelerators,
+    HandlerPriority priority,
+    AcceleratorTarget* target) {
   DCHECK(target);
-  AcceleratorTargetList& targets = accelerators_[accelerator].second;
-  DCHECK(std::find(targets.begin(), targets.end(), target) == targets.end())
-      << "Registering the same target multiple times";
-  const bool is_first_target_for_accelerator = targets.empty();
 
-  // All priority accelerators go to the front of the line.
-  if (priority == kHighPriority) {
-    DCHECK(!accelerators_[accelerator].first)
-        << "Only one high-priority handler can be registered";
-    targets.push_front(target);
-    // Mark that we have a priority accelerator at the front.
-    accelerators_[accelerator].first = true;
-  } else {
-    // We are registering a normal priority handler. If no priority accelerator
-    // handler has been registered before us, just add the new handler to the
-    // front. Otherwise, register it after the first (only) priority handler.
-    if (!accelerators_[accelerator].first)
+  // Accelerators which haven't already been registered with any target.
+  std::vector<ui::Accelerator> new_accelerators;
+
+  for (const ui::Accelerator& accelerator : accelerators) {
+    AcceleratorTargetList& targets = accelerators_[accelerator].second;
+    DCHECK(std::find(targets.begin(), targets.end(), target) == targets.end())
+        << "Registering the same target multiple times";
+    const bool is_first_target_for_accelerator = targets.empty();
+
+    // All priority accelerators go to the front of the line.
+    if (priority == kHighPriority) {
+      DCHECK(!accelerators_[accelerator].first)
+          << "Only one high-priority handler can be registered";
       targets.push_front(target);
-    else
-      targets.insert(++targets.begin(), target);
+      // Mark that we have a priority accelerator at the front.
+      accelerators_[accelerator].first = true;
+    } else {
+      // We are registering a normal priority handler. If no priority
+      // accelerator handler has been registered before us, just add the new
+      // handler to the front. Otherwise, register it after the first (only)
+      // priority handler.
+      if (!accelerators_[accelerator].first)
+        targets.push_front(target);
+      else
+        targets.insert(++targets.begin(), target);
+    }
+    if (is_first_target_for_accelerator)
+      new_accelerators.push_back(accelerator);
   }
-  if (is_first_target_for_accelerator && delegate_)
-    delegate_->OnAcceleratorRegistered(accelerator);
+  if (delegate_ && !new_accelerators.empty())
+    delegate_->OnAcceleratorsRegistered(new_accelerators);
 }
 
 void AcceleratorManager::Unregister(const Accelerator& accelerator,
diff --git a/ui/base/accelerators/accelerator_manager.h b/ui/base/accelerators/accelerator_manager.h
index 9db9629f..c792b181 100644
--- a/ui/base/accelerators/accelerator_manager.h
+++ b/ui/base/accelerators/accelerator_manager.h
@@ -8,6 +8,7 @@
 #include <list>
 #include <map>
 #include <utility>
+#include <vector>
 
 #include "base/macros.h"
 #include "ui/base/accelerators/accelerator.h"
@@ -30,10 +31,10 @@
   explicit AcceleratorManager(AcceleratorManagerDelegate* = nullptr);
   ~AcceleratorManager();
 
-  // Register a keyboard accelerator for the specified target. If multiple
+  // Register keyboard accelerators for the specified target. If multiple
   // targets are registered for an accelerator, a target registered later has
   // higher priority.
-  // |accelerator| is the accelerator to register.
+  // |accelerators| contains accelerators to register.
   // |priority| denotes the priority of the handler.
   // NOTE: In almost all cases, you should specify kNormalPriority for this
   // parameter. Setting it to kHighPriority prevents Chrome from sending the
@@ -47,10 +48,18 @@
   // - the enter key
   // - any F key (F1, F2, F3 ...)
   // - any browser specific keys (as available on special keyboards)
-  void Register(const Accelerator& accelerator,
+  void Register(const std::vector<ui::Accelerator>& accelerators,
                 HandlerPriority priority,
                 AcceleratorTarget* target);
 
+  // Registers a keyboard accelerator for the specified target. This function
+  // calls the function Register() with vector argument above.
+  inline void RegisterAccelerator(const Accelerator& accelerator,
+                                  HandlerPriority priority,
+                                  AcceleratorTarget* target) {
+    Register({accelerator}, priority, target);
+  }
+
   // Unregister the specified keyboard accelerator for the specified target.
   void Unregister(const Accelerator& accelerator, AcceleratorTarget* target);
 
diff --git a/ui/base/accelerators/accelerator_manager_delegate.h b/ui/base/accelerators/accelerator_manager_delegate.h
index e3c6d9c..4cbd0ed5 100644
--- a/ui/base/accelerators/accelerator_manager_delegate.h
+++ b/ui/base/accelerators/accelerator_manager_delegate.h
@@ -13,11 +13,14 @@
 
 class UI_BASE_EXPORT AcceleratorManagerDelegate {
  public:
-  // Called the first time a target is registered for |accelerator|. This is
-  // only called the first time a target is registered for a unique accelerator.
-  // For example, if Register() is called twice with the same accelerator
-  // this is called only for the first call.
-  virtual void OnAcceleratorRegistered(const Accelerator& accelerator) = 0;
+  // Called when new accelerators are registered. This is only called with
+  // newly registered accelerators. For example, if Register() is
+  // called with A and B, then OnAcceleratorsRegistered() is called with A and
+  // B. If Register() is subsequently called with A and C, then
+  // OnAcceleratorsRegistered() is only called with C, as A was already
+  // registered.
+  virtual void OnAcceleratorsRegistered(
+      const std::vector<ui::Accelerator>& accelerators) = 0;
 
   // Called when there no more targets are registered for |accelerator|.
   virtual void OnAcceleratorUnregistered(const Accelerator& accelerator) = 0;
diff --git a/ui/base/accelerators/accelerator_manager_unittest.cc b/ui/base/accelerators/accelerator_manager_unittest.cc
index 5383403..50e8841 100644
--- a/ui/base/accelerators/accelerator_manager_unittest.cc
+++ b/ui/base/accelerators/accelerator_manager_unittest.cc
@@ -71,8 +71,9 @@
 
 // AcceleratorManagerDelegate implementation that records calls to interface
 // using the following format.
-// . OnAcceleratorRegistered() -> 'Register ' + id
-// . OnAcceleratorRegistered() -> 'Unregister' + id
+// . OnAcceleratorsRegistered() -> A list of "'Register ' + <id>" separated by
+// whitespaces.
+// . OnAcceleratorUnregistered() -> 'Unregister' + id
 // where the id is specified using SetIdForAccelerator().
 class TestAcceleratorManagerDelegate : public AcceleratorManagerDelegate {
  public:
@@ -91,10 +92,13 @@
   }
 
   // AcceleratorManagerDelegate:
-  void OnAcceleratorRegistered(const Accelerator& accelerator) override {
-    if (!commands_.empty())
-      commands_ += " ";
-    commands_ += "Register " + accelerator_to_id_[accelerator];
+  void OnAcceleratorsRegistered(
+      const std::vector<Accelerator>& accelerators) override {
+    for (const Accelerator& accelerator : accelerators) {
+      if (!commands_.empty())
+        commands_ += " ";
+      commands_ += "Register " + accelerator_to_id_[accelerator];
+    }
   }
   void OnAcceleratorUnregistered(const Accelerator& accelerator) override {
     if (!commands_.empty())
@@ -122,27 +126,42 @@
 };
 
 TEST_F(AcceleratorManagerTest, Register) {
-  const Accelerator accelerator_a(VKEY_A, EF_NONE);
   TestTarget target;
+  const Accelerator accelerator_a(VKEY_A, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_a, "a");
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
-                    &target);
-  EXPECT_EQ("Register a", delegate_.GetAndClearCommands());
 
-  // The registered accelerator is processed.
+  const Accelerator accelerator_b(VKEY_B, EF_NONE);
+  delegate_.SetIdForAccelerator(accelerator_b, "b");
+
+  const Accelerator accelerator_c(VKEY_C, EF_NONE);
+  delegate_.SetIdForAccelerator(accelerator_c, "c");
+
+  const Accelerator accelerator_d(VKEY_D, EF_NONE);
+  delegate_.SetIdForAccelerator(accelerator_d, "d");
+
+  manager_.Register(
+      {accelerator_a, accelerator_b, accelerator_c, accelerator_d},
+      AcceleratorManager::kNormalPriority, &target);
+  EXPECT_EQ("Register a Register b Register c Register d",
+            delegate_.GetAndClearCommands());
+
+  // The registered accelerators are processed.
   EXPECT_TRUE(manager_.Process(accelerator_a));
-  EXPECT_EQ(1, target.accelerator_pressed_count());
+  EXPECT_TRUE(manager_.Process(accelerator_b));
+  EXPECT_TRUE(manager_.Process(accelerator_c));
+  EXPECT_TRUE(manager_.Process(accelerator_d));
+  EXPECT_EQ(4, target.accelerator_pressed_count());
 }
 
 TEST_F(AcceleratorManagerTest, RegisterMultipleTarget) {
   const Accelerator accelerator_a(VKEY_A, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_a, "a");
   TestTarget target1;
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
+  manager_.Register({accelerator_a}, AcceleratorManager::kNormalPriority,
                     &target1);
   EXPECT_EQ("Register a", delegate_.GetAndClearCommands());
   TestTarget target2;
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
+  manager_.Register({accelerator_a}, AcceleratorManager::kNormalPriority,
                     &target2);
   // Registering the same command shouldn't notify the delegate.
   EXPECT_TRUE(delegate_.GetAndClearCommands().empty());
@@ -158,14 +177,11 @@
   const Accelerator accelerator_a(VKEY_A, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_a, "a");
   TestTarget target;
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
-                    &target);
-  EXPECT_EQ("Register a", delegate_.GetAndClearCommands());
   const Accelerator accelerator_b(VKEY_B, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_b, "b");
-  manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority,
-                    &target);
-  EXPECT_EQ("Register b", delegate_.GetAndClearCommands());
+  manager_.Register({accelerator_a, accelerator_b},
+                    AcceleratorManager::kNormalPriority, &target);
+  EXPECT_EQ("Register a Register b", delegate_.GetAndClearCommands());
 
   // Unregistering a different accelerator does not affect the other
   // accelerator.
@@ -186,16 +202,14 @@
   const Accelerator accelerator_a(VKEY_A, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_a, "a");
   TestTarget target1;
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
-                    &target1);
   const Accelerator accelerator_b(VKEY_B, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_b, "b");
-  manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority,
-                    &target1);
+  manager_.Register({accelerator_a, accelerator_b},
+                    AcceleratorManager::kNormalPriority, &target1);
   const Accelerator accelerator_c(VKEY_C, EF_NONE);
   delegate_.SetIdForAccelerator(accelerator_c, "c");
   TestTarget target2;
-  manager_.Register(accelerator_c, AcceleratorManager::kNormalPriority,
+  manager_.Register({accelerator_c}, AcceleratorManager::kNormalPriority,
                     &target2);
   EXPECT_EQ("Register a Register b Register c",
             delegate_.GetAndClearCommands());
@@ -224,7 +238,7 @@
   for (size_t i = 0; i < (1 << arraysize(kAcceleratorModifiers)); ++i) {
     const int modifiers = BuildAcceleratorModifier(i);
     Accelerator accelerator(GetAccelerator(VKEY_A, modifiers));
-    manager_.Register(accelerator, AcceleratorManager::kNormalPriority,
+    manager_.Register({accelerator}, AcceleratorManager::kNormalPriority,
                       &target);
 
     // The registered accelerator is processed.
@@ -267,12 +281,12 @@
   const Accelerator accelerator_a(VKEY_A, EF_NONE);
   TestTarget target;
   delegate_.SetIdForAccelerator(accelerator_a, "a");
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
+  manager_.Register({accelerator_a}, AcceleratorManager::kNormalPriority,
                     &target);
   EXPECT_EQ("Register a", delegate_.GetAndClearCommands());
   manager_.UnregisterAll(&target);
   EXPECT_EQ("Unregister a", delegate_.GetAndClearCommands());
-  manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
+  manager_.Register({accelerator_a}, AcceleratorManager::kNormalPriority,
                     &target);
   EXPECT_EQ("Register a", delegate_.GetAndClearCommands());
 }
diff --git a/ui/base/class_property.cc b/ui/base/class_property.cc
new file mode 100644
index 0000000..8b13aa1
--- /dev/null
+++ b/ui/base/class_property.cc
@@ -0,0 +1,70 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/base/class_property.h"
+
+#include <algorithm>
+#include <utility>
+
+namespace ui {
+
+PropertyHandler::PropertyHandler() {}
+
+PropertyHandler::~PropertyHandler() {
+  ClearProperties();
+}
+
+int64_t PropertyHandler::SetPropertyInternal(const void* key,
+                                             const char* name,
+                                             PropertyDeallocator deallocator,
+                                             int64_t value,
+                                             int64_t default_value) {
+  // This code may be called before |port_| has been created.
+  std::unique_ptr<PropertyData> data = BeforePropertyChange(key);
+  int64_t old = GetPropertyInternal(key, default_value);
+  if (value == default_value) {
+    prop_map_.erase(key);
+  } else {
+    Value prop_value;
+    prop_value.name = name;
+    prop_value.value = value;
+    prop_value.deallocator = deallocator;
+    prop_map_[key] = prop_value;
+  }
+  AfterPropertyChange(key, old, std::move(data));
+  return old;
+}
+
+std::unique_ptr<PropertyData> PropertyHandler::BeforePropertyChange(
+    const void* key) {
+  return nullptr;
+}
+
+void PropertyHandler::ClearProperties() {
+  // Clear properties.
+  for (std::map<const void*, Value>::const_iterator iter = prop_map_.begin();
+       iter != prop_map_.end();
+       ++iter) {
+    if (iter->second.deallocator)
+      (*iter->second.deallocator)(iter->second.value);
+  }
+  prop_map_.clear();
+}
+
+int64_t PropertyHandler::GetPropertyInternal(const void* key,
+                                             int64_t default_value) const {
+  std::map<const void*, Value>::const_iterator iter = prop_map_.find(key);
+  if (iter == prop_map_.end())
+    return default_value;
+  return iter->second.value;
+}
+
+std::set<const void*> PropertyHandler::GetAllPropertyKeys() const {
+  std::set<const void*> keys;
+  for (auto& pair : prop_map_)
+    keys.insert(pair.first);
+  return keys;
+}
+
+} // namespace ui
\ No newline at end of file
diff --git a/ui/base/class_property.h b/ui/base/class_property.h
new file mode 100644
index 0000000..6621e8e
--- /dev/null
+++ b/ui/base/class_property.h
@@ -0,0 +1,232 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_BASE_CLASS_PROPERTY_H_
+#define UI_BASE_CLASS_PROPERTY_H_
+
+#include <stdint.h>
+
+#include <map>
+#include <memory>
+#include <set>
+
+#include "ui/base/property_data.h"
+#include "ui/base/ui_base_export.h"
+#include "ui/base/ui_base_types.h"
+
+// This header should be included by code that defines ClassProperties.
+//
+// To define a new ClassProperty:
+//
+//  #include "foo/foo_export.h"
+//  #include "ui/base/class_property.h"
+//
+//  DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(FOO_EXPORT, MyType);
+//  namespace foo {
+//    // Use this to define an exported property that is primitive,
+//    // or a pointer you don't want automatically deleted.
+//    DEFINE_UI_CLASS_PROPERTY_KEY(MyType, kMyKey, MyDefault);
+//
+//    // Use this to define an exported property whose value is a heap
+//    // allocated object, and has to be owned and freed by the class.
+//    DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect, kRestoreBoundsKey, NULL);
+//
+//    // Use this to define a non exported property that is primitive,
+//    // or a pointer you don't want to automatically deleted, and is used
+//    // only in a specific file. This will define the property in an unnamed
+//    // namespace which cannot be accessed from another file.
+//    DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(MyType, kMyKey, MyDefault);
+//
+//  }  // foo namespace
+//
+// To define a new type used for ClassProperty.
+//
+//  // outside all namespaces:
+//  DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(FOO_EXPORT, MyType)
+//
+// If a property type is not exported, use DECLARE_CLASS_PROPERTY_TYPE(MyType)
+// which is a shorthand for DECLARE_EXPORTED_CLASS_PROPERTY_TYPE(, MyType).
+
+namespace ui {
+
+// Type of a function to delete a property that this window owns.
+using PropertyDeallocator = void(*)(int64_t value);
+
+template<typename T>
+struct ClassProperty {
+  T default_value;
+  const char* name;
+  PropertyDeallocator deallocator;
+};
+
+namespace subtle {
+
+class PropertyHelper;
+
+}
+
+class UI_BASE_EXPORT PropertyHandler {
+ public:
+  PropertyHandler();
+  ~PropertyHandler();
+
+  // Sets the |value| of the given class |property|. Setting to the default
+  // value (e.g., NULL) removes the property. The caller is responsible for the
+  // lifetime of any object set as a property on the class.
+  template<typename T>
+  void SetProperty(const ClassProperty<T>* property, T value);
+
+  // Returns the value of the given class |property|.  Returns the
+  // property-specific default value if the property was not previously set.
+  template<typename T>
+  T GetProperty(const ClassProperty<T>* property) const;
+
+  // Sets the |property| to its default value. Useful for avoiding a cast when
+  // setting to NULL.
+  template<typename T>
+  void ClearProperty(const ClassProperty<T>* property);
+
+  // Returns the value of all properties with a non-default value.
+  std::set<const void*> GetAllPropertyKeys() const;
+
+ protected:
+  friend class subtle::PropertyHelper;
+
+  virtual void AfterPropertyChange(const void* key,
+                                   int64_t old_value,
+                                   std::unique_ptr<PropertyData> data) {}
+  virtual std::unique_ptr<PropertyData> BeforePropertyChange(const void* key);
+  void ClearProperties();
+
+  // Called by the public {Set,Get,Clear}Property functions.
+  int64_t SetPropertyInternal(const void* key,
+                              const char* name,
+                              PropertyDeallocator deallocator,
+                              int64_t value,
+                              int64_t default_value);
+  int64_t GetPropertyInternal(const void* key, int64_t default_value) const;
+
+ private:
+  // Value struct to keep the name and deallocator for this property.
+  // Key cannot be used for this purpose because it can be char* or
+  // ClassProperty<>.
+  struct Value {
+    const char* name;
+    int64_t value;
+    PropertyDeallocator deallocator;
+  };
+
+  std::map<const void*, Value> prop_map_;
+};
+
+namespace {
+
+// No single new-style cast works for every conversion to/from int64_t, so we
+// need this helper class. A third specialization is needed for bool because
+// MSVC warning C4800 (forcing value to bool) is not suppressed by an explicit
+// cast (!).
+template<typename T>
+class ClassPropertyCaster {
+ public:
+  static int64_t ToInt64(T x) { return static_cast<int64_t>(x); }
+  static T FromInt64(int64_t x) { return static_cast<T>(x); }
+};
+template<typename T>
+class ClassPropertyCaster<T*> {
+ public:
+  static int64_t ToInt64(T* x) { return reinterpret_cast<int64_t>(x); }
+  static T* FromInt64(int64_t x) { return reinterpret_cast<T*>(x); }
+};
+template<>
+class ClassPropertyCaster<bool> {
+ public:
+  static int64_t ToInt64(bool x) { return static_cast<int64_t>(x); }
+  static bool FromInt64(int64_t x) { return x != 0; }
+};
+
+}  // namespace
+
+namespace subtle {
+
+class UI_BASE_EXPORT PropertyHelper {
+ public:
+  template<typename T>
+  static void Set(::ui::PropertyHandler* handler,
+                  const ::ui::ClassProperty<T>* property, T value) {
+    int64_t old = handler->SetPropertyInternal(
+        property, property->name,
+        value == property->default_value ? nullptr : property->deallocator,
+        ClassPropertyCaster<T>::ToInt64(value),
+        ClassPropertyCaster<T>::ToInt64(property->default_value));
+    if (property->deallocator &&
+        old != ClassPropertyCaster<T>::ToInt64(property->default_value)) {
+      (*property->deallocator)(old);
+    }
+  }
+  template<typename T>
+  static T Get(const ::ui::PropertyHandler* handler,
+               const ::ui::ClassProperty<T>* property) {
+    return ClassPropertyCaster<T>::FromInt64(handler->GetPropertyInternal(
+        property, ClassPropertyCaster<T>::ToInt64(property->default_value)));
+  }
+  template<typename T>
+  static void Clear(::ui::PropertyHandler* handler,
+                    const ::ui::ClassProperty<T>* property) {
+    handler->SetProperty(property, property->default_value);
+  }
+};
+
+}  // namespace subtle
+
+}  // namespace ui
+
+// Macros to instantiate the property getter/setter template functions.
+#define DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(EXPORT, T)                   \
+  namespace ui {                                                             \
+  template <>                                                                \
+  EXPORT void PropertyHandler::SetProperty(                                  \
+      const ClassProperty<T>* property, T value) {                           \
+    subtle::PropertyHelper::Set<T>(this, property, value);                   \
+  }                                                                          \
+  template <>                                                                \
+  EXPORT T PropertyHandler::GetProperty(                                     \
+      const ClassProperty<T>* property) const {                              \
+    return subtle::PropertyHelper::Get<T>(this, property);                   \
+  }                                                                          \
+  template <>                                                                \
+  EXPORT void PropertyHandler::ClearProperty(                                \
+      const ClassProperty<T>* property) {                                    \
+    subtle::PropertyHelper::Clear<T>(this, property);                        \
+  }                                                                          \
+  }
+
+#define DECLARE_UI_CLASS_PROPERTY_TYPE(T)  \
+    DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(, T)
+
+#define DEFINE_UI_CLASS_PROPERTY_KEY(TYPE, NAME, DEFAULT)                    \
+  static_assert(sizeof(TYPE) <= sizeof(int64_t), "property type too large"); \
+  namespace {                                                                \
+  const ::ui::ClassProperty<TYPE> NAME##_Value = {DEFAULT, #NAME, nullptr};  \
+  }                                                                          \
+  const ::ui::ClassProperty<TYPE>* const NAME = &NAME##_Value;
+
+#define DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(TYPE, NAME, DEFAULT)              \
+  static_assert(sizeof(TYPE) <= sizeof(int64_t), "property type too large"); \
+  namespace {                                                                \
+  const ::ui::ClassProperty<TYPE> NAME##_Value = {DEFAULT, #NAME, nullptr};  \
+  const ::ui::ClassProperty<TYPE>* const NAME = &NAME##_Value;               \
+  }
+
+#define DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(TYPE, NAME, DEFAULT)          \
+  namespace {                                                            \
+  void Deallocator##NAME(int64_t p) {                                    \
+    enum { type_must_be_complete = sizeof(TYPE) };                       \
+    delete ::ui::ClassPropertyCaster<TYPE*>::FromInt64(p);               \
+  }                                                                      \
+  const ::ui::ClassProperty<TYPE*> NAME##_Value = {DEFAULT, #NAME,       \
+                                                 &Deallocator##NAME};    \
+  }                                                                      \
+  const ::ui::ClassProperty<TYPE*>* const NAME = &NAME##_Value;
+
+#endif  // UI_BASE_CLASS_PROPERTY_H_
diff --git a/ui/base/class_property_unittest.cc b/ui/base/class_property_unittest.cc
new file mode 100644
index 0000000..31e85ef
--- /dev/null
+++ b/ui/base/class_property_unittest.cc
@@ -0,0 +1,116 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/base/class_property.h"
+
+#include <limits.h>
+
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "build/build_config.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+DECLARE_UI_CLASS_PROPERTY_TYPE(const char*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(int)
+
+namespace {
+
+class TestProperty {
+ public:
+  TestProperty() {}
+  ~TestProperty() {
+    last_deleted_ = this;
+  }
+  static void* last_deleted() { return last_deleted_; }
+
+ private:
+  static void* last_deleted_;
+  DISALLOW_COPY_AND_ASSIGN(TestProperty);
+};
+
+void* TestProperty::last_deleted_ = nullptr;
+
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(TestProperty, kOwnedKey, NULL);
+
+}  // namespace
+
+DECLARE_UI_CLASS_PROPERTY_TYPE(TestProperty*);
+
+namespace ui {
+namespace test {
+
+namespace {
+
+const int kDefaultIntValue = -2;
+const char* kDefaultStringValue = "squeamish";
+const char* kTestStringValue = "ossifrage";
+
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kIntKey, kDefaultIntValue);
+DEFINE_UI_CLASS_PROPERTY_KEY(const char*, kStringKey, kDefaultStringValue);
+}
+
+TEST(PropertyTest, Property) {
+  PropertyHandler h;
+
+  // Non-existent properties should return the default values.
+  EXPECT_EQ(kDefaultIntValue, h.GetProperty(kIntKey));
+  EXPECT_EQ(std::string(kDefaultStringValue), h.GetProperty(kStringKey));
+
+  // A set property value should be returned again (even if it's the default
+  // value).
+  h.SetProperty(kIntKey, INT_MAX);
+  EXPECT_EQ(INT_MAX, h.GetProperty(kIntKey));
+  h.SetProperty(kIntKey, kDefaultIntValue);
+  EXPECT_EQ(kDefaultIntValue, h.GetProperty(kIntKey));
+  h.SetProperty(kIntKey, INT_MIN);
+  EXPECT_EQ(INT_MIN, h.GetProperty(kIntKey));
+
+  h.SetProperty<const char*>(kStringKey, nullptr);
+  EXPECT_EQ(NULL, h.GetProperty(kStringKey));
+  h.SetProperty(kStringKey, kDefaultStringValue);
+  EXPECT_EQ(std::string(kDefaultStringValue), h.GetProperty(kStringKey));
+  h.SetProperty(kStringKey, kTestStringValue);
+  EXPECT_EQ(std::string(kTestStringValue), h.GetProperty(kStringKey));
+
+  // ClearProperty should restore the default value.
+  h.ClearProperty(kIntKey);
+  EXPECT_EQ(kDefaultIntValue, h.GetProperty(kIntKey));
+  h.ClearProperty(kStringKey);
+  EXPECT_EQ(std::string(kDefaultStringValue), h.GetProperty(kStringKey));
+}
+
+TEST(PropertyTest, OwnedProperty) {
+  std::unique_ptr<PropertyHandler> h = base::MakeUnique<PropertyHandler>();
+
+  EXPECT_EQ(NULL, h->GetProperty(kOwnedKey));
+  void* last_deleted = TestProperty::last_deleted();
+  TestProperty* p1 = new TestProperty();
+  h->SetProperty(kOwnedKey, p1);
+  EXPECT_EQ(p1, h->GetProperty(kOwnedKey));
+  EXPECT_EQ(last_deleted, TestProperty::last_deleted());
+
+  TestProperty* p2 = new TestProperty();
+  h->SetProperty(kOwnedKey, p2);
+  EXPECT_EQ(p2, h->GetProperty(kOwnedKey));
+  EXPECT_EQ(p1, TestProperty::last_deleted());
+
+  h->ClearProperty(kOwnedKey);
+  EXPECT_EQ(NULL, h->GetProperty(kOwnedKey));
+  EXPECT_EQ(p2, TestProperty::last_deleted());
+
+  TestProperty* p3 = new TestProperty();
+  h->SetProperty(kOwnedKey, p3);
+  EXPECT_EQ(p3, h->GetProperty(kOwnedKey));
+  EXPECT_EQ(p2, TestProperty::last_deleted());
+  h.reset();
+  EXPECT_EQ(p3, TestProperty::last_deleted());
+}
+
+} // namespace test
+} // namespace ui
diff --git a/ui/base/property_data.h b/ui/base/property_data.h
new file mode 100644
index 0000000..abe13cc
--- /dev/null
+++ b/ui/base/property_data.h
@@ -0,0 +1,22 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_BASE_PROPERTY_DATA_H_
+#define UI_BASE_PROPERTY_DATA_H_
+
+#include "ui/base/ui_base_export.h"
+
+namespace ui {
+
+// Descendants of ui::PropertyHandler may return a descendant of this class
+// when overriding BeforePropertyChange(). This instance is then passed to
+// AfterPropertyChange() in order to preserve and/or communicate data between
+// those two calls.
+struct UI_BASE_EXPORT PropertyData {
+  virtual ~PropertyData() {}
+};
+
+}
+
+#endif
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb
index a0e16b8..d6fbd0d 100644
--- a/ui/strings/translations/ui_strings_am.xtb
+++ b/ui/strings/translations/ui_strings_am.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> ፔባ/ሰ</translation>
 <translation id="6918245111648057970">ከሚከተሉት ውስጥ ለእያንዳንዱ ተጠቃሚ ማሳወቂያዎችን ይፍቀዱ፦</translation>
 <translation id="6945221475159498467">ይምረጡ</translation>
-<translation id="6965382102122355670">ይሁን</translation>
+<translation id="6965382102122355670">እሺ</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">ማሳወቂያዎች ከሚከተሉት እንዲመጡ ፍቀድ፦</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_el.xtb b/ui/strings/translations/ui_strings_el.xtb
index 181e10c..a97ea6a1 100644
--- a/ui/strings/translations/ui_strings_el.xtb
+++ b/ui/strings/translations/ui_strings_el.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> PB/s</translation>
 <translation id="6918245111648057970">Να επιτρέπονται οι ειδοποιήσεις από τις παρακάτω πηγές για κάθε χρήστη:</translation>
 <translation id="6945221475159498467">Επιλογή</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">ΕΝΤΑΞΕΙ</translation>
 <translation id="7052633198403197513">Πλήκτρο F1</translation>
 <translation id="7135556860107312402">Να επιτρέπονται ειδοποιήσεις από:</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb
index f737c15..f177cfd23 100644
--- a/ui/strings/translations/ui_strings_es-419.xtb
+++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> PB/s</translation>
 <translation id="6918245111648057970">Permitir notificaciones para cada usuario de lo siguiente:</translation>
 <translation id="6945221475159498467">Seleccionar</translation>
-<translation id="6965382102122355670">Aceptar</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">Permitir notificaciones de:</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_et.xtb b/ui/strings/translations/ui_strings_et.xtb
index 7a6d8c4..2da45f0 100644
--- a/ui/strings/translations/ui_strings_et.xtb
+++ b/ui/strings/translations/ui_strings_et.xtb
@@ -73,7 +73,7 @@
 <translation id="5943826764092288734">{HOURS,plural, =1{1 tund}other{# tundi}}</translation>
 <translation id="5948410903763073882">Alt+<ph name="KEY_COMBO_NAME" /></translation>
 <translation id="598033046487663418">Kõik rakendused</translation>
-<translation id="6040143037577758943">Sule</translation>
+<translation id="6040143037577758943">Sulge</translation>
 <translation id="6119846243427417423">aktiveeri</translation>
 <translation id="6129953537138746214">Tühik</translation>
 <translation id="6135826906199951471">Del</translation>
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> PB/s</translation>
 <translation id="6918245111648057970">Luba järgmised märguanded iga kasutaja puhul:</translation>
 <translation id="6945221475159498467">Vali</translation>
-<translation id="6965382102122355670">OK</translation>
+<translation id="6965382102122355670">Ok</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">Luba märguanded järgmistest kohtadest:</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index 0c102f0..e66d65e 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> پتابایت/ثانیه</translation>
 <translation id="6918245111648057970">دریافت اعلان از موارد زیر برای هر کاربر مجاز است:</translation>
 <translation id="6945221475159498467">انتخاب</translation>
-<translation id="6965382102122355670">تأیید</translation>
+<translation id="6965382102122355670">قبول</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">اعلان موارد زیر مجاز باشد:</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb
index e313f3d..6cbb043b 100644
--- a/ui/strings/translations/ui_strings_kn.xtb
+++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -73,7 +73,7 @@
 <translation id="5943826764092288734">{HOURS,plural, =1{1 ಗಂಟೆ}one{# ಗಂಟೆಗಳು}other{# ಗಂಟೆಗಳು}}</translation>
 <translation id="5948410903763073882">Alt+<ph name="KEY_COMBO_NAME" /></translation>
 <translation id="598033046487663418">ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು</translation>
-<translation id="6040143037577758943">ಮುಚ್ಚು</translation>
+<translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="6119846243427417423">ಸಕ್ರಿಯಗೊಳಿಸು</translation>
 <translation id="6129953537138746214">ಸ್ಪೇಸ್</translation>
 <translation id="6135826906199951471">Del</translation>
diff --git a/ui/strings/translations/ui_strings_ru.xtb b/ui/strings/translations/ui_strings_ru.xtb
index 3acd399b..d102342 100644
--- a/ui/strings/translations/ui_strings_ru.xtb
+++ b/ui/strings/translations/ui_strings_ru.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> ПБ/с</translation>
 <translation id="6918245111648057970">Разрешить оповещения для каждого пользователя:</translation>
 <translation id="6945221475159498467">Выбрать</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">OK</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">Разрешить оповещения от:</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/strings/translations/ui_strings_sk.xtb b/ui/strings/translations/ui_strings_sk.xtb
index ef1e2a8..d3f4e9f 100644
--- a/ui/strings/translations/ui_strings_sk.xtb
+++ b/ui/strings/translations/ui_strings_sk.xtb
@@ -73,7 +73,7 @@
 <translation id="5943826764092288734">{HOURS,plural, =1{1 hodina}few{# hodiny}many{# hodiny}other{# hodín}}</translation>
 <translation id="5948410903763073882">Alt+<ph name="KEY_COMBO_NAME" /></translation>
 <translation id="598033046487663418">Všetky aplikácie</translation>
-<translation id="6040143037577758943">Zatvoriť</translation>
+<translation id="6040143037577758943">Zavrieť</translation>
 <translation id="6119846243427417423">aktivovať</translation>
 <translation id="6129953537138746214">Medzera</translation>
 <translation id="6135826906199951471">Del</translation>
diff --git a/ui/strings/translations/ui_strings_uk.xtb b/ui/strings/translations/ui_strings_uk.xtb
index b34964a..1b0ff7c 100644
--- a/ui/strings/translations/ui_strings_uk.xtb
+++ b/ui/strings/translations/ui_strings_uk.xtb
@@ -96,7 +96,7 @@
 <translation id="6907759265145635167"><ph name="QUANTITY" /> Пб/сек.</translation>
 <translation id="6918245111648057970">Дозволити сповіщення для кожного користувача:</translation>
 <translation id="6945221475159498467">Вибрати</translation>
-<translation id="6965382102122355670">ОК</translation>
+<translation id="6965382102122355670">ТАК</translation>
 <translation id="7052633198403197513">F1</translation>
 <translation id="7135556860107312402">Дозволити сповіщення з перелічених нижче джерел.</translation>
 <translation id="7222373446505536781">F11</translation>
diff --git a/ui/views/focus/focus_manager.cc b/ui/views/focus/focus_manager.cc
index 71951080..f429dbdc 100644
--- a/ui/views/focus/focus_manager.cc
+++ b/ui/views/focus/focus_manager.cc
@@ -497,7 +497,7 @@
     const ui::Accelerator& accelerator,
     ui::AcceleratorManager::HandlerPriority priority,
     ui::AcceleratorTarget* target) {
-  accelerator_manager_->Register(accelerator, priority, target);
+  accelerator_manager_->Register({accelerator}, priority, target);
 }
 
 void FocusManager::UnregisterAccelerator(const ui::Accelerator& accelerator,
diff --git a/ui/views/view_constants_aura.cc b/ui/views/view_constants_aura.cc
index 977050f..759db05f 100644
--- a/ui/views/view_constants_aura.cc
+++ b/ui/views/view_constants_aura.cc
@@ -4,13 +4,13 @@
 
 #include "ui/views/view_constants_aura.h"
 
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/views/view.h"
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(VIEWS_EXPORT, views::View*);
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(VIEWS_EXPORT, views::View*);
 
 namespace views {
 
-DEFINE_WINDOW_PROPERTY_KEY(views::View*, kHostViewKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(views::View*, kHostViewKey, NULL);
 
 }  // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
index bc0324c1..54d6d1d 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
@@ -17,8 +17,8 @@
 #include "ui/aura/client/window_parenting_client.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/class_property.h"
 #include "ui/base/hit_test.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/compositor/layer.h"
@@ -61,12 +61,12 @@
 #include "ui/base/win/shell.h"
 #endif
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(VIEWS_EXPORT,
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(VIEWS_EXPORT,
                                       views::DesktopNativeWidgetAura*);
 
 namespace views {
 
-DEFINE_WINDOW_PROPERTY_KEY(DesktopNativeWidgetAura*,
+DEFINE_UI_CLASS_PROPERTY_KEY(DesktopNativeWidgetAura*,
                            kDesktopNativeWidgetAuraKey, NULL);
 
 namespace {
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 5eb0d54..c6a331c 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
@@ -11,7 +11,7 @@
 #include "ui/aura/client/cursor_client.h"
 #include "ui/aura/client/focus_client.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/cursor/cursor_loader_win.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/base/win/shell.h"
@@ -39,7 +39,7 @@
 #include "ui/wm/core/window_animations.h"
 #include "ui/wm/public/scoped_tooltip_disabler.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(views::DesktopWindowTreeHostWin*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(views::DesktopWindowTreeHostWin*);
 
 namespace views {
 
@@ -61,12 +61,13 @@
 
 }  // namespace
 
-DEFINE_WINDOW_PROPERTY_KEY(aura::Window*, kContentWindowForRootWindow, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(aura::Window*, kContentWindowForRootWindow, NULL);
 
 // Identifies the DesktopWindowTreeHostWin associated with the
 // WindowEventDispatcher.
-DEFINE_WINDOW_PROPERTY_KEY(DesktopWindowTreeHostWin*, kDesktopWindowTreeHostKey,
-                           NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(DesktopWindowTreeHostWin*,
+                             kDesktopWindowTreeHostKey,
+                             NULL);
 
 ////////////////////////////////////////////////////////////////////////////////
 // DesktopWindowTreeHostWin, public:
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
index 04c5a94..f2de610 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -26,7 +26,7 @@
 #include "ui/aura/client/focus_client.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
 #include "ui/base/hit_test.h"
 #include "ui/base/ime/input_method.h"
@@ -64,7 +64,7 @@
 #include "ui/wm/core/compound_event_filter.h"
 #include "ui/wm/core/window_util.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(views::DesktopWindowTreeHostX11*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(views::DesktopWindowTreeHostX11*);
 
 namespace views {
 
@@ -72,10 +72,10 @@
     NULL;
 std::list<XID>* DesktopWindowTreeHostX11::open_windows_ = NULL;
 
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     aura::Window*, kViewsWindowForRootWindow, NULL);
 
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     DesktopWindowTreeHostX11*, kHostForRootWindow, NULL);
 
 namespace {
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc
index 5edfc18..63fd0727c 100644
--- a/ui/views/widget/native_widget_aura.cc
+++ b/ui/views/widget/native_widget_aura.cc
@@ -26,8 +26,8 @@
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/class_property.h"
 #include "ui/base/dragdrop/os_exchange_data.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/compositor/layer.h"
@@ -71,13 +71,13 @@
 #include "ui/views/widget/desktop_aura/desktop_window_tree_host.h"
 #endif
 
-DECLARE_WINDOW_PROPERTY_TYPE(views::internal::NativeWidgetPrivate*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(views::internal::NativeWidgetPrivate*)
 
 namespace views {
 
 namespace {
 
-DEFINE_WINDOW_PROPERTY_KEY(internal::NativeWidgetPrivate*,
+DEFINE_UI_CLASS_PROPERTY_KEY(internal::NativeWidgetPrivate*,
                            kNativeWidgetPrivateKey,
                            nullptr);
 
diff --git a/ui/wm/DEPS b/ui/wm/DEPS
index 86f9bf42..4442cbe 100644
--- a/ui/wm/DEPS
+++ b/ui/wm/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
+  "+ui/base",
   "+ui/aura",
   "+ui/events",
   "+ui/display",
diff --git a/ui/wm/core/shadow_controller.cc b/ui/wm/core/shadow_controller.cc
index ac93dc7..c236879a 100644
--- a/ui/wm/core/shadow_controller.cc
+++ b/ui/wm/core/shadow_controller.cc
@@ -15,7 +15,7 @@
 #include "ui/aura/env_observer.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/compositor/layer.h"
 #include "ui/wm/core/shadow.h"
@@ -25,8 +25,8 @@
 
 using std::make_pair;
 
-DECLARE_WINDOW_PROPERTY_TYPE(wm::Shadow*);
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(wm::Shadow, kShadowLayerKey, nullptr);
+DECLARE_UI_CLASS_PROPERTY_TYPE(::wm::Shadow*);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(::wm::Shadow, kShadowLayerKey, nullptr);
 
 namespace wm {
 
diff --git a/ui/wm/core/shadow_types.cc b/ui/wm/core/shadow_types.cc
index 37720ec..8d13341 100644
--- a/ui/wm/core/shadow_types.cc
+++ b/ui/wm/core/shadow_types.cc
@@ -4,9 +4,9 @@
 
 #include "ui/wm/core/shadow_types.h"
 
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(wm::ShadowElevation);
+DECLARE_UI_CLASS_PROPERTY_TYPE(::wm::ShadowElevation);
 
 namespace wm {
 
@@ -18,8 +18,8 @@
   return window->GetProperty(kShadowElevationKey);
 }
 
-DEFINE_WINDOW_PROPERTY_KEY(ShadowElevation,
-                           kShadowElevationKey,
-                           ShadowElevation::NONE);
+DEFINE_UI_CLASS_PROPERTY_KEY(ShadowElevation,
+                          kShadowElevationKey,
+                          ShadowElevation::NONE);
 
 }  // namespace wm
diff --git a/ui/wm/core/transient_window_manager.cc b/ui/wm/core/transient_window_manager.cc
index 3008853..3bde9721 100644
--- a/ui/wm/core/transient_window_manager.cc
+++ b/ui/wm/core/transient_window_manager.cc
@@ -10,8 +10,8 @@
 #include "base/auto_reset.h"
 #include "ui/aura/client/transient_window_client_observer.h"
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
 #include "ui/aura/window_tracker.h"
+#include "ui/base/class_property.h"
 #include "ui/wm/core/transient_window_controller.h"
 #include "ui/wm/core/transient_window_observer.h"
 #include "ui/wm/core/transient_window_stacking_client.h"
@@ -19,12 +19,12 @@
 
 using aura::Window;
 
-DECLARE_WINDOW_PROPERTY_TYPE(wm::TransientWindowManager*);
+DECLARE_UI_CLASS_PROPERTY_TYPE(::wm::TransientWindowManager*);
 
 namespace wm {
 namespace {
 
-DEFINE_OWNED_WINDOW_PROPERTY_KEY(TransientWindowManager, kPropertyKey, NULL);
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(TransientWindowManager, kPropertyKey, NULL);
 
 }  // namespace
 
diff --git a/ui/wm/core/visibility_controller.cc b/ui/wm/core/visibility_controller.cc
index fd7bb88a..8973617 100644
--- a/ui/wm/core/visibility_controller.cc
+++ b/ui/wm/core/visibility_controller.cc
@@ -5,7 +5,7 @@
 #include "ui/wm/core/visibility_controller.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/layer.h"
 #include "ui/wm/core/window_animations.h"
 
@@ -15,11 +15,11 @@
 
 // Property set on all windows whose child windows' visibility changes are
 // animated.
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     bool, kChildWindowVisibilityChangesAnimatedKey, false);
 
 // A window with this property set will animate upon its visibility changes.
-DEFINE_WINDOW_PROPERTY_KEY(bool, kWindowVisibilityChangesAnimatedKey, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kWindowVisibilityChangesAnimatedKey, false);
 
 bool ShouldAnimateWindow(aura::Window* window) {
   return (window->parent() &&
diff --git a/ui/wm/core/window_animations.cc b/ui/wm/core/window_animations.cc
index f0111dd..84cd33d1 100644
--- a/ui/wm/core/window_animations.cc
+++ b/ui/wm/core/window_animations.cc
@@ -21,7 +21,7 @@
 #include "ui/aura/window.h"
 #include "ui/aura/window_delegate.h"
 #include "ui/aura/window_observer.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/compositor/compositor_observer.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_animation_observer.h"
@@ -39,9 +39,9 @@
 #include "ui/wm/core/wm_core_switches.h"
 #include "ui/wm/public/animation_host.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(wm::WindowVisibilityAnimationType)
-DECLARE_WINDOW_PROPERTY_TYPE(wm::WindowVisibilityAnimationTransition)
-DECLARE_WINDOW_PROPERTY_TYPE(float)
+DECLARE_UI_CLASS_PROPERTY_TYPE(::wm::WindowVisibilityAnimationType)
+DECLARE_UI_CLASS_PROPERTY_TYPE(::wm::WindowVisibilityAnimationTransition)
+DECLARE_UI_CLASS_PROPERTY_TYPE(float)
 
 namespace wm {
 namespace {
@@ -146,16 +146,16 @@
 
 }  // namespace
 
-DEFINE_WINDOW_PROPERTY_KEY(int,
-                           kWindowVisibilityAnimationTypeKey,
-                           WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT);
-DEFINE_WINDOW_PROPERTY_KEY(int, kWindowVisibilityAnimationDurationKey, 0);
-DEFINE_WINDOW_PROPERTY_KEY(WindowVisibilityAnimationTransition,
-                           kWindowVisibilityAnimationTransitionKey,
-                           ANIMATE_BOTH);
-DEFINE_WINDOW_PROPERTY_KEY(float,
-                           kWindowVisibilityAnimationVerticalPositionKey,
-                           kWindowAnimation_Vertical_TranslateY);
+DEFINE_UI_CLASS_PROPERTY_KEY(int,
+                          kWindowVisibilityAnimationTypeKey,
+                          WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT);
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kWindowVisibilityAnimationDurationKey, 0);
+DEFINE_UI_CLASS_PROPERTY_KEY(WindowVisibilityAnimationTransition,
+                          kWindowVisibilityAnimationTransitionKey,
+                          ANIMATE_BOTH);
+DEFINE_UI_CLASS_PROPERTY_KEY(float,
+                          kWindowVisibilityAnimationVerticalPositionKey,
+                          kWindowAnimation_Vertical_TranslateY);
 
 // A HidingWindowAnimationObserver that deletes observer and detached
 // layers upon the completion of the implicit animation.
diff --git a/ui/wm/core/window_modality_controller.cc b/ui/wm/core/window_modality_controller.cc
index 094acc49..0501aaf 100644
--- a/ui/wm/core/window_modality_controller.cc
+++ b/ui/wm/core/window_modality_controller.cc
@@ -13,7 +13,7 @@
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/events/event.h"
 #include "ui/events/event_target.h"
@@ -25,7 +25,7 @@
 
 // Transient child's modal parent.
 extern const aura::WindowProperty<aura::Window*>* const kModalParentKey;
-DEFINE_WINDOW_PROPERTY_KEY(aura::Window*, kModalParentKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(aura::Window*, kModalParentKey, NULL);
 
 namespace {
 
diff --git a/ui/wm/public/activation_change_observer.cc b/ui/wm/public/activation_change_observer.cc
index 7fcbb7a..6357a2d 100644
--- a/ui/wm/public/activation_change_observer.cc
+++ b/ui/wm/public/activation_change_observer.cc
@@ -5,14 +5,14 @@
 #include "ui/wm/public/activation_change_observer.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::ActivationChangeObserver*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::ActivationChangeObserver*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     ActivationChangeObserver*, kActivationChangeObserverKey, NULL);
 
 void SetActivationChangeObserver(
diff --git a/ui/wm/public/activation_client.cc b/ui/wm/public/activation_client.cc
index 6a47554..85636c0 100644
--- a/ui/wm/public/activation_client.cc
+++ b/ui/wm/public/activation_client.cc
@@ -5,17 +5,17 @@
 #include "ui/wm/public/activation_client.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, aura::Window*)
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::ActivationClient*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, aura::Window*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::ActivationClient*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(
+DEFINE_UI_CLASS_PROPERTY_KEY(
     ActivationClient*, kRootWindowActivationClientKey, NULL);
-DEFINE_WINDOW_PROPERTY_KEY(bool, kHideOnDeactivate, false);
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHideOnDeactivate, false);
 
 void SetActivationClient(Window* root_window, ActivationClient* client) {
   root_window->SetProperty(kRootWindowActivationClientKey, client);
diff --git a/ui/wm/public/activation_delegate.cc b/ui/wm/public/activation_delegate.cc
index 2a9bbc9..a548d05 100644
--- a/ui/wm/public/activation_delegate.cc
+++ b/ui/wm/public/activation_delegate.cc
@@ -5,14 +5,14 @@
 #include "ui/wm/public/activation_delegate.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::ActivationDelegate*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::ActivationDelegate*)
 
 namespace aura {
 namespace client {
 
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     ActivationDelegate*, kActivationDelegateKey, NULL);
 
 void SetActivationDelegate(Window* window, ActivationDelegate* delegate) {
diff --git a/ui/wm/public/animation_host.cc b/ui/wm/public/animation_host.cc
index 0d90f9c6..c9b3b26 100644
--- a/ui/wm/public/animation_host.cc
+++ b/ui/wm/public/animation_host.cc
@@ -5,14 +5,14 @@
 #include "ui/wm/public/animation_host.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::AnimationHost*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::AnimationHost*)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(AnimationHost*, kRootWindowAnimationHostKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(AnimationHost*, kRootWindowAnimationHostKey, NULL);
 
 void SetAnimationHost(Window* window, AnimationHost* animation_host) {
   DCHECK(window);
diff --git a/ui/wm/public/tooltip_client.cc b/ui/wm/public/tooltip_client.cc
index c9fd6f8..ef8390de 100644
--- a/ui/wm/public/tooltip_client.cc
+++ b/ui/wm/public/tooltip_client.cc
@@ -4,17 +4,19 @@
 
 #include "ui/wm/public/tooltip_client.h"
 
-#include "ui/aura/window_property.h"
+#include "ui/aura/window.h"
+#include "ui/base/class_property.h"
 
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, aura::client::TooltipClient*)
-DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, void**)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT,
+                                        aura::client::TooltipClient*)
+DECLARE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, void**)
 
 namespace aura {
 namespace client {
 
-DEFINE_WINDOW_PROPERTY_KEY(TooltipClient*, kRootWindowTooltipClientKey, NULL);
-DEFINE_WINDOW_PROPERTY_KEY(base::string16*, kTooltipTextKey, NULL);
-DEFINE_WINDOW_PROPERTY_KEY(void*, kTooltipIdKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(TooltipClient*, kRootWindowTooltipClientKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(base::string16*, kTooltipTextKey, NULL);
+DEFINE_UI_CLASS_PROPERTY_KEY(void*, kTooltipIdKey, NULL);
 
 void SetTooltipClient(Window* root_window, TooltipClient* client) {
   DCHECK_EQ(root_window->GetRootWindow(), root_window);
diff --git a/ui/wm/public/window_move_client.cc b/ui/wm/public/window_move_client.cc
index 44ccca9..cb918886 100644
--- a/ui/wm/public/window_move_client.cc
+++ b/ui/wm/public/window_move_client.cc
@@ -5,15 +5,15 @@
 #include "ui/wm/public/window_move_client.h"
 
 #include "ui/aura/window.h"
-#include "ui/aura/window_property.h"
+#include "ui/base/class_property.h"
 
-DECLARE_WINDOW_PROPERTY_TYPE(aura::client::WindowMoveClient*)
+DECLARE_UI_CLASS_PROPERTY_TYPE(aura::client::WindowMoveClient*)
 
 namespace aura {
 namespace client {
 
 // A property key to store a client that handles window moves.
-DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
+DEFINE_LOCAL_UI_CLASS_PROPERTY_KEY(
     WindowMoveClient*, kWindowMoveClientKey, NULL);
 
 void SetWindowMoveClient(Window* window, WindowMoveClient* client) {